What's new in SpeedTree Runtime SDK 10?
With the release of version 10.0.0, the SpeedTree Games SDK has been renamed to the SpeedTree Runtime SDK to better differentiate it from the newly introduced SpeedTree Pipeline SDK, which is tailored for reading, manipulating, and exporting native SpeedTree .spm files. The Runtime SDK remains focused on real-time, in-engine execution.
This release immediately succeeds the previous version, Games SDK 9.5.0, and brings the new product name, confirmed support of the v10 SpeedTree .stsdk/texture pipeline, updated support for Linux, and some moderate source cleanup.
Requirements
Ensure SpeedTree Modeler version 9.1.1 or newer is installed to compile .stsdk models compatible with this Runtime SDK release.
Features
- Games SDK Rebranded To Runtime SDK: The name change impacted several areas of the code because some files, like
SpeedTreeWind.h
, are shared with the upcoming SpeedTree Pipeline SDK and clarifications were necessary.CCore::Version()
also updated to report the new name. - Renewed Linux Support: Support for Linux lagged in 9.x but has been updated for version 10.
- C++20 Support: The Runtime SDK and Reference Application have been updated to be compliant with the C++20 standard. In some instances, there are C++20-only code paths for handling static member variables of templated classes.
- Xbox Series X/S Builds: Compiled and tested Xbox Series X/S builds against March 2024 GDK.
- PlayStation 5 Builds: Compiled and tested PlayStation 5 builds against Prospero SDK 9.000 and devkit system software version 9.00.00.45.
Changes
- Build Type Naming Convention Change (Windows): “MTDLL” is now “MD”, which is reflected in every Windows project file and .lib and .dll filename in the Runtime SDK.
- Standard Vertex Packers/Shaders Updated: The per-vertex attribute “two-sided” boolean was removed from the “Standard” and “Standard Grass” vertex packers in the Modeler. The Reference Application sample shaders were adjusted accordingly.
- SpeedWindTree.h Updates (in version 9.5.0, most proprietary wind functionality was consolidated into this single file, which compiles in both C++ and HLSL/GLSL shaders):
- Any references to “Games SDK” or “SDK” in the comments were updated to “Runtime SDK”.
CWindStateMgr::SetSeed()
added for better randomization control.CWindStateMgr
will no longer pick a random seed upon instantiation.- Structure
SWindBranchLevelSdk
renamed toSWindBranchLevelRuntimeSdk
. - Structure
SWindVertexSdk
renamed toSWindVertexRuntimeSdk
. - Structure
SWindOptionsSdk
renamed toSWindOptionsRuntimeSdk
. - Structure
SWindBranchStateSdk
renamed toSWindBranchStateRuntimeSdk
. - Structure
SWindRippleStateSdk
renamed toSWindRippleStateRuntimeSdk
. - Structure
SWindStateSdk
renamed toSWindStateRuntimeSdk
. - Structure
SWindInputSdk
renamed toSWindInputRuntimeSdk
. - Function
SdkNoise2DFlat()
renamed toRuntimeSdkNoise2DFlat()
. - Function
WindSdk()
renamed toWindRuntimeSdk()
. - Enumeration entry
ST_WIND_MODE_SDK
renamed toST_WIND_MODE_RUNTIME_SDK
. - Structure
SConfigSdk
renamed toSConfigRuntimeSdk
. - Member function
CWindStateMgr::GetConfigSdk()
renamed toCWindStateMgr::GetConfigRuntimeSdk()
. - Updated deprecated
GLM_SWIZZLE
toGLM_FORCE_SWIZZLE
in use of GLM library. - Added explicit copy constructors to float2, float3, and float due to gcc warnings.
- All boolean member variables in
SWindOptions*
structures were updated to integers to help ensure C++/std140 alignment across all supported platforms. Conditionals referencing these values were also updated. - Minor bug fixes to
WindGlobalBehaviorLegacy()
andWindLeafTumbleLegacy()
to correct alternate coordinate system support. - Minor bug fix in
WindBranchByLevelVfx()
so thatsBranchLevel.m_fChaos
has an effect on wind. CWindStateMgr::SetNoWind*()
functions updated with more thorough initialization code.
- GLEW_STATIC Declaration Moved: For OpenGL applications, glew is compiled from source and the
GLEW_STATIC
declaration was moved fromInclude/SpeedTree/Utilities/Utility.h
into each project’s preprocessor definitions. - Linux Changes: Some changes were necessary to get the sample Reference Application to compile and function on Linux, others were from gcc heeding errors and warnings:
- Changes to the sample WASD-style navigation, defined in
MyNavigationBase.h/cpp
andMyMouseAndKeyboardNavigation.h/cpp
. - Several cases where case sensitivity to art asset filenames and paths needed adjustment.
- Iterator typename updates for class
CCellContainer
in the sample terrain engine.
- Changes to the sample WASD-style navigation, defined in
- Win32/32-bit Builds Removed From DirectX12 Reference Application: These went unused and were causing issues with use of Dear ImGui. All of the Runtime SDK libraries, including the SpeedTree DirectX12 rendering library, still build under Win32/32-bit.
- Core Library Changes:
- Removed
c_szFolderSeparator
constant declared inInclude/SpeedTree/Core/Types.h
c_apGfxResourceNames
was removed fromInclude/SpeedTree/Core/Core.h
and replaced with the static functionCCore:GfxResourceName()
.st_strerror()
given a robust update inPortableCrt.h
.
- Removed
- Reference Application Changes:
- In
gbuffer_example.h
, used in the deferred rendering example,ST_GEOMETRY_TYPE_TREE_2SIDED
andST_GEOMETRY_TYPE_GRASS_2SIDED
were removed and the sample tree, grass, and deferred lighting shaders were adjusted accordingly. This form of 2-sided lighting was deprecated in the Modeler in version 9. m_iShaderLighting
removed from the example SSpeedTreePbrInput structure as it is no longer configurable.- Font updated for ImGui-based overlay.
- In
Bug fixes
- Windows Visual Studio Project Alignment: There are numerous preprocessor definitions across the Visual Studio 2015, 2017, 2019, and 2022 projects, each version with 16 build configurations of four libraries and a reference application. An audit and realignment of these settings for every configuration was conducted. Some alignments included:
- Having
ST_USE_IMGUI
defined for every build of the Reference Application (many did not have it defined). - Setting
/SUBSYSTEM:WINDOWS
instead of/SUBSYSTEM:CONSOLE
for every Reference Application build. - Removing older, unused, or out-dated definitions.
- Having
- OpenGL Reference Application Bug Fixes (Windows):
- When built and run with DLL versions of the SpeedTree Runtime SDK libraries, a crash resulted at initialization with the glew library built with
GLEW_STATIC
. - Max anisotropic filtering setting not passing through when SpeedTree Runtime SDK libraries were built and used as DLLs.
- Switching every configuration to using
/SUBSYSTEM:CONSOLE
necessitated adding aWinMain()
entry point which just pointed to the existingmain()
entry point.
- When built and run with DLL versions of the SpeedTree Runtime SDK libraries, a crash resulted at initialization with the glew library built with
Post-alpha updates
- SpeedTree Viewer application added, which is a comprehensive utility that provides a more straightforward example of using the SpeedTree Runtime SDK than the more complex Reference Application. It details loading, rendering, and animating SpeedTree .stsdk models using a straightforward architecture, implemented in C++ and OpenGL. More information on this utility, which also demonstrates how to use the new SpeedTree Pipeline SDK, are here.
- Include file
Core/String.h
renamed toCore/StringDynamic.h
. - Include file
Core/FixedString.h
renamed toCore/StringFixed.h
. - Detailed comments added to structure
SDrawCall
inCore/Core.h
.