第 1 课:Ray
实现
uniform vec2 iResolution;
uniform float iTime;
vec3 getRayOrigin() {
// move the ray origin around the ellipse.
vec3 p = vec3(cos(iTime) * 0.5, sin(iTime) * 0.5, 0.1);
p.x *= iResolution.x / iResolution.y;
return p;
}
void main() {
vec2 uv = gl_FragCoord.xy / iResolution.xy;
uv = uv * 2.0 - 1.0;
uv.x *= iResolution.x / iResolution.y;
vec3 rayOrigin = getRayOrigin();
vec3 curPos = vec3(uv, 0.0);
vec3 rayDir = normalize(curPos - rayOrigin);
float t = (rayOrigin.z)/abs(rayDir.z);
float dist = length(rayDir * t);
gl_FragColor = vec4(1.0 - dist, 0.0, 0.0, 1.0);
}