The Shadow Volume Algorithm

Grames. 3D Animation. DirectX3D. OpenGL Programming. C/C++/Csharp/Java

The Shadow Volume Algorithm

Postby admin » Tue Feb 09, 2010 8:06 pm

shadow volume algorithm adalah suatu geometri yang berdasarkan pada shadow algorithm yang membutuhkan informasi yang terhubung dari polygonal meshes pada layar untuk menghitung secara efisien silhuet dari shadow casting object (atau setiap occluder). ini disebut juga per pixel algorithm, yang menampilkan test bayangan untuk tiap fragment yang dirender. operasi ini bisa dipercepat dengan menggunakan hardware grafis (stencil buffer). dalm pseudocode, algoritma ini sebagai berikut :

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
User avatar
admin
Site Admin
 
Posts: 149
Joined: Fri Jan 15, 2010 11:37 am

Return to Games/3D/DirectX/OpenGL

Who is online

Users browsing this forum: No registered users and 1 guest

cron