Wstępnie skompilowany transfer promieniowy (Direct3D 9)
Korzystanie z wstępnie skompilowanej transmisji promieniowej
Istnieje kilka form złożoności obecnych w interesujących scenach, w tym sposób modelowania środowiska oświetleniowego (czyli modeli oświetlenia obszarów w porównaniu z modelami punktowymi/kierunkowymi) oraz rodzaj globalnych efektów (na przykład cienie, interreflections, rozpraszanie podpowierzchniowe). Tradycyjne techniki renderowania interakcyjnego modeluje ograniczoną ilość tej złożoności. PrT umożliwia wykonanie tych efektów z pewnymi istotnymi ograniczeniami:
- Zakłada się, że obiekty są sztywne (czyli bez deformacji).
- Jest to podejście skoncentrowane na obiektach (chyba że obiekty są przenoszone razem, te efekty globalne nie są utrzymywane między nimi).
- Modelowane jest tylko oświetlenie o niskiej częstotliwości (co powoduje miękkie cienie). W przypadku świateł o wysokiej częstotliwości (ostrych cieni) należy stosować tradycyjne techniki.
Żądanie ściągnięcia wymaga jednego z następujących elementów, ale nie obu:
- bardzo tessellatowane modele i vs_1_1
- ps_2_0
Standardowe oświetlenie rozproszone a PRT
Poniższa ilustracja jest renderowana przy użyciu tradycyjnego modelu oświetlenia (n · l). Ostre cienie można włączyć przy użyciu innego przebiegu i jakiejś formy techniki cieniowania (mapy głębokości cienia lub woluminy cienia). Dodanie wielu świateł wymagałoby wielu przebiegów (jeśli mają być używane cienie) lub bardziej złożonych cieniowania przy użyciu tradycyjnych technik.
Następna ilustracja jest renderowana z prT przy użyciu najlepszego przybliżenia pojedynczego światła kierunkowego, które może rozwiązać. Skutkuje to miękkimi cieniami, które byłyby trudne do produkcji przy użyciu tradycyjnych technik. Ponieważ prT zawsze modeluje kompletne środowiska oświetlenia dodając wiele świateł lub używając mapy środowiska, należy zmienić tylko wartości (ale nie liczbę) stałych używanych przez cieniowanie.
prt
PrT z interreflections
Bezpośrednie oświetlenie dociera do powierzchni bezpośrednio z światła. Interreflections są światło docierające do powierzchni po odbijaniu się od innej powierzchni kilka razy. PrT może modelować to zachowanie bez zmieniania wydajności w czasie wykonywania, uruchamiając symulator z różnymi parametrami.
Poniższa ilustracja jest tworzona przy użyciu tylko bezpośredniego prT (0 odbija się bez interreflections).
Poniższa ilustracja jest tworzona przy użyciu prT z interreflections (2 odbija się od interreflections).
PrT z rozpraszaniem podpowierzchniowym
Punktowanie podpowierzchniowe to technika, która modeluje sposób, w jaki światło przechodzi przez niektóre materiały. Na przykład naciśnij oświetloną latarki na dłoni. Światło z latarki przechodzi przez rękę, odbija się wokół (zmiana koloru w procesie) i wychodzi z drugiej strony ręki. Można to również modelować za pomocą prostych zmian w symulatorze i bez zmian w środowisku uruchomieniowym.
Na poniższej ilustracji przedstawiono prT z wykresem punktowym podpowierzchniowym.
punktowym podpowierzchniowym
Jak działa żądanie ściągnięcia
Poniższe terminy są przydatne do zrozumienia sposobu działania prT, jak pokazano na poniższym diagramie.
Promienie źródła: promienie źródłowe reprezentują środowisko oświetlenia jako całość. W prT dowolne środowisko jest przybliżone przy użyciu symetrycznej podstawy harmonicznej - zakłada się, że oświetlenie jest odległe względem obiektu (to samo założenie, które zostało wykonane z mapami środowiskowymi).
Promieniowanie wyjścia: Promienie wyjścia to światło opuszczające od punktu na powierzchni z dowolnego możliwego źródła (promienie odbite, rozpraszanie podpowierzchniowe, emisja).
Wektory transferowe: wektory transferowe mapują promienie źródła na promienie wyjścia i są wstępnie skompilowane w trybie offline przy użyciu złożonej symulacji transportu światła.
PrT wpływa na proces renderowania na dwa etapy, jak pokazano na poniższym diagramie:
- Kosztowna symulacja transportu lekkiego wstępnie skompiluje współczynniki transferu, które mogą być używane w czasie wykonywania.
- Stosunkowo lekki etap czasu wykonywania najpierw przybliża środowisko oświetlenia przy użyciu szyfrowania harmonicznej podstawy, a następnie używa tych współczynników oświetlenia i wstępnie skompilowanych współczynników transferu (od etapu 1) z prostą cieniowaniem, co powoduje promieniowanie wyjścia (światło opuszczające obiekt).
Jak używać interfejsu API PRT
Oblicz wektory transferu przy użyciu jednego z obliczeń... metody ID3DXPRTEngine.
Bezpośrednie radzenie sobie z tymi wektorami transferu wymaga znacznej ilości pamięci i obliczeń cieniowania. Kompresja znacznie zmniejsza wymaganą ilość pamięci i obliczeń cieniowania.
Końcowe wartości oświetlenia są obliczane w cieniowaniu wierzchołka, który implementuje następujące skompresowane równanie renderowania.
renderowania prt
Gdzie:
Parametr Opis Rp Pojedynczy kanał promieniowania wyjścia na wierzchołku p i jest obliczany na każdym wierzchołku siatki. Mk Średnia dla klastra k. Jest to wektor Order² współczynników. k Identyfikator klastra dla wierzchołka p. L Przybliżenie promienia źródła do funkcji bazowych SH. Jest to wektor Order² współczynników. j Liczba całkowita, która sumuje liczbę wektorów PCA. w pj Waga jth PCA dla punktu p. Jest to pojedynczy współczynnik. Bkj Wektor podstawy jth PCA dla klastra k. Jest to wektor Order² współczynników. Wyodrębnij... metody ID3DXPRTCompBuffer zapewniają dostęp do skompresowanych danych z symulacji.
Oblicz promienie źródłowe.
Istnieje kilka funkcji pomocnika w interfejsie API do obsługi różnych typowych scenariuszy oświetlenia.
Funkcja Cel D3DXSHEvalDirectionalLight Przybliżone konwencjonalne światło kierunkowe. D3DXSHEvalSphericalLight Przybliżone lokalne źródła światła kulistego. (Należy pamiętać, że prT działa tylko ze środowiskami oświetlenia dystansowego). D3DXSHEvalConeLight Przybliżone odległe źródło światła obszaru. Przykładem może być słońce (bardzo mały kąt stożka). D3DXSHEvalHemisphereLight Ocenia światło, które jest interpolacją liniową między dwoma kolorami (jeden na każdym biegunie kuli). Oblicz promienie wyjścia.
Równanie 1 musi być teraz oceniane w każdym momencie przy użyciu cieniowania wierzchołka lub piksela. Aby można było ocenić cieniowania, stałe muszą być wstępnie skompilowane i załadowane do tabeli stałej (zobacz przykładowy PRT Demo Sample, aby uzyskać szczegółowe informacje). Sam cieniator jest prostą implementacją tego równania.
struct VS_OUTPUT { float4 Position : POSITION; // vertex position float2 TextureUV : TEXCOORD0; // vertex texture coordinates float4 Diffuse : COLOR0; // vertex diffuse color }; VS_OUTPUT Output; Output.Position = mul(vPos, mWorldViewProjection); float4 vExitR = float4(0,0,0,0); float4 vExitG = float4(0,0,0,0); float4 vExitB = float4(0,0,0,0); for (int i=0; i < (NUM_PCA_VECTORS/4); i++) { vExitR += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*0]; vExitG += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*1]; vExitB += vPCAWeights[i] * vClusteredPCA[iClusterOffset+i+1+(NUM_PCA_VECTORS/4)*2]; } float4 vExitRadiance = vClusteredPCA[iClusterOffset]; vExitRadiance.r += dot(vExitR,1); vExitRadiance.g += dot(vExitG,1); vExitRadiance.b += dot(vExitB,1); Output.Diffuse = vExitRadiance;
Odwołania
Aby uzyskać więcej informacji na temat prT i harmonicznych spherical, zobacz następujące dokumenty:
Precomputed Radiance Transfer for Real-Time Rendering in Dynamic,
Low-Frequency Lighting Environments
P.-P. Sloan, J. Kautz, J. Snyder
SIGGRAPH 2002
Clustered Principal Components for Precomputed Radiance Transfer
P.-P. Sloan, J. Hall, J. Hart, J. Snyder
SIGGRAPH 2003
Efficient Evaluation of Irradiance Environment Maps
P.-P. Sloan
ShaderX 2, W. Engel
Spherical Harmonic Lighting: The Gritty Details
R. Green
GDC 2003
An Efficient Representation for Irradiance Environment Maps
R. Ramamoorthi, P. Hanrahan
A Practical Model for Subsurface Light Transport
H. W. Jensen, S. R. Marschner, M. Levoy, and P. Hanrahan
SIGGRAPH 2001
Bi-Scale Radiance Transfer
P.-P. Sloan, X. Liu, H.-Y. Shum, J. Snyder
SIGGRAPH 2003
Fast, Arbitrary BRDF Shading for Low-Frequency Lighting Using Spherical
Harmonics
J. Kautz, P.-P. Sloan, J. Snyder
12th Eurographics Workshop on Rendering
Precomputing Interactive Dynamic Deformable Scenes
D. James, K. Fatahalian
SIGGRAPH 2003
All-Frequency Shadows Using Non-linear Wavelet Lighting Approximation
R. Ng, R. Ramamoorth, P. Hanrahan
SIGGRAPH 2003
Matrix Radiance Transfer
J. Lehtinen, J. Kautz
SIGGRAPH 2003
Math World
E. W. Weisstein, Wolfram Research, Inc.
Quantum Theory of Angular Momentum
D. A. Varshalovich, A.N. Moskalev, V.K. Khersonskii
Tematy pokrewne