Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1042 commits
Select commit Hold shift + click to select a range
a52d012
Emission Profiles now load properly!
devshgraphicsprogramming Mar 12, 2026
52bab85
Refactor of `createMistubaLeaf`
devshgraphicsprogramming Mar 13, 2026
4d266ec
All samplers now conform to concepts
karimsayedre Mar 13, 2026
70b31d4
Merge branch 'master' into rt_pipeline_debug_render_fixes
keptsecret Mar 13, 2026
1409481
latest example
keptsecret Mar 13, 2026
447c797
make textures load and temporarily disable assert for layered materials
devshgraphicsprogramming Mar 13, 2026
c84c3e9
merge partial parsing of Mitsuba Materials
devshgraphicsprogramming Mar 13, 2026
82726cb
fix block deallocation bug
devshgraphicsprogramming Mar 13, 2026
492874d
handle the CCW/CW flip when instance matrix is LH
devshgraphicsprogramming Mar 13, 2026
774c8f2
all CI scenes load without crashing but coating and bumpmap handling …
devshgraphicsprogramming Mar 13, 2026
f0c91ef
Merge branch 'master' into pipeline-exec-info
karimsayedre Mar 13, 2026
5def0b4
Fix checking valid jpeg file logic
Mar 14, 2026
1042111
temporary fix to broken `master` branch compile
devshgraphicsprogramming Mar 14, 2026
f93f430
get opacity going!
devshgraphicsprogramming Mar 14, 2026
ba36591
Add NSC package channel support
AnastaZIuk Mar 14, 2026
703a0a8
Use NAM release manifest helper
AnastaZIuk Mar 14, 2026
ed44c85
Upload NSC artifacts on branches
AnastaZIuk Mar 14, 2026
bcb10ff
Clean up NSC package wiring
AnastaZIuk Mar 14, 2026
ad55c10
Merge branch 'master' of github.com:Devsh-Graphics-Programming/Nabla …
AnastaZIuk Mar 14, 2026
4e0c2bc
Expose NSC IDE helper from package
AnastaZIuk Mar 14, 2026
1a7bf02
really struggling with TWO_SIDED
devshgraphicsprogramming Mar 14, 2026
2c8c25c
Fix NSC build-info workflow command
AnastaZIuk Mar 14, 2026
8c3a879
Run NSC build-info directly in workflow
AnastaZIuk Mar 14, 2026
7accf8e
Use shell wrapper for NSC build info
AnastaZIuk Mar 14, 2026
79bae51
Use pwsh shell wrapper for NSC build info
AnastaZIuk Mar 14, 2026
6081106
Use host paths for NSC channel layout
AnastaZIuk Mar 14, 2026
e9224eb
Create NSC release staging directory
AnastaZIuk Mar 14, 2026
c62e3dd
Update NAM release helper
AnastaZIuk Mar 14, 2026
81406b8
Keep NSC component on canonical package layout
AnastaZIuk Mar 15, 2026
7269751
Split package tiles and NSC capability
AnastaZIuk Mar 15, 2026
c3b4643
Remove manual NSC config mapping
AnastaZIuk Mar 15, 2026
5573e33
Add NSC channel promotion workflow
AnastaZIuk Mar 15, 2026
99e6f77
Promote NSC channel c3b464368445d23e093e4e2a13d6a2ae6d23b9c6
AnastaZIuk Mar 15, 2026
8d47e67
Merge pull request #1012 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 15, 2026
52795a9
Generalize NSC promotion workflow
AnastaZIuk Mar 15, 2026
a209c85
Allow PR token fallback
AnastaZIuk Mar 15, 2026
79391e8
Refine NSC promotion workflow
AnastaZIuk Mar 15, 2026
f45b31e
Make NSC promotion release immutable
AnastaZIuk Mar 15, 2026
2caf001
Fix NSC promotion branch push token
AnastaZIuk Mar 15, 2026
2cd42c3
Pin NSC promotion actions
AnastaZIuk Mar 15, 2026
3e40dd2
Update NSC promotion action versions
AnastaZIuk Mar 15, 2026
51546fc
Allow cross-repo promotion branch push
AnastaZIuk Mar 15, 2026
7c8230a
Refine NSC promotion PR text
AnastaZIuk Mar 15, 2026
e2d6d9c
Link NSC promotion release notes
AnastaZIuk Mar 15, 2026
42ebed6
Trim NSC promotion PR body
AnastaZIuk Mar 15, 2026
630c16b
Relax NSC promotion note refresh
AnastaZIuk Mar 15, 2026
28b2383
Force push NSC promotion branches
AnastaZIuk Mar 15, 2026
465b4a4
Refresh Existing Promotion Releases
AnastaZIuk Mar 15, 2026
edfa177
Default to package NSC mode
AnastaZIuk Mar 15, 2026
1a9cdc7
Show package NSC in examples solution
AnastaZIuk Mar 15, 2026
1dfd31f
Show NSC package defaults
AnastaZIuk Mar 16, 2026
e052156
Merge pull request #1011 from Devsh-Graphics-Programming/nsc-channel
AnastaZIuk Mar 16, 2026
83b2158
Merge branch 'master' into pipeline-exec-info
AnastaZIuk Mar 16, 2026
0dc31aa
add CFrontendIR node copying, stack reversal and individual BxDF expr…
devshgraphicsprogramming Mar 16, 2026
94706a3
Merge pull request #1003 from Devsh-Graphics-Programming/pipeline-exe…
AnastaZIuk Mar 16, 2026
c640685
Post merge examples_tests submodule update
AnastaZIuk Mar 16, 2026
8aff0f7
Beer node needs a thickness unfortunately.
devshgraphicsprogramming Mar 16, 2026
1b0b6f3
quick hack around normalmaps and bumpmaps, sketch out the general ide…
devshgraphicsprogramming Mar 16, 2026
6a4e8df
Merge remote-tracking branch 'remotes/origin/hotfix_jpeg_loader' into…
devshgraphicsprogramming Mar 16, 2026
0c1e045
move UV transform to front of SParameterSet, keep variable length stu…
devshgraphicsprogramming Mar 16, 2026
86fa3f6
Added alias table and cumulative prbability builders and samplers
karimsayedre Mar 17, 2026
850536c
implement BLEND_BSDF
devshgraphicsprogramming Mar 17, 2026
9574030
merge master, fix conflicts
keptsecret Mar 17, 2026
a54a290
Add NSC preprocess mode
AnastaZIuk Mar 17, 2026
daaf6db
Tune NSC preprocess rules
AnastaZIuk Mar 17, 2026
c2af0b2
Fix NSC builtin unmounting
AnastaZIuk Mar 17, 2026
62657ae
Replace builtin unmount smoke test
AnastaZIuk Mar 17, 2026
a92dba8
Run unmount self-test in CI
AnastaZIuk Mar 17, 2026
c79103f
Rename NSC CI self-test step
AnastaZIuk Mar 17, 2026
10929e8
Keep NSC preprocess outputs per config
AnastaZIuk Mar 17, 2026
58b9ff1
Use depfiles for NSC preprocess rules
AnastaZIuk Mar 17, 2026
48aa7a7
Track builtin bootstrap mounts
AnastaZIuk Mar 17, 2026
ebe6429
Improve Wave preprocess diagnostics
AnastaZIuk Mar 17, 2026
fdea055
Fix NSC preprocess output
AnastaZIuk Mar 17, 2026
6c79011
Merge branch 'master' into sampler-concepts
karimsayedre Mar 17, 2026
254404b
update examples_tests
karimsayedre Mar 17, 2026
195330f
Enable Wave pragma once support
AnastaZIuk Mar 17, 2026
011e7f0
I forgot that for blends all layers need to be blended!
devshgraphicsprogramming Mar 17, 2026
0e3b68f
Merge pull request #1018 from Devsh-Graphics-Programming/nscFixes
AnastaZIuk Mar 17, 2026
16bfd50
Package NSC debug symbols and source
AnastaZIuk Mar 17, 2026
fd95c50
Speed up source artifact packaging
AnastaZIuk Mar 17, 2026
509f60c
Use rg for source artifact manifest
AnastaZIuk Mar 17, 2026
f18abd7
Promote NSC channel 0e3b68f1839d4d73aee96898f5e5a5361c52aef8
github-actions[bot] Mar 17, 2026
8242271
Merge pull request #1020 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 17, 2026
2fa32a7
Merge branch 'master' into sampler-concepts
karimsayedre Mar 17, 2026
c61a63c
Merge branch 'master' into sampler-concepts
karimsayedre Mar 17, 2026
323d42f
Harden CI artifact packaging and Docker wait
AnastaZIuk Mar 17, 2026
f1dde84
Prepare host ripgrep for CI packaging
AnastaZIuk Mar 17, 2026
d596885
Package source artifacts with .NET tar writer
AnastaZIuk Mar 17, 2026
2b34047
I don't want to admit how long it took me to debug this one
devshgraphicsprogramming Mar 17, 2026
2d3719f
fix the last thing in the material frontend
devshgraphicsprogramming Mar 18, 2026
38e7b5b
Merge pull request #1019 from Devsh-Graphics-Programming/nscFixes
AnastaZIuk Mar 18, 2026
ac822ad
Preserve binary literals in Wave output
AnastaZIuk Mar 18, 2026
b2f5467
Clean up Wave preprocessor handling
AnastaZIuk Mar 18, 2026
f727158
Skip manual check-runs on fork PRs
AnastaZIuk Mar 18, 2026
6a60070
Normalize Wave EOF handling
AnastaZIuk Mar 18, 2026
fa3afc1
Report Examples as job checks
AnastaZIuk Mar 18, 2026
a091ca9
Replay Examples logs in reporter
AnastaZIuk Mar 18, 2026
ad0cf8d
fix TLAS export when Polygon Geometry can't be made into a BLAS
devshgraphicsprogramming Mar 18, 2026
5d2568b
merge master
devshgraphicsprogramming Mar 18, 2026
3650da9
Merge pull request #1022 from AnastaZIuk/nscFixes
AnastaZIuk Mar 18, 2026
294d22b
Always show Examples reporter logs
AnastaZIuk Mar 18, 2026
1d8381c
Promote NSC channel a091ca9ba0e04a7141fb8c107186ba8c478caa5a
github-actions[bot] Mar 18, 2026
2397ceb
Merge pull request #1023 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 18, 2026
f28c692
Refresh CI action runtimes
AnastaZIuk Mar 18, 2026
6518c68
Use org action forks
AnastaZIuk Mar 18, 2026
c6e5d16
Merge pull request #1024 from Devsh-Graphics-Programming/ci-actions-w…
AnastaZIuk Mar 18, 2026
b720bc0
Merge branch 'master' into sampler-concepts
karimsayedre Mar 18, 2026
1fb987a
addressing comments in concepts.hlsl
karimsayedre Mar 18, 2026
546ed90
Merge branch 'master' into rt_pipeline_debug_render_fixes
keptsecret Mar 19, 2026
c86f8e1
Fix Wave include paths and failure dumps
AnastaZIuk Mar 19, 2026
4871e24
Clean up preprocess failure plumbing
AnastaZIuk Mar 19, 2026
fc7e174
address comments in concepts.hlsl
karimsayedre Mar 19, 2026
1f73d6a
Backport Wave pragma fix and remove workaround
AnastaZIuk Mar 19, 2026
e4df2b2
Merge pull request #1025 from Devsh-Graphics-Programming/preprocessUp…
AnastaZIuk Mar 19, 2026
66da590
Use upstream gh-pages action for badges
AnastaZIuk Mar 19, 2026
f830a47
Promote NSC channel 66da590b3f06b586f69bdb522bad2f2eebf11b6f
github-actions[bot] Mar 19, 2026
00017ad
Merge pull request #1026 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 19, 2026
38f73af
Merge branch 'master' into sampler-concepts
devshgraphicsprogramming Mar 20, 2026
c292f41
Merge remote-tracking branch 'remotes/origin/master' into mitsuba_xml…
devshgraphicsprogramming Mar 21, 2026
1a3d26a
Merge pull request #1021 from Devsh-Graphics-Programming/mitsuba_xml_…
devshgraphicsprogramming Mar 21, 2026
0afd2fa
fix MIS in the path tracer, dont make every ray that didn't miss go i…
devshgraphicsprogramming Mar 21, 2026
624184f
Reduce Wave preprocess overhead and update DXC pointer
AnastaZIuk Mar 22, 2026
555684d
Advance DXC to latest unroll-devshFixes
AnastaZIuk Mar 22, 2026
03ad12b
Restore default include search path for builtin HLSL
AnastaZIuk Mar 23, 2026
b609179
znowu w zyciu mi nie wyszlo
devshgraphicsprogramming Mar 23, 2026
59e090e
record my discoveries
devshgraphicsprogramming Mar 23, 2026
ac0289d
Advance DXC to latest unroll-devshFixes
AnastaZIuk Mar 23, 2026
2539522
Merge remote-tracking branch 'remotes/origin/master' into mitsuba_xml…
devshgraphicsprogramming Mar 23, 2026
8e3c301
Promote NSC channel ac0289dda98b1046000873b0b3ffedb06356be53 (#1028)
github-actions[bot] Mar 23, 2026
fe4a528
Update examples_tests to local unroll
AnastaZIuk Mar 23, 2026
441dcb2
Merge remote-tracking branch 'origin/master' into unroll-local-sync
AnastaZIuk Mar 23, 2026
04d5a30
Merge branch 'master' into sampler-concepts
karimsayedre Mar 23, 2026
f195565
Update EX31 examples pointer
AnastaZIuk Mar 23, 2026
697cfcf
Wire path tracer pipeline cache
AnastaZIuk Mar 23, 2026
fad9d56
Update path tracer examples pointer
AnastaZIuk Mar 23, 2026
a0b65da
Add SPIR-V trimmer fast path
AnastaZIuk Mar 23, 2026
9515bdd
Update path tracer examples pointer
AnastaZIuk Mar 23, 2026
edc3c3e
addressed more comments
karimsayedre Mar 23, 2026
939de4f
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
dd5180b
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
8d3e66d
Trim manifest whitespace and update examples pointer
AnastaZIuk Mar 24, 2026
cba6113
Clean up shader review leftovers
AnastaZIuk Mar 24, 2026
476a5bf
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
d986945
Cache validated SPIR-V hashes
AnastaZIuk Mar 24, 2026
5ecde9a
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
1ede3de
Tighten final shader cleanup
AnastaZIuk Mar 24, 2026
758f7c8
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
8745660
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
94a501f
Mark generated NSC headers correctly
AnastaZIuk Mar 24, 2026
b1f28c0
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
4b444b6
Revert "Mark generated NSC headers correctly"
AnastaZIuk Mar 24, 2026
f4b0aed
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
01794c5
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
4a0c2e2
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
02f04db
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
3ae2b26
Update path tracer examples pointer
AnastaZIuk Mar 24, 2026
fcae991
Update path tracer examples pointer
AnastaZIuk Mar 25, 2026
c8af81b
Update path tracer examples pointer
AnastaZIuk Mar 25, 2026
3541a9d
Update path tracer examples pointer
AnastaZIuk Mar 25, 2026
8723771
Validate SPIR-V once per blob
AnastaZIuk Mar 25, 2026
52ae40b
Update EX31 examples pointer
AnastaZIuk Mar 25, 2026
6476500
Update EX31 examples pointer
AnastaZIuk Mar 25, 2026
f5f036e
Update EX31 examples pointer
AnastaZIuk Mar 25, 2026
e545d37
Update EX31 examples pointer
AnastaZIuk Mar 25, 2026
5aa95f1
Address shader compiler review feedback locally
AnastaZIuk Mar 26, 2026
40e1e1e
Checkpoint local EX31 review state
AnastaZIuk Mar 26, 2026
daf1fe3
Add include session cache plumbing
AnastaZIuk Mar 26, 2026
9912390
Update EX31 examples pointer locally
AnastaZIuk Mar 26, 2026
a75f581
Update EX31 examples pointer locally
AnastaZIuk Mar 26, 2026
258836a
latest example
keptsecret Mar 26, 2026
4aa78fd
Classify toolchain include roots
AnastaZIuk Mar 26, 2026
01ee867
fixes in HLSL, SPIR-V intrinsics and Mitsuba parsing merged
devshgraphicsprogramming Mar 26, 2026
15b80eb
Split include session cache reads and writes
AnastaZIuk Mar 26, 2026
cfaac9c
Stop exporting generated keys header as source
AnastaZIuk Mar 26, 2026
3cf364b
Promote NSC channel cfaac9c36e0d169e44dc75d4a774703b3c94782d
github-actions[bot] Mar 26, 2026
8b1f77d
Merge pull request #1030 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 26, 2026
54153e6
Merge remote-tracking branch 'origin/master' into unroll-local-sync
AnastaZIuk Mar 26, 2026
e11b118
update submodule pointer after merge
devshgraphicsprogramming Mar 26, 2026
6dc6485
Update examples_tests after master merge
AnastaZIuk Mar 26, 2026
262a8b7
Merge remote-tracking branch 'origin/master' into unroll-local-sync
AnastaZIuk Mar 26, 2026
b52f3c4
addressed more comments
karimsayedre Mar 26, 2026
9b4ee22
update examples_tests
karimsayedre Mar 26, 2026
27a4d6f
Roll DXC to devshFixes
AnastaZIuk Mar 27, 2026
77ad5e0
Promote NSC channel 27a4d6f68b9e1757fbeb86181d179c27251f81c9
github-actions[bot] Mar 27, 2026
6ee8dbc
Merge pull request #1031 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 27, 2026
3b7b596
Merge branch 'master' into sampler-concepts
karimsayedre Mar 28, 2026
a07e433
changed forwardPdf/Weight signature to take L, better core::to_string…
karimsayedre Mar 28, 2026
1b46ed9
update examples_tests
karimsayedre Mar 28, 2026
77a6801
Update DXC pointer to unroll-devshFixes
AnastaZIuk Mar 28, 2026
589ca09
Update DXC pointer to unroll-devshFixes
AnastaZIuk Mar 28, 2026
125efc4
Promote NSC channel 589ca093e67eaf79cdfe090b8cb5068a96e20d2c
github-actions[bot] Mar 29, 2026
c1e50ce
Merge pull request #1032 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 29, 2026
08e87a0
Use O1experimental in debug and rwdi
AnastaZIuk Mar 29, 2026
6683a20
Scope O1experimental to EX31
AnastaZIuk Mar 29, 2026
0e04e4f
Promote NSC channel 6683a20d668f1207e822c2efedba901e4ae11028
github-actions[bot] Mar 29, 2026
da0cf1b
Merge pull request #1033 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 29, 2026
2617eb2
Update DXC unroll-devshFixes pointer
AnastaZIuk Mar 29, 2026
4b76234
Refresh DXC unroll-devshFixes pointer
AnastaZIuk Mar 29, 2026
0d19dfa
Refresh DXC unroll-devshFixes pointer
AnastaZIuk Mar 29, 2026
29bda52
Enable O1experimental by default for NSC rules
AnastaZIuk Mar 29, 2026
d39ba00
Promote NSC channel 29bda527be490f8214e937ae33bbffd438cce6e6
github-actions[bot] Mar 29, 2026
9164943
Merge pull request #1034 from Devsh-Graphics-Programming/ci/nsc-promo…
AnastaZIuk Mar 29, 2026
5526801
Merge pull request #1029 from Devsh-Graphics-Programming/unroll
AnastaZIuk Mar 29, 2026
6a5469c
Post merge examples_tests submodule update
AnastaZIuk Mar 29, 2026
d7ad2ce
Merge branch 'master' into sampler-concepts
karimsayedre Mar 30, 2026
05bbf01
forwardPdf should take domain, not codomain
karimsayedre Mar 30, 2026
c31617f
there was a bug in `decode_before_scramble_helper`
devshgraphicsprogramming Mar 30, 2026
c80e478
update submodule pointer
devshgraphicsprogramming Mar 31, 2026
008e95d
Merge remote-tracking branch 'remotes/origin/master' into path_tracer…
devshgraphicsprogramming Mar 31, 2026
326a195
unfortunately as Karim found, Arek's optimizations probably generate …
devshgraphicsprogramming Mar 31, 2026
4a1422f
Bugs to fix:
devshgraphicsprogramming Mar 31, 2026
12f7bc3
Advance DXC pointer for sampler branch
AnastaZIuk Mar 31, 2026
b1633b1
Make gauss and box-mueller not mix precision with `float16_t`
devshgraphicsprogramming Mar 31, 2026
ea88203
Update examples_tests for EX31 fixes
AnastaZIuk Mar 31, 2026
3974d53
Add missing polar mapping builtin
AnastaZIuk Mar 31, 2026
c3a443a
Promote NSC channel 3974d536dea859059096bc266ce58b8104e8a097
github-actions[bot] Mar 31, 2026
e9af71f
Fix ImGui shutdown and update EX31 RWMC path
AnastaZIuk Mar 31, 2026
be8b0cd
Update examples_tests for EX31 RWMC defaults
AnastaZIuk Mar 31, 2026
f05e193
Advance DXC pointer for sampler branch
AnastaZIuk Apr 1, 2026
4ccb763
Promote NSC channel f05e1937e8c41d6c15d5bc8c570c2e8edc8d7a96
github-actions[bot] Apr 1, 2026
f96d020
Clamp spherical triangle BC interpolation
AnastaZIuk Apr 1, 2026
eb1bc72
Update DXC for lexed inline method assert fix
AnastaZIuk Apr 1, 2026
f16e497
Promote NSC channel eb1bc723b1159029c572f5bf539dafeea03bbbcc
github-actions[bot] Apr 1, 2026
9e7e72d
Merge pull request #1039 from Devsh-Graphics-Programming/fix_ex40_dxc…
AnastaZIuk Apr 1, 2026
292d751
Merge master into unroll-path_tracer_beauty
AnastaZIuk Apr 1, 2026
11d8c1a
minor cleanups
devshgraphicsprogramming Apr 8, 2026
4bc53ca
addressed the rest of the comments
karimsayedre Apr 9, 2026
6e32a90
Merge branch 'sampler-concepts' of github.com:Devsh-Graphics-Programm…
karimsayedre Apr 9, 2026
4b2e1eb
Merge branch 'master' into sampler-concepts
karimsayedre Apr 9, 2026
77f1565
remove polar_mapping.hlsl resource duplicate
karimsayedre Apr 9, 2026
93ad437
slight refactor of cascade code
devshgraphicsprogramming Apr 9, 2026
0b6f269
fix all DXC warnings and refactor the CascadeAccumulator (ex 31 needs…
devshgraphicsprogramming Apr 9, 2026
619315e
fix syncval issues with out swapchain wrapper https://github.com/Khro…
devshgraphicsprogramming Apr 10, 2026
9538897
Merge remote-tracking branch 'remotes/origin/unroll-path_tracer_beaut…
devshgraphicsprogramming Apr 10, 2026
d654434
update example 31
devshgraphicsprogramming Apr 10, 2026
010e246
Fix some BLAS getting skipped when filling instance for TLAS
kevyuu Apr 10, 2026
a219860
Move the increment to improve clarity
kevyuu Apr 10, 2026
ab06386
Merge pull request #1043 from Devsh-Graphics-Programming/hotfix_tlas_…
devshgraphicsprogramming Apr 10, 2026
551c8b8
projected spherical rectangle, reverted projectedSolidAngle sign changes
karimsayedre Apr 10, 2026
4fef4b0
Merge branch 'sampler-concepts' into solid-angle-vis
karimsayedre Apr 11, 2026
4660307
Fix Wave line drift
AnastaZIuk Apr 11, 2026
fd21137
Update examples for EX31 CI fix
AnastaZIuk Apr 11, 2026
d14ae6c
Update examples_tests for EX31 fix
AnastaZIuk Apr 11, 2026
f33f511
Merge master into waveFixes
AnastaZIuk Apr 11, 2026
162b3dd
Merge pull request #1045 from Devsh-Graphics-Programming/waveFixes
AnastaZIuk Apr 11, 2026
ea6a2c8
Merge branch 'master' into sampler-concepts
karimsayedre Apr 12, 2026
af31b2b
Merge branch 'sampler-concepts' into solid-angle-vis
karimsayedre Apr 12, 2026
6ee9227
SphericalRectangle: generate() returns 3D direction, reduce register …
karimsayedre Apr 13, 2026
df64065
Merge branch 'sampler-concepts' into solid-angle-vis
karimsayedre Apr 13, 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
  •  
  •  
  •  
420 changes: 342 additions & 78 deletions .github/workflows/build-nabla.yml

Large diffs are not rendered by default.

390 changes: 390 additions & 0 deletions .github/workflows/promote-nsc-channel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,390 @@
name: Promote NSC Channel

on:
workflow_dispatch:
inputs:
run_id:
description: "Workflow run id that produced the NSC payload and manifests artifacts"
required: true
source_repo:
description: "Repository that owns the source workflow run"
required: true
default: "Devsh-Graphics-Programming/Nabla"
source_branch:
description: "Expected source branch for the workflow run"
required: true
default: "master"
target_repo:
description: "Repository that should receive the manifest update PR"
required: true
default: "Devsh-Graphics-Programming/Nabla"
target_branch:
description: "Nabla branch that should receive the manifest update PR"
required: true
default: "master"
asset_repo:
description: "Repository that stores the promoted NSC channel releases"
required: true
default: "Devsh-Graphics-Programming/Nabla-Asset-Manifests"
channel:
description: "NSC manifest channel to promote"
required: true
default: "nsc-windows-x64-release"

permissions:
contents: write
pull-requests: write

jobs:
promote:
runs-on: ubuntu-latest
env:
SOURCE_REPO: ${{ inputs.source_repo }}
SOURCE_BRANCH: ${{ inputs.source_branch }}
TARGET_REPO: ${{ inputs.target_repo }}
ASSET_REPO: ${{ inputs.asset_repo }}
HEAD_REPO: ${{ github.repository }}
HEAD_OWNER: ${{ github.repository_owner }}
CHANNEL: ${{ inputs.channel }}
TARGET_BRANCH: ${{ inputs.target_branch }}
RUN_ID: ${{ inputs.run_id }}

steps:
- name: Checkout target branch
uses: actions/checkout@v6
with:
repository: ${{ inputs.target_repo }}
ref: ${{ inputs.target_branch }}
fetch-depth: 1
fetch-tags: false
persist-credentials: false
sparse-checkout: |
tools/nsc/manifests
sparse-checkout-cone-mode: false

- name: Resolve source run metadata
id: source-run
env:
GH_TOKEN: ${{ secrets.READ_PAT }}
run: |
set -euo pipefail

run_json="$(gh api "repos/${SOURCE_REPO}/actions/runs/${RUN_ID}")"
status="$(jq -r '.status' <<<"${run_json}")"
conclusion="$(jq -r '.conclusion' <<<"${run_json}")"
event="$(jq -r '.event' <<<"${run_json}")"
head_sha="$(jq -r '.head_sha' <<<"${run_json}")"
head_branch="$(jq -r '.head_branch' <<<"${run_json}")"
html_url="$(jq -r '.html_url' <<<"${run_json}")"

if [[ "${status}" != "completed" || "${conclusion}" != "success" ]]; then
echo "Run ${RUN_ID} is not promotable: status=${status} conclusion=${conclusion}" >&2
exit 1
fi
if [[ "${head_branch}" != "${SOURCE_BRANCH}" ]]; then
echo "Run ${RUN_ID} head branch ${head_branch} does not match expected ${SOURCE_BRANCH}" >&2
exit 1
fi

release_tag="${CHANNEL}-${head_sha}"
target_branch_slug="$(printf '%s' "${TARGET_BRANCH}" | tr '/._' '-' | tr -cd '[:alnum:]-')"
pr_branch="ci/nsc-promote-${CHANNEL}-${target_branch_slug}"

{
echo "source_sha=${head_sha}"
echo "source_branch=${head_branch}"
echo "source_event=${event}"
echo "run_url=${html_url}"
echo "release_tag=${release_tag}"
echo "pr_branch=${pr_branch}"
} >> "${GITHUB_OUTPUT}"

- name: Download NSC payload artifact
uses: actions/download-artifact@v8
with:
run-id: ${{ inputs.run_id }}
name: ${{ inputs.channel }}-payload
path: ${{ runner.temp }}/nsc-payload
github-token: ${{ secrets.READ_PAT }}
repository: ${{ inputs.source_repo }}

- name: Download NSC manifests artifact
uses: actions/download-artifact@v8
with:
run-id: ${{ inputs.run_id }}
name: ${{ inputs.channel }}-manifests
path: ${{ runner.temp }}/nsc-manifests
github-token: ${{ secrets.READ_PAT }}
repository: ${{ inputs.source_repo }}

- name: Publish release to manifest backend
env:
CR_PAT: ${{ secrets.CR_PAT }}
READ_PAT: ${{ secrets.READ_PAT }}
RELEASE_TAG: ${{ steps.source-run.outputs.release_tag }}
SOURCE_SHA: ${{ steps.source-run.outputs.source_sha }}
SOURCE_BRANCH: ${{ steps.source-run.outputs.source_branch }}
SOURCE_EVENT: ${{ steps.source-run.outputs.source_event }}
RUN_URL: ${{ steps.source-run.outputs.run_url }}
run: |
set -euo pipefail

manifests_zip="$(find "${RUNNER_TEMP}/nsc-manifests" -maxdepth 1 -type f -name '*-manifests.zip' | head -n 1)"
if [[ -z "${manifests_zip}" ]]; then
echo "Failed to locate manifests zip in ${RUNNER_TEMP}/nsc-manifests" >&2
exit 1
fi

source_repo_url="https://github.com/${SOURCE_REPO}"
source_commit_url="${source_repo_url}/commit/${SOURCE_SHA}"
updated_at="$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
release_token_candidates=()
if [[ -n "${CR_PAT}" ]]; then
release_token_candidates+=("${CR_PAT}")
fi
if [[ -n "${READ_PAT}" && "${READ_PAT}" != "${CR_PAT}" ]]; then
release_token_candidates+=("${READ_PAT}")
fi
if [[ "${#release_token_candidates[@]}" -eq 0 ]]; then
echo "No token is available for manifest backend release operations." >&2
exit 1
fi

notes_file="${RUNNER_TEMP}/nsc-release-notes.md"
cat > "${notes_file}" <<EOF
Promoted NSC payload from [\`${SOURCE_REPO}\`](${source_repo_url}).

- source commit: [\`${SOURCE_SHA}\`](${source_commit_url})
- source branch: \`${SOURCE_BRANCH}\`
- source event: \`${SOURCE_EVENT}\`
- source run: [\`${RUN_ID}\`](${RUN_URL})

Updated at \`${updated_at}\`.
EOF

release_exists=false
release_id=""
release_token="${release_token_candidates[0]}"
for candidate in "${release_token_candidates[@]}"; do
if release_json="$(GH_TOKEN="${candidate}" gh api "repos/${ASSET_REPO}/releases/tags/${RELEASE_TAG}" 2>/dev/null)"; then
release_exists=true
release_id="$(jq -r '.id' <<<"${release_json}")"
release_token="${candidate}"
break
fi
done
export GH_TOKEN="${release_token}"

if [[ "${release_exists}" == "false" ]]; then
release_created=false
for candidate in "${release_token_candidates[@]}"; do
if GH_TOKEN="${candidate}" gh release create "${RELEASE_TAG}" \
--repo "${ASSET_REPO}" \
--title "${RELEASE_TAG}" \
--notes-file "${notes_file}"; then
release_token="${candidate}"
export GH_TOKEN="${release_token}"
release_created=true
break
fi
done
if [[ "${release_created}" != "true" ]]; then
echo "Failed to create release ${RELEASE_TAG} in ${ASSET_REPO}." >&2
exit 1
fi

mapfile -d '' payload_assets < <(find "${RUNNER_TEMP}/nsc-payload" -maxdepth 1 -type f -print0)
if [[ "${#payload_assets[@]}" -eq 0 ]]; then
echo "No payload assets found in ${RUNNER_TEMP}/nsc-payload" >&2
exit 1
fi

payload_assets+=("${manifests_zip}")
gh release upload "${RELEASE_TAG}" "${payload_assets[@]}" --repo "${ASSET_REPO}"
else
echo "Release ${RELEASE_TAG} already exists in ${ASSET_REPO}. Reusing immutable release."
patch_file="${RUNNER_TEMP}/nsc-release-patch.json"
jq -n \
--arg name "${RELEASE_TAG}" \
--rawfile body "${notes_file}" \
'{name:$name, body:$body}' > "${patch_file}"
release_refreshed=false
for candidate in "${release_token_candidates[@]}"; do
if GH_TOKEN="${candidate}" gh api \
--method PATCH \
"repos/${ASSET_REPO}/releases/${release_id}" \
--input "${patch_file}" >/dev/null 2>&1; then
release_token="${candidate}"
export GH_TOKEN="${release_token}"
release_refreshed=true
break
fi
done
if [[ "${release_refreshed}" != "true" ]]; then
echo "Failed to refresh notes for existing ${RELEASE_TAG}. Provide a token with release edit permissions." >&2
exit 1
fi
fi

- name: Update manifests and tag pin
id: manifest-diff
env:
RELEASE_TAG: ${{ steps.source-run.outputs.release_tag }}
run: |
set -euo pipefail

manifests_zip="$(find "${RUNNER_TEMP}/nsc-manifests" -maxdepth 1 -type f -name '*-manifests.zip' | head -n 1)"
if [[ -z "${manifests_zip}" ]]; then
echo "Failed to locate manifests zip in ${RUNNER_TEMP}/nsc-manifests" >&2
exit 1
fi

extract_root="${RUNNER_TEMP}/nsc-manifests-extracted"
rm -rf "${extract_root}"
mkdir -p "${extract_root}"
unzip -q "${manifests_zip}" -d "${extract_root}"

channel_root="${extract_root}/${CHANNEL}"
if [[ ! -d "${channel_root}" ]]; then
echo "Expected extracted channel root ${channel_root} does not exist" >&2
exit 1
fi

repo_manifest_root="tools/nsc/manifests"
rm -rf "${repo_manifest_root:?}/${CHANNEL}"
mkdir -p "${repo_manifest_root}"
cp -R "${channel_root}" "${repo_manifest_root}/"
printf '%s\n' "${RELEASE_TAG}" > "${repo_manifest_root}/${CHANNEL}.tag"

if git diff --quiet -- "${repo_manifest_root}"; then
echo "has_changes=false" >> "${GITHUB_OUTPUT}"
else
echo "has_changes=true" >> "${GITHUB_OUTPUT}"
fi

- name: Commit and push promotion branch
if: steps.manifest-diff.outputs.has_changes == 'true'
env:
PUSH_BUILTIN_TOKEN: ${{ github.token }}
PR_PAT: ${{ secrets.PR_PAT }}
READ_PAT: ${{ secrets.READ_PAT }}
CR_PAT: ${{ secrets.CR_PAT }}
PR_BRANCH: ${{ steps.source-run.outputs.pr_branch }}
SOURCE_SHA: ${{ steps.source-run.outputs.source_sha }}
run: |
set -euo pipefail

push_token="${PUSH_BUILTIN_TOKEN}"
if [[ "${TARGET_REPO}" != "${HEAD_REPO}" ]]; then
push_token="${PR_PAT}"
if [[ -z "${push_token}" ]]; then
push_token="${READ_PAT}"
fi
if [[ -z "${push_token}" ]]; then
push_token="${CR_PAT}"
fi
if [[ -z "${push_token}" ]]; then
echo "A token with contents and workflows write access is required when pushing a cross-repo promotion branch to ${HEAD_REPO}" >&2
exit 1
fi
fi

git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git remote rename origin upstream
git remote add origin "https://x-access-token:${push_token}@github.com/${HEAD_REPO}.git"
git checkout -B "${PR_BRANCH}"
git add tools/nsc/manifests
git commit -m "Promote NSC channel ${SOURCE_SHA}"
git push --force origin "${PR_BRANCH}"

- name: Create or update promotion PR
if: steps.manifest-diff.outputs.has_changes == 'true'
id: pr
env:
GH_BUILTIN_TOKEN: ${{ github.token }}
PR_PAT: ${{ secrets.PR_PAT }}
READ_PAT: ${{ secrets.READ_PAT }}
CR_PAT: ${{ secrets.CR_PAT }}
PR_BRANCH: ${{ steps.source-run.outputs.pr_branch }}
RELEASE_TAG: ${{ steps.source-run.outputs.release_tag }}
SOURCE_SHA: ${{ steps.source-run.outputs.source_sha }}
RUN_URL: ${{ steps.source-run.outputs.run_url }}
run: |
set -euo pipefail

if [[ "${TARGET_REPO}" == "${HEAD_REPO}" ]]; then
export GH_TOKEN="${GH_BUILTIN_TOKEN}"
pr_head="${PR_BRANCH}"
else
pr_token="${PR_PAT}"
if [[ -z "${pr_token}" ]]; then
pr_token="${READ_PAT}"
fi
if [[ -z "${pr_token}" ]]; then
pr_token="${CR_PAT}"
fi
if [[ -z "${pr_token}" ]]; then
echo "A token with pull request write access is required when opening a PR from ${HEAD_REPO} to ${TARGET_REPO}" >&2
exit 1
fi
export GH_TOKEN="${pr_token}"
pr_head="${HEAD_OWNER}:${PR_BRANCH}"
fi

pr_title="CI: Promote NSC channel to ${SOURCE_SHA}"
release_url="https://github.com/${ASSET_REPO}/releases/tag/${RELEASE_TAG}"
commit_url="https://github.com/${SOURCE_REPO}/commit/${SOURCE_SHA}"
body_file="${RUNNER_TEMP}/nsc-promote-pr.md"
cat > "${body_file}" <<EOF
Promote \`${CHANNEL}\`.

- source commit: [\`${SOURCE_SHA}\`](${commit_url})
- source run: [\`${RUN_ID}\`](${RUN_URL})
- manifest repo release: [\`${RELEASE_TAG}\`](${release_url})
EOF

existing_pr_number="$(gh pr list \
--repo "${TARGET_REPO}" \
--base "${TARGET_BRANCH}" \
--head "${pr_head}" \
--json number \
--jq '.[0].number')"

if [[ -n "${existing_pr_number}" && "${existing_pr_number}" != "null" ]]; then
gh pr edit "${existing_pr_number}" \
--repo "${TARGET_REPO}" \
--title "${pr_title}" \
--body-file "${body_file}"
existing_pr_url="$(gh pr view "${existing_pr_number}" --repo "${TARGET_REPO}" --json url --jq '.url')"
echo "url=${existing_pr_url}" >> "${GITHUB_OUTPUT}"
exit 0
fi

pr_url="$(gh pr create \
--repo "${TARGET_REPO}" \
--base "${TARGET_BRANCH}" \
--head "${pr_head}" \
--title "${pr_title}" \
--body-file "${body_file}")"

echo "url=${pr_url}" >> "${GITHUB_OUTPUT}"

- name: Promotion summary
run: |
{
echo "## NSC promotion summary"
echo
echo "- channel: \`${CHANNEL}\`"
echo "- source repo: \`${SOURCE_REPO}\`"
echo "- source run: \`${RUN_ID}\`"
echo "- source commit: \`${{ steps.source-run.outputs.source_sha }}\`"
echo "- release tag: \`${{ steps.source-run.outputs.release_tag }}\`"
echo "- target repo: \`${TARGET_REPO}\`"
echo "- target branch: \`${TARGET_BRANCH}\`"
if [[ "${{ steps.manifest-diff.outputs.has_changes }}" == "true" ]]; then
echo "- PR: ${{ steps.pr.outputs.url }}"
else
echo "- PR: no manifest changes"
fi
} >> "${GITHUB_STEP_SUMMARY}"
Loading
Loading