light pre-pass renderer

Post on 23-Feb-2016

79 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Light pre-pass renderer. Marcin Korniluk. Plan prezentacji. Podejście klasyczne i Z pre-pass Carmacka Deferred shading Light pre-pass renderer Demo Podsumowanie. To każdy zna. Podejście Klasyczne. Podejście klasyczne. Opcja 1: Jeden przebieg Warianty shaderów dla różnych świateł - PowerPoint PPT Presentation

TRANSCRIPT

Light pre-pass rendererMarcin Korniluk

Marcin Korniluk - Light Pre-Pass Renderer 2

Plan prezentacjiPodejście klasyczne i Z pre-pass

CarmackaDeferred shadingLight pre-pass rendererDemoPodsumowanie

3

PODEJŚCIE KLASYCZNETo każdy zna

Marcin Korniluk - Light Pre-Pass Renderer

Marcin Korniluk - Light Pre-Pass Renderer 4

Podejście klasyczneOpcja 1: Jeden przebieg

◦ Warianty shaderów dla różnych świateł◦ Słaby batching

Opcja 2: Wiele przebiegów◦ Mało shaderów◦ Dużo niepotrzebnej pracy

Minimalizacja ilości przetwarzanych świateł

Marnotrawstwo cykli

Marcin Korniluk - Light Pre-Pass Renderer 5

Z Pre-Pass CarmackaPierwszy przebieg rysuje tylko głębię

◦ Sortowanie „od najbliższych”◦ Prosty shader

Drugi przebieg rysuje resztę◦ Kompletne shadery◦ Minimalna nadmiarowość rysowania◦ Nadal wiele wad

Wykorzystane przez producentów GPU

6

DEFERRED SHADINGPrzypomnienie

Marcin Korniluk - Light Pre-Pass Renderer

Marcin Korniluk - Light Pre-Pass Renderer 7

Deferred shadingPomysł padł na SIGGRAPH 88Złożoność oświetlenia O(n+m) zamiast

O(nm)Rozbicie renderowania na 2 etapy

◦ Geometrii◦ Oświetlenia

Marcin Korniluk - Light Pre-Pass Renderer 8

Deferred shading – cd.Obiekty lite

Obiekty przezroczyste

Normalne Głębokość

Oświetlenie i rysowanie

Rysowanie 2

IntensywnośćKolor

Marcin Korniluk - Light Pre-Pass Renderer 9

Deferred shading – etap geometriiDane sceny zapisywane do kilku

buforówR8 G8 B8 A8

Depth Stencil

Lighting Accumulation RGB Intensity

Normal.x Normal.y

Motion.x Motion.y Spec-power Spec-Intensity

Diffuse Albedo RGB Sun-Occlusion

Marcin Korniluk - Light Pre-Pass Renderer 10

Deferred shading – etap oświetleniaŚwiatła jako bryłyParametry per pixel pobierane z G-

BuforaMożliwa duża ilość świateł

Marcin Korniluk - Light Pre-Pass Renderer 11

Deferred shading – wadyAnti-aliasing

◦ Brak sprzętowego wsparcia MSAAAlpha blending

◦ Nie można zapisywać głębokości obiektów przezroczystych

Fill rate boundOgraniczenia materiałów

◦ Materiały muszą być prawie jednakowe

Marcin Korniluk - Light Pre-Pass Renderer 12

LIGHT PRE-PASS RENDERERNowe podejście

Marcin Korniluk - Light Pre-Pass Renderer 13

Light pre-pass rendererWolfgang Engel – czerwiec 2007Lekkie podejście do deferred shadingu3 etapy renderowania

◦ Przygotowanie◦ Oświetlenie◦ Rysowanie

Marcin Korniluk - Light Pre-Pass Renderer 14

Light pre-pass renderer – cd.Obiekty lite

Obiekty przezroczyste

Normalne Głębokość

Oświetlenie

Rysowanie

Rysowanie 2

Marcin Korniluk - Light Pre-Pass Renderer 15

Light pre-pass – przygotowanieDo bufora zapisujemy normalne i

głębokość◦ Potrzebne do oświetlenia◦ Wystarczy jeden RT RGBA8

Sortowanie „od najbliższego”

R8 G8 B8 A8

