Version 5.0 Final
This is the final 5.0 for-production release of the SpeedTree SDK.
There is an NVIDIA driver bug, starting with 190.38, that will sometimes cause grass and billboards to not render. The bug was reported and acknowledge by NVIDIA and should be fixed by the latest drivers publicly available by the time of this release.
All libraries were compiled and tested under Intel's Parallel Studio compiler under Windows, however Visual Studio-compiled binaries were shipped with the SDK. Intel Compiler binaries, measurably faster in culling & on-the-fly population functions, are available upon request to evaluators.
Grass cull system was under-performing, rendering a lot of full-faded grass cells. With correction, 30-40% less grass geometry is drawn per frame, but due to the fill-bound nature of the grass system, it will shave only ~10% of the grass draw time, depending on the system.
CInstance::m_fRotation was not properly initialized.
CForest::UnregisterTree() incorrectly deleted the tree that was passed to it. As CForest()::RegisterTree() does not allocate a tree object, CForest::UnregisterTree() does not delete the tree object.
Render Interface Library
The sky is now rendered as a tessellated sphere instead of a box, and it is scaled to exist between the far clipping plane and the far fog distance. These changes allow the sky to be rendered after all other geometry, instead of needing to be rendered first.
SPEEDTREE_MAX_BILLBOARD_IMAGES, used in Billboard.fx, is now defined at run-time based on the forest population instead of using a hard-coded value. If dynamic population will used, it may be best to set your own overriding value.