Files
builds/.agents/handoffs/forge-windows-sscs-9dcc5d45.md
T

3.9 KiB

Forge (Windows) — rebuild engine main at 9dcc5d45 (SSCS + hero combine + shadow fixes + indirect count)

Mac engine/macos-arm64 is engine 9dcc5d45 (2026-10-18, 4.7.2.stable.mono.custom_build.9dcc5d458). Windows is still 7fb81364b. The game already pins 4.7.2@9dcc5d458 (owner's call: publish Mac-only), so every Windows engine is refused with the mismatch dialog until this is published. TINQS_ENGINE_SKIP_CHECK=1 runs the old engine meanwhile, but the sun then shows shadow acne (the game's sun bias 0.014 expects the #124348 bias fix).

Build

tinqs pull the engine (main is 91b11b70 = 9dcc5d45 + docs only), build with the windows-x64 manifest flags (platform=windows target=editor module_mono_enabled=yes -j32). The --version hash will read 91b11b70… unless you git checkout 9dcc5d45 first; either is fine (docs-only difference) — record what you built in the manifest. Regenerate GodotSharp from that binary: --generate-mono-glue modules/mono/glue, then build_assemblies.py --godot-output-dir=bin --godot-platform=windows. Publish the WHOLE bin/GodotSharp (Api/ AND Tools/; Tools/ is always written to bin/GodotSharp/Tools, a scratch output dir has no Tools/ and the editor --import then fails with "Dependency resolution failed for GodotTools.dll").

New since 7fb81364 (none of it compiled on Windows yet)

  • 298bc2a6 RenderingDevice.draw_list_draw_indirect_count: D3D12 native path (drivers/d3d12/rendering_device_driver_d3d12.cpp).
  • 2ce4f359 screen-space contact shadows for directional lights (compute shader screen_space_contact_shadows.glsl, binding 39 in the Forward+ scene shader, DirectionalLightData::sscs_index at byte 64).
  • bb1f12e4 tight directional caster culling on each cascade's real frustum (upstream #121775).
  • 5df5c8df hero shadow min-combine (RenderingServer.instance_light_directional_set_hero_shadow_spot).
  • 9dcc5d45 depth bias = MAX(shadow_blur, 1) scale (upstream #124348).

Checks

  1. Oracle: bash tests/gpu_oracle/draw_indirect_count/run.sh <tinqs.windows.editor.x86_64.mono.exe> d3d12 from Git Bash. Expect ORACLE: 22 passed, 0 failed, a SKIP base-instance line, exit 0 (engine wiki draw-indirect-count.md § Windows checklist; Mac/Metal was 24/24). Also the Vulkan driver if the game runs Vulkan there: … run.sh <exe> vulkan.
  2. Game in-world on the new pair (pin satisfied):
    • env herocombine status reports mode combine (engine combine yes); the hero's spot shadow merges with the sun's.
    • env contactshadow on → contact shadows under feet/grass; --gpu-profile shows SSCS Main / Process SSCS (Mac M1 Max ≈ 0.43 ms at the beach); env contactshadow length 0|2, blur 0 change it live; off restores.
    • Sun shadows: no acne stripes, feet keep contact on bright sand (bias 0.014 x MAX(0.35, 1)).
  3. Publish windows-x64 here (binary + console binary + complete GodotSharp, sha256s, manifest note, CRLF), push.

2026-10-18 Windows side done (Forge/ZCode)

Windows published 9dcc5d458 (built at 9dcc5d458f — docs-only commits excluded so both platforms + the pin share one hash). Whole GodotSharp published (Api + Tools). Headless game boot: clean, 0 binding errors.

  • Oracle draw_indirect_count d3d12 (RTX 5080): 22 passed, 2 failed — the 2 base-instance cases, the documented D3D12 gap (expected-fail per draw-indirect-count.md; got [0]/[0,1] where first_instance is ignored). They RAN rather than SKIPped — the skip gate seems D3D12-absent; same result either way.
  • --gpu-validation could NOT run: D3D12 debug layer is not installed on Forge (_initialize_debug_layers → ERR_QUERY_FAILED → context fell back to Vulkan, which then reports SUPPORTS_DRAW_INDIRECT_COUNT false — the capability bit only exists on Metal/D3D12 in this fork). Install Graphics Tools for the validation pass.
  • In-world checks (herocombine / contactshadow / SSCS profile / sun acne at bias 0.014): still owed here.