indicatrix 0.9.0

A physically-based spectral gemstone renderer that turns GemCAD-style cutting instructions into rendered output.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Adapter tests append this to the exact production shader; no copied physics.
@compute @workgroup_size(64)
fn whitted_probe(@builtin(global_invocation_id) id: vec3<u32>) {
    if (id.x >= wt.range.y) { return; }
    let a = wt_planes[id.x * 2u];
    let b = wt_planes[id.x * 2u + 1u];
    let r = wt_refract(a.xyz, b.xyz, b.w);
    let base = id.x * 8u;
    out_xyz[base] = wt_fresnel(a.w, b.w);
    out_xyz[base + 1u] = exp_poly(a.w);
    out_xyz[base + 2u] = r.dir.x;
    out_xyz[base + 3u] = r.dir.y;
    out_xyz[base + 4u] = r.dir.z;
    out_xyz[base + 5u] = select(0.0, 1.0, r.valid);
    out_xyz[base + 6u] = wt_studio_g(a.xyz, vec3<f32>(0.0, 0.0, 1.0));
    out_xyz[base + 7u] = 0.0;
}