Download - SH & PRT (Kasastudy)
Spherical Harmonics &Precomputed Radiance Transfer 소개
김혁Kasastudy
1Friday, February 3, 12
Global Illumination 개요
Spherical Harmonics Lighting
PRT Diffuse
간략한 구현 소개
2Friday, February 3, 12
Global Illumination 개요
3Friday, February 3, 12
직접 조명(direct illumination)
4Friday, February 3, 12
간접 조명(indirect illumination)
5Friday, February 3, 12
전역 조명(global illumination)
6Friday, February 3, 12
=+
7Friday, February 3, 12
8Friday, February 3, 12
9Friday, February 3, 12
10Friday, February 3, 12
11Friday, February 3, 12
vs
12Friday, February 3, 12
PRT DEMO
13Friday, February 3, 12
Instant Radiosity
정적 물체정적 조명 동적 물체
동적 조명
동적 물체 동적 물체
IrradianceVolume
RSM
정적 물체 정적 물체PRT
RealtimeRadiosity
정적 물체정적 조명 정적 물체
SH Light Map
Light Map
14Friday, February 3, 12
Instant Radiosity
IrradianceVolume
RSM
PRT
RealtimeRadiosity
SH Light Map
Light Map
Battlefield 3
Crysis 2
Half-life 2Ambient Cube
Spherical Harmonics(SH)Irradiance
SH Light Propagation Volume
Halo 3
SH
15Friday, February 3, 12
Spherical Harmonics Lighting
16Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
|0 >, |1 >, . . .1< 0|, < 1|, . . .1
~x, ~y, ~z
~x =
0
@100
1
A
~x
T = (1, 0, 0)
|0 >=
0
B@10...
1
CA
< 1| = (0, 1, · · · )
벡터(VECTOR)
17Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
기저 벡터(BASIS VECTOR)
x, y, z
|0 >, |1 >, |2 >, . . .1
18Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
임의의 벡터
|f >= f0|0 > +f1|1 > +f2|2 > + · · ·
~p = p
x
x+ p
y
y + p
z
z
19Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
내적(INNER PRODUCT)
~v0 · ~v1 = |v0||v1|cos✓
< f |g >=
Z
!f(✓,�)g(✓,�)d!
20Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
내적(INNER PRODUCT)x · x = 1
x · y = 0
< i|j > = 1, i = j= 0, i 6= j
< 0|0 >=< 1|1 >= · · · = 1
< 0|1 >=< 2|3 >= · · · = 0
21Friday, February 3, 12
|1 >
|2 >
|3 >
|4 >
|0 >
22Friday, February 3, 12
3차원 공간
SH 공간(무한차원)
투영(PROJECTION)
p
x
= ~x · ~p
< 0|f > =< 0|f0|0 > + < 0|f0|1 > + · · ·= f0 < 0|0 > +f1 < 0|1 > + · · ·= f0
23Friday, February 3, 12
SH 공간(무한차원)
< 0|f > =< 0|f0|0 > + < 0|f0|1 > + · · ·= f0 < 0|0 > +f1 < 0|1 > + · · ·= f0
< 0|f >=
Z
!Y0(✓,�)f(✓,�)d! = f0
적분으로 각 상수를 구함
24Friday, February 3, 12
LOW FREQUENCY
HIGH FREQUENCY
25Friday, February 3, 12
무한대 0개 4개 16개 36개 64개 100개
26Friday, February 3, 12
SH 사용 예 - RAMAMOORTHI 의 기법
반구 적분
입사 조명(INCIDENT LIGHT)
이라디언스(IRRADIANCE)
27Friday, February 3, 12
NO SHADOW!!
NO INTERREFLECTIONS!!
N
NORMAL N을 위한 적분 영역
28Friday, February 3, 12
|f >
< 0|f >= f0
< 1|f >= f1
< 2|f >= f2
< 3|f >= f3...
적분
SPHERICAL HARMONICS 계수 계산하기
29Friday, February 3, 12
|f >
SPHERICAL HARMONICS 계수 계산하기
< gN |
NX =
NORMAL N에 해당하는이라디언스
30Friday, February 3, 12
< gn| |f > < gN |f >= gN0 · f0+
gN1 · f1+gN2 · f2+...
X
31Friday, February 3, 12
Z
!g(✓,�)f(✓,�)d! =< g|f >
< g|f >= (< 0|g0+ < 1|g1+ < 2|g2 + · · · ) · (f0|0 > +f1|1 > +f2|2 > + · · · )= g0 · f0 + g1 · f1 + g2 · f2 + · · ·
증명
32Friday, February 3, 12
SH이라디언스 맵 앰비언트 큐브
9개(9x3=37)텍스쳐 크기 6개 (6x3=18)
이라디언스 연산자 생성텍스쳐 읽기 방향 계산
용량(RGB)
실시간 계산
33Friday, February 3, 12
Spherical Harmonics WebGL Demo
34Friday, February 3, 12
요약 1. 배경에 해당하는 SH 상수를 미리 구함(적분)
2. Vertex Shader 안에서 normal N에 해당하는 g_n 을 구함
3. Pixel Shader 에서는 g_n이 보간되서 들어오고, 이 값을 내적 계산
예시에서는 RGB에 대해 각각 9개, 총 27개
RGB가 서로 다르지 않기 때문에, 9개
35Friday, February 3, 12
Spherical Harmonics Lighting의 특징
저주파수(low frequency) 대역의 색깔을 적은 계수로 사용
실시간 적분!
SH 회전이 가능함
하지만 회전은 연산량이 너무 많음 -_-ㅋ
보간 계산이 가능!
36Friday, February 3, 12
활용 예SH 를 미리 계산 해두고 공간에 배치 시킨 후(SH Prob) 실시간 렌더링 시에 사용
일반적으로 물체 하나에 SH 세트 한개만을 일괄적으로 사용함
Halo 3 에서는 SH 맵을 구워서 Normal Map 대신(함께) 사용
(Battlefield3에도 사용된) Enlighten 엔진은 기본적으로 실시간 Radiosity를 계산하고, 공중에 배치 되어 있는 SH Prob에도 결과를 넘겨줌
37Friday, February 3, 12
38Friday, February 3, 12
39Friday, February 3, 12
40Friday, February 3, 12
41Friday, February 3, 12
이미지 출처(순서대로)
The Irradiance Volume, Gene Greger, et al (1998)
Lighting and Material of Halo 3, Hao Chen and Xinguo Liu (2008)
Radiosity Architecture, Sam Martin and Per Einarsson (2010)
소닉 월드 어드벤쳐 그래픽스 강좌 - http://jacking.tistory.com/330
42Friday, February 3, 12
PRT Diffuse
43Friday, February 3, 12
이곳으로 들어올 수 있는
빛의 방향과 양!
44Friday, February 3, 12
이런 모양을어떤 위치(VERTEX 혹은 TEXEL)마다 가지고 있는 것!
PRT의 기본은SHADOWED!!
NO INTERREFLECTIONS!!
45Friday, February 3, 12
SHADOWED!!
46Friday, February 3, 12
FIRST PASS!
47Friday, February 3, 12
SECOND PASS!
끌어옴
48Friday, February 3, 12
RENDERING!
빛
49Friday, February 3, 12
PRT Glossy는 생략 -ㅅ-;
50Friday, February 3, 12
구현 사항 & 기타
51Friday, February 3, 12
사용한 방법 다른 방법
SH 계산
Raytracing
실시간 렌더링
Raytracing (CPU) Direct3D
Raytracing (CPU)OptiX (GPU Raytracing
Library)
쉐이더만 되면 상관 없음쉐이더만 되면 상관 없음
52Friday, February 3, 12
1. 각 Vertex에 대해 반구 적분. 광선은 충돌/비충돌만 검사
모든 Vertex에 대해 9개의 SH 상수를 계산해서 저장함
N
POSITION, NORMAL, TEXTURE COORDS, ....,SH 상수(FLOAT) 9개
V
53Friday, February 3, 12
2. 각 Vertex에 대해 주변의 SH 상수들을 모아옴
광선의 충돌 지점에서 보간 된 SH상수 9개를 가져온 후,
해당 물체의 색깔(텍스쳐)와 곱해서 SH상수 27개로 만듦
N
V
이 과정은 수학적으로 올바른 적분식을 통해 계산 됨
POSITION, NORMAL, TEXTURE COORDS, ....,
SH 색깔 9개(FLOAT 27개)
54Friday, February 3, 12
3. 미리 SH Light를 만들어 둠
Area Light를 쉽게 사용할 수 있음
(오히려 Point Light는 흉내내기 어려움)
역시 적분을 통해 SH로 만들어 둠
SH 27개를 만들어도 되고,
SH 9개와 Light 색깔을 사용해도 됨
55Friday, February 3, 12
3. 실시간에서는 조명을 회전
회전에 대한 연산은 어마어마함
상황에 따라 최소화하여 사용
샘플에서는 조명만 CPU에서 한번 회전
Vertex Normal 은 World Normal
56Friday, February 3, 12
ReferencesAn efficient representation for irradiance environment maps, Ramamoorthi, Ravi and Hanrahan, Pat (2001)
Spherical Harmonics, Sch\''onefeld, Volker
Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments, Peter-Pike Sloan,Jan Kautz and John Snyder (2002)
Spherical Harmonic Lighting: The Gritty Details, Robin Green
Lighting and Material of Halo 3, Hao Chen and Xinguo Liu (2008)
57Friday, February 3, 12