News
Scenome 22.13 — 4/3/2022
Release details are described below.
- Scenome Platform. We are in the process of removing the <NodeSelector> class from the API. All data interfaces will remain in place until June 1st 2023, but you should stop using this class and instead use <NodeSink> objects that refer to <NodeLink> objects in other documents. Replacements are being made in the Scenome Scripting Language codebase starting with this release 22.13. This is going to affect documents containing any nodes that have a <NodeSelector> data member. Only a small number of node classes are affected by this, and we will issue further guidance as needed. Generally, this change will require an <IncludePaletteNode> to be stored in the graph at the top of affected documents, and a series of <FileNode> objects and <NodeLink> objects will replace the functionality of the <NodeSelector> class. Most of this conversion will be automated.
- Scenome Platform.
The <StructInstanceNode> and
<StructInstanceArrayNode> upgrade is ongoing.
Support has been added so that <StructInstanceArrayNode>
now supports variably-sized arrays when declared inside shader buffers.
struct my_struct { float f; }; buffer my_buffer { my_struct s[]; };
You can set array count by right clicking on the <ShaderBufferBindNode> that contains the <StructInstanceArrayNode> and selecting Set Top Level Array Size.... You should now be able to review the experimental support for this feature in <StructInstanceArrayNode>.
- Start a copy of the Shader application and select File » Open from the main menu.
- Open \StructUpgrade\StructUpgrade.box. The GLSL code is in the \460 folder if you wish to run experiments.
In order to run experiments, you'll also need to open APP_SERVICE_FEATURE_FLAGS_UTIL.SSL from the main application scripts folder and set function bool StructInstanceAllocator(){ return false; } to return true. Please send email to support@scenomics.com with comments. This feature should not be used in production. Here are the changes you'll need to make to the GLSL source code to use this feature:
//test_buffer_decl f_buff_decl_instance_array[2]; Change the explicit size 2 to empty array brackets as shown below and rebuild the document. test_buffer_decl f_buff_decl_instance_array[];
- Scenome Platform.
Added an experimental data member ::SetView( ... ) to array data interfaces.
You can now declare an array variable and set it as a view of data. This can be nice for algorithms where working with an
array is preferred over working with iterators. This isn't a const view because you can mutate the values
through the array object view, but you cannot change the amount of data, so it is a const view with respect to the
amount of data in the source data. For example, calls to change the array count will fail. You also cannot reuse
the array view once it has been bound.
auto Image a; a.OpenFile( "c:\\my_image.png" ); auto Uint8ArrayView image_view_a = a.GetUint8View(); auto Uint8Array array_view; array_view.SetView( image_view_a.First, image_view_a.Last ); // array_view is permanently bound. Console.Out( view.GetFirst() ); // Print the 0-th 'pixel' value to console. array_view.Set( 0, 128 );// Okay, permanently changes the value of the 0-th 'pixel'. array_view.Count = 32;// This won't work. array_view.Reserve = 128;// This won't work. array_view.Clear();// This won't work. Sets the array_view count to zero and the internal object data to nullptr, effectively disabling the array view. auto Image b; b.OpenFile( "c:\\another_image.png" ); auto Uint8ArrayView image_view_b = b.GetUint8View(); array_view.SetView( image_view_b.First, image_view_b.Last ); // This does nothing. array_view is still bound to <Image> a.
- Scenome Platform. The <StructInstanceNode> and <StructInstanceArrayNode> upgrade is ongoing. The <DataCapture> diffing algorithm has bug fixes and performance improvements. Changes to struct data members in GLSL should result in minimal changes to the Scenome document.
- Product Documentation. Updated documentation.