- Guard leaf LOD access in CSpeedTreeWrapper::RenderLeaves() to avoid out-of-bounds indexing of m_pLeafVertexBuffer and m_pLeavesUpdatedByCpu.
- Skip leaf update/draw when LOD is invalid, inactive, empty, or has no vertex buffer.
- Add early safety returns for missing leaf buffer arrays and zero LOD count.
- Guard CSpeedTreeWrapper::EndLeafForTreeType() against null m_pLeavesUpdatedByCpu.
- Add shader re-init path in wrapper render entrypoints via CSpeedTreeForestDirectX8::EnsureVertexShaders() when cached shader state is missing.
- Introduce public EnsureVertexShaders() in SpeedTreeForestDirectX8 while keeping InitVertexShaders() private (resolves private-access compile error).
- Fix leaf shader input declaration to emit dcl_texcoord2 v9 for both GPU wind and GPU leaf placement configurations.
- Make LoadLeafShader() atomic: create new shader/decl first, then swap only if both succeed, preserving previous valid shader state on failure.
- Improve leaf shader failure logs to include HRESULT for easier diagnosis.
This commit is well documented, so no need to tell you my life story.
Full Unicode patch with RTL Support & BiDi logic.
Removed the legacy codePage, normalised to UTF8 (65001).
It also comes with:
CTRL + A : select text (highlighted)
CTRL + C : copy
CTRL + V : paste
CTRL + X : cut
CTRL + Y : redo
CTRL + Z : undo