sh & prt (kasastudy)

57
Spherical Harmonics & Precomputed Radiance Transfer 소개 김혁 Kasastudy 1 Friday, February 3, 12

Upload: hyuk-kim

Post on 25-Jan-2015

1.340 views

Category:

Technology


0 download

DESCRIPTION

Spherical Harmonics Lighting에 관한 간단한 소개, PRT Diffuse 기법에 대한 소개를 다룬 발표.

TRANSCRIPT

Page 1: SH & PRT (Kasastudy)

Spherical Harmonics &Precomputed Radiance Transfer 소개

김혁Kasastudy

1Friday, February 3, 12

Page 2: SH & PRT (Kasastudy)

Global Illumination 개요

Spherical Harmonics Lighting

PRT Diffuse

간략한 구현 소개

2Friday, February 3, 12

Page 3: SH & PRT (Kasastudy)

Global Illumination 개요

3Friday, February 3, 12

Page 4: SH & PRT (Kasastudy)

직접 조명(direct illumination)

4Friday, February 3, 12

Page 5: SH & PRT (Kasastudy)

간접 조명(indirect illumination)

5Friday, February 3, 12

Page 6: SH & PRT (Kasastudy)

전역 조명(global illumination)

6Friday, February 3, 12

Page 7: SH & PRT (Kasastudy)

=+

7Friday, February 3, 12

Page 8: SH & PRT (Kasastudy)

8Friday, February 3, 12

Page 9: SH & PRT (Kasastudy)

9Friday, February 3, 12

Page 10: SH & PRT (Kasastudy)

10Friday, February 3, 12

Page 11: SH & PRT (Kasastudy)

11Friday, February 3, 12

Page 12: SH & PRT (Kasastudy)

vs

12Friday, February 3, 12

Page 13: SH & PRT (Kasastudy)

PRT DEMO

13Friday, February 3, 12

Page 14: SH & PRT (Kasastudy)

Instant Radiosity

정적 물체정적 조명 동적 물체

동적 조명

동적 물체 동적 물체

IrradianceVolume

RSM

정적 물체 정적 물체PRT

RealtimeRadiosity

정적 물체정적 조명 정적 물체

SH Light Map

Light Map

14Friday, February 3, 12

Page 15: SH & PRT (Kasastudy)

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

Page 16: SH & PRT (Kasastudy)

Spherical Harmonics Lighting

16Friday, February 3, 12

Page 17: SH & PRT (Kasastudy)

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

Page 18: SH & PRT (Kasastudy)

3차원 공간

SH 공간(무한차원)

기저 벡터(BASIS VECTOR)

x, y, z

|0 >, |1 >, |2 >, . . .1

18Friday, February 3, 12

Page 19: SH & PRT (Kasastudy)

3차원 공간

SH 공간(무한차원)

임의의 벡터

|f >= f0|0 > +f1|1 > +f2|2 > + · · ·

~p = p

x

x+ p

y

y + p

z

z

19Friday, February 3, 12

Page 20: SH & PRT (Kasastudy)

3차원 공간

SH 공간(무한차원)

내적(INNER PRODUCT)

~v0 · ~v1 = |v0||v1|cos✓

< f |g >=

Z

!f(✓,�)g(✓,�)d!

20Friday, February 3, 12

Page 21: SH & PRT (Kasastudy)

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

Page 22: SH & PRT (Kasastudy)

|1 >

|2 >

|3 >

|4 >

|0 >

22Friday, February 3, 12

Page 23: SH & PRT (Kasastudy)

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

Page 24: SH & PRT (Kasastudy)

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

Page 25: SH & PRT (Kasastudy)

LOW FREQUENCY

HIGH FREQUENCY

25Friday, February 3, 12

Page 26: SH & PRT (Kasastudy)

무한대 0개 4개 16개 36개 64개 100개

26Friday, February 3, 12

Page 27: SH & PRT (Kasastudy)

SH 사용 예 - RAMAMOORTHI 의 기법

반구 적분

입사 조명(INCIDENT LIGHT)

이라디언스(IRRADIANCE)

27Friday, February 3, 12

Page 28: SH & PRT (Kasastudy)

NO SHADOW!!

NO INTERREFLECTIONS!!

N

NORMAL N을 위한 적분 영역

28Friday, February 3, 12

Page 29: SH & PRT (Kasastudy)

|f >

< 0|f >= f0

< 1|f >= f1

< 2|f >= f2

< 3|f >= f3...

적분

SPHERICAL HARMONICS 계수 계산하기

29Friday, February 3, 12

Page 30: SH & PRT (Kasastudy)

|f >

SPHERICAL HARMONICS 계수 계산하기

< gN |

NX =

NORMAL N에 해당하는이라디언스

30Friday, February 3, 12

Page 31: SH & PRT (Kasastudy)

< gn| |f > < gN |f >= gN0 · f0+

gN1 · f1+gN2 · f2+...

X

31Friday, February 3, 12

Page 32: SH & PRT (Kasastudy)

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

Page 33: SH & PRT (Kasastudy)

SH이라디언스 맵 앰비언트 큐브

9개(9x3=37)텍스쳐 크기 6개 (6x3=18)

