uniform vec3 uForward; uniform vec3 uRight; uniform vec3 uUp; uniform float uAspect; uniform float uTanHalfFov; uniform vec3 uRayJitter; vec3 cameraRay(vec2 uv) { vec2 xy=((uv-uRayJitter.xy)*2.0-1.0)*uTanHalfFov; return normalize(uForward+uRight*xy.x*uAspect+uUp*xy.y); }