SpeedTree
    Show / Hide Table of Contents

    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 to SWindBranchLevelRuntimeSdk.
      • Structure SWindVertexSdk renamed to SWindVertexRuntimeSdk.
      • Structure SWindOptionsSdk renamed to SWindOptionsRuntimeSdk.
      • Structure SWindBranchStateSdk renamed to SWindBranchStateRuntimeSdk.
      • Structure SWindRippleStateSdk renamed to SWindRippleStateRuntimeSdk.
      • Structure SWindStateSdk renamed to SWindStateRuntimeSdk.
      • Structure SWindInputSdk renamed to SWindInputRuntimeSdk.
      • Function SdkNoise2DFlat() renamed to RuntimeSdkNoise2DFlat().
      • Function WindSdk() renamed to WindRuntimeSdk().
      • Enumeration entry ST_WIND_MODE_SDK renamed to ST_WIND_MODE_RUNTIME_SDK.
      • Structure SConfigSdk renamed to SConfigRuntimeSdk.
      • Member function CWindStateMgr::GetConfigSdk() renamed to CWindStateMgr::GetConfigRuntimeSdk().
      • Updated deprecated GLM_SWIZZLE to GLM_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() and WindLeafTumbleLegacy() to correct alternate coordinate system support.
      • Minor bug fix in WindBranchByLevelVfx() so that sBranchLevel.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 from Include/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 and MyMouseAndKeyboardNavigation.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.
    • 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 in Include/SpeedTree/Core/Types.h
      • c_apGfxResourceNames was removed from Include/SpeedTree/Core/Core.h and replaced with the static function CCore:GfxResourceName().
      • st_strerror() given a robust update in PortableCrt.h.
    • Reference Application Changes:
      • In gbuffer_example.h, used in the deferred rendering example, ST_GEOMETRY_TYPE_TREE_2SIDED and ST_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.

    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.
    • 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 a WinMain() entry point which just pointed to the existing main() entry point.

    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 to Core/StringDynamic.h.
    • Include file Core/FixedString.h renamed to Core/StringFixed.h.
    • Detailed comments added to structure SDrawCall in Core/Core.h.
    Copyright © 2023 Unity Technologies
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX.