
1. Hybrid Ray Tracing on a PowerVR GPU 361
vec3 CalcVirtualInRay ()
{
vec2 uv = rl_FrameCoord . xy/ rl_FrameSize . xy ;
vec3 left = mix( frustumRay [0] , frustumRay [1] , uv . y );
vec3 right = mix ( frustumRay [2] , frustumRay [3] , uv . y );
vec3 cameraRay = mix ( left , right , uv . x );
return cameraRay ;
}
void DoReflection ( vec4 normal , vec3 position , float reflectivity )
{
vec3 inRay = CalcVirtualInRay () ;
vec3 reflection = reflect( inRay , normal);
createRay () ;
rl_OutRay . direction = reflection ;
rl_OutRay . origin = position ;
emitRay () ;
}
Listing 1.7. Reflection in hybrid renderer.
Alpha blending causes many artifacts, as it bares little relation ...