Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
efdb03d
WIP snapshot: rendering roadmap before PR integration
proggeramlug Jul 27, 2026
4dc3818
Merge remote-tracking branch 'origin/fix/audit-followups-ci-rt-safety…
proggeramlug Jul 27, 2026
c5b106a
Merge remote-tracking branch 'origin/feat/apple-gamepad-lifecycle-aud…
proggeramlug Jul 27, 2026
001be00
Merge remote-tracking branch 'origin/codex/linux-worker' into codex/p…
proggeramlug Jul 27, 2026
90d4923
Merge rendering WIP with PRs #124, #125, and #146
proggeramlug Jul 27, 2026
a650a80
Merge remote-tracking branch 'origin/main' into codex/pr-integration-…
proggeramlug Jul 27, 2026
570b811
Improve HDR specular prefilter stability
proggeramlug Jul 27, 2026
80a7e9f
Expose layered PBR material descriptor
proggeramlug Jul 27, 2026
337a9b2
Align path tracing with layered PBR base contract
proggeramlug Jul 27, 2026
37a596c
Keep path tracer shader under line limit
proggeramlug Jul 27, 2026
0e8ef78
Fix web build and integrated file-line gate
proggeramlug Jul 27, 2026
a550c0a
Add lazy layered path tracing sidecar
proggeramlug Jul 27, 2026
a035ba4
Add scalar clearcoat path transport
proggeramlug Jul 27, 2026
e39deee
Add scalar specular IOR path transport
proggeramlug Jul 27, 2026
832f20d
Add scalar sheen path transport
proggeramlug Jul 27, 2026
3e218cc
Add scalar anisotropic GGX path transport
proggeramlug Jul 27, 2026
45719bf
Add scalar iridescent path transport
proggeramlug Jul 27, 2026
4f6df63
Add textured specular path transport
proggeramlug Jul 27, 2026
008d598
Add UV1 specular path transport
proggeramlug Jul 27, 2026
34f4554
Add textured clearcoat path transport
proggeramlug Jul 27, 2026
5014499
Add textured sheen path transport
proggeramlug Jul 27, 2026
aedf05c
Add textured iridescence path transport
proggeramlug Jul 27, 2026
ef11c9e
Add textured anisotropy path transport
proggeramlug Jul 27, 2026
cf5254c
Fix SSR temporal history lifetime
proggeramlug Jul 27, 2026
2e67803
Fix SSGI temporal history lifetime
proggeramlug Jul 27, 2026
4be5888
Fix TAA temporal history ownership
proggeramlug Jul 27, 2026
06eb43d
Fix auto-exposure history lifetime
proggeramlug Jul 27, 2026
4bad0c4
Fix path-tracing history resets
proggeramlug Jul 27, 2026
51bf151
Add unified temporal camera-cut reset
proggeramlug Jul 27, 2026
08b5f41
Add capture-only temporal diagnostics
proggeramlug Jul 27, 2026
697bf68
Add temporal camera motion sequence gate
proggeramlug Jul 27, 2026
45e72f7
Expand temporal motion regression corpus
proggeramlug Jul 27, 2026
b065211
Fix cached model temporal motion
proggeramlug Jul 27, 2026
d3365df
Gate emissive temporal convergence
proggeramlug Jul 27, 2026
79ea278
Bound and diagnose SSR fireflies
proggeramlug Jul 27, 2026
b252637
Gate refractive temporal motion
proggeramlug Jul 27, 2026
810bc94
Add capture-only SSR temporal diagnostics
proggeramlug Jul 27, 2026
ad8e7c4
Fix and diagnose SSGI temporal history
proggeramlug Jul 28, 2026
1041a06
Add capture-only PT temporal diagnostics
proggeramlug Jul 28, 2026
751be72
Decouple path tracing preparation from SSGI
proggeramlug Jul 28, 2026
a57ab32
Gate realtime path tracing rigid motion
proggeramlug Jul 28, 2026
136096f
Gate realtime path tracing lighting changes
proggeramlug Jul 28, 2026
ff95b63
Gate realtime path tracing reset seeds
proggeramlug Jul 28, 2026
011f5c8
Require temporal quality evidence
proggeramlug Jul 28, 2026
7076bea
Restore Hi-Z SSGI indirect lighting
proggeramlug Jul 28, 2026
8533774
Fix WSRC octahedral corner wrapping
proggeramlug Jul 28, 2026
5c2497f
Unify local and PR quality lanes
proggeramlug Jul 28, 2026
7773f70
Qualify canonical examples and WebGPU startup
proggeramlug Jul 28, 2026
1db2512
Ignore Python tooling caches
proggeramlug Jul 28, 2026
aa9d6a0
Preserve CI failure evidence
proggeramlug Jul 28, 2026
59bdc4a
Pin releases to qualified tag commits
proggeramlug Jul 28, 2026
7407d7c
Stabilize Linux WebGPU browser smoke
proggeramlug Jul 28, 2026
5203a1c
Use Chromium's SwiftShader WebGPU test path
proggeramlug Jul 28, 2026
9b18355
Present Linux WebGPU smoke through Xvfb
proggeramlug Jul 28, 2026
a45d3e8
Qualify Linux-built WebGPU package on macOS
proggeramlug Jul 28, 2026
aa983c9
Define data-driven renderer capability tiers
proggeramlug Jul 28, 2026
21f73d8
Negotiate native renderer devices by capability
proggeramlug Jul 28, 2026
ddb3e6f
Use shared device negotiation on Windows
proggeramlug Jul 28, 2026
4ab5419
Use bounded renderer negotiation on Android
proggeramlug Jul 28, 2026
ed4757c
Use bounded renderer negotiation on iOS
proggeramlug Jul 28, 2026
8c17a76
Use bounded renderer negotiation on tvOS
proggeramlug Jul 28, 2026
7944b5a
Use bounded renderer negotiation on visionOS
proggeramlug Jul 28, 2026
491806c
Compile declared mobile targets in PR CI
proggeramlug Jul 28, 2026
f095507
Expose renderer capabilities to TypeScript
proggeramlug Jul 28, 2026
96cc9f2
Return status for unsupported renderer modes
proggeramlug Jul 28, 2026
7b07a39
Report renderer setting support across platforms
proggeramlug Jul 28, 2026
0bc6fab
Require capability snapshots in quality evidence
proggeramlug Jul 28, 2026
fc7521a
Coalesce steady-state lighting uploads
proggeramlug Jul 28, 2026
ca5151d
Measure steady-state bind group creation
proggeramlug Jul 28, 2026
068383c
Cache final composite bind groups
proggeramlug Jul 28, 2026
897e5b5
Cache scene compose bind groups
proggeramlug Jul 28, 2026
649bc5a
Cache SSR temporal bind groups
proggeramlug Jul 28, 2026
827af4f
Cache ordinary TAA bind groups
proggeramlug Jul 28, 2026
652ef22
Cache reactive TAA bind groups
proggeramlug Jul 28, 2026
8c111ab
Cache upscale bind group
proggeramlug Jul 28, 2026
2449e59
Cache optional postfx bind groups
proggeramlug Jul 28, 2026
5983186
Eliminate remaining postfx bind group churn
proggeramlug Jul 28, 2026
6874170
Measure steady-state graph resource creation
proggeramlug Jul 28, 2026
ae2e1c2
Track steady-state pipeline creation
proggeramlug Jul 28, 2026
9823788
Report uncapped headless qualification truthfully
proggeramlug Jul 28, 2026
396659c
Prove static renderer memory stability
proggeramlug Jul 28, 2026
0e3a4ff
Add controlled renderer performance qualification
proggeramlug Jul 28, 2026
10955b0
Label comparison engine revisions explicitly
proggeramlug Jul 28, 2026
42f7dea
Isolate renderer benchmark dependencies
proggeramlug Jul 28, 2026
93dfd94
Measure complete renderer submission frames
proggeramlug Jul 28, 2026
9d949ef
Document steady-state performance gains
proggeramlug Jul 28, 2026
cce6721
Attach capability snapshots to qualification results
proggeramlug Jul 28, 2026
5d5d9a1
Pin the shared temporal motion convention
proggeramlug Jul 28, 2026
80ce85c
Track immediate primitive motion history
proggeramlug Jul 28, 2026
8724f30
Add authored reactive coverage for particles
proggeramlug Jul 28, 2026
a0a1765
Record custom particle temporal evidence
proggeramlug Jul 28, 2026
6921e41
Keep reactive material detection web portable
proggeramlug Jul 28, 2026
38a4403
Restore legacy skinned motion vectors
proggeramlug Jul 28, 2026
7ec489d
Qualify remaining temporal motion producers
proggeramlug Jul 28, 2026
53ce363
Track unkeyed skin motion history
proggeramlug Jul 28, 2026
30a3493
Document remaining motion producer qualification
proggeramlug Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
self-hosted-runner:
labels:
- bloom-quality
- apple-m1-max
- nvidia-rtx4080

