You need the following products to complete this exercise: Simdify® Free Edition
This section describes the Layout application user interface and basic document layout.
This is Layout, the main design/authoring tool in Simdify platform. You'll learn to use it to design workloads that run as stand-alone OpenGL applications. When you export a workload, you get a complete set of binary files that enable you to compile your workload. And if you purchase any paid products, you can integrate the source code for the Simdify runtime into your own products, or even write a new exporter to suit your needs exactly. For now, let's take a look at the Layout application.
For the most part, its interface is pretty simple. It's a standard Windows® desktop applications composed of a main menu, hierarchy editor, rendered worksheet, property editor, and console. You can rearrange these items if you wish, but years of experience have shown us that this is the most convenient layout for most users. Note that you can always hit ALT + 4 to show and hide all the docking windows. You can also select Desktop » Toggle Panels to do the same thing. This will give you an almost full-screen view of the rendered window.
It's important to know that you don't create these starter documents manually. Most of these nodes are created by the application when you create a new file. Additional resources, such as uniforms, uniform buffers, or shader buffers, are created when you modify your GLSL source code and then add new resources to the document. You may also add other additional resources, such as memory barriers, as needed. After adding resources, you may need to use the property sheet to configure the new nodes. Sometimes you will create new textures or load textures from disk.
The main menu is a standard menu as found in nearly all modern desktop software applications. You can select various options and commands here.
The hierarchy editor displays the contents of your OpenGL workload, and you can also see the layout of your workload, which gives you information about when workload items are executed. The rendering loop starts at the root of the document and traverses nodes using a breadth-first search, rendering each node as it is traversed. This means you can make certain assumptions about how your workload behaves by looking at the hierarchy.
Move the mouse over the icons in the image below to learn about the function of each node. Note that some of the groups that contain resources are marked invisible. Their contents would be rendered immediately if they were visible, and we need to control how/when all resources are rendered.
We can divide the document into a few key areas. The first could be called the Data Section. In this section, you define resources used by the workload.
The second section could be called the Workload Section. In this section you implement the workload itself. In this case, you see a <ShaderResourceNode> named Visual. This indicates that it stores things related to the visual portion of the workload. In other words, items that help get something on screen so that you can see what's going on.
You can have as many data and workload sections as you want, but it's more common to have one data section and multiple workload sections. An workload section is sort of like a rendering pass, but that term doesn't quite fit all situations. It's really a group of related operations that execute the workload defined by your OpenGL application. Hence the term workload.
The worksheet displays the work performed by your OpenGL application. Sometimes this will be rendered output, but it also might be a red square if you're implementing compute shaders that don't necessarily generate a visual result. Changes made in the hierarchy and property sheet, or by application commands, are propogated instantly to the worksheet.
The property sheet displays node properties. You can double click a node in the hierarchy to edit its properties.
The console displays status information. For example: if there are shader compiler errors, or commands that generate output messages.
That's the basics at least, and actually there isn't a lot more. This knowledge will help you when you create your first shader!