August 9, 2026

SDK 49


Highlights
  • GeometryFlow editor for node-based procedural geometry creation and deformation.
  • Particle simulation plugin with GPU-based 2D and 3D particle systems.
  • Custom scene types can be serialized and stored in scene files.
  • RmlUi plugin for HTML/CSS-based interfaces.
  • Box3D physics plugin.
  • New demo with flow-based Car paint material and logic.
Tools changes:
  • Added GeometryFlow plugin to Explorer.
  • Box3D plugin has been added to Explorer.
  • Added SDF Object template to ShadingFlow.
  • Explorer has been migrated to internal menus.
  • Handle manipulator support has been added to Explorer extensions.
  • Object Flags and Material Options are now in a foldable ControlGroup.
  • Improved object transformation when objects are dropped into the scene in Explorer.
  • Improved material focusing behavior in Explorer.
  • Explorer can export all script sources from the scene.
  • NodeScriptScattering plugin now automatically updates the environment.
Plugins changes:
  • New Box3D physics plugin.
  • New RmlUi plugin for HTML/CSS-based interfaces.
  • New GeometryFlow plugin provides a node-based, flow-driven geometry creation system.
  • New Particles plugin provides a universal GPU-based 2D and 3D particle simulation system.
  • New ControlFlowMath plugin enables runtime evaluation of Flow graphs on CPU.
  • New OpenCL plugin provides a lightweight OpenCL loader for rapid prototyping.
  • Many usability improvements to the ControlFlow plugin.
  • The Popup plugin includes methods for simple menu creation.
  • ControlFlow now supports user pointers and data for inputs, outputs, nodes, and protos.
  • ControlFlow now supports automatic input node creation.
  • ControlFlow now supports disconnecting nodes by dropping connections from inputs.
  • ControlFlow scalar input protos now store their range in the node state.
  • ControlFlowGLSL adds Box, Sphere, Cylinder, and Extrude SDF operations.
  • The “ray_march” and “deferred_metallic” protos have been added to ShadingFlow.
  • The “name”, “scatter”, “array”, “cable”, “path”, “split”, “boolean”, and “fracture” protos have been added to GeometryFlow.
  • Improved precision of cylinder and tube primitives.
  • Transparent radius has been added to the scattering plugin.
  • The primitives plugin adds cap tessellation and rotation support for Cylinder and Tube types.
  • Cylinder and Tube types support zero tessellation levels to disable caps or sides.
  • Rust API enums are now represented as custom structures for better language compatibility.
New samples:
  • geometry/boolean is a new MeshBoolean test.
  • geometry/fracture is a new MeshFracture test.
  • native/vk_spirv is a new native SPIR-V shader loading example.
  • native/sycl_texture, sycl_runtime demonstrate SYCL interop.
  • native/ze_texture, ze_runtime demonstrate Level Zero interop.
  • scene/node demonstrates custom Node serialization.
  • render_forward – forward pass BRDF with access to ambient occlusion.
  • object_flow_boolean, object_flow_coplanar, object_flow_difference, object_flow_intersection are new Mesh boolean samples.
  • object_flow_array – object instantiation.
  • object_flow_cable – cable path between points.
  • object_flow_gear – angular wave for gears.
  • object_flow_line – line primitive.
  • object_flow_path – placing object along the path.
  • object_flow_needles – instance scattering over path.
  • object_flow_scatter – instance scattering over surface.
  • object_flow_split – split plane.
  • object_flow_bend bends geometry along an axis.
  • object_flow_noise deforms geometry using fractal noise.
  • object_flow_scale scales geometry with optional volume preservation.
  • object_flow_stairs creates compound geometry from different parts.
  • object_flow_sweep instances geometry along a path.
  • object_flow_twist twists geometry around an axis.
  • object_flow_wave applies wave-based deformation.
  • material_flow_fog – fog object.
  • material_flow_marching – volume marching.
  • material_flow_sdf_cell – sdf cell noise.
  • material_flow_sphere demonstrates ray-sphere intersection.
  • material_flow_stencil demonstrates two-sided stencil buffer.
  • material_flow_sdf demonstrates SDF object tracing.
  • material_flow_screen demonstrates render screen texture.
  • material_flow_project demonstrates projected decals.
  • material_flow_box demonstrates ray-box intersection.
  • script_node_flow_location – ObjectNode animation.
  • script_material_flow_noise demonstrates fractal noise.
