Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
297 commits
Select commit Hold shift + click to select a range
f1d2dcb
wip(taa): P5 runtime donors for the P3/P4 mod movers - check-patches …
NightHammer1000 Sep 11, 2026
055da6b
wip(taa): P5 acceptance and performance harness - build, patches and …
NightHammer1000 Sep 11, 2026
d1afd30
wip(taa): P5 integrate
NightHammer1000 Sep 11, 2026
9ace878
wip(taa): P5 review fixes - live TAA mip bias on the terrain samplers…
NightHammer1000 Sep 11, 2026
0bc772c
docs(taa): record P5 status
NightHammer1000 Sep 11, 2026
3dabdf3
fix(bootstrap): always log the chosen renderer, OpenGL included
NightHammer1000 Sep 11, 2026
1c2ca59
docs(taa): P5 in-game verification and frame-time capture; perf-captu…
NightHammer1000 Sep 11, 2026
59dba89
docs(taa): P6 freeze the temporal frame contract v1 with stability tests
NightHammer1000 Sep 11, 2026
9079e08
wip(review): lib fixes - TAA disable honoured on rebuild, settings sw…
NightHammer1000 Sep 11, 2026
3fd4c58
wip(review): mover windows - MechNetworkRenderer finally, Resonator A…
NightHammer1000 Sep 11, 2026
39b8549
wip(review): tests - LOD-bias restore path, per-method donor coverage
NightHammer1000 Sep 11, 2026
3aa45d3
wip(review): Vulkan backend review round - validation features, outpu…
NightHammer1000 Sep 11, 2026
54acaac
wip(review): scanner .ash includes, fail-fast shader deploy, luma-dif…
NightHammer1000 Sep 11, 2026
25ac09a
wip(review): retarget the make-deploy shader coverage test at the mer…
NightHammer1000 Sep 11, 2026
b8af701
wip(review): review pass - guard the validation-features extension, c…
NightHammer1000 Sep 11, 2026
14aedd9
wip(dev): worktree-bootstrap materialises build/ and the forks in a s…
NightHammer1000 Sep 11, 2026
9d0cfdb
wip(dev): worktree-bootstrap --in-place re-materialises the main chec…
NightHammer1000 Sep 11, 2026
5d26740
wip(dev): worktree-bootstrap --discard-build-edits for re-materialisi…
NightHammer1000 Sep 11, 2026
90c0d7c
wip(patcher): typesToUnseal, methodsToVirtualize and the call->callvi…
NightHammer1000 Sep 11, 2026
f751398
wip(stats): pacing measurement - VulkanStats wait sites/pacing ring/c…
NightHammer1000 Sep 11, 2026
c6d0969
wip(validation): GPU suite defaults to sync,best validation with a pi…
NightHammer1000 Sep 11, 2026
0d7a1c9
wip(parity): per-attachment parity dump on both backends, ssim.py, pa…
NightHammer1000 Sep 11, 2026
926190c
wip(phase0): regenerate ClientPlatformWindows patch after merging pat…
NightHammer1000 Sep 11, 2026
00773a1
wip(phase0): integrate patcher, stats, validation and parity stages
NightHammer1000 Sep 11, 2026
8322001
wip(phase0-review): count frame queue submits, harden capture scripts…
NightHammer1000 Sep 11, 2026
03153bd
wip(dev): worktrees get a private .build copy instead of a symlink
NightHammer1000 Sep 11, 2026
fe59cf1
wip(dev): perf-capture stops waiting when the client exits before the…
NightHammer1000 Sep 11, 2026
dc6a3d2
wip(phase0): exit verified on the RTX 4070; acceptance results, noise…
NightHammer1000 Sep 11, 2026
e274fbe
fix(taa): derive the sky motion direction from far minus near, not fr…
NightHammer1000 Sep 11, 2026
179c7d8
wip(phase0): acceptance-doc coverage test follows the V0.1 noise-floo…
NightHammer1000 Sep 11, 2026
636bc27
wip(phase1-review): GPU clear tests use UNORM8-exact values (0.5 lega…
NightHammer1000 Sep 11, 2026
9097573
wip(phase1a-step1): VulkanClientPlatform shell, CreatePlatform and Cl…
NightHammer1000 Sep 11, 2026
0d5dbee
wip(phase1b-step1): timeline semaphores are the frame clock
NightHammer1000 Sep 11, 2026
07df666
wip(phase1b-step2): QueryRing and ReadbackManager with FrameRing.Subm…
NightHammer1000 Sep 11, 2026
c5c8b69
wip(phase1-review): occlusion queries survive scope ends and partial …
NightHammer1000 Sep 11, 2026
46b6b7f
wip(phase1a-step2): ClientProgram.Start keeps vanilla wiring order an…
NightHammer1000 Sep 11, 2026
eb05c53
wip(phase1a-step2): TAA/FSR members declared virtual on ClientPlatfor…
NightHammer1000 Sep 11, 2026
cc66920
wip(phase1a-step2): re-point Optimum.Tests declaration assertions at …
NightHammer1000 Sep 11, 2026
e8758df
wip(phase1a-step2): coverage tests for the TAA virtuals and the remov…
NightHammer1000 Sep 11, 2026
7898714
wip(phase1a-step3): shader program, uniform and UBO calls are platfor…
NightHammer1000 Sep 11, 2026
95ca70d
wip(phase1a-step4): TAA motion windows and FSR target selection call …
NightHammer1000 Sep 11, 2026
b9aa1cd
wip(phase1a-step4): fixed-function state, diagnostics and capability …
NightHammer1000 Sep 11, 2026
10d607b
wip(phase1a-step4): framebuffers and post chain - device setup, facto…
NightHammer1000 Sep 11, 2026
0231949
wip(phase1a-step4): meshes and textures - device bodies live in Vulka…
NightHammer1000 Sep 11, 2026
e7093a5
wip(phase1a-step4): shaders, uniforms and UBOs - device bodies live i…
NightHammer1000 Sep 11, 2026
ce18fb8
wip(phase1a-step4): frame loop, thick-line probe, resize and parity r…
NightHammer1000 Sep 11, 2026
cb0fbe3
wip(phase1a-step4): coverage re-pointed at VulkanClientPlatform; gate…
NightHammer1000 Sep 11, 2026
aaf7497
wip(phase1a-step5): last seam sites are platform virtuals; IOptimumGr…
NightHammer1000 Sep 11, 2026
423318e
wip(phase1): integrate Phase 1A steps 2-5 with Phase 1B steps 1-2 and…
NightHammer1000 Sep 11, 2026
b275d82
wip(phase1b-step3): UploadManager - uploads record into a per-slot up…
NightHammer1000 Sep 11, 2026
62d5e61
wip(phase1b-step4): split present submission and swapchain retirement…
NightHammer1000 Sep 11, 2026
1033804
wip(phase1b-step5): allocator pool classes, dedicated requirements, m…
NightHammer1000 Sep 11, 2026
a80e6a7
wip(phase1b-step5): pool classes + budget verified - Release solution…
NightHammer1000 Sep 11, 2026
96fa405
wip(phase1b-step6): per-slot indirect ring, descriptor arena, dirty-m…
NightHammer1000 Sep 11, 2026
dadc78b
wip(phase1b-step6): tests for the indirect ring, descriptor arena, di…
NightHammer1000 Sep 11, 2026
6d1602c
wip(phase1b-step6): per-draw costs verified - Release solution build …
NightHammer1000 Sep 11, 2026
3f3514c
wip(phase1-review): MeshRef.Dispose releases the device mesh; replace…
NightHammer1000 Sep 11, 2026
6c54c14
wip(phase1): exit recorded; OpenGL pacing is bimodal between launches…
NightHammer1000 Sep 11, 2026
69e3c36
wip(phase2-barriers): ResourceStateTracker + BarrierBatcher drive eve…
NightHammer1000 Sep 11, 2026
23bcec0
wip(phase2-frame-plan): FramePlan load/store solving, exact signature…
NightHammer1000 Sep 11, 2026
36bea0f
wip(phase2-stage-hooks): BeginRenderStage/EndRenderStage bracket (con…
NightHammer1000 Sep 11, 2026
b48ed02
wip(phase2-write-masks): colour write tiers, draw buffers as write ma…
NightHammer1000 Sep 11, 2026
568dec6
wip(phase2-write-masks): per-tier MotionWindowTests, tier unit tests,…
NightHammer1000 Sep 11, 2026
c52d456
wip(phase2-write-masks): dynamic-state unit tests expect Everything o…
NightHammer1000 Sep 11, 2026
388436f
wip(phase2-ssao-alpha): SSAO noise alpha 1 like GL's RGB upload into …
NightHammer1000 Sep 11, 2026
8ea3355
wip(phase2-ssao-alpha): source test follows the noise helper and pins…
NightHammer1000 Sep 11, 2026
27e43bf
wip(phase2): merge wave 1 (barriers C1, frame plan C2, stage hooks C3…
NightHammer1000 Sep 11, 2026
fde5d84
wip(docs): correct the Phase 0 jitter record - it returned on Vulkan …
NightHammer1000 Sep 11, 2026
47165a1
wip(phase2-frame-graph): FrameGraph, PassRecorder, clear promotion an…
NightHammer1000 Sep 11, 2026
0ee453e
wip(phase2-frame-graph): platform pass declarations, two-plan cycle, …
NightHammer1000 Sep 11, 2026
0419766
wip(phase2-frame-graph): attachments that load keep read access; fram…
NightHammer1000 Sep 11, 2026
54049b9
wip(phase2-frame-graph): keep the single MotionAttachmentIndex guard …
NightHammer1000 Sep 11, 2026
228892c
wip(phase2-frame-graph): composition feedback test covers both paths …
NightHammer1000 Sep 11, 2026
5639d07
wip(phase2-transients): TransientAllocator, pooled ReadSelf copies, p…
NightHammer1000 Sep 11, 2026
12ec592
wip(phase2-transients): keep the pinned post-chain helper text; tag t…
NightHammer1000 Sep 11, 2026
3ecb52f
wip(phase2-review): a slot the declared pass leaves out is outside th…
NightHammer1000 Sep 11, 2026
619e203
wip(taa): take taa-resolve.fsh anti-flicker + 3x3 nearest-depth disoc…
NightHammer1000 Sep 11, 2026
6e14bdf
wip(taa): pin the anti-flicker + 3x3 nearest-depth resolve (2026-09-1…
NightHammer1000 Sep 11, 2026
b181e7c
wip(phase2): Milestone 1 exit numbers; perf-capture writes to an abso…
NightHammer1000 Sep 11, 2026
ca18e0d
docs(vulkan-acceptance): Milestone 1 accepted by the user at 6568556
NightHammer1000 Sep 11, 2026
a15473c
fix(taa): the jittered AO is shaded into the scene before the resolve
NightHammer1000 Sep 15, 2026
b0e86b6
feat(headless): the headless render harness, backported from feat/dlss-g
NightHammer1000 Sep 15, 2026
b71ba6b
docs(plan): the Vulkan-native plan of record, with the full-native ro…
NightHammer1000 Sep 15, 2026
40fdadb
fix(scripts): the review's portability blockers - shaderc placement, …
NightHammer1000 Sep 15, 2026
d74519c
feat(vulkan): values every program shares live in one frame block, no…
NightHammer1000 Sep 15, 2026
275626c
docs: commit references follow the history rewrite
NightHammer1000 Sep 15, 2026
4eb31cb
docs(research): caching, descriptor model, XeGTAO and validation note…
NightHammer1000 Sep 15, 2026
af5b945
feat(vulkan): compiled SPIR-V and the driver pipeline cache persist b…
NightHammer1000 Sep 15, 2026
5a091ff
docs(plan): one pipeline layout with bindless textures from the start…
NightHammer1000 Sep 15, 2026
af60bf4
feat(vulkan): extra validation checks go through VK_EXT_layer_setting…
NightHammer1000 Sep 15, 2026
30da25f
docs: handover note - where the Vulkan branch work stands and what co…
NightHammer1000 Sep 15, 2026
e1293c0
docs: handover note records the present-after-write hazard the valida…
NightHammer1000 Sep 15, 2026
a725b8f
docs: full handoff for the Vulkan branch - context, rules, repository…
NightHammer1000 Sep 15, 2026
97b95db
docs(research): bindless texture descriptors - array per sampled type…
NightHammer1000 Sep 15, 2026
40f90d5
docs(research): how the ANV bindless limits derive from its descripto…
NightHammer1000 Sep 15, 2026
9294ff5
fix(tests): compare the SSAO override with the vanilla shader from th…
NightHammer1000 Sep 15, 2026
6369cad
docs: Linux test state for the Vulkan branch, and why item 1 does not…
NightHammer1000 Sep 15, 2026
a02c842
docs: the present-after-write hazard is Pascal-specific - reproductio…
NightHammer1000 Sep 15, 2026
8913ccd
feat(vulkan): descriptor-indexing device floor and the decision-9 set…
NightHammer1000 Sep 15, 2026
86a6f3b
docs(research): ambient occlusion candidates - XeGTAO archived, visib…
NightHammer1000 Sep 15, 2026
6bead43
docs(vulkan): native shader interface contract; program record bindin…
NightHammer1000 Sep 15, 2026
4d92089
fix(scripts): keep shader trees out of the working-tree source sync
NightHammer1000 Sep 15, 2026
4452c37
docs(research): ambient occlusion - every named source researched and…
NightHammer1000 Sep 15, 2026
6cf5170
wip(bindless): decision 9 set 1 texture table and the shared pipeline…
NightHammer1000 Sep 15, 2026
42f4839
wip(bindless): review - program record in the shared layout's set 2; …
NightHammer1000 Sep 15, 2026
c0a2e1c
wip(pipeline-cache): background compiles, growth-triggered saves, pip…
NightHammer1000 Sep 15, 2026
e0b67c3
wip(pipeline-cache): review - queued prewarm no longer skips warm dra…
NightHammer1000 Sep 15, 2026
e25fc14
wip(native-shaders): entity, standard and instanced motion writers ke…
NightHammer1000 Sep 15, 2026
1998e18
wip(native-shaders): shared native includes, frame.glsl generator, sp…
NightHammer1000 Sep 15, 2026
0535986
wip(native-shaders): offline shader compiler, SPIR-V reflection, mani…
NightHammer1000 Sep 15, 2026
74638d0
wip(native-shaders): shader-compiler stamp and input list under obj/
NightHammer1000 Sep 15, 2026
26682d3
wip(native-shaders): family 1 pilot (blit, final, luma) and the stati…
NightHammer1000 Sep 15, 2026
f7ff341
wip(shared-layout): every rewritten program on the one shared pipelin…
NightHammer1000 Sep 15, 2026
7c7ba23
fix(vulkan): bindless colour placeholders read opaque black, magenta …
NightHammer1000 Sep 15, 2026
f6a59e1
wip(native-shaders): chunks - chunkopaque, chunktopsoil, chunktranspa…
NightHammer1000 Sep 15, 2026
db3cf92
wip(native-shaders): entities - entityanimated, shadowmapentityanimat…
NightHammer1000 Sep 15, 2026
81428be
wip(native-shaders): optimum-programs - 8 of 8 programs ported (taa-r…
NightHammer1000 Sep 15, 2026
d6b04a5
wip(native-shaders): post - 8 of 9 programs ported (ssao, godrays, fi…
NightHammer1000 Sep 15, 2026
0c0f8c8
wip(native-shaders): gui-overlays - 9 programs, parity 25/25, Optimum…
NightHammer1000 Sep 15, 2026
fc1bc1b
wip(native-shaders): particles-sky - 9 programs (cloudvolumetric bloc…
NightHammer1000 Sep 15, 2026
34f02f8
feat(native-shaders): parity oracle decisions and the transparentcomp…
NightHammer1000 Sep 15, 2026
9dd5999
wip(native-shaders): cloudvolumetric - NativeShaderParityTests 99/99 …
NightHammer1000 Sep 15, 2026
7dde6e4
docs: handoff status for decision 9, the native shaders and the AO work
NightHammer1000 Sep 15, 2026
157ed47
wip(launcher): scanner v2 - ShaderAssetOverride, PlatformInternals, s…
NightHammer1000 Sep 15, 2026
a7928e6
wip(native-shaders): runtime seam - manifest lookup at LinkProgram, 3…
NightHammer1000 Sep 15, 2026
4dcbb51
wip(mod-api): mod pass and motion-writer API hosted on the Vulkan fra…
NightHammer1000 Sep 15, 2026
7e500da
docs(vulkan): Phase 3b native render systems design
NightHammer1000 Sep 15, 2026
9389a6c
wip(compute): frame-graph compute pass kind
NightHammer1000 Sep 15, 2026
7ea3b90
wip(ambient-occlusion): GTAO visibility-bitmask pass on the Vulkan co…
NightHammer1000 Sep 15, 2026
9115d49
wip(native-shaders): seam follow-ups - toolchain check on compile opt…
NightHammer1000 Sep 15, 2026
9976fa2
wip(native-shaders): AO port - OPTIMUMAO as specialization constant 1…
NightHammer1000 Sep 15, 2026
4aee140
docs: in-game headless verification of the native shaders and AO on b…
NightHammer1000 Sep 15, 2026
cb5fafc
feat(ao): ambient occlusion master switch in the Optimum options tab
NightHammer1000 Sep 15, 2026
79c2d2f
fix(ao): AO off no longer darkens the frame; add the black and white …
NightHammer1000 Sep 15, 2026
de7ccf2
wip(native-systems): device API and native blit - 3 branches, 1-2 nat…
NightHammer1000 Sep 15, 2026
27063e6
feat(ao): one dropdown for the AO choice - off, the game's SSAO, Opti…
NightHammer1000 Sep 15, 2026
a1d6be2
docs: audited status of every plan item, and the DLSS/DLSS-FG foundat…
NightHammer1000 Sep 15, 2026
a8e8828
docs: scope the plan audit to this branch - DLSS, upscalers and frame…
NightHammer1000 Sep 15, 2026
5e8a862
docs: frame marking and GUI separation are Vulkan foundation and in s…
NightHammer1000 Sep 16, 2026
6f28693
wip(native-post): the post chain as a chain, with the OIT merge and s…
NightHammer1000 Sep 16, 2026
719144c
wip(native-post): the post chain's ambient-occlusion step drawn natively
NightHammer1000 Sep 16, 2026
e7bb41a
wip(native-post): the TAA resolve and sharpen draw natively
NightHammer1000 Sep 16, 2026
f9e7b4e
wip(native-post): the bloom chain, god rays, the Luma step and the fi…
NightHammer1000 Sep 16, 2026
7d3f6ab
Phase 3b stage 1 complete: all nine post/TAA chain passes draw natively
NightHammer1000 Sep 16, 2026
0cde87f
docs: document the render seams instead of re-mapping the tree every …
NightHammer1000 Sep 16, 2026
002280a
docs: AGENTS.md is the committed source of truth for how to work on t…
NightHammer1000 Sep 16, 2026
60af821
docs: AGENTS.md is branch-agnostic working practice; branch scope and…
NightHammer1000 Sep 16, 2026
fbb6d2a
docs: AGENTS.md checked against the tree; skills tracked so its point…
NightHammer1000 Sep 16, 2026
1ff3791
wip(native-world): mesh draws on the native device API, proved on the…
NightHammer1000 Sep 16, 2026
c01d137
wip(native-world): chunks on the native mesh-draw API
NightHammer1000 Sep 16, 2026
32c8b88
wip(native-world): entity draws on the native device API
NightHammer1000 Sep 16, 2026
66130d0
wip(native-world): the night sky, the moon, the cube particles and th…
NightHammer1000 Sep 16, 2026
50c18e3
wip(native-world): GUI and text - the texture blit and the line overl…
NightHammer1000 Sep 16, 2026
c0b955c
integration: regenerate ClientPlatformAbstract's patch from the merge…
NightHammer1000 Sep 16, 2026
30b078c
docs: work directly in the session, sequentially; no workflows
NightHammer1000 Sep 16, 2026
1a14568
fix(native-world): decal pass through a scope seam, no fork-only API …
NightHammer1000 Sep 16, 2026
8a06e62
tests: RenderTextureIntoFrameBuffer transplant tuple is 10 parameters
NightHammer1000 Sep 16, 2026
cc9df62
fix(native-world): env gates per native route; entity route parked as…
NightHammer1000 Sep 16, 2026
471f1f0
fix(native-entities): native route takes the vanilla entity programs …
NightHammer1000 Sep 16, 2026
2554166
feat(native-world): the visible sun draws natively; world GPU tests n…
NightHammer1000 Sep 16, 2026
ec5f959
docs: feature phase moves fast; measurement and test cleanup wait for…
NightHammer1000 Sep 16, 2026
0bd8aab
feat(native-world): quad particles draw natively in the OIT stage
NightHammer1000 Sep 16, 2026
3e9667c
feat(native-gui): Render2DTexture quads draw natively; fix: native OI…
NightHammer1000 Sep 16, 2026
6a7931a
feat(native-gui): every draw under the vanilla gui program goes native
NightHammer1000 Sep 16, 2026
267b05e
feat(native-world): plain draws under the vanilla standard program go…
NightHammer1000 Sep 16, 2026
b804696
feat(native-gui): the main menu's 2D particles draw natively
NightHammer1000 Sep 16, 2026
6492ef4
feat(native-world): the standard program goes native on every target,…
NightHammer1000 Sep 16, 2026
eb1eba5
feat(native-gui): the early loading screen's quads draw natively
NightHammer1000 Sep 17, 2026
9d07e60
feat(native): the temporal gear and atlas self-blits draw natively
NightHammer1000 Sep 17, 2026
b1fa82d
feat(native-world): the forked cloud renderers draw natively
NightHammer1000 Sep 17, 2026
a62ccd9
feat(native-entities): the first-person hands draw natively; every dr…
NightHammer1000 Sep 17, 2026
707ad35
fix(taa): the sharpen limits its lobe on lone-pixel noise (RCAS FSR_R…
NightHammer1000 Sep 17, 2026
b18935d
fix(ao): the thin class is the vertex wind flag alone, not the whole …
NightHammer1000 Sep 17, 2026
dca3ba2
chore: keep assistant notes, plans and status files out of the reposi…
NightHammer1000 Sep 17, 2026
7013475
test: two assertions caught up with the tree
NightHammer1000 Sep 17, 2026
adafa84
feat(native): a generic native draw from client-stated state (emulati…
NightHammer1000 Sep 17, 2026
69a158b
feat(native): remove the GL emulation layer (emulation removal, steps…
NightHammer1000 Sep 17, 2026
50a220c
feat(frame): frame identity, phase markers and present ids (Foundatio…
NightHammer1000 Sep 17, 2026
e55a113
feat(frame): the world frame and the UI are separate images (Foundati…
NightHammer1000 Sep 17, 2026
31970df
wip(taa): move sharpen to presentation
NightHammer1000 Sep 20, 2026
aead4bb
feat(vulkan): refine AO classification and TAA clip
NightHammer1000 Sep 24, 2026
196d3d6
refactor: consolidate tests and Vulkan device responsibilities
NightHammer1000 Sep 24, 2026
a5ba25a
refactor: make Cecil patch selection a typed manifest
NightHammer1000 Sep 24, 2026
abde13a
refactor: share Cecil method body cloning
NightHammer1000 Sep 24, 2026
751736a
perf: reuse stated draw blend snapshots
NightHammer1000 Sep 24, 2026
fed5c71
perf: resolve stated sampler slots and units by index
NightHammer1000 Sep 24, 2026
5f9b182
test: report intermediate pixels for Intel Vulkan failures
NightHammer1000 Sep 24, 2026
e8afa47
Trace physical sampled images for Vulkan alias diagnostics
NightHammer1000 Sep 24, 2026
6c20fa6
Normalize legacy shader line endings for LF rules
NightHammer1000 Sep 24, 2026
0ea14df
Resolve upstream settings and preserve Vulkan refactor during rebase
NightHammer1000 Sep 24, 2026
e07dd8c
Remove unrelated test rearrangements and interop probe from Vulkan scope
NightHammer1000 Sep 24, 2026
e7a86b5
Consolidate native shader programs into single stage-selectable sources
NightHammer1000 Sep 24, 2026
c2977ec
Group renderer support types and related partials by subsystem
NightHammer1000 Sep 24, 2026
945371f
Restore upstream tests and keep patcher changes scoped to renderer in…
NightHammer1000 Sep 24, 2026
0f4c0fb
Use portable shader-read barriers for reused sampled images
NightHammer1000 Sep 24, 2026
409bc43
Restore upstream diagnostics layout and startup hooks
NightHammer1000 Sep 24, 2026
de9b603
Reduce frame timing to CPU reports and present identity
NightHammer1000 Sep 24, 2026
4d0cc3d
Reuse frame plans and eliminate per-scope attachment arrays
NightHammer1000 Sep 24, 2026
428c4bf
Keep temporal helpers focused on TAA and remove unused vendor adapters
NightHammer1000 Sep 24, 2026
5eb443f
Replace graph development tests with behavioral planning and image re…
NightHammer1000 Sep 24, 2026
2cef6d3
Replace shader build and cache development tests with artifact checks
NightHammer1000 Sep 24, 2026
0efe1fe
Remove unused frame-plan store and alias calculations
NightHammer1000 Sep 24, 2026
8c9024b
Place transient image leases incrementally
NightHammer1000 Sep 24, 2026
6f200e2
Replace renderer migration history with current contracts
NightHammer1000 Sep 24, 2026
f917733
Consolidate the sole presentation path with its swapchain
NightHammer1000 Sep 24, 2026
14522c5
Retire swapchains after successor image reacquisition completes
NightHammer1000 Sep 24, 2026
2d82ade
Condense renderer documentation into one guide
NightHammer1000 Sep 24, 2026
6e6beb2
Use optional presentation fences for swapchain lifetime
NightHammer1000 Sep 24, 2026
f151d71
Replace validation ledger with strict device acceptance checks
NightHammer1000 Sep 24, 2026
621669e
Replace presentation development tests with lifecycle scenarios
NightHammer1000 Sep 24, 2026
30b8581
Consolidate resource lifetime and image reuse coverage
NightHammer1000 Sep 24, 2026
d2eefd0
Consolidate allocator regression coverage around resource lifetimes
NightHammer1000 Sep 24, 2026
99a3251
Replace frame upload and query development tests with submission scen…
NightHammer1000 Sep 24, 2026
47fbf4b
Replace texture readback and attachment development tests with behavi…
NightHammer1000 Sep 24, 2026
8248fb3
Trim timing reports to measured CPU phases and consolidate diagnostic…
NightHammer1000 Sep 24, 2026
bee5848
Fold draw cache and indirect lifetime acceptance into subsystem suites
NightHammer1000 Sep 24, 2026
28e941a
Centralize GPU acceptance setup and enforce explicit device selection
NightHammer1000 Sep 24, 2026
350aa42
Consolidate shader interface acceptance around compiled binary contracts
NightHammer1000 Sep 24, 2026
a4637e7
Consolidate shader binding acceptance through renderer draws
NightHammer1000 Sep 24, 2026
86a6a98
Streamline pipeline cache and prewarm acceptance scenarios
NightHammer1000 Sep 24, 2026
6017268
Consolidate poison and temporal filter acceptance paths
NightHammer1000 Sep 24, 2026
57b1f26
Consolidate translation and device acceptance with frame ownership
NightHammer1000 Sep 24, 2026
5238041
Remove unused Vulkan test hooks and fold frame timing cases
NightHammer1000 Sep 24, 2026
d96fc0b
Consolidate frame execution and temporal contract tests
NightHammer1000 Sep 24, 2026
ec0c82c
Group motion writer contracts by world actor and effects
NightHammer1000 Sep 24, 2026
53ae7a2
Keep native sky acceptance with world system tests
NightHammer1000 Sep 24, 2026
927ddcf
Restore distinct acceptance suites pending fresh replacement
NightHammer1000 Sep 24, 2026
6e57f02
Remove redundant renderer plans and point sources at Vulkan guide
NightHammer1000 Sep 24, 2026
8f8858e
Restore GPU test adapter and update native shader discovery test
NightHammer1000 Sep 24, 2026
50083af
Fix final Vulkan acceptance regressions and align source patches
NightHammer1000 Sep 24, 2026
a9cea7c
Align final coverage with platform seams and GPU behavior
NightHammer1000 Sep 24, 2026
9a1b9f2
Record current Vulkan validation evidence
NightHammer1000 Sep 24, 2026
0011189
Replace redundant integration harnesses with focused device regressions
NightHammer1000 Sep 24, 2026
50dda12
Update validation totals after test-suite replacement
NightHammer1000 Sep 24, 2026
6333e60
Drop unrelated worktree bootstrap from renderer PR
NightHammer1000 Sep 24, 2026
e134acd
Clarify existing FSR 1 support in Vulkan scope
NightHammer1000 Sep 24, 2026
de19f2f
Replace terrain motion harness with direct GPU contract
NightHammer1000 Sep 24, 2026
4026304
Replace standard motion harness with direct GPU contract
NightHammer1000 Sep 24, 2026
1aec8f8
Fold jittered mover motion into direct GPU contract
NightHammer1000 Sep 24, 2026
f165626
Replace instanced motion harness with per-instance GPU contract
NightHammer1000 Sep 24, 2026
2a1a774
Replace skinned entity motion harness with GPU contract
NightHammer1000 Sep 24, 2026
da36c03
Consolidate native motion writer contracts
NightHammer1000 Sep 24, 2026
4b3570e
Extract headless capture harness from renderer PR
NightHammer1000 Sep 24, 2026
e8cca96
Document headless capture branch split
NightHammer1000 Sep 24, 2026
9a671b2
Remove stale research reference from patch check
NightHammer1000 Sep 24, 2026
777abde
Restore TAA setting after pacing capture
NightHammer1000 Sep 24, 2026
89cf869
Separate Vulkan settings and repair Optimum tabs
NightHammer1000 Sep 25, 2026
0efbf28
Stabilize distant TAA foliage and GTAO input
NightHammer1000 Sep 25, 2026
376dbc2
Prevent stale glow at distant TAA depth edges
NightHammer1000 Sep 25, 2026
57cefab
Scope distant TAA history retention to sparse foliage
NightHammer1000 Sep 25, 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
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@
*.cmd text eol=lf
*.slnx text eol=lf
*.list text eol=lf
*.glsl text eol=lf
*.vert text eol=lf
*.frag text eol=lf
*.comp text eol=lf
*.vsh text eol=lf
*.fsh text eol=lf
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/Temporal/AcceptanceTests.cs) reads, so it has to be tracked.
!docs/vulkan.md
# ...and the frozen temporal frame contract, for the same reason: the P6 stability
# test (Optimum.Tests/Temporal/ContractTests.cs) reads it.
!docs/vulkan.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.md
!docs/vulkan.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.md
# ...and the native render systems design (Phase 3b) the system stages follow.
!docs/vulkan.md
# ...and the modder documentation for Vulkan-native mod support (passes, motion writers, shaders).
!docs/vulkan.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
52 changes: 48 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ BOOTSTRAP_ARGS :=
ifneq ($(CLIENT_ARCHIVE),)
BOOTSTRAP_ARGS += --client-archive $(CLIENT_ARCHIVE)
endif
BOOTSTRAP_ARGS := --version $(VERSION)
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.md), 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