Shader Name Change: Overhaul of the shader naming convention. There were a few states that would cause a hash collision, but no longer. If your application uses the SDK to load shaders, you'll have to recompile your assets.
Distant Billboards Cullable: Support was adding for culling billboards after a certain distance, so they won't always draw all the way out to the far clipping plane. This can be set per base tree in the SDK. CInstancingMgrRI_t::CopyBillboardInstancesToGpu() updated to support.
Lingering Grass Cells Bug Fix: Bug fix for CInstancingMgrRI_t::UpdateGrassInstanceBuffers() where old grass cells weren't being properly cleared. This would result in grass cells continuing to render even if they were outside of the frustum.
Wind Period Changed: Due to a switch in the shader templates from an sine approximation to a call to the sin() intrinsic function which operates on a different period, changes were made in CWind::Advance() in Wind.cpp. Specifically, anywhere the constant c_fSineToApproxRatio = 6.67 is used represents a period adjustment.
RENDER_TARGET_TYPE_NULL Removed: Due to a change in the example G-buffer format used by the SpeedTree reference application, RENDER_TARGET_TYPE_NULL, defined in GraphicsApiAbstraction.h, was removed.
NULL Tree Pointer Bug Fix: Bug fix in CVisibleInstances::SetHeapReserves() that would cause the first base tree in the cull results to be NULL.
OpenGL VAO Restoration: In the OpenGL Renderer Library, CGeometryBufferOpenGL::CreateInstancingVAO() and CInstancingMgrOpenGL::Render() will now restore the currently bound VAO after execution.
OpenGL Core Profile Update: In the OpenGL Renderer, some changes were made in RenderTarget.cpp so that OpenGL errors are not generated under using the OpenGL Core Profile.
Xbox One and DX11 MSAA Quality Changed: Removed GetMSAAQuality() from RenderTarget.cpp for Durango and DX11; now always using MSAA quality index 0 for reference application. Clients will choose their own MSAA settings for their render targets.
New Data From Culling System: CVisibleInstances::FindCullTreeCells() and FineCullGrassCells() now return a bool to note whether any cells have changed (new or deleted).
Comments For Shader Constants: Every variable and structure has been commented in ShaderConstantBuffers.h (a file generated by an internal SpeedTree dev tool that can be made available upon request).
Removed all Intel GPA Reference: The Intel GPA code was used to make profiling easier with that system, but was unused.
Culling Bug Fix: Removed ill-conceived attempt at optimization from the beginning of CVisibleInstances::RoughCullCells().
CFileSystem::CompareFileTimes() Fixed For Linux: Incorrect macros where used for #ifdef, causing the Linux version to compile the PS3/PS4 implementation which is essentially a no-op. This broke GLSL shader caching under Linux.
Fizzle Noise Change: LoadNoise() changed for all platforms (defined in Texture.cpp for each render library). It now uploads the noise pattern in the red channel, not alpha. This also affects the shader lookup.
Render3dTrees() Parameters Change: CForestRI::Render3dTrees() no longer takes st_bool bRenderOpaqueMaterials.
SRenderState Updated: Added m_bBranchLevel1WindWeightsActive and m_bBranchLevel2WindWeightsActive to SRenderState for shader wind optimization. While it changes the SRT file format, older version of the 7.x SDK will still load 7.1.0 files correctly.
Depth Pass Query Added: Added CCore::IsCompiledForDepthPrepass() which will return true if the “Depth pre-pass” Shader Type option was selected in the Compiler during compilation. This is a good way to make sure incoming assets match the compilation mode expected by your application.
Updated Pixel Property Names: Changed “NormalInTangentSpace” to “LightDirInTangentSpace” and “FadeToBillboard” to “BillboardTo3dFade” in GetPixelPropertyDesc() in Core_inl.h.
CTimer Updated: Added Mark() and Recall() to CTimer, used to store up to 10 intermediate time values as the timer keeps running.