render parity unit H2: verbatim 40250 water

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-28 14:03:12 +09:00
co-authored by Claude Opus 5.5
parent 6dffd1572a
commit 3e270dccc1
3 changed files with 57 additions and 33 deletions
+1
View File
@@ -565,3 +565,4 @@
{"date": "2026-09-28T04:34:02+00:00", "unit": "EterLib/GrpMarkInstance.cpp", "action": "unit F: platform_stub skeleton deleted (every member was MT_PLATFORM_STUB), 40250 source copied verbatim; guild marks (PythonTextTail, PythonWindow CMarkBox) now load and draw", "evidence": "ctest 35/35 (login_live excluded); mark rendering NEEDS_LIVE"}
{"date": "2026-09-28T04:53:55+00:00", "unit": "GameLib/MapOutdoorRenderSTP.cpp + UserInterface/PythonApplication.cpp Create (tiling) + RecordingDevice caps", "action": "unit G: STP file replaced by the full 40250 source (native-terrain gate only); Create gains the 40250 SOFTWARE_TILING/auto-tiling block and MinLOD for !IsFastTNL; RecordingDevice GetDeviceCaps reports VertexShaderVersion 1.1 + D3DPMISCCAPS_CLIPTLVERTS (40250 on a fast T&L card = HTP); native_render XYZRHW fixes: screen→NDC Y was inverted (drawn upside down and back-face culled), negative rhw forced w=1 (spikes), texture transform no longer applied to TL vertices, specular-alpha vertex fog plumbed (Render3DDraw.vertex_fog, capture v9)", "evidence": "ctest 35/35 (login_live excluded); default HTP frame 900 vs previous baseline mean abs diff ~0.6/255; STP forced (temporary edit, reverted) renders the spawn plaza/grass matching HTP layout, STP pixels NEEDS_LIVE"}
{"date": "2026-09-28T04:56:02+00:00", "unit": "GameLib/MapOutdoorRenderHTP.cpp", "action": "unit H1: platform rewrite replaced by the full 40250 source (native-terrain gate only); drops the invented texture-0 fallback splat, restores first-splat stage-1 ALPHAOP DISABLE, GetNumTextures() loop bound, shadow-pass FOGCOLOR white/restore, stage-0 ALPHAOP DISABLE + CLAMP, TEXTURE1 = m_matDynamicShadow, stage-1 SELECTARG1 restore, TEXTURE0 1/640 tiling", "evidence": "ctest (see commit); fake-server frame 900: white far band gone, terrain matches STP-path layout (mean abs diff vs STP ~20/255 from per-texture m_matTransform vs STP's fixed 1/640, as in 40250); HTP pixels NEEDS_LIVE"}
{"date": "2026-09-28T04:59:25+00:00", "unit": "GameLib/MapOutdoorWater.cpp", "action": "unit H2: platform rewrite replaced by the full 40250 source (native-terrain gate only): far-fog second water pass restored, invented LIGHTING=FALSE save/restore and empty-texture guard removed", "evidence": "build ok; fake-server spawn frame 900 unchanged (mean abs diff ~0.4/255, no water in view); water visuals NEEDS_LIVE"}
@@ -17,16 +17,18 @@
]
},
"CMapOutdoor::RenderWater": {
"status": "DIVERGENT",
"status": "NEEDS_LIVE",
"impl": [
"extension/src/platform/GameLib/MapOutdoorWater.cpp:CMapOutdoor::RenderWater"
],
"note": "No-op: water surfaces are not drawn through the recording device yet (the Godot terrain adapter owns terrain rendering, PORT-PLAN §3)."
"note": "Verbatim 40250 plus an early return when IsNativeTerrainRenderEnabled() is false (Godot water adapter, PORT-PLAN §3). Restores the far-fog second pass (untextured, blend off, patches >= __GetFogDistance()) and drops the invented LIGHTING=FALSE save/restore and empty-texture guard. No water in the fake-server spawn view; visuals not verified."
},
"CMapOutdoor::DrawWater": {
"status": "DIVERGENT",
"impl": [],
"note": "Not built: only called from RenderWater, which is a no-op."
"status": "NEEDS_LIVE",
"impl": [
"extension/src/platform/GameLib/MapOutdoorWater.cpp:CMapOutdoor::DrawWater"
],
"note": "Verbatim 40250, reached from RenderWater on the native path; visuals not verified."
}
}
}