The CSpeedTreeRT stand-in now returns the collision objects stored in the .spt (12000 section: spheres and cylinders) instead of one fixed trunk cylinder, and takes leaf texture rects from the 10000 section instead of hand-picked atlas rects (trees without leaf maps use the frond rect). SpeedGrass/BoundaryShapeManager are N_A (no 40250 caller). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
235 lines
9.3 KiB
JSON
235 lines
9.3 KiB
JSON
{
|
|
"reference": "SpeedTreeLib/SpeedTreeWrapper.cpp",
|
|
"reference_sha256": "938924f5303879f1b322ad48f11c974319471fcdcca616fcb958d8cf43469fa5",
|
|
"priority": "P4",
|
|
"contracts": [],
|
|
"functions": {
|
|
"CSpeedTreeWrapper::CSpeedTreeWrapper": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::CSpeedTreeWrapper"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetVertexShaders": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetVertexShaders"
|
|
],
|
|
"note": "verbatim; WRAPPER_USE_NO_WIND / no GPU placement in SpeedTreeConfig.h, so the shader path returns the FVF as in 40250"
|
|
},
|
|
"CSpeedTreeWrapper::OnRenderPCBlocker": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::OnRenderPCBlocker"
|
|
],
|
|
"note": "verbatim; PC-blocker alpha visual NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::OnRender": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::OnRender"
|
|
],
|
|
"note": "verbatim; visual NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::~CSpeedTreeWrapper": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::~CSpeedTreeWrapper"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::LoadTree": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::LoadTree"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetupBuffers": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupBuffers"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetupBranchBuffers": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupBranchBuffers"
|
|
],
|
|
"note": "verbatim. DIVERGENT input: CSpeedTreeRT is the closed IDV lib; platform/SpeedTreeLib/SpeedTreeRT.cpp stands in for it and yields procedural branch strips (height 1000, species from file name), not the .spt-computed geometry; visual NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::SetupFrondBuffers": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupFrondBuffers"
|
|
],
|
|
"note": "verbatim; the CSpeedTreeRT stand-in reports no fronds (0 vertices), so palms/ferns lose their fronds -- DIVERGENT until the .spt engine is reproduced; NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::SetupLeafBuffers": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupLeafBuffers"
|
|
],
|
|
"note": "verbatim. Leaf texture coordinates are the .spt composite-atlas rects (10000 section: 10002 leaf maps, 10003 frond map, 10004 billboard, 8 floats per card, v flipped under SetTextureFlip), replacing the hand-picked rects; a tree without leaf maps (palms, ferns, bare winter trees) draws the proxy clusters with its frond rect. DIVERGENT input remains: cluster positions/sizes are the stand-in's procedural proxy, not the closed engine's; NEEDS_LIVE",
|
|
"test": "tests/port/port_speedtree_test.cpp"
|
|
},
|
|
"CSpeedTreeWrapper::Advance": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::Advance"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::MakeInstance": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::MakeInstance"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::GetInstances": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetInstances"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::DeleteInstance": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::DeleteInstance"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetupBranchForTreeType": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupBranchForTreeType"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::RenderBranches": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::RenderBranches"
|
|
],
|
|
"note": "verbatim; static-lit colours (LIGHT_STATIC, LIGHTING FALSE), stage-1 self-shadow modulate, ALPHAREF 84; visual NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::SetupFrondForTreeType": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupFrondForTreeType"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::RenderFronds": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::RenderFronds"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetupLeafForTreeType": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetupLeafForTreeType"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::UploadLeafTables": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::UploadLeafTables"
|
|
],
|
|
"note": "verbatim; WRAPPER_USE_NO_WIND / no GPU placement in SpeedTreeConfig.h, so the shader path returns the FVF as in 40250"
|
|
},
|
|
"CSpeedTreeWrapper::RenderLeaves": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::RenderLeaves"
|
|
],
|
|
"note": "verbatim; camera-facing leaf cards come from the stand-in's m_pLeafMapCoords (rebuilt from SetCamera); visual NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::EndLeafForTreeType": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::EndLeafForTreeType"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::RenderBillboards": {
|
|
"status": "NEEDS_LIVE",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::RenderBillboards"
|
|
],
|
|
"note": "verbatim; the stand-in keeps billboards inactive (single LOD), so far trees never drop to billboards -- NEEDS_LIVE"
|
|
},
|
|
"CSpeedTreeWrapper::CleanUpMemory": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::CleanUpMemory"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::PositionTree": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::PositionTree"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::LoadTexture": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::LoadTexture"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::SetShaderConstants": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetShaderConstants"
|
|
],
|
|
"note": "verbatim; WRAPPER_USE_NO_WIND / no GPU placement in SpeedTreeConfig.h, so the shader path returns the FVF as in 40250"
|
|
},
|
|
"CSpeedTreeWrapper::SetPosition": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::SetPosition"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::GetBoundingSphere": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetBoundingSphere"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::CalculateBBox": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::CalculateBBox"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::GetCollisionObjectCount": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetCollisionObjectCount"
|
|
],
|
|
"note": "verbatim; the CSpeedTreeRT stand-in returns the .spt collision block as stored (12000 section: 12002 sphere x y z r, 12003 cylinder x y z r h; 1-5 objects, none for aloe/fern ground plants, checked on all 118 pack .spt); the wrapper passes no size override (LoadTree fSize -1), so no SetTreeSize rescale applies",
|
|
"test": "tests/port/port_speedtree_test.cpp"
|
|
},
|
|
"CSpeedTreeWrapper::GetCollisionObject": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetCollisionObject"
|
|
],
|
|
"note": "verbatim; the CSpeedTreeRT stand-in returns the .spt collision block as stored (12000 section: 12002 sphere x y z r, 12003 cylinder x y z r h; 1-5 objects, none for aloe/fern ground plants, checked on all 118 pack .spt); the wrapper passes no size override (LoadTree fSize -1), so no SetTreeSize rescale applies",
|
|
"test": "tests/port/port_speedtree_test.cpp"
|
|
},
|
|
"CSpeedTreeWrapper::GetPosition": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetPosition"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::GetTreeSize": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::GetTreeSize"
|
|
]
|
|
},
|
|
"CSpeedTreeWrapper::OnUpdateCollisionData": {
|
|
"status": "PORTED",
|
|
"impl": [
|
|
"src/port/SpeedTreeLib/SpeedTreeWrapper.cpp:CSpeedTreeWrapper::OnUpdateCollisionData"
|
|
]
|
|
}
|
|
}
|
|
}
|