{ "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" ] } } }