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.
- 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.
- 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.
- 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.
- platform/bindless example can be used for evaluating bindless resource overhead.
- Compatibility with Visual Studio 2026.
- All generated SDK project files have been verified.
- 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.
- 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.