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.
»