이라디언스 연산자 생성텍스쳐 읽기 방향 계산

용량(RGB)

실시간 계산

33Friday, February 3, 12

Page 35: SH & PRT (Kasastudy)

요약 1. 배경에 해당하는 SH 상수를 미리 구함(적분)

2. Vertex Shader 안에서 normal N에 해당하는 g_n 을 구함

3. Pixel Shader 에서는 g_n이 보간되서 들어오고, 이 값을 내적 계산

예시에서는 RGB에 대해 각각 9개, 총 27개

RGB가 서로 다르지 않기 때문에, 9개

35Friday, February 3, 12

Page 36: SH & PRT (Kasastudy)

Spherical Harmonics Lighting의 특징

저주파수(low frequency) 대역의 색깔을 적은 계수로 사용

실시간 적분!

SH 회전이 가능함

하지만 회전은 연산량이 너무 많음 -_-ㅋ

보간 계산이 가능!

36Friday, February 3, 12

Page 37: SH & PRT (Kasastudy)

활용 예SH 를 미리 계산 해두고 공간에 배치 시킨 후(SH Prob) 실시간 렌더링 시에 사용

일반적으로 물체 하나에 SH 세트 한개만을 일괄적으로 사용함

Halo 3 에서는 SH 맵을 구워서 Normal Map 대신(함께) 사용

(Battlefield3에도 사용된) Enlighten 엔진은 기본적으로 실시간 Radiosity를 계산하고, 공중에 배치 되어 있는 SH Prob에도 결과를 넘겨줌

37Friday, February 3, 12

Page 38: SH & PRT (Kasastudy)

38Friday, February 3, 12

Page 39: SH & PRT (Kasastudy)

39Friday, February 3, 12

Page 40: SH & PRT (Kasastudy)

40Friday, February 3, 12

Page 41: SH & PRT (Kasastudy)

41Friday, February 3, 12

Page 42: SH & PRT (Kasastudy)

이미지 출처(순서대로)

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

Page 43: SH & PRT (Kasastudy)

PRT Diffuse

43Friday, February 3, 12

Page 44: SH & PRT (Kasastudy)

이곳으로 들어올 수 있는

빛의 방향과 양!

44Friday, February 3, 12

Page 45: SH & PRT (Kasastudy)

이런 모양을어떤 위치(VERTEX 혹은 TEXEL)마다 가지고 있는 것!

PRT의 기본은SHADOWED!!

NO INTERREFLECTIONS!!

45Friday, February 3, 12

Page 46: SH & PRT (Kasastudy)

SHADOWED!!

46Friday, February 3, 12

Page 47: SH & PRT (Kasastudy)

FIRST PASS!

47Friday, February 3, 12

Page 48: SH & PRT (Kasastudy)

SECOND PASS!

끌어옴

48Friday, February 3, 12

Page 49: SH & PRT (Kasastudy)

RENDERING!

49Friday, February 3, 12

Page 50: SH & PRT (Kasastudy)

PRT Glossy는 생략 -ㅅ-;

50Friday, February 3, 12

Page 51: SH & PRT (Kasastudy)

구현 사항 & 기타

51Friday, February 3, 12

Page 52: SH & PRT (Kasastudy)

사용한 방법 다른 방법

SH 계산

Raytracing

실시간 렌더링

Raytracing (CPU) Direct3D

Raytracing (CPU)OptiX (GPU Raytracing

Library)

쉐이더만 되면 상관 없음쉐이더만 되면 상관 없음

52Friday, February 3, 12

Page 53: SH & PRT (Kasastudy)

1. 각 Vertex에 대해 반구 적분. 광선은 충돌/비충돌만 검사

모든 Vertex에 대해 9개의 SH 상수를 계산해서 저장함

N

POSITION, NORMAL, TEXTURE COORDS, ....,SH 상수(FLOAT) 9개

V

53Friday, February 3, 12

Page 54: SH & PRT (Kasastudy)

2. 각 Vertex에 대해 주변의 SH 상수들을 모아옴

광선의 충돌 지점에서 보간 된 SH상수 9개를 가져온 후,

해당 물체의 색깔(텍스쳐)와 곱해서 SH상수 27개로 만듦

N

V

이 과정은 수학적으로 올바른 적분식을 통해 계산 됨

POSITION, NORMAL, TEXTURE COORDS, ....,

SH 색깔 9개(FLOAT 27개)

54Friday, February 3, 12

Page 55: SH & PRT (Kasastudy)

3. 미리 SH Light를 만들어 둠

Area Light를 쉽게 사용할 수 있음

(오히려 Point Light는 흉내내기 어려움)

역시 적분을 통해 SH로 만들어 둠

SH 27개를 만들어도 되고,

SH 9개와 Light 색깔을 사용해도 됨

55Friday, February 3, 12

Page 56: SH & PRT (Kasastudy)

3. 실시간에서는 조명을 회전

회전에 대한 연산은 어마어마함

상황에 따라 최소화하여 사용

샘플에서는 조명만 CPU에서 한번 회전

Vertex Normal 은 World Normal

56Friday, February 3, 12

Page 57: SH & PRT (Kasastudy)

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