config-variables: null
18 changes: 18 additions & 0 deletions .github/actions/upload-ci-failure/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Upload Bloom CI failure evidence
description: Preserve lane summaries and renderer diagnostics from a failed job.
inputs:
name:
description: Unique artifact prefix for this job.
required: true
runs:
using: composite
steps:
- uses: actions/upload-artifact@v4
with:
name: ${{ inputs.name }}-${{ github.run_attempt }}
path: |
target/ci
native/shared/tests/golden/**/*.actual.png
tools/quality/out
if-no-files-found: warn
retention-days: 14
184 changes: 184 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: Renderer quality

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: "17 3 * * 1"
workflow_dispatch:
inputs:
suite:
description: Qualification suite
type: choice
options: [full, quick]
default: full
machine:
description: Hardware runner
type: choice
options: [all, apple-m1-max-metal, nvidia-rtx4080-vulkan]
default: all

concurrency:
group: renderer-quality-${{ github.ref }}
cancel-in-progress: false

env:
CARGO_TERM_COLOR: always
MACOSX_DEPLOYMENT_TARGET: "13.0"

jobs:
contract:
name: Quality contract
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- uses: dtolnay/rust-toolchain@stable

- name: quick / quality-contract
run: ./scripts/ci-check.sh --quick --component quality-contract

