Visibility
I(x, x') = g(x, x')F // 실제빛의 양에 g(x, x')의 반환값(장애물 있으면 0, 없으면 1/d제곱)을 곱함
Emission
I(x, x') = g(x, x')[ε(x, x') + ...] // F는 어떤 점에서 x로 들어오는 빛의 양을 뜻함
Reflection
I(x, x') = g(x, x')[ε(x, x') + s p(x, x', x'')I(x', x'')dx''] //바깥에서 들어와 x'에서 반사되어 x로 가는 빛의 합
재귀가 발생 => Indirect Illumination을 구현하면 재귀는 없어도 됨.
=> x''가 Light source인 경우만 계산을 하면 된다. 그러면, 빛 => 물체 => Screen이므로, 다른 물체의 영향이 포함되지 않음 => local Illumination
Vertex Processor => Primitive Assembly => Rasterizer => Interpolator => Fragment Processor
float f = min(max(x, minimum), maximum);
=> float f = clamp(x, minimum, maximum);
if(x>0.0) f = 2.0;
else f = -2.0;
=> (clamp(sin(x), 0, 1)-0.5) * 4;
if(root1<root2) return vec3(0.0, 0.0, root1);
else return vec3(0.0, 0.0, root2);
=> return vec3(0.0, 0.0, min(root1, root2));
vec3 v = length(p-q);
=> distance(p, q);
normalize(n);
=> vec3 a = normalize(n);
if(p.x<q.x) return true;
else if(p.y<q.y) return true;
else if(p.z<q.z) rerurn true;
return false;
=> any(lessThan(p, q));