- Code: Select all
procedure SHADOWVOLUMERENDERING
for all rasterized fragments do
draw fragment with ambient and emissive lighting
update the Z-buffer
end for
COMPUTEFRAGMENTSINSHADOW
for all rasterized fragments do
if not INSHADOW(fragment) then
draw fragment with diffuse and specular lighting
end if
end for
kunci dari isu ini disini adalah bagaimana menenentukan apakah suatu render fragmen di dalam bayangan atau tidak. prosedur ini dipetakan dengan mudah oleh hardware grafis sembarang manapun dengan apa yang disebut stencil buffer. setelah rendering setiap fragmen dengan emissive dan ambient lighting, berikut ini harus disertakan
- Code: Select all
procedure COMPUTEFRAGMENTSINSHADOW (Z-pass)
for all shadow casting objects do
compute potential silhouette edges (PSE) of the polygonal model
compute the shadow volume polygons (shadow quads) from the light source(s) and the PSE
end for
for all front facing shadow quads from viewpoint do
if Z-buffer test passes then
increment stencil buffer value
end if
end for
for all back facing shadow quads from viewpoint do
if Z-buffer test passes then
decrement stencil buffer value
end if
end for