API changes:
  • Device::Feature provides verbose Mesh shader parameters.
  • MeshBoolean operations are available in the MeshBoolean namespace.
  • MeshFracture namespace provides simple interface for configurable mesh fractures.
  • Mesh attribute optimizer receives threshold parameter. Negative value performs bit comparison, zero value performs type-specific threshold, positive value is an explicit threshold value.
  • MeshIndices/MeshAttribute::setSize() returns true if allocation was successful. Incremental resizes up to 16 elements use reserve allocation with a 1.5 size multiplier.
  • MeshGeometry::optimizeOrder() optimizes attribute and index order within MeshGeometry.
  • MeshGeometry::addGeometry() adds geometry with matching layout requirements.
  • MeshGeometry::flipWinding() flips index order and inverts normals.
  • MeshAttribute transformations now support packed tangent basis.
  • Added dedicated MeshAttribute scale-only transformation method.
  • The MeshSplit::split() function splits the mesh by plane and produces front, back, and cross meshes.
  • The Polygon::inside() function has been added.
  • The Quadrilateral::area() function has been added.
  • Perlin noise generators now support configurable tiling period.
  • PrefixScan now supports strided data via PrefixScan::FlagStride.
  • TellusimPolynomial adds solvers for linear through septic equations.
  • TellusimSpline adds spline intersection utilities.
  • State color has been added to rect and text Controls.
  • Custom shadow intersection functions now support color shadows.
  • Cube texture mipmap generation methods have been added to CubeFilter.
  • MaterialShading now supports two-sided stencil buffering.
  • Screen, Occlusion, Occluder, and Feedback rendering events have been added to SceneRenderer.
  • A global reflection scale parameter has been added.
  • Scene scripts now have a getCompilerSource() method that returns the final source code.
  • SceneUpdate interface added for custom update logic.
  • Added SceneReader and SceneWriter interfaces for scene serialization.
  • Scene type serialization migrated to SceneReader/SceneWriter system.
  • GraphBase, NodeBase, and MaterialBase now support user-data serialization in scene files (requires explicit constructor).
  • SceneManager::releaseBuffer() method has been added to remove queued data fetches.
  • Row and column spacing have been added to ControlGrid.
  • Random::Stratified namespace adds Halton, Hammersley, and Vogel sequences.
  • Added ArrayStack<> container for allocation-free arrays.
  • TS_NO_LOG macro now controls enabling of all TS_LOG macros.
  • Added compile-time hash functions to String.
  • Added 3D and Cube – 2D Array image conversion in Image. Image::FlagArray controls such conversions.
  • Matrix3x2 now supports 2×2 submatrix access.
  • Expression::Scope adds support for custom variables and functions in all expressions.
Shader API changes:
  • New set_node_object_payload_index() and set_node_object_num_instances() methods have been added to SceneNodes.shader to control instancing.
Bug fixes:
  • File references to NodeScript and GraphScript can override script parameters.
  • Fixed Explorer crash during undo operation for Material hierarchy removal.
  • Fixed incorrect bounding box calculation in SpatialTree BVH for small element counts.
  • RenderDraw now correctly visualizes NodeObject bounding boxes with instancing.
  • Nodes can now create and remove other nodes inside update().
  • Corrected GPU ordering in the Info interface on Linux DRM (sorted by screen count).
  • GLSL type references now have higher priority than variables.
Internal Clay features:
  • 128 and 256-bit integer types have been added.
  • Rational type for integer arithmetic has been added.
  • MeshReduce performs better quadrilateral to triangle conversion.
  • The MATERIAL_DIRECT_LIGHT mode has been added to the light shader. It calculates diffuse direct light at a given point without materials.
  • Clearcoat normal and color parameters are available using the MATERIAL_CLEARCOAT_NORMAL and MATERIAL_CLEARCOAT_COLOR macros.
  • The metallic texture is available in the forward pass. It can be used to fetch ambient occlusion value.
  • The shader compiler ensures the texture fetch argument types.
  • Improved upscaler quality and performance.
  • Improved separable filter performance.
  • Vulkan Texture and Buffer support now enables dedicated allocation mode for cross-API interop resources.
  • Improved subpixel jitter distribution for antialiasing.
  • Improved Expression evaluation performance.

January 11, 2026

SDK 48


Highlights
  • Node-based GraphVarying editor.
  • NodeObject instancing for massive object replication.
  • MSAA compatibility with D3D12 SM6.7.
  • Sparse textures for D3D12 (sparse resource tier 4 is required).
  • Indirect top-level tracing builds on Vulkan (only AMD and Intel drivers support it).
  • Enhanced dialogs on Linux platforms.
  • Editor compatibility with SteamOS.
