Remnants of PS Vita and WiiU support removed.
Added PortableCrt.h that works with ST_WINDOWS_SECURE_CRT macro to avoid warnings about insecure CRT functions under Windows.
CShaderConstantRI replaced with CShaderConstantBufferRI. Constant buffers are now set in an SDK-structure and bound to the GPU as opposed to setting each GPU constant slot individually on the fly. This speeds constant changes dramatically.
Fixed a number of inconsistencies in enumeration and macro naming convention throughout the SDK. Some started with “SPEEDTREE_” others with “ST_”. All now begin with “ST_”.
EShaderPass enumeration renamed to ERenderPass.
CCore::SSupportingData removed, no longer needed for UE3 support.
CForest::WindPreroll() added so that a game or level can begin with trees in mid-wind effect instead of having to watch the initial wind build up.
A very small CPerlinNoiseKernel class was added to the Core library to assist with rolling wind effects. It's ultimately used to generate a noise texture.
OpenGL instancing code path revamped and much improved. Now on par with DirectX 11 rendering speeds.
SCellKey and SRowCol were redundant (each simply holds an integer pair). SCellKey was removed and replaced with SRowCol.
CCell::AppendTreeInstances() in the Forest library was renamed to CCell::SetTreeInstances() because, well, it didn't append instances, it only set them.
CVisibleInstancesRI::Update3dTreeInstanceBuffers() renamed to CVisibleInstancesRI::Cull3dTreesAndUpdateInstanceBuffers() for accuracy's sake.
Similarly, CVisibleInstancesRI::UpdateBillboardInstanceBuffers() was renamed to CVisibleInstancesRI::CopyBillboardInstancesToGpu().
CVisibleInstancesRI::Clear() was added for efficiency when all instances needed to be deleted quickly.
CInstance in Forest.h reworked a little:
Padded to align with S3dTreeInstanceVertex and S3dBillboardInstanceVertex for streaming efficiency's sake.
SPEEDTREE_COMPRESS_INSTANCE_VECTORS was removed. It wasn't being used and broke new alignment with S3dTreeInstanceVertex and S3dBillboardInstanceVertex.
The class CGrassInstance is now the structure SGrassInstance. This helped with grass streaming performance. Get*() and Set*() functions have been replaced with direct member variable assignments.
CVisibleInstances::VisibleCells() no longer returns const TCellPtrArray& but a const TRowColCellPtrMap&. While our reference application does not access this function, yours might.
SRenderPass has been removed from Core.h. Functions that took it as a parameter now take the enumeration ERenderPass, also defined in Core.h.