Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
bc432f6
Merge worktree-wf_1d680d38-ddf-2 into feat/taa
NightHammer1000 Sep 10, 2026
fa6958e
Merge worktree-wf_1d680d38-ddf-3 into feat/taa
NightHammer1000 Sep 10, 2026
59eb557
fix(review): create the entity motion-writer type cache lazily
NightHammer1000 Sep 10, 2026
b181cff
fix(vulkan): present-path synchronisation, GL-parity write masks for …
NightHammer1000 Sep 10, 2026
f904c2b
docs(taa): record P4 acceptance and the Vulkan write-mask finding
NightHammer1000 Sep 11, 2026
f4b51a4
fix(review): restore render state in finally blocks (liquid pass, sky…
NightHammer1000 Sep 11, 2026
b4d95c1
merge: restore render state in finally blocks (liquid, sky, decals)
NightHammer1000 Sep 11, 2026
ff60ccb
wip(taa): P5 acceptance and performance harness - build, patches and …
NightHammer1000 Sep 11, 2026
f4fc57b
wip(taa): P5 settings rows, scanner rules and shader packaging
NightHammer1000 Sep 11, 2026
6262586
wip(taa): P5 sharpen pass and TAA mip bias - built, patches checked, …
NightHammer1000 Sep 11, 2026
a8e84da
wip(taa): P5 runtime donors for the P3/P4 mod movers - check-patches …
NightHammer1000 Sep 11, 2026
8985bef
merge: P5 sharpen pass and TAA mip bias
NightHammer1000 Sep 11, 2026
055d1fd
merge: P5 settings rows, scanner rules and shader packaging
NightHammer1000 Sep 11, 2026
705198e
merge: P5 runtime donors for the P3/P4 mod movers
NightHammer1000 Sep 11, 2026
94f9ed9
merge: P5 acceptance and performance harness
NightHammer1000 Sep 11, 2026
ab763d2
wip(taa): P5 integrate
NightHammer1000 Sep 11, 2026
7c4a356
wip(taa): P5 review fixes - live TAA mip bias on the terrain samplers…
NightHammer1000 Sep 11, 2026
6096c56
docs(taa): record P5 status
NightHammer1000 Sep 11, 2026
2ba6dad
fix(bootstrap): always log the chosen renderer, OpenGL included
NightHammer1000 Sep 11, 2026
a2541aa
docs(taa): P5 in-game verification and frame-time capture; perf-captu…
NightHammer1000 Sep 11, 2026
4718573
docs(taa): P6 freeze the temporal frame contract v1 with stability tests
NightHammer1000 Sep 11, 2026
84664ff
docs(taa): P6 freeze the temporal frame contract v1 with stability tests
NightHammer1000 Sep 11, 2026
9d01971
wip(review): lib fixes - TAA disable honoured on rebuild, settings sw…
NightHammer1000 Sep 11, 2026
82ebc23
wip(review): scanner .ash includes, fail-fast shader deploy, luma-dif…
NightHammer1000 Sep 11, 2026
bf5bc95
wip(review): mover windows - MechNetworkRenderer finally, Resonator A…
NightHammer1000 Sep 11, 2026
bbdd92b
wip(review): Vulkan backend review round - validation features, outpu…
NightHammer1000 Sep 11, 2026
c11645a
wip(review): tests - LOD-bias restore path, per-method donor coverage
NightHammer1000 Sep 11, 2026
2527bb2
merge: review fixes - vulkan backend
NightHammer1000 Sep 11, 2026
870c394
merge: review fixes - scripts, docs and launcher
NightHammer1000 Sep 11, 2026
a61c0f9
wip(review): retarget the make-deploy shader coverage test at the mer…
NightHammer1000 Sep 11, 2026
06abe4c
wip(review): review pass - guard the validation-features extension, c…
NightHammer1000 Sep 11, 2026
48174c1
Merge pull request #2 from NightHammer1000/feat/taa
NightHammer1000 Sep 11, 2026
1fcdb67
fix(taa): derive the sky motion direction from far minus near, not fr…
NightHammer1000 Sep 11, 2026
1e2d638
wip(dev): worktree-bootstrap materialises build/ and the forks in a s…
NightHammer1000 Sep 11, 2026
72b1184
wip(dev): worktree-bootstrap --in-place re-materialises the main chec…
NightHammer1000 Sep 11, 2026
b3ed72f
wip(dev): worktree-bootstrap --discard-build-edits for re-materialisi…
NightHammer1000 Sep 11, 2026
5fc7285
wip(patcher): typesToUnseal, methodsToVirtualize and the call->callvi…
NightHammer1000 Sep 11, 2026
4b55f5e
wip(stats): pacing measurement - VulkanStats wait sites/pacing ring/c…
NightHammer1000 Sep 11, 2026
0daa719
wip(validation): GPU suite defaults to sync,best validation with a pi…
NightHammer1000 Sep 11, 2026
e846f43
wip(parity): per-attachment parity dump on both backends, ssim.py, pa…
NightHammer1000 Sep 11, 2026
4a9bdc1
Merge branch 'worktree-wf_25b98e08-f83-2' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
cae6850
Merge branch 'worktree-wf_25b98e08-f83-3' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
96788b9
Merge branch 'worktree-wf_25b98e08-f83-4' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
3026706
Merge branch 'worktree-wf_25b98e08-f83-5' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
4d551c0
wip(phase0): regenerate ClientPlatformWindows patch after merging pat…
NightHammer1000 Sep 11, 2026
45f37de
wip(phase0): integrate patcher, stats, validation and parity stages
NightHammer1000 Sep 11, 2026
8b0603b
wip(phase0-review): count frame queue submits, harden capture scripts…
NightHammer1000 Sep 11, 2026
8541d67
wip(dev): worktrees get a private .build copy instead of a symlink
NightHammer1000 Sep 11, 2026
64cd81e
wip(dev): perf-capture stops waiting when the client exits before the…
NightHammer1000 Sep 11, 2026
18707a5
wip(phase0): exit verified on the RTX 4070; acceptance results, noise…
NightHammer1000 Sep 11, 2026
3c07b3b
wip(phase1b-step1): timeline semaphores are the frame clock
NightHammer1000 Sep 11, 2026
66779ad
wip(phase1a-step1): VulkanClientPlatform shell, CreatePlatform and Cl…
NightHammer1000 Sep 11, 2026
323e0bf
Merge branch 'fix/taa-sky-direction' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
0dea83b
wip(phase0): acceptance-doc coverage test follows the V0.1 noise-floo…
NightHammer1000 Sep 11, 2026
81c865d
wip(phase1-review): GPU clear tests use UNORM8-exact values (0.5 lega…
NightHammer1000 Sep 11, 2026
41db046
Merge branch 'worktree-wf_fb69dbb9-a66-2' into feat/vulkan-native (Ph…
NightHammer1000 Sep 11, 2026
652cf37
Merge branch 'worktree-wf_fb69dbb9-a66-3' into feat/vulkan-native (Ph…
NightHammer1000 Sep 11, 2026
019adc4
wip(phase1a-step2): ClientProgram.Start keeps vanilla wiring order an…
NightHammer1000 Sep 11, 2026
4cfd845
wip(phase1a-step2): TAA/FSR members declared virtual on ClientPlatfor…
NightHammer1000 Sep 11, 2026
f688ca9
wip(phase1a-step2): re-point Optimum.Tests declaration assertions at …
NightHammer1000 Sep 11, 2026
01a7c27
wip(phase1b-step2): QueryRing and ReadbackManager with FrameRing.Subm…
NightHammer1000 Sep 11, 2026
9bb58c9
wip(phase1a-step2): coverage tests for the TAA virtuals and the remov…
NightHammer1000 Sep 11, 2026
d318929
wip(phase1a-step3): shader program, uniform and UBO calls are platfor…
NightHammer1000 Sep 11, 2026
c7b515b
Merge branch 'worktree-wf_fb69dbb9-a66-3' into feat/vulkan-native (Ph…
NightHammer1000 Sep 11, 2026
1fbf78a
wip(phase1a-step4): TAA motion windows and FSR target selection call …
NightHammer1000 Sep 11, 2026
2f7de38
wip(phase1a-step4): fixed-function state, diagnostics and capability …
NightHammer1000 Sep 11, 2026
4e62391
wip(phase1-review): occlusion queries survive scope ends and partial …
NightHammer1000 Sep 11, 2026
0d1ce06
wip(phase1b-step3): UploadManager - uploads record into a per-slot up…
NightHammer1000 Sep 11, 2026
e7d3e99
wip(phase1a-step4): framebuffers and post chain - device setup, facto…
NightHammer1000 Sep 11, 2026
17dadee
Merge branch 'feat/vulkan-native' into the Phase 1B uploads branch
NightHammer1000 Sep 11, 2026
52adef1
wip(phase1a-step4): meshes and textures - device bodies live in Vulka…
NightHammer1000 Sep 11, 2026
97bc3cb
wip(phase1a-step4): shaders, uniforms and UBOs - device bodies live i…
NightHammer1000 Sep 11, 2026
54dc22f
wip(phase1a-step4): frame loop, thick-line probe, resize and parity r…
NightHammer1000 Sep 11, 2026
d7d35aa
wip(phase1b-step4): split present submission and swapchain retirement…
NightHammer1000 Sep 11, 2026
f682f4f
wip(phase1a-step4): coverage re-pointed at VulkanClientPlatform; gate…
NightHammer1000 Sep 11, 2026
a41e6cc
wip(phase1b-step5): allocator pool classes, dedicated requirements, m…
NightHammer1000 Sep 11, 2026
c9d1314
wip(phase1b-step5): pool classes + budget verified - Release solution…
NightHammer1000 Sep 11, 2026
7676643
wip(phase1a-step5): last seam sites are platform virtuals; IOptimumGr…
NightHammer1000 Sep 11, 2026
2526fc7
wip(phase1b-step6): per-slot indirect ring, descriptor arena, dirty-m…
NightHammer1000 Sep 11, 2026
025c82e
wip(phase1b-step6): tests for the indirect ring, descriptor arena, di…
NightHammer1000 Sep 11, 2026
9d0fa85
wip(phase1b-step6): per-draw costs verified - Release solution build …
NightHammer1000 Sep 11, 2026
484a36c
Merge branch 'worktree-wf_c601e176-bbf-3' into feat/vulkan-native
NightHammer1000 Sep 11, 2026
29badd5
wip(phase1): integrate Phase 1A steps 2-5 with Phase 1B steps 1-2 and…
NightHammer1000 Sep 11, 2026
d003e86
wip(phase1): integrate Phase 1B steps 3-6 (uploads, split present, me…
NightHammer1000 Sep 11, 2026
62c406b
wip(phase1-review): MeshRef.Dispose releases the device mesh; replace…
NightHammer1000 Sep 11, 2026
7263aae
wip(phase1): exit recorded; OpenGL pacing is bimodal between launches…
NightHammer1000 Sep 11, 2026
9da9f75
wip(phase2-frame-plan): FramePlan load/store solving, exact signature…
NightHammer1000 Sep 11, 2026
2e649d0
wip(phase2-ssao-alpha): SSAO noise alpha 1 like GL's RGB upload into …
NightHammer1000 Sep 11, 2026
0d67057
wip(phase2-stage-hooks): BeginRenderStage/EndRenderStage bracket (con…
NightHammer1000 Sep 11, 2026
0d8cdf5
wip(phase2-ssao-alpha): source test follows the noise helper and pins…
NightHammer1000 Sep 11, 2026
a4016af
wip(phase2-write-masks): colour write tiers, draw buffers as write ma…
NightHammer1000 Sep 11, 2026
be614df
wip(phase2-write-masks): per-tier MotionWindowTests, tier unit tests,…
NightHammer1000 Sep 11, 2026
4d18f3f
wip(phase2-write-masks): dynamic-state unit tests expect Everything o…
NightHammer1000 Sep 11, 2026
4906a9e
wip(phase2-barriers): ResourceStateTracker + BarrierBatcher drive eve…
NightHammer1000 Sep 11, 2026
148df62
Merge branch 'worktree-wf_bbf96cb3-29d-1' (phase2 barriers, C1) into …
NightHammer1000 Sep 11, 2026
d4fb210
Merge branch 'worktree-wf_bbf96cb3-29d-2' (phase2 frame plan, C2) int…
NightHammer1000 Sep 11, 2026
83a902b
Merge branch 'worktree-wf_bbf96cb3-29d-3' (phase2 stage hooks, C3) in…
NightHammer1000 Sep 11, 2026
94e3bb9
Merge branch 'worktree-wf_bbf96cb3-29d-4' (phase2 write masks, C4) in…
NightHammer1000 Sep 11, 2026
f27a0e1
Merge branch 'worktree-wf_bbf96cb3-29d-5' (phase2 SSAO noise alpha) i…
NightHammer1000 Sep 11, 2026
7e48469
wip(phase2): merge wave 1 (barriers C1, frame plan C2, stage hooks C3…
NightHammer1000 Sep 11, 2026
2e401b4
wip(docs): correct the Phase 0 jitter record - it returned on Vulkan …
NightHammer1000 Sep 11, 2026
dd6fa5b
wip(taa): take taa-resolve.fsh anti-flicker + 3x3 nearest-depth disoc…
NightHammer1000 Sep 11, 2026
f6c1376
wip(phase2-transients): TransientAllocator, pooled ReadSelf copies, p…
NightHammer1000 Sep 11, 2026
d91af21
wip(phase2-frame-graph): FrameGraph, PassRecorder, clear promotion an…
NightHammer1000 Sep 11, 2026
98d3a63
wip(phase2-transients): keep the pinned post-chain helper text; tag t…
NightHammer1000 Sep 11, 2026
a8e66e5
wip(phase2-frame-graph): platform pass declarations, two-plan cycle, …
NightHammer1000 Sep 11, 2026
9fa87dc
wip(phase2-frame-graph): attachments that load keep read access; fram…
NightHammer1000 Sep 11, 2026
a302571
wip(taa): pin the anti-flicker + 3x3 nearest-depth resolve (2026-09-1…
NightHammer1000 Sep 11, 2026
a634548
wip(phase2-frame-graph): keep the single MotionAttachmentIndex guard …
NightHammer1000 Sep 11, 2026
f8b39ab
wip(phase2-frame-graph): composition feedback test covers both paths …
NightHammer1000 Sep 11, 2026
520099a
Merge branch 'worktree-wf_bbf96cb3-29d-7' (phase2 frame graph) into f…
NightHammer1000 Sep 11, 2026
0029976
wip(phase2): merge wave 2 (frame graph step 2, transients step 4)
NightHammer1000 Sep 11, 2026
ac06dce
wip(phase2-review): a slot the declared pass leaves out is outside th…
NightHammer1000 Sep 11, 2026
f90cbac
wip(phase2): merge fix/taa-antiflicker-disocclusion (3x3 nearest-dept…
NightHammer1000 Sep 11, 2026
dfb3b0b
wip(phase2): Milestone 1 exit numbers; perf-capture writes to an abso…
NightHammer1000 Sep 11, 2026
b348c4e
docs(vulkan-acceptance): Milestone 1 accepted by the user at 6568556
NightHammer1000 Sep 11, 2026
9ad0c70
Merge feat/vulkan-native into main: native Vulkan backend, Milestone 1
NightHammer1000 Sep 11, 2026
41373cf
fix(taa): the jittered AO is shaded into the scene before the resolve
NightHammer1000 Sep 15, 2026
766aada
feat(headless): the headless render harness, backported from feat/dlss-g
NightHammer1000 Sep 15, 2026
f83bda2
docs(plan): the Vulkan-native plan of record, with the full-native ro…
NightHammer1000 Sep 15, 2026
19d101e
fix(scripts): the review's portability blockers - shaderc placement, …
NightHammer1000 Sep 15, 2026
a41efce
feat(vulkan): values every program shares live in one frame block, no…
NightHammer1000 Sep 15, 2026
84f4893
docs: commit references follow the history rewrite
NightHammer1000 Sep 15, 2026
9b52768
docs(research): caching, descriptor model, XeGTAO and validation note…
NightHammer1000 Sep 15, 2026
618a0b1
feat(vulkan): compiled SPIR-V and the driver pipeline cache persist b…
NightHammer1000 Sep 15, 2026
5bc337b
docs(plan): one pipeline layout with bindless textures from the start…
NightHammer1000 Sep 15, 2026
31684e3
feat(vulkan): extra validation checks go through VK_EXT_layer_setting…
NightHammer1000 Sep 15, 2026
a9d0218
docs: handover note - where the Vulkan branch work stands and what co…
NightHammer1000 Sep 15, 2026
11195c5
docs: handover note records the present-after-write hazard the valida…
NightHammer1000 Sep 15, 2026
8036680
docs: full handoff for the Vulkan branch - context, rules, repository…
NightHammer1000 Sep 15, 2026
ff70cba
docs(research): bindless texture descriptors - array per sampled type…
NightHammer1000 Sep 15, 2026
1a22128
docs(research): how the ANV bindless limits derive from its descripto…
NightHammer1000 Sep 15, 2026
99b836d
fix(tests): compare the SSAO override with the vanilla shader from th…
NightHammer1000 Sep 15, 2026
b8bdef2
docs: Linux test state for the Vulkan branch, and why item 1 does not…
NightHammer1000 Sep 15, 2026
2cb4f81
docs: the present-after-write hazard is Pascal-specific - reproductio…
NightHammer1000 Sep 15, 2026
5764ba6
feat(vulkan): descriptor-indexing device floor and the decision-9 set…
NightHammer1000 Sep 15, 2026
2cc41a2
docs(research): ambient occlusion candidates - XeGTAO archived, visib…
NightHammer1000 Sep 15, 2026
3a18273
docs(vulkan): native shader interface contract; program record bindin…
NightHammer1000 Sep 15, 2026
ed16996
fix(scripts): keep shader trees out of the working-tree source sync
NightHammer1000 Sep 15, 2026
2fcb320
wip(bindless): decision 9 set 1 texture table and the shared pipeline…
NightHammer1000 Sep 15, 2026
6a35038
Merge branch 'feat/vulkan-taa' into wip/bindless-texture-table-review
NightHammer1000 Sep 15, 2026
8cafb03
wip(pipeline-cache): background compiles, growth-triggered saves, pip…
NightHammer1000 Sep 15, 2026
34a9e46
Merge the pipeline cache follow-ups for review
NightHammer1000 Sep 15, 2026
61bb90c
wip(native-shaders): entity, standard and instanced motion writers ke…
NightHammer1000 Sep 15, 2026
284acc5
docs(research): ambient occlusion - every named source researched and…
NightHammer1000 Sep 15, 2026
b4d2a6b
wip(bindless): review - program record in the shared layout's set 2; …
NightHammer1000 Sep 15, 2026
403ef0a
Merge the bindless texture table and shared pipeline layout (decision…
NightHammer1000 Sep 15, 2026
2e959d0
wip(pipeline-cache): review - queued prewarm no longer skips warm dra…
NightHammer1000 Sep 15, 2026
7276131
wip(native-shaders): shared native includes, frame.glsl generator, sp…
NightHammer1000 Sep 15, 2026
bf6e648
wip(native-shaders): offline shader compiler, SPIR-V reflection, mani…
NightHammer1000 Sep 15, 2026
b0fc6ff
wip(native-shaders): shader-compiler stamp and input list under obj/
NightHammer1000 Sep 15, 2026
bdae4bb
Merge the pipeline cache follow-ups: background compiles, growth-trig…
NightHammer1000 Sep 15, 2026
5ca158b
Merge the motion-writer contract fix (reactive survives a rejected ve…
NightHammer1000 Sep 15, 2026
0f74cb8
Merge the shared native shader includes, frame and specialization gen…
NightHammer1000 Sep 15, 2026
58e9a0a
Merge the native shader compiler: SPIR-V reflection, manifest, build …
NightHammer1000 Sep 15, 2026
1217c94
wip(compute): frame-graph compute pass kind
NightHammer1000 Sep 15, 2026
efddfc7
wip(native-shaders): family 1 pilot (blit, final, luma) and the stati…
NightHammer1000 Sep 15, 2026
8ac9365
Merge the native shader pilot: parity harness and family 1 (blit, fin…
NightHammer1000 Sep 15, 2026
438afcd
wip(native-shaders): post - 8 of 9 programs ported (ssao, godrays, fi…
NightHammer1000 Sep 15, 2026
cedbb0d
wip(native-shaders): optimum-programs - 8 of 8 programs ported (taa-r…
NightHammer1000 Sep 15, 2026
e4ef88e
wip(native-shaders): chunks - chunkopaque, chunktopsoil, chunktranspa…
NightHammer1000 Sep 15, 2026
62dd7f4
wip(shared-layout): every rewritten program on the one shared pipelin…
NightHammer1000 Sep 15, 2026
4f77628
Merge the shared layout retarget: every program on the one decision-9…
NightHammer1000 Sep 15, 2026
beaadc1
fix(vulkan): bindless colour placeholders read opaque black, magenta …
NightHammer1000 Sep 15, 2026
b2ea63b
wip(native-shaders): entities - entityanimated, shadowmapentityanimat…
NightHammer1000 Sep 15, 2026
3ddf346
wip(native-shaders): gui-overlays - 9 programs, parity 25/25, Optimum…
NightHammer1000 Sep 15, 2026
8eb085d
wip(native-shaders): particles-sky - 9 programs (cloudvolumetric bloc…
NightHammer1000 Sep 15, 2026
ebbfdf3
Merge the native shader family: chunks
NightHammer1000 Sep 15, 2026
324d3bc
Merge the native shader family: entities
NightHammer1000 Sep 15, 2026
fdbe233
Merge the native shader family: optimum-programs
NightHammer1000 Sep 15, 2026
bcf8e61
Merge the native shader family: post
NightHammer1000 Sep 15, 2026
d435268
Merge the native shader family: gui-overlays
NightHammer1000 Sep 15, 2026
8c58c1f
Merge the native shader family: particles-sky
NightHammer1000 Sep 15, 2026
dc46b72
feat(native-shaders): parity oracle decisions and the transparentcomp…
NightHammer1000 Sep 15, 2026
6f1f247
wip(native-shaders): cloudvolumetric - NativeShaderParityTests 99/99 …
NightHammer1000 Sep 15, 2026
c6af6f9
Merge the cloudvolumetric native port
NightHammer1000 Sep 15, 2026
f25a552
docs: handoff status for decision 9, the native shaders and the AO work
NightHammer1000 Sep 15, 2026
3e4f2da
wip(launcher): scanner v2 - ShaderAssetOverride, PlatformInternals, s…
NightHammer1000 Sep 15, 2026
fb623ec
Merge launcher scanner v2: shader asset overrides per program, platfo…
NightHammer1000 Sep 15, 2026
a3a53f9
wip(ambient-occlusion): GTAO visibility-bitmask pass on the Vulkan co…
NightHammer1000 Sep 15, 2026
482d819
wip(native-shaders): runtime seam - manifest lookup at LinkProgram, 3…
NightHammer1000 Sep 15, 2026
5420a33
Merge the native shader runtime seam: manifest programs linked per va…
NightHammer1000 Sep 15, 2026
bf62791
wip(mod-api): mod pass and motion-writer API hosted on the Vulkan fra…
NightHammer1000 Sep 15, 2026
b1253c0
Merge the mod pass API: declared mod passes and motion writers in the…
NightHammer1000 Sep 15, 2026
fe965af
docs(vulkan): Phase 3b native render systems design
NightHammer1000 Sep 15, 2026
6ec5afb
Merge the compute pass kind and ambient occlusion: GTAO with a cosine…
NightHammer1000 Sep 15, 2026
836c5f6
wip(native-shaders): seam follow-ups - toolchain check on compile opt…
NightHammer1000 Sep 15, 2026
74d3238
Merge the native seam follow-ups: options-only toolchain check, scann…
NightHammer1000 Sep 15, 2026
b3f36c6
wip(native-shaders): AO port - OPTIMUMAO as specialization constant 1…
NightHammer1000 Sep 15, 2026
14f0779
Merge the native AO port: OPTIMUMAO specialization constant and the A…
NightHammer1000 Sep 15, 2026
8aa6d93
docs: in-game headless verification of the native shaders and AO on b…
NightHammer1000 Sep 15, 2026
0e7d19a
feat(ao): ambient occlusion master switch in the Optimum options tab
NightHammer1000 Sep 15, 2026
dc05748
fix(ao): AO off no longer darkens the frame; add the black and white …
NightHammer1000 Sep 15, 2026
e5397c2
wip(native-systems): device API and native blit - 3 branches, 1-2 nat…
NightHammer1000 Sep 15, 2026
ade9eaf
Merge Phase 3b stage 1a: the native device API and the native blit
NightHammer1000 Sep 15, 2026
356c72e
feat(ao): one dropdown for the AO choice - off, the game's SSAO, Opti…
NightHammer1000 Sep 15, 2026
cdd6dd0
docs: audited status of every plan item, and the DLSS/DLSS-FG foundat…
NightHammer1000 Sep 15, 2026
7a106eb
docs: scope the plan audit to this branch - DLSS, upscalers and frame…
NightHammer1000 Sep 15, 2026
0b9c6cc
docs: frame marking and GUI separation are Vulkan foundation and in s…
NightHammer1000 Sep 16, 2026
3f97ecd
wip(native-post): the post chain as a chain, with the OIT merge and s…
NightHammer1000 Sep 16, 2026
0381d45
wip(native-post): the bloom chain, god rays, the Luma step and the fi…
NightHammer1000 Sep 16, 2026
dba8db5
wip(native-post): the TAA resolve and sharpen draw natively
NightHammer1000 Sep 16, 2026
dc09b4e
wip(native-post): the post chain's ambient-occlusion step drawn natively
NightHammer1000 Sep 16, 2026
4928bce
Merge branch 'wip/native-post-skeleton' into feat/vulkan-taa
NightHammer1000 Sep 16, 2026
2b12035
Merge branch 'wip/native-post-ssao' into feat/vulkan-taa
NightHammer1000 Sep 16, 2026
047def9
Merge branch 'wip/native-post-taa' into feat/vulkan-taa
NightHammer1000 Sep 16, 2026
2c9bc70
Merge branch 'wip/native-post-final' into feat/vulkan-taa
NightHammer1000 Sep 16, 2026
7d874d4
Phase 3b stage 1 complete: all nine post/TAA chain passes draw natively
NightHammer1000 Sep 16, 2026
d07e241
docs: document the render seams instead of re-mapping the tree every …
NightHammer1000 Sep 16, 2026
24f4f0f
docs: AGENTS.md is the committed source of truth for how to work on t…
NightHammer1000 Sep 16, 2026
0701c91
docs: AGENTS.md is branch-agnostic working practice; branch scope and…
NightHammer1000 Sep 16, 2026
059ad07
docs: AGENTS.md checked against the tree; skills tracked so its point…
NightHammer1000 Sep 16, 2026
83d040e
wip(native-world): mesh draws on the native device API, proved on the…
NightHammer1000 Sep 16, 2026
9c77846
wip(native-world): GUI and text - the texture blit and the line overl…
NightHammer1000 Sep 16, 2026
8eaf5d9
wip(native-world): the night sky, the moon, the cube particles and th…
NightHammer1000 Sep 16, 2026
8f2c6dc
wip(native-world): chunks on the native mesh-draw API
NightHammer1000 Sep 16, 2026
1a5de53
wip(native-world): entity draws on the native device API
NightHammer1000 Sep 16, 2026
0cddb53
merge: native mesh draw API (Phase 3b stage 2 foundation)
NightHammer1000 Sep 16, 2026
c2f0f44
merge: chunks draw through the native device API on Vulkan
NightHammer1000 Sep 16, 2026
c514443
merge: entity draws through the native device API on Vulkan
NightHammer1000 Sep 16, 2026
882f3d5
merge: night sky, moon, cube particles and decals on the native devic…
NightHammer1000 Sep 16, 2026
1ab7e4c
merge: GUI and text draw through the native device API on Vulkan
NightHammer1000 Sep 16, 2026
8278bad
integration: regenerate ClientPlatformAbstract's patch from the merge…
NightHammer1000 Sep 16, 2026
ac04e76
docs: work directly in the session, sequentially; no workflows
NightHammer1000 Sep 16, 2026
715f395
fix(native-world): decal pass through a scope seam, no fork-only API …
NightHammer1000 Sep 16, 2026
c55c367
Merge the decal seam fix: scope seam instead of a fork-only API membe…
NightHammer1000 Sep 16, 2026
46d90af
tests: RenderTextureIntoFrameBuffer transplant tuple is 10 parameters
NightHammer1000 Sep 16, 2026
9550b83
fix(native-world): env gates per native route; entity route parked as…
NightHammer1000 Sep 16, 2026
6c545f1
fix(native-entities): native route takes the vanilla entity programs …
NightHammer1000 Sep 16, 2026
1794a71
feat(native-world): the visible sun draws natively; world GPU tests n…
NightHammer1000 Sep 16, 2026
5abe877
docs: feature phase moves fast; measurement and test cleanup wait for…
NightHammer1000 Sep 16, 2026
f1ce5f7
feat(native-world): quad particles draw natively in the OIT stage
NightHammer1000 Sep 16, 2026
93b78fc
feat(native-gui): Render2DTexture quads draw natively; fix: native OI…
NightHammer1000 Sep 16, 2026
fe8c6e0
feat(native-gui): every draw under the vanilla gui program goes native
NightHammer1000 Sep 16, 2026
fbf9e77
feat(native-world): plain draws under the vanilla standard program go…
NightHammer1000 Sep 16, 2026
440ea19
feat(native-gui): the main menu's 2D particles draw natively
NightHammer1000 Sep 16, 2026
dc56623
feat(native-world): the standard program goes native on every target,…
NightHammer1000 Sep 16, 2026
94c806b
feat(native-gui): the early loading screen's quads draw natively
NightHammer1000 Sep 17, 2026
67f5f1b
feat(native): the temporal gear and atlas self-blits draw natively
NightHammer1000 Sep 17, 2026
4ce19ee
feat(native-world): the forked cloud renderers draw natively
NightHammer1000 Sep 17, 2026
b85e3f0
feat(native-entities): the first-person hands draw natively; every dr…
NightHammer1000 Sep 17, 2026
35e1a3a
fix(taa): the sharpen limits its lobe on lone-pixel noise (RCAS FSR_R…
NightHammer1000 Sep 17, 2026
388a43a
fix(ao): the thin class is the vertex wind flag alone, not the whole …
NightHammer1000 Sep 17, 2026
d569c18
chore: keep assistant notes, plans and status files out of the reposi…
NightHammer1000 Sep 17, 2026
1fd97b8
test: two assertions caught up with the tree
NightHammer1000 Sep 17, 2026
37a06e6
Merge upstream/main: ilspycmd 11 baseline, indirect draw, BFS culling…
NightHammer1000 Sep 17, 2026
7e2e68b
feat(native): a generic native draw from client-stated state (emulati…
NightHammer1000 Sep 17, 2026
890dfa2
feat(native): remove the GL emulation layer (emulation removal, steps…
NightHammer1000 Sep 17, 2026
adffd43
feat(frame): frame identity, phase markers and present ids (Foundatio…
NightHammer1000 Sep 17, 2026
67e33fb
feat(frame): the world frame and the UI are separate images (Foundati…
NightHammer1000 Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 32 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ baseline/
build/
.baseline/

# Decompiled vanilla reference tree (proprietary; local read-only aid, never committed)
/_ref/

# Anchored to repo root: reconstructed fork trees (patches stay tracked)
/VintagestoryApi/
/Cairo/
Expand Down Expand Up @@ -63,7 +66,35 @@ graphify-out/
__pycache__/

# Private development artifacts
docs/
# (docs/* rather than docs/, so the one tracked deliverable below can be excepted -
# a negation inside a fully excluded directory is never reconsidered by git.)
docs/*
# ...except the TAA acceptance checklist: it is a deliverable the P5 coverage test
# (Optimum.Tests/taa-acceptance-harness-coverage-tests.cs) reads, so it has to be tracked.
!docs/taa-acceptance.md
# ...and the frozen temporal frame contract, for the same reason: the P6 stability
# test (Optimum.Tests/temporal-contract-tests.cs) reads it.
!docs/temporal-frame-contract.md
# ...and the Vulkan acceptance checklist and the parity allowlist: ssim.py reads the
# allowlist, and Optimum.Tests/parity-dump-coverage-tests.cs reads both.
!docs/vulkan-acceptance.md
!docs/parity-allowlist.md
# ...and the research notes the plan and its designs cite.
!docs/research/
# ...and the native shader interface contract every program family is written against.
!docs/vulkan-native-shaders.md
# ...and the native render systems design (Phase 3b) the system stages follow.
!docs/vulkan-native-render-systems.md
# ...and the modder documentation for Vulkan-native mod support (passes, motion writers, shaders).
!docs/vulkan-mod-support.md
build-linux.sh
build-macos.sh
build-windows.ps1

# Working notes for assistants and the local plan and status files: kept beside the checkout, never in it.
AGENTS.md
CLAUDE.md
.claude/
docs/vulkan-native-plan.md
docs/vulkan-branch-progress.md
scripts/dev/harvest-maps.py
50 changes: 47 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ ifneq ($(CLIENT_ARCHIVE),)
endif
BOOTSTRAP_ARGS := --version $(VERSION)

.PHONY: help check check-patches check-compat check-shaders bootstrap bootstrap-git-test build clean refresh patches patch-il deploy run run-creative run-connect \
.PHONY: help check check-patches check-compat check-shaders check-shaders-vk bootstrap bootstrap-git-test build clean refresh patches patch-il deploy run run-creative run-connect \
package package-overlay package-linux package-appimage package-macos package-win bench-scaling worldgen-benchmark-test worldgen-benchmark-smoke worldgen-benchmark \
coverage mutate-launcher server-smoke

Expand All @@ -58,6 +58,12 @@ check-compat: ## Verify patches keep vanilla multiplayer compatibility guards
check-shaders: ## Verify optimized shader overlays are not truncated
bash scripts/validate-shader-assets.sh sources/shaders

SHADER_COMPILER = tools/shader-compiler/bin/$(CONFIGURATION)/net10.0/Optimum.Shaders.Compiler.dll

check-shaders-vk: ## Recompile sources/shaders-vk and fail on any SPIR-V or manifest difference from the build output
dotnet build tools/shader-compiler/Optimum.Shaders.Compiler.csproj -c $(CONFIGURATION) --nologo -v quiet -p:OptimumSkipNativeShaders=true
dotnet $(SHADER_COMPILER) --verify sources/shaders-vk $(MOD_OUT)

bootstrap: ## Download client, decompile, clone forks, apply patches
bash scripts/bootstrap.sh $(BOOTSTRAP_ARGS)

Expand Down Expand Up @@ -102,7 +108,39 @@ deploy: patch-il check-shaders ## Deploy Cecil-patched DLLs into vanilla client
@cp $(MOD_OUT)/VSSurvivalMod.dll $(VANILLA_DIR)/Mods/
@cp $(MOD_OUT)/VSCreativeMod.dll $(VANILLA_DIR)/Mods/
@cp $(MOD_OUT)/cairo-sharp.dll $(VANILLA_DIR)/Lib/
@cp sources/shaders/*.fsh sources/shaders/*.vsh $(VANILLA_DIR)/assets/game/shaders/
@# The Vulkan renderer and its dependencies, loaded by name at startup; a
@# stale copy here makes the probe throw and the client fall back to OpenGL.
@cp $(MOD_OUT)/Optimum.Render.Vulkan.dll $(VANILLA_DIR)/
@cp $(MOD_OUT)/Silk.NET.*.dll $(VANILLA_DIR)/
@# shaderc goes into the application root: Silk.NET.Shaderc probes the application
@# directory and LD_LIBRARY_PATH, not Lib/, and a copy it cannot find makes the
@# renderer fall back to OpenGL silently.
@if [ -f "$(MOD_OUT)/runtimes/linux-x64/native/libshaderc_shared.so" ]; then cp $(MOD_OUT)/runtimes/linux-x64/native/libshaderc_shared.so $(VANILLA_DIR)/; fi
@# Native SPIR-V and its manifest (docs/vulkan-native-shaders.md section 6), beside the
@# renderer and never under assets/: the asset manager must not read SPIR-V and a mod must
@# not shadow engine shaders by asset priority. The build always writes the manifest, even
@# for an empty source tree, so a missing one means tools/shader-compiler never ran. The
@# directory is replaced whole, so a removed program does not linger, and checked file by
@# file like the overlays below.
@[ -f "$(MOD_OUT)/shaders-vk/shaders.manifest.json" ] || { echo "Error: $(MOD_OUT)/shaders-vk/shaders.manifest.json missing; build tools/shader-compiler (dotnet build VintageStory.slnx)"; exit 1; }
@rm -rf "$(VANILLA_DIR)/shaders-vk" && mkdir -p "$(VANILLA_DIR)/shaders-vk" && cp -f $(MOD_OUT)/shaders-vk/* "$(VANILLA_DIR)/shaders-vk/"
@for f in $(MOD_OUT)/shaders-vk/*; do d="$(VANILLA_DIR)/shaders-vk/$$(basename $$f)"; cmp -s "$$f" "$$d" || { echo "Error: $$f did not reach $$d (missing or content differs)"; exit 1; }; done
@# Every file, not *.fsh plus *.vsh: the packagers copy the whole directory,
@# and a stage that ships only on one of the two paths is the bug the
@# completeness check below exists to catch.
@for f in sources/shaders/*; do [ -f "$$f" ] || continue; cp -f "$$f" "$(VANILLA_DIR)/assets/game/shaders/$$(basename $$f)" || exit 1; done
@# Shader includes (TAA P3: the WarpState vertexwarp.vsh). Same override
@# mechanism as shaders - ShaderRegistry merges both asset categories into one
@# include dictionary - but a separate directory, so it needs its own copy.
@if [ -d "sources/shaderincludes" ]; then mkdir -p $(VANILLA_DIR)/assets/game/shaderincludes; for f in sources/shaderincludes/*; do [ -f "$$f" ] || continue; cp -f "$$f" "$(VANILLA_DIR)/assets/game/shaderincludes/$$(basename $$f)" || exit 1; done; fi
@# Both copies above are wildcards, so a file that never arrives means a moved
@# source path or a missing destination directory, not a forgotten list entry -
@# and the symptom is silent, vanilla's shader running in place of Optimum's.
@# TAA fails worst that way: its stages (taa-resolve, taa-debug, taa-skymotion,
@# taa-sharpen), the liquid velocity pass and the includes the motion writers
@# compile against have to arrive together or the resolve reads vectors nobody
@# wrote. Fail the deploy instead.
@for f in sources/shaders/* sources/shaderincludes/*; do [ -f "$$f" ] || continue; d="$(VANILLA_DIR)/assets/game/$$(echo $$f | cut -d/ -f2)/$$(basename $$f)"; cmp -s "$$f" "$$d" || { echo "Error: $$f did not reach $$d (missing or content differs)"; exit 1; }; done
@if [ -d "sources/lang" ]; then for f in sources/lang/*.json; do [ -f "$$f" ] || continue; dst="$(VANILLA_DIR)/assets/game/lang/$$(basename $$f)"; [ -f "$$dst" ] || continue; python3 -c "import json,sys; s=json.load(open(sys.argv[1],encoding='utf-8-sig')); d=json.load(open(sys.argv[2],encoding='utf-8-sig')); d.update(s); json.dump(d,open(sys.argv[2],'w',encoding='utf-8'),ensure_ascii=False,indent='\t')" "$$f" "$$dst"; done; fi
@if [ -d "$(INSTALL_DIR)" ]; then \
echo "Deploying to $(INSTALL_DIR)..."; \
Expand All @@ -115,7 +153,13 @@ deploy: patch-il check-shaders ## Deploy Cecil-patched DLLs into vanilla client
cp $(MOD_OUT)/VSSurvivalMod.dll $(INSTALL_DIR)/Mods/; \
cp $(MOD_OUT)/VSCreativeMod.dll $(INSTALL_DIR)/Mods/; \
cp $(MOD_OUT)/cairo-sharp.dll $(INSTALL_DIR)/Lib/; \
cp sources/shaders/*.fsh sources/shaders/*.vsh $(INSTALL_DIR)/assets/game/shaders/; \
cp $(MOD_OUT)/Optimum.Render.Vulkan.dll $(INSTALL_DIR)/; cp $(MOD_OUT)/Silk.NET.*.dll $(INSTALL_DIR)/; \
if [ -f "$(MOD_OUT)/runtimes/linux-x64/native/libshaderc_shared.so" ]; then cp $(MOD_OUT)/runtimes/linux-x64/native/libshaderc_shared.so $(INSTALL_DIR)/; fi; \
rm -rf "$(INSTALL_DIR)/shaders-vk" && mkdir -p "$(INSTALL_DIR)/shaders-vk" && cp -f $(MOD_OUT)/shaders-vk/* "$(INSTALL_DIR)/shaders-vk/" || exit 1; \
for f in $(MOD_OUT)/shaders-vk/*; do d="$(INSTALL_DIR)/shaders-vk/$$(basename $$f)"; cmp -s "$$f" "$$d" || { echo "Error: $$f did not reach $$d (missing or content differs)"; exit 1; }; done; \
for f in sources/shaders/*; do [ -f "$$f" ] || continue; cp -f "$$f" "$(INSTALL_DIR)/assets/game/shaders/$$(basename $$f)" || exit 1; done; \
if [ -d "sources/shaderincludes" ]; then mkdir -p $(INSTALL_DIR)/assets/game/shaderincludes; for f in sources/shaderincludes/*; do [ -f "$$f" ] || continue; cp -f "$$f" "$(INSTALL_DIR)/assets/game/shaderincludes/$$(basename $$f)" || exit 1; done; fi; \
for f in sources/shaders/* sources/shaderincludes/*; do [ -f "$$f" ] || continue; d="$(INSTALL_DIR)/assets/game/$$(echo $$f | cut -d/ -f2)/$$(basename $$f)"; cmp -s "$$f" "$$d" || { echo "Error: $$f did not reach $$d (missing or content differs)"; exit 1; }; done; \
if [ -d "sources/lang" ]; then for f in sources/lang/*.json; do [ -f "$$f" ] || continue; dst="$(INSTALL_DIR)/assets/game/lang/$$(basename $$f)"; [ -f "$$dst" ] || continue; python3 -c "import json,sys; s=json.load(open(sys.argv[1],encoding='utf-8-sig')); d=json.load(open(sys.argv[2],encoding='utf-8-sig')); d.update(s); json.dump(d,open(sys.argv[2],'w',encoding='utf-8'),ensure_ascii=False,indent='\t')" "$$f" "$$dst"; done; fi; \
fi
@echo "Deploy complete."
Expand Down
Loading