November 8, 2024

SDK 40


New Engine features:
  • GLSL user stucture SSBO views (references).
  • Real-time GPU ASTC encoder for 4×4, 4×5, and 5×5 blocks.
  • Bindless buffer support has been added via the BufferTable interface.
  • Bindless resource support has been added to macOS and iOS.
  • Full Brep render on macOS and iOS via Mesh shader.
Build changes:
  • ts_chword.sh, ts_echo.sh, ts_exec.sh asks to install clang++ if it is not available.
Plugin changes:
  • interface/flow plugin for block-based editors.
  • interface/element plugin for the single CanvasElement insertion into Controls system.
New samples:
  • tests/graphics/cube_filter sample showcases real-time Cube texture diffuse convolution.
  • tests/graphics/decoder_jpeg sample showcases real-time GPU JPEG texture loading.
  • tests/graphics/encoder_astc sample showcases real-time GPU ASTC texture encoding.
  • tests/graphics/multi_window sample showcases multi-window rendering.
  • tests/platform/reference sample showcases shader references.
  • tests/platform/alpha sample showcases anti-aliased alpha tests.
  • tests/platform/atomic sample showcases buffer atomic operations.
  • tests/platform/bindless sample showcases bindless buffer and texture tables.
  • tests/platform/blending sample showcases uniform Blend color parameter.
  • tests/platform/buffer sample showcases cross-API access to an array of buffers.
  • tests/platform/indirect sample showcases MDI per-instance parameters.
  • tests/platform/multisample sample showcases AA window target.
  • tests/platform/preprocessor sample showcases macro-based function generalization.
  • tests/parallel/spatial_tree sample has optional BVH tree visualization.
  • tests/core/radix sample showcases the radix sort algorithm.
Tools changes:
  • The project generation tool can create new draft project files for Core and Engine SDK and convert Makefile-based projects to Xcode, VS, CMake, and Gradle projects.
  • ts_image supports GPU ASTC texture compression with “gpu” command line argument flag.
  • ts_shader supports texture and sample argument buffer generation with flags command line argument.
API changes:
  • Set and Map containers can use const char* keys for fast constant table initializations.
  • radixSort algorithm has been added to TellusimSort.h
  • String::split() methods split the string by provided delimiters.
  • String::tprintf() method provides type-based printf system with {0}, {1}, … argument accessors.
  • The draw statistics methods have been added to the Canvas interface.
  • Comparison operators for FontStyle, StrokeStyle, and GradientStyle structures have been added.
  • BufferTable interface for bindless Buffer data has been added.
  • Command and Compute functions that receive an Array<Sampler|Texture|Buffer|Tracing|*Table> arguments have been added.
  • ShaderCompler flags for generated shader output control (MTLIndirect enables argument buffers for all textures and samplers on Metal).
  • BrepModel interface for low-level Brep rendering has been added.
  • EncoderASTC interface for GPU ASTC texture compression has been added.
  • Dedicated HDR ASTC color formats have been added.
  • LDR ASTC formats have u8n and u8ns postfixes.
  • Dynamic storage buffer argument has been removed from Kernel, Pipeline, and Traversal interface. The more flexible replacement is the BindFlags enum.
  • Improved Kernel, Pipeline, and Traversal interfaces support BufferTable and TextureTable bindings, Shader::Mask, and BindingFlags.
  • Swizzled viewport rendering feature has been removed from Pipeline.
  • CanvasStrip has dedicated methods for creating quadratic and cubic curves.
  • ControlArea supports content scaling and absolute children transformations.
Internal features:
  • AtomicCompareExchange operation has been fixed.
  • Swizzled accessors to bindless buffers have been added to HLSL shader generator.
  • HLSL and MSL shader translators support bindless arrays for buffers and textures.
  • Correct structure and array access for atomic and load/store operations in HLSL.
  • Fast MeshAttribute and MeshIndices allocation for addAttribute() and addIndices() methods.
  • ControlSplit renders lines via the CanvasStrip element.
  • WinApp Window supports all mouse buttons and wheel events.
  • Emscripten Window supports mouse wheel events.
  • Correct WebGPU window initialization due to the latest WebGPU API update.
  • Metal private resources are Heap allocated.
  • Material shader pragmas can control the pipeline type (Vertex or Mesh shader mode).
  • SceneTexture supports non-uniform block compression sizes.