New samples
  • graph_flow_normal scene demonstrates two-pass normal map texture generation.
  • graph_flow_texture scene demonstrates procedural texture generation.
  • graph_flow_perlin scene demonstrates dynamic procedural textures.
  • gl_device, gles_device, and gles_runtime native examples have been added.
  • native/vk_qt_widget example has no dependency on the Vulkan library.
  • platform/divisor example demonstrates the vertex attribute rate parameter for per-batch input.
  • platform/cooperative test is compatible with non-square matrices.
  • render/limits has an additional instancing-based rendering mode (slower than BVH-based).
  • materials/material_alpha scene demonstrates alpha-tested geometry.
  • objects/object_skeleton scene demonstrates hierarchical skeletons.
  • scripts/script_material_motion scene demonstrates the motion blur effect.
  • scripts/script_material_grid scene generates a high-frequency output verification image.
  • native/vk|d3d12|d3d11_device sample outputs all platform-specific device features.
  • render/multisample demonstrates engine MSAA rendering.
Tools changes
  • Boolean uniform type has been added to the GraphVarying type in Explorer.
  • GraphFlow editor has been added to Explorer.
  • Explorer and Executor support sparse buffers and textures controlled by the “-sparse 1” command line option.
  • Executor now supports controller-based camera movement (can be disabled with the “camera/controller” option).
  • Executor supports tracing_all and screen_all command line options for fast rendering mode selection.
  • Light texture visualization has been added to Explorer.
  • Pool texture visualization has been added to Explorer.
  • The quality of the selection area has been improved.
Plugin changes
  • GraphFlow plugin for node-based GraphVarying editing has been added.
  • Integer vector types have been added to the ControlFlowGLSL editor.
  • Circle, triangle, box, pentagon, hexagon, octagon, and star SDF protos have been added to ControlFlowGLSL.
  • Wave, ripple, and twist warp protos have been added to ControlFlowGLSL.
  • Checker sampler proto has been added to ControlFlowGLSL.
  • Color masks and stencil functions have been added to the MaterialFlow layout proto.
  • Clutter and BatchTransform plugins have been moved to the plugin/graphs directory.
  • A new interface/popup plugin for popup controls and menus has been added.
  • DLSS, FSR3, and XeSS plugins have been updated to the latest versions.
  • New FSR1 and FSR4 plugins have been added.
  • A new FXAA plugin has been added.
  • Noise generation has been moved to the interface/flow plugin from the material/flow plugin.
  • Tracing shader source generation has been added to the material flow and MaterialX plugins.
  • A direction proto to construct a direction vector from two angles has been added to ControlFlow.
  • Enhanced tooltip visualization with delayed disappearance.
  • Instance and Payload protos have been added to MaterialFlow.
  • Transform input has been added to the Vertex input proto of MaterialFlow.
  • Group specification has been added to the Uniform proto of MaterialFlow.
  • A Line primitive has been added to the Primitives plugin.
  • Primitives correctly provide line geometry for ObjectMesh flags with lines.
API changes
  • MaterialShading Tracing source has been renamed to Sample source.
  • SceneRender interface provides access to temporal render textures.
  • The Scene interface now provides the directory where the scene file is located.
  • Methods for registering buffers with default offsets and callbacks have been added to SceneBuffer.
  • NodeObject methods to control instancing with CPU and GPU counts have been added.
  • Payload address and stride parameters have been added to NodeObject.
  • Support for motion-buffer per-pixel jitter offsets has been added via the RenderManager|RenderRenderer::FlagJitterBuffer flag.
  • LightPoint and LightSpot return the intensity texture index.
  • RenderDraw supports multisample texture visualization.
  • API-specific Context interfaces receive a device index in the constructor.
  • VK|D3D12|D3D11Device classes now provide native device features.
  • Access to API layers and extensions in VK|GL|GLESContext and VKDevice has been added.
  • The matrix8x16x16f16 matrix type has been added to the Device::Features structure.
  • Device::Features structure names have been changed to follow API-name style.
  • Device::Features::textureArraySparse field has been added (array textures with a full mipmap chain).
  • Device::Features::surfaceMultisample field has been added (compute shader writes to MSAA textures).
  • A dedicated ControlRoot::setMousePosition() method has been added.
  • ControlText can optionally handle Pressed and Focused callbacks.
  • ControlTree accepts right and left buttons for tree expanding/folding.
  • Canvas|Controls::raiseChild|lowerChild() methods now accept the target position index.
  • Controls::AlignLocal aligns controls using local boundaries only.
  • The ObjectMesh::FlagInstancing flag activates optional geometry instancing at the ObjectMesh level.
  • SeparableFilter now supports custom filter kernels specified by setKernelSource().
  • The number of Function template arguments has been increased to 10.
  • System::exec() now returns the process exit code. The check for successful execution is (ret == 0).
