SpeedTreeLib: port 40250 wrapper/forest verbatim over a CSpeedTreeRT stand-in

Delete the platform proxy tree renderer and copy SpeedTreeWrapper, SpeedTreeForest,
SpeedTreeForestDirectX8, SpeedTreeConfig.h and VertexShaders.h from 40250. The SDK
SpeedTreeRT.h public API becomes the shim; the closed CSpeedTreeRT is reimplemented in
platform/SpeedTreeLib/SpeedTreeRT.cpp (procedural geometry, static lighting, single LOD,
DIVERGENT). Shims gain the D3D8 vertex shader declaration tokens, D3D_OK,
CreateVertexShader/DeleteVertexShader, ID3DXBuffer/D3DXAssembleShader, MessageBox and
__min/__max.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-28 13:31:57 +09:00
co-authored by Claude Opus 5.5
parent 86e602cb32
commit d817bd7cab
19 changed files with 4373 additions and 1516 deletions
@@ -0,0 +1,54 @@
{
"reference": "SpeedTreeLib/SpeedTreeForestDirectX8.cpp",
"reference_sha256": "7dd29079a158ed8af665e45ee1ed7b319732c5d33b5c8a8edcc458b5337c005a",
"priority": "P4",
"contracts": [],
"functions": {
"CSpeedTreeForestDirectX8::CSpeedTreeForestDirectX8": {
"status": "PORTED",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::CSpeedTreeForestDirectX8"
]
},
"CSpeedTreeForestDirectX8::~CSpeedTreeForestDirectX8": {
"status": "PORTED",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::~CSpeedTreeForestDirectX8"
]
},
"CSpeedTreeForestDirectX8::InitVertexShaders": {
"status": "PORTED",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::InitVertexShaders"
],
"note": "verbatim; WRAPPER_USE_NO_WIND / no GPU placement in SpeedTreeConfig.h, so the shader path returns the FVF as in 40250"
},
"CSpeedTreeForestDirectX8::SetRenderingDevice": {
"status": "NEEDS_LIVE",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::SetRenderingDevice"
],
"note": "verbatim; light 0 attributes reach the CSpeedTreeRT stand-in's static lighting; tone NEEDS_LIVE"
},
"CSpeedTreeForestDirectX8::UploadWindMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::UploadWindMatrix"
],
"note": "verbatim; WRAPPER_USE_NO_WIND / no GPU placement in SpeedTreeConfig.h, so the shader path returns the FVF as in 40250"
},
"CSpeedTreeForestDirectX8::UpdateCompundMatrix": {
"status": "PORTED",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::UpdateCompundMatrix"
]
},
"CSpeedTreeForestDirectX8::Render": {
"status": "NEEDS_LIVE",
"impl": [
"extension/src/port/SpeedTreeLib/SpeedTreeForestDirectX8.cpp:CSpeedTreeForestDirectX8::Render"
],
"note": "verbatim; render states as 40250 (branch CULL_CW, leaf/billboard passes); visual NEEDS_LIVE"
}
}
}