Normal.x Normal.y Depth

Marcin Korniluk - Light Pre-Pass Renderer 16

Pakowanie danych – normalnaTrzecią współrzędną normalnej da się

wyznaczyć◦ Twierdzenie Pitagorasa

◦ Znak jest stały (w większości przypadków)Dla RT RGBA16F nie trzeba pakować

221 yxz nnn

Marcin Korniluk - Light Pre-Pass Renderer 17

Pakowanie danych – pozycjaWystarczy zapisać długość wektora

float3 eyeVec = float3(x * aspect, y, 1/tan(fov/2));float4 pixelPosView = float4(normalize(eyeVec) * depth;

Marcin Korniluk - Light Pre-Pass Renderer 18

Light pre-pass – przygotowanie, cd.

19

Light pre-pass – oświetlenieDo bufora zapisywane oświetlenie

◦ Światła renderowane jako bryły◦ Wystarczy jeden RT RGBA8◦ HDR

Techniki optymalizacji jak w deferred shading◦ Takie same zalety◦ I wady

Marcin Korniluk - Light Pre-Pass Renderer

Marcin Korniluk - Light Pre-Pass Renderer 20

Pakowanie danych – kolorRGB źle się pakujeMożna pominąć kolor zwierciadlany

Może YUV?

R8 G8 B8 A8

Diffuse.r Diffuse.g Diffuse.b Specular

Marcin Korniluk - Light Pre-Pass Renderer 21

Light pre-pass – oświetlenie, cd.

Marcin Korniluk - Light Pre-Pass Renderer 22

Light pre-pass – rysowanieRysowanie „od najbliższego”

◦ Minimalna nadmiarowośćDowolność materiałówObiekty przezroczyste rysowane

klasycznie◦ Podobnie jak w deferred shading

Marcin Korniluk - Light Pre-Pass Renderer 23

Light pre-pass – rysowanie, cd.Przykładowy pixel shader

float3 normal = normalize(psIn.normal);float3 light = normalize(psIn.light);float3 view = normalize(psIn.view);

float3 diffuseLight = getDiffuseLight(normal,light);float3 specularLight = getSpecularLight(normal,light,view);

Marcin Korniluk - Light Pre-Pass Renderer 24

Light pre-pass – rysowanie, cd.Przykładowy pixel shader

float3 diffuseLight = LightBuffer.Sample(sampler,psIn.position).xyz;float specularLight = LightBuffer.Sample(sampler,psIn.position).w;

Marcin Korniluk - Light Pre-Pass Renderer 25

Anti-aliasingSprzętowy MSAA

Nie jest tak różowo

Marcin Korniluk - Light Pre-Pass Renderer 26

Rozmiar ramki obrazuDeferred shading

Light pre-pass

408B 785 16447681366 MRTBpp

704B 392 8247681366 MSAABpp

Marcin Korniluk - Light Pre-Pass Renderer 27

Light pre-pass – wadyEfekty z VS

◦ Displacement mappingRedundantna transformacja sceny

◦ Koszt porównywalny z generacją SM◦ Idealna nadmiarowość odrysowywania

Marcin Korniluk - Light Pre-Pass Renderer 28

Light pre-pass – wady, cd.Alpha-blending

◦ Przezroczyste obiekty rysowane klasycznie◦ Depth-peeling, A-Buffer, SRK-Buffer, PP Linked List

…Wysoki fill rate

◦ Niższy niż dla DS.◦ Ulepszenia takie jak dla DS.

Rysowanie brył otaczających Algorytm Lengyela

Marcin Korniluk - Light Pre-Pass Renderer 29

Light pre-pass – wady, cd. 2Rekonstrukcja koloru

Nagięcie reguł daje dobre rezultaty

i

in

s AttVRI

n

ii

i

ni VRVR

Marcin Korniluk - Light Pre-Pass Renderer 30

Demo

Marcin Korniluk - Light Pre-Pass Renderer 31

PODSUMOWANIE2 slajdy do końca

Marcin Korniluk - Light Pre-Pass Renderer 32

PodsumowanieBrak ograniczeń MRTSprzętowy anti-aliasingNiski fill-rateDwukrotne transformacje

◦ Ale bez oświetleniaBardzo dobry batching

top related