Bug fixes
  • Correct mesh morphing for meshlet-based geometry.
  • Corrected ControlDialog mouse movement compensation with fractional rendering scales.
  • Corrected literal recognition of mixed formats.
Internal Clay features
  • Linux dialogs have a fallback mode through kdialog and zenity applications.
  • Qt6 support has been added to Linux dialogs.
  • Support for RWTexture2DMS in HLSL.
  • Support for input and output gl_SampleMask on all platforms.
  • Constant-based mix operations are now resolved at the compilation stage in the shader compiler.
  • Constant-based pow for powers 2, 3, 4, 5, and 8 is replaced by multiplications in the shader compiler.
  • Correct handling of tracing masks for tracing shadows and reflections.
  • Improved noise sequence generation for reflection and occlusion samples.
  • Meshlet and compute rasterization support meshes with morphing.
  • Correct tracing generation for meshes with morphing.
  • Correct tracing generation for meshes with hierarchical skeleton animations.
  • The script system uses try { } blocks for external code execution.
  • vbar() and hbar() texture patterns have been added.
  • Correct tangent basis generation for mesh line primitives.

November 29, 2025

SDK 47


Highlights
  • Tellusim Core SDK is now available on GitHub.
  • A new series of Getting Started tutorials has been added to the documentation.
  • Added USD MaterialX material support.
  • New batch transformation plugin for massive node updates.
  • Object loading methods now support multiple material roots via material callbacks.
  • Added GLSL sizeof(), offsetof(), and assert() functions.
  • Improved FFT with support for non–power-of-two sizes.
  • General optimizations and bug fixes.
Tools changes
  • NodeSkyBox plugin has been added to Explorer.
  • NodeGrid (node duplication) plugin has been added to Explorer.
  • RenderFlares (glares, ghosts, and flares) plugin has been added to Explorer.
  • The Project tool parses all Makefile branches for correct project file generation.
Plugin changes
  • New scene/transform plugin performs compute-based transformations for provided nodes for extremely fast node updates.
  • MaterialFlow plugin enables screen-space and traced reflections for forward and transparent passes.
  • MaterialX plugin now provides the MaterialXManager class for simple MaterialX-based material handling.
  • MaterialX plugin has been updated to the latest MaterialX runtime libraries.
  • Streamer plugin supports user-defined name prefixes that can be removed or replaced.
  • Streamer plugin excludes files with the .asset extension from being treated as asset archives.
  • SkyBox object plugin added. Supports Panorama, Cube, and LightImage textures.
  • Flares render plugin added. Supports glares, ghosts, and flare effects.
  • New XeFG frame generation plugin has been added.
New samples
  • materials/material_pixel_depth scene demonstrates a pixel-depth effect for smooth object intersections.
  • render/render_bloom scene demonstrates a full-scene blur effect with bloom postprocessing.
  • render/render_tonemap scene demonstrates tonemap color adjustment.
  • graphics/object_tree example demonstrates simple GPU-driven rendering with multi-draw-indirect rendering.
  • parallel/fourier_2d sample performs image convolution using the Fast Fourier Transform.
  • platform/formats sample demonstrates mixed color formats.
  • platform/mapped sample demonstrates efficient Vulkan read and write shader access to mapped files.
  • platform/sparse sample demonstrates the Sparse texture API.
  • native/d3d12_program sample demonstrates generic D3D12 programs.
  • native/vk_swap_chain example demonstrates custom swap chain creation for the Window interface.
  • native/gl_runtime example demonstrates direct access to the OpenGL API for rendering.
Sample changes Build changes
  • Compatibility with Visual Studio 2026.
  • All generated SDK project files have been verified.
API changes
  • API pointer performance (allocation and access) has been improved by 20%.
  • New ObjectMesh and ObjectBrep loaders support multi-parent objects with a new signature that accepts a material callback.
  • New ObjectMesh and ObjectBrep createMaterials() methods are available for custom material creation.
  • Added wasMouseButtonReleased(), wasKeyboardKeyPressed(), and wasKeyboardKeyReleased() methods to the Window class.
  • Added wasButtonPressed() and wasButtonReleased() methods to the Controller class.
  • Added setTonemapTexture() method to RenderFrame for 3D texture-based tonemappers.
  • RenderFrame::setBloomFade() controls composite texture fading. Can fully blur the composite texture.
  • A negative bloom scale disables the internal bloom composite step and enables use with external bloom plugins.
  • SceneRenderer::dispatchBloomFrame() provides all temporary downscaled and upscaled textures for implementing custom bloom effects.
  • Async interface is now available in Script constructors.
  • MaterialShading can initialize a shading texture directly from the Image interface.
  • The PixelDepth material option offsets the shadow map texture to reduce self-shadowing artifacts when pixel depth is enabled.
  • Atomic::set() is now an atomic operation instead of a volatile write.
  • bitcount(), bitleast(), bitmost(), bitreverse() for uint32_t and uint64_t types have been added.
  • Added support for RGBf9Eu5 textures.
