sales@scenomics.com +1 650 396 9674


Release details are described below:

Change Log
Cleaned up the <DataCapture> commands in the <VariableNode> command menus. Replaced multi-dialog 'wizards' for creating and editing data capture hierarchies with a single dialog wizard. Minor upgrades to the C++ <DataCapture>-derived classes. Most of the code in "type_data_capture_util.ssl" has been moved to "app_service_data_capture_wizard.ssl". This wizard handles creation and editing. This system should be faster and easier to use now.
In scripts such as "float32_matrix_data_capture_util.ssl", and all similar, separated lists of functions that create data capture hierarchies. Previously, all functions and types were listed in the same function. Now string libraries that describe function names used to create data capture hierarchies are in separate functions from string libraries that create <DataCapture> types.
In the "Noise" sample shader, converted this to use shader subroutines to allow the user to switch between signed noise and cellular noise. This is nice because it's actually a very good example on how to use subroutines to avoid if/else branching.
Improved <Program> Edit Wizard. This control now fully disables editing shader source code file paths for the graphics pipeline if a compute shader is specified and vice versa. If the source file path for a particular shader stage is empty, clicking the ... button presents the "Save File" dialog that allows you to specify the name of a new source code file. The new file is created when you click OK to exit the wizard.
In macro ProgramCopyDeclToClip(), fixed a bug that caused incomplete enumeration of <VariableNode> types declared anywhere in a <Program> node child list.
In macro ProgramNodePopupMenuMacro(), added a very precise test to ensure that a <StrList> is empty. The new test accumulates the values from the <StrList> into a <string>. Previously, a <StrList> with even a single empty string could pass the test for emptiness in [CreateProgramSourceMenu]. The result was a blank popup menu for a <Program> for which no source code has been set.
In macro NodeInvokeLambda(), added special case handling for <TypeRepNode> and <TypeConfigNode> so we do not generate the lambda script file name as "type_type_rep_node".
Fixed a bug in <RelationshipNode> that caused the application to crash when RelationshipNode::ResolveFilePath() was called. Specifically, the crash occurred when the source or destination folder resolution was set to FolderResolution_None and this function was invoked for a <RelationshipNode> that had not been completely added to a document. By 'completely added', we mean 'the <RelationshipNode> was added to the document and the running application successfully exited the invoked Scenome command macro so that the editing operation was completed and made concrete'. In cases where this error occurred, the model pointer is null but could be dereferenced.
In macro SamplerNodeLoadTexture(), added code to prevent connection between a <SamplerNode> and a <Texture> loaded from disk if the <Texture> node's pixel format is incompatible.
Added macro CalculateNormalsModifierConfigureTangentSpaceNormals(), which replaces macro MeshConfigureTangentSpaceNormals(). You can now right click on a <CalculateNormalsModifier> and configure tangent space normal mapping if there are three <AddChannelModifiers> named normal, tangent, and binormal that represent three, three-dimensional vertex normal attribute channels. These attributes must be declared in the vertex shader, assigned as usual in the vertex shader body, and also declared in any vertex attributes struct, if using, such as you might find in my_file_attributes.glsl.
In function int RefreshAppConfig(), added a null pointer guard. In some rare cases, it is possible for a null pointer to sneak through.
In macro ShaderExecuteBuild(), added code to make sure we display information about any <AddChannelModifiers> added or removed during the build process.
In macro ShellTogglePanels(), provided correct hint text.
Removed obsolete macro FileSaveInTypes(). Removed any functions that were called only by this macro.
Removed obsolete macro MeshUpdateVertexAttributes(). Removed any functions that were called only by this macro. The Shader app build process generally handles mesh vertex attributes. Otherwise they must be created by-hand.
Removed obsolete macro MeshGenerateVertexAttributes(). Removed any functions that were called only by this macro. The Shader app build process generally handles mesh vertex attributes. Otherwise they must be created by-hand.
Removed obsolete macro ProgramBindDeclaredUniform(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader.
Removed obsolete macro SamplerPaletteNodeBindDeclaredUniform(). This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader.
Removed obsolete macro ProgramRenameShaderSource(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadVertexShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadControlShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadEvaluationShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadGeometryShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadFragmentShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro LoadComputeShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateVertexShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateControlShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateEvaluationShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateGeometryShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateFragmentShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro CreateComputeShader(). Removed any functions that were called only by this macro. This macro has largely been replaced by the <Program> edit wizard.
Removed obsolete macro ShaderBufferBindAddVariable(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader.
Removed obsolete macro ShaderBufferBindNodeRefresh(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader.
Removed obsolete macro ShaderBufferReadNodeRefresh(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader.
Removed obsolete macro StructInstanceArrayNodeToggleImplicitlySizedArray(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader. This includes creating representations of struct instances.
Removed obsolete macro StructNodeSetNameFromIdentifier(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which maintains a correct set of uniforms, uniform buffers, and shader buffers required by the shader. This includes creating representations of struct declarations.
In macro CreateResourceWiring(), added a message box to inform the user that this macro is not available in commercial releases.
Removed obsolete macro VariableNodeClearArrayCountDataSource(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which correctly sizes variables during the rebuild operation.
Removed obsolete macro VariableNodeSetDataCaptureDataSource(). Removed any functions that were called only by this macro. This macro has been replaced by data capture wizard, which allows you to create new data capture hierarchies and editing existing data capture hierarchies.
Removed obsolete macro VariableNodeUpdateFromInitializer(). Removed any functions that were called only by this macro. This macro has been replaced by the Shader app build command, which correctly initializes variables during the rebuild operation.
Added data interface IsFixedPointSignedImage, IsFixedPointUnsignedImage, IsFixedPointSignedFormat, and IsFixedPointUnsignedFormat to <ImageFormatQuery>. These data interfaces make it trivial to determine specific properties of images and pixel formats. Previously making such determinations required multiple tests. Typically a test for fixed pointedness and a separate test signedness.
Updated node, command, and data interface help.