engine(macos-arm64): publish 9dcc5d45 - screen-space contact shadows, hero shadow min-combine, upstream 4.8 shadow fixes #121775/#124348, draw_indirect_count (Metal); GodotSharp regenerated (API + Tools); Windows still 7fb81364b, Forge rebuild handoff forge-windows-sscs-9dcc5d45.md

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NCXU49xtHLSry4TQEzVN2m
This commit is contained in:
ozanandClaude Opus 5.5 committed 2026-10-18 02:50:40 +01:00
1 parent 50ac90c232
commit 9d90e417ba
36 files changed
+90 -56

No files matched your search

@@ -0,0 +1,34 @@
# 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.
+2 -2
View File
@@ -31,10 +31,10 @@ into GodotSharp, so GodotSharp had to be regenerated — and must ship here alon
| Platform | Engine | Terrain3D | GodotSharp shipped? |
|---|---|---|---|
| `engine/macos-arm64/` | **4.7.2** (`7fb81364`) — normal-roughness pre-pass built-in, tonemap cinematic stack, render-thread CPU profile, crash/freeze/device-lost reporting + structured engine errors (R0 P5), on top of everything `1e7be28b` had | built-in module | ✅ yes (`GodotSharp/`) |
| `engine/macos-arm64/` | **4.7.2** (`9dcc5d45`) — screen-space contact shadows (directional), hero shadow min-combine, cascade caster-culling + shadow-bias fixes from upstream 4.8, `draw_list_draw_indirect_count` (Metal), on top of everything `7fb81364` had | built-in module | ✅ yes (`GodotSharp/`) |
| `engine/windows-x64/` | **4.7.2** (`7fb81364b`) — everything `0ec39c95` had (GPU diet + R0 P5) plus crash-handler fixes (first-wins crash claim, freeze-report note/context, pause handling); `template_release` here is still the `1e7be28b` tree | built-in module | ✅ yes (`GodotSharp/`) |
Mac is engine `7fb81364` as of 2026-10-17 (`--version` prints `4.7.2.stable.mono.custom_build.7fb81364b`; `0ec39c95` + crash-report review fixes, no API change; Windows carries `7fb81364` too): `IN_NORMAL_ROUGHNESS_PASS` (heavy materials skip their texture work in the SSAO/SSIL pre-pass), the cinematic stack (CA, vignette, grain) inside the tonemap pass, render-thread CPU in `--gpu-profile`, and R0 P5 crash dumps / freeze watchdog / D3D12 device-removed reason / structured engine errors. Windows carries `7fb81364b` as of 2026-10-17 (second Forge rebuild the same day: `a040761bd1` consistent note/context in freeze reports + pauses never count as stall time, `7fb81364b5` one first-wins atomic claims a Windows crash; [`.agents/handoffs/forge-windows-gpu-diet-r0-p5.md`](.agents/handoffs/forge-windows-gpu-diet-r0-p5.md); editor target only, `template_release` is still the `1e7be28b` tree). macos-arm64 is still `0ec39c95` — Kraken is rebuilding, so the game pin is version-only `4.7.2`; pin `4.7.2@7fb81364b` once mac lands. Earlier: Mac is engine `1e7be28b` as of 2026-10-05 night (`--version` prints `4.7.2.stable.mono.custom_build.1e7be28b1`; same code as `b0daf759`, relinked to match the Windows pair so `required_engine_build` is pinned to `4.7.2@1e7be28b`): GPU culling Stage C (previous-frame depth-pyramid occlusion, default off), zero per-frame cull uploads, static-cache single-sample + hard-filter options (default = unchanged), true per-pass Metal GPU profile, parallel shadow instance fill, on top of Stage B2 CPU band skip for GPU-culled MultiMeshes (the x4.7 draw explosion of `gpucull veg on` is gone; the path still stays off by default) on top of everything 51ed21d5 had (shadow diet incl. tile budget / live caster size cull / inverted-contract switch, video adapter memory query, GPU device-lost diagnostics) plus GPU-driven MultiMesh culling Stage A (compute frustum cull + indirect draws, `multimesh_set_gpu_cull`) and Stage B (per-instance GPU LOD bands, `multimesh_set_gpu_lods`), real Metal GPU timestamps (`renderGpuMs`), staggered far cascades, fit-to-visible-depth (SDSM-lite, default off), the Metal argument-buffer copy-queue stall fix and the Vulkan breadcrumb barrier fix (#185). Windows carried `b1bc0aef` (2026-09-28, 4.7.2 + static shadow cache, then `1e7be28b` 2026-10-05) until the 2026-10-17 Forge rebuild delivered all of the above plus the video adapter memory query. The engine source repo stays private. Check `manifest.json` for sha256. The 4.7 Windows cutover handoff is resolved: [`.agents/handoffs/forge-windows-4.7.md`](.agents/handoffs/forge-windows-4.7.md).
Mac is engine `9dcc5d45` as of 2026-10-18 (`--version` prints `4.7.2.stable.mono.custom_build.9dcc5d458`): screen-space contact shadows for directional lights (default off; game dial `env contactshadow`), hero shadow min-combine, upstream 4.8 shadow fixes #121775 (cascade caster culling) and #124348 (blur < 1 no longer shrinks the bias; the game sun bias is 0.014 with it), and `draw_list_draw_indirect_count` with Metal emulation. GodotSharp regenerated (API + Tools). **Windows is still `7fb81364b`** and the game pin is `4.7.2@9dcc5d458`, so Windows engines are refused until Forge rebuilds from engine main (`.agents/handoffs/forge-windows-sscs-9dcc5d45.md`).
Long-term: CI (Gitea Actions) builds on push and publishes here / to S3 —
`docs/ai/plans/build-pipeline-architecture-2026-06-07.md`.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6 -6
View File
@@ -4,16 +4,16 @@
"macos-arm64": {
"binary": "engine/macos-arm64/tinqs.macos.editor.arm64.mono",
"godotsharp": "engine/macos-arm64/GodotSharp",
"version": "4.7.2.stable.mono.custom_build.7fb81364b",
"version": "4.7.2.stable.mono.custom_build.9dcc5d458",
"engine_repo": "tinqs/engine",
"engine_commit": "7fb81364",
"sha256": "b8a11397e0e9883d53e714a908d10fc2e638e3acf3a4414c2a92075d5d270aa1",
"engine_commit": "9dcc5d45",
"sha256": "2da4c3a6dc363375033bc20fdb1604d5a0de896d580da76e39305c6aade2ef7f",
"target": "editor",
"built_on": "2026-10-17",
"built_by": "Ozan/Kraken via Claude (GPU frame diet + R0 P5 crash/freeze reporting)",
"built_on": "2026-10-18",
"built_by": "Ozan/Kraken via Claude (SSCS + hero shadow combine + shadow fixes + draw_indirect_count)",
"toolchain": "Xcode (Apple Silicon), SCons, VulkanSDK 1.4.350.0",
"scons_flags": "platform=macos target=editor arch=arm64 module_mono_enabled=yes vulkan_sdk_path=~/VulkanSDK/1.4.350.0/macOS",
"note": "Mac. Engine 7fb81364 = 0ec39c95 + crash-report review fixes (freeze-report context under a lock, debugger pauses never count as stall time, macOS sidecar thread_id, one atomic claims a Windows crash; no API change, GodotSharp unchanged). Windows carries 7fb81364 too (871000b), so both platforms match; the game pin is 4.7.2 until the @7fb81364b flip. 0ec39c95 on top of 1e7be28b: IN_NORMAL_ROUGHNESS_PASS spatial built-in (heavy materials skip texture work in the SSAO/SSIL normal-roughness pre-pass: terrain pre-pass 2.5 -> 0.6 ms on M1 Max); per-Environment cinematic stack in the tonemap pass (RenderingServer.environment_set_tinqs_cinematic: chromatic aberration, vignette, film grain); --gpu-profile prints render-thread CPU per label + _draw wall + end_frame; R0 P5: crash reports in user://crash/ in every build (Windows minidump + JSON sidecar, macOS JSON + backtrace), freeze watchdog (debug/settings/freeze_watchdog/timeout_sec, default 10), D3D12 device-removed reason + DRED, AgentLog structured error records (get_error_records / get_last_error_id / set_crash_context). GodotSharp regenerated (EnvironmentSetTinqsCinematic present). Smoke on Kraken: new API + AgentLog methods + shader built-in; the game ran the same commit (symbol build) in-world at 60-70 fps. windows-x64 is still 1e7be28b1 until Forge rebuilds from engine main (handoff forge-windows-gpu-diet-r0-p5.md); the game pins 4.7.2 (no hash) until both platforms carry 0ec39c95."
"note": "Mac. Engine 9dcc5d45 = 7fb81364 + screen-space contact shadows for directional lights (backport of upstream 4.8 #118045/#123814; ProjectSettings rendering/lights_and_shadows/contact_shadow/{enabled,shadow_length,surface_thickness}, Light3D.shadow_contact_shadows_allow/blur, RenderingServer.light_set_allow_contact_shadows; default off, game dial env contactshadow; ~0.43 ms on M1 Max), hero shadow min-combine (RenderingServer.instance_light_directional_set_hero_shadow_spot), tight cascade caster culling on the real cascade frustum (#121775), shadow bias no longer shrunk by blur < 1 (#124348; the game retunes the sun ShadowBias 0.04 -> 0.014 with the pin), RenderingDevice.draw_list_draw_indirect_count (Metal emulation; oracle 24/24 on M1 Max). GodotSharp regenerated from this binary (API + Tools). Smoke: the owner's game in-world, horizon + static prefill OK, hero combine on, contact shadows on/off, ~72 fps, no new error types. windows-x64 is STILL 7fb81364b: Forge must rebuild from engine main (handoff .agents/handoffs/forge-windows-sscs-9dcc5d45.md). The game pin is 4.7.2@9dcc5d458, so Windows engines are refused until that publish (owner's call, 2026-10-18)."
},
"windows-x64": {
"binary": "engine/windows-x64/tinqs.windows.editor.x86_64.mono.exe",