Internal Clay features
  • Cross-platform support for GLSL bitfieldExtract(), bitfieldInsert(), bitfieldReverse(), findLSB(), findMSB() functions have been added.
  • HLSL code generation related to incorrect address optimization has been fixed.
  • USD parser correctly merges child elements if the destination element has no children.
  • USD loader supports MaterialX materials and generates a MaterialX XML blob during loading.
  • GLSL compiler supports the assert() keyword, which stops compilation if an expression is zero.
  • GLSL compiler supports offsetof() and sizeof() keywords for constants, allowing structure-size validation in assertions.
  • GLSL compiler performs additional constant-based optimizations for all arithmetic operations.
  • A preprocessor bug involving incorrect inclusion of DOS-encoded (\r\n) files has been fixed.
  • An issue with incorrect propagation of the nonuniform() decoration in GLSL and HLSL shaders has been fixed.
  • Texture and Buffer D3D12 tables are now bound once per frame to reduce overhead for multiple binds.
  • Increased the number of per-frame D3D12 resource handles to 1024 * 512 to support large table resources.
  • Screen-space reflections produce artifact-free results for the forward rendering pass when depth-bias cannot be evaluated.
  • A bug with incorrect cube-texture LOD bias during upscale rendering has been fixed on all platforms (Metal not affected).
  • Sizes of all scene and render shader structures are validated with the assert() keyword.
  • NodeObject adds program hashes to self-assigned materials.
  • Support for the latest Apple devices has been added to the Info class.
  • Image class now supports mixed format conversions (FormatRGBAu4n, FormatRGBu5Au1n, FormatRu5Gu6Bu5n, FormatRGBu10Au2n, FormatRGf11Bf10, FormatRGBf9Eu5).
  • Added init() method to all Script classes. init() is called after all parameters are set. Parameter values are not available in the constructor.
  • FourierTransform supports non–power-of-two sizes with optimized multipliers for 3, 5, 6, and 7.
  • Current camera_znear value is available during shadow map rendering.
  • SceneManager::setBufferParameters() now skips manually assigned buffer sizes.

August 23, 2025

SDK 46


May 31, 2025

New Tellusim Documentation


April 29, 2025

SDK 44


March 23, 2025

SDK 43


February 23, 2025

SDK 42


January 20, 2025

SDK 41


December 23, 2024

The Power of GPU-Driven Scenes


December 8, 2024

11 Hello Bindless


November 11, 2024

GPU texture encoder


November 9, 2024

10 Hello Image


November 8, 2024

SDK 40


September 25, 2024

09 Hello Controls


September 1, 2024

08 Hello Canvas


September 1, 2024

SDK 39


September 18, 2023

07 Hello Splatting


August 28, 2023

06 Hello Traversal


August 13, 2023

05 Hello Tracing


August 12, 2023

04 Hello Raster


July 31, 2023

03 Hello Mesh


July 7, 2023

Scene Import


June 25, 2023

02 Hello Compute


May 15, 2023

01 Hello USDZ


May 14, 2023

00 Hello Triangle


April 24, 2023

WebGPU Update


April 4, 2023

Tellusim Upscaler Demo


February 10, 2023

DLSS 3.1.1 vs DLSS 2.4.0


January 31, 2023

Dispatch, Dispatch, Dispatch


October 28, 2022

Tellusim upscaler


October 14, 2022

Upscale SDK comparison


September 20, 2022

Improved Blue Noise


June 19, 2022

Intel Arc 370M analysis


January 16, 2022

Mesh Shader Emulation


December 16, 2021

Mesh Shader Performance


October 10, 2021

Blue Noise Generator


October 7, 2021

Ray Tracing versus Animation


September 24, 2021

Ray Tracing Performance Comparison


September 13, 2021

Compute versus Hardware


September 9, 2021

MultiDrawIndirect and Metal


September 4, 2021

Mesh Shader versus MultiDrawIndirect


June 30, 2021

Shader Pipeline