Zrobiłem Deferred Shading

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# Zrobiłem Deferred Shading

Sat
03
May 2008

Zrobiłem Deferred Shading. To fajna technika, bo miło jest dodawać oświetlenie sceny kolejnym światłem tylko przez narysowanie następnego fullscreen quada (albo mniejszego obszaru ograniczonego przez Scissor Test, jeśli udałoby się zaimplementować algorytm Lengyela). Używam dwóch render-targetów (nazywanych tu G-buforami) w formacie A16B16G16R16F, wypełnianych na raz dzięki MRT, zbudowanych tak:

  1. RGB = Diffuse, A = Nieużywany
  2. RG = Normal.xy, B = Odległość od kamery, A = Indeks materiału

Wszystkie obliczenia odbywają się w przestrzeni kamery (View). Ciekawym pomysłem jest zakodowanie właściwości materiałów w specjalnej teksturze, której pionową współrzędną adresuje numer materiału zapisany w G-buforze. U mnie to jest tekstura w formacie A32B32G32R32F o szerokości 1px, w której: RGB = SpecularColor, A = SpecularPower.

Deferred Shading

Z czego warto się uczyć Deferred Shading? Referat Riddlemastera z IGK 2008 może zainteresować tematem, ale zawiera niewiele konkretów. Deferred Shading Tutorial autorstwa Fabio Policarpo i Francisco Fonseca jest bardzo dobry, ale zniknął z Sieci. Na szczęście jest jego kopia w Internet Archive. Jest też długa dyskusja na forum GameDev.net. Z materiałów papierowych polecam Game Programming Gems tom 6 rozdz. 5.7 o enigmatycznym tytule "Fast Per-Pixel Lighting with Many Lights" (Frank Puig Placeres), a także GPU Gems 2 rozdz. 9 - "Deferred Shading in STALKER" (Oles Shishkovtsov).

Comments | #rendering Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2019