- name: Upload failure evidence
if: failure()
uses: ./.github/actions/upload-ci-failure
with:
name: quality-contract

metal:
name: Full quality — Apple M1 Max / Metal
if: >-
github.event_name == 'schedule' ||
(github.event_name == 'workflow_dispatch' &&
(inputs.machine == 'all' || inputs.machine == 'apple-m1-max-metal'))
runs-on: [self-hosted, bloom-quality, macos, apple-m1-max]
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: dtolnay/rust-toolchain@stable

- name: Runner preflight
run: |
python3 --version
cargo --version
command -v perry

- name: Compile every canonical TypeScript example
run: ./scripts/ci-check.sh --hardware --component example-compile

- name: Validate manifest, assets, and approved baselines
run: ./scripts/ci-check.sh --hardware --component quality-check

- name: Prove seeded regressions are detected
env:
BLOOM_QUALITY_FAULTS_OUT: tools/quality/out/ci-faults
BLOOM_QUALITY_TIMEOUT: "900"
run: ./scripts/ci-check.sh --hardware --component quality-faults

- name: Run selected high-end suite
if: always()
env:
BLOOM_QUALITY_SUITE: ${{ inputs.suite || 'full' }}
BLOOM_QUALITY_MACHINE_CLASS: apple-m1-max-metal
BLOOM_QUALITY_OUT: tools/quality/out/ci-metal
BLOOM_QUALITY_TIMEOUT: "1800"
run: ./scripts/ci-check.sh --hardware --component quality-run

- name: Hard-gate the constrained tier
if: always()
env:
BLOOM_QUALITY_SUITE: full
BLOOM_QUALITY_CASE: pbr-spheres-constrained
BLOOM_QUALITY_MACHINE_CLASS: apple-m1-metal-constrained
BLOOM_QUALITY_OUT: tools/quality/out/ci-metal-constrained
BLOOM_QUALITY_TIMEOUT: "1800"
run: ./scripts/ci-check.sh --hardware --component quality-run

- name: Publish compact job summary
if: always()
run: |
if [[ -f tools/quality/out/ci-metal/summary.md ]]; then
cat tools/quality/out/ci-metal/summary.md >> "$GITHUB_STEP_SUMMARY"
fi
if [[ -f tools/quality/out/ci-metal-constrained/summary.md ]]; then
cat tools/quality/out/ci-metal-constrained/summary.md >> "$GITHUB_STEP_SUMMARY"
fi

- name: Upload all success/failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: quality-apple-m1-max-metal-${{ github.run_attempt }}
path: |
target/ci/examples
tools/quality/out/ci-metal
tools/quality/out/ci-metal-constrained
tools/quality/out/ci-faults
if-no-files-found: warn
retention-days: 30

vulkan:
name: Full quality — RTX 4080 / Vulkan
if: >-
github.event_name == 'schedule' ||
(github.event_name == 'workflow_dispatch' &&
(inputs.machine == 'all' || inputs.machine == 'nvidia-rtx4080-vulkan'))
runs-on: [self-hosted, bloom-quality, linux, nvidia-rtx4080]
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: dtolnay/rust-toolchain@stable

- name: Runner preflight
run: |
python3 --version
cargo --version
command -v perry
nvidia-smi

- name: Validate manifest, assets, and approved baselines
run: ./scripts/ci-check.sh --hardware --component quality-check

- name: Prove seeded regressions are detected
env:
BLOOM_QUALITY_FAULTS_OUT: tools/quality/out/ci-faults
BLOOM_QUALITY_TIMEOUT: "900"
run: ./scripts/ci-check.sh --hardware --component quality-faults

- name: Run selected high-end suite
if: always()
env:
BLOOM_QUALITY_SUITE: ${{ inputs.suite || 'full' }}
BLOOM_QUALITY_MACHINE_CLASS: nvidia-rtx4080-vulkan
BLOOM_QUALITY_OUT: tools/quality/out/ci-vulkan
BLOOM_QUALITY_TIMEOUT: "1800"
run: ./scripts/ci-check.sh --hardware --component quality-run

- name: Publish compact job summary
if: always()
run: |
if [[ -f tools/quality/out/ci-vulkan/summary.md ]]; then
cat tools/quality/out/ci-vulkan/summary.md >> "$GITHUB_STEP_SUMMARY"
fi

- name: Upload all success/failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: quality-nvidia-rtx4080-vulkan-${{ github.run_attempt }}
path: |
tools/quality/out/ci-vulkan
tools/quality/out/ci-faults
if-no-files-found: warn
retention-days: 30
Loading
Loading