Zanir » Blog Archive » Program 20 – Stencil Shadow

Program 20 – Stencil Shadow

22.12.2004

020_Stencil_ShadowProgram vytvára tieň za pomoci stencil buffra. Stencil buffer uchováva pre každý pixel hodnotu v rozmedzí 0 až 2^N-1, kde N je počet bitov stencil buffra. Hodnota sa mení podľa nastaveného operátora. Operátor sa nastavuje pre každú z možností: stencil test neprejde, stencil test prejde a zároveň z test neprejde, stencil aj z test prejdú. Operátory sú: bez zmeny, nulovanie, nahradenie predvolenou hodnotou, zvýšenie, zníženie a bitová negácia. Stencil test môže byť jeden z týchto: nikdy, <, =<, >, =>, ==, !=, vždy. Tieňové teleso (shadow volume) je silueta telesa (z pohľadu od svetla) premietnutá na opačnú stranu ako je svetlo. Z-pass algoritmus mení stencil v prípade, že z-test prejde. Tieň sa vytvára tak, že pre privrátené strany tieňového telesa sa stecil hodnota zvýši a pre odvrátené stany sa zníži. Tieň je tam kde stencil hodnota je > ako 0. Z-pass algoritmus pracuje spravne ak je kamera vonku z tieňa. Ja používam algoritmus z-fail, ktorý je popísaný v dokumente Practical and Robust Shadow Volumes (.pdf) (2153 KB) a na rozdiel od z-pass pracuje spravne aj keď je kamera v tieni.

Program vyžaduje hardwerovo akcelerovaný 8 bitový stencil buffer. Program používa pixel shader 1.1

zdrojové texty a program – 650kB

Pridať komentár