effectcraft/crates/gpu/src/shaders
Brandon Thomas 6eedf8e2c5 GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests
FreeBSD's CI VM (Mesa llvmpipe over GL) failed 22 effectcraft-gpu tests:

- Advanced 3D's camera-depth target was R32Float, which GLES can't render to without
  EXT_color_buffer_float: create_render_pipeline failed validation (release builds only log
  that and draw nothing). The target is now R32Uint holding the f32 bits (renderable on every
  backend, lossless), and GpuContext checks the adapter's format features (render attachment,
  blendable colour) and independent blending up front; when they're missing the render
  pipelines are never built and Advanced 3D renders on the CPU.
- Signed `%` in the shaders: naga emits GLSL `%`, undefined for negative operands, which broke
  the VR effects' horizontal wrap and Cell Pattern's tiling. A shared `imod` never takes `%` of
  a negative number.
- asin/acos: Mesa's are coarse approximations (~1e-4 rad), visible in every lens/sphere/cylinder
  mapping. `asin_p`/`acos_p` (Cephes' asinf polynomial) are f32-accurate on every backend.
- "Could not lock adapter context": the GL backend has one context lock per adapter with a
  timeout, so tests driving devices concurrently panic. Every gpu test helper that hands out a
  device holds one process-wide lock for the calling test; ui_web_job_gpu's two device tests
  share a lock too.
- On GL, up to 1 % of pixels may flip across a decision boundary (division through a
  reciprocal, unfused fma); the GPU-vs-CPU comparisons allow that there only.

Also adds the FreeBSD workflow (from the FreeBSD CI PR) so this branch is checked there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:08:21 -04:00
..
adv3d.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
advanced3d.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
classic3d.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
common.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
display.wgsl M12.2: gpu compositor and gpu effects 2026-10-02 10:59:08 -04:00
fx_color.wgsl M13.23: GPU colour management (LUTs, OCIO, Color Profile Converter, Lumetri LUT/look) 2026-10-03 17:43:24 -04:00
fx_depth.wgsl M13.23: GPU 3D Channel effects (aux channels as textures) 2026-10-03 17:33:41 -04:00
fx_distort.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_extra.wgsl M13.13: GPU Circle, Ellipse, Iris Wipe, Bevel Alpha, Bevel Edges, Gaussian Blur (Legacy) 2026-10-03 10:53:00 -04:00
fx_gen2.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_generate.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_key.wgsl M13.9: gpu Refine Soft / Hard Matte (single-frame refinement) 2026-10-03 08:41:11 -04:00
fx_light.wgsl M13.22: GPU CC light family (CC Light Rays, CC Light Burst 2.5, CC Light Sweep, CC Light Wipe) 2026-10-03 17:31:26 -04:00
fx_lut.wgsl M13.29: GPU effects part D (particles and remaining fallbacks) 2026-10-04 01:35:56 -04:00
fx_noise.wgsl M13.24: web app depth (WEB-1) — GPU effects in frame workers, OPFS disk cache, storage manager 2026-10-03 18:35:03 -04:00
fx_particles.wgsl M13.29: GPU effects part D (particles and remaining fallbacks) 2026-10-04 01:35:56 -04:00
fx_pixel2.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_sim.wgsl M13.23: GPU simulation render passes 2026-10-03 18:35:22 -04:00
fx_stylize.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_text.wgsl M13.22: GPU transitions and perspective (Block Dissolve, CC Glass/Grid/Image Wipe, CC Jaws, CC Line Sweep, CC Radial ScaleWipe, CC Scale Wipe, CC Twister, CC WarpoMatic, Radial Shadow, CC Bender, CC Blobbylize, CC Cylinder, CC Sphere, CC Spotlight, CC Environment, 3D Glasses) and text (Numbers, Timecode: CPU glyph coverage, GPU composite) 2026-10-03 17:48:02 -04:00
fx_time.wgsl M13.29: GPU effects part D (particles and remaining fallbacks) 2026-10-04 01:35:56 -04:00
fx_tone.wgsl M13.9: gpu Color Stabilizer apply pass 2026-10-03 08:28:27 -04:00
fx_transition.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_vr.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
fx_warp.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00
kernels.wgsl M13.13: fuse 8/16 bpc quantise into the layer composite; steady-state bench traffic 2026-10-03 10:44:52 -04:00
particles.wgsl M12.7: GPU particles (CC Particle World, CC Particle Systems II, Particle Playground cannon): compute-shader simulation with GPU checkpoints, CPU as the oracle 2026-10-03 02:44:36 -04:00
sky.wgsl GPU on wgpu's OpenGL backend: renderable depth target, portable shaders, serialised tests 2026-10-05 10:08:21 -04:00