Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ambient Occlusion 발표자 : 정광일 일 시 : 05.06.

Similar presentations


Presentation on theme: "Ambient Occlusion 발표자 : 정광일 일 시 : 05.06."— Presentation transcript:

1 Ambient Occlusion 발표자 : 정광일 일 시 : 05.06

2 개요 Ambient Occlusion이란? Ambient Occlusion 예제 Ambient Occlusion 적용방법

3 Ambient Occlusion? 셰이딩의 한 방법으로서 주변광 계산에 대한 모델
자기자신, 또는 주변 모델에 의해 가려지는 빛의 정도를 나타냄 즉, 모델의 차폐도를 나타내는 방법 셀프셰도잉 가능 적용시 어두운 부분을 더욱더 어둡게 표현

4 Ambient Occlusion? Ambient 는 전역 조명 모델 (상수값) 모델의 정점당 Occlusion Term 할당
빛 계산 모델 It = Ia * Occ_Term + Id + Is

5 Ambient Occlusion 예제

6

7

8

9

10 Ambient Occlusion 적용방법
Static Ambient Occlusion 방식 1. 정점당 Occ_Term 계산 Ray Tracing 를 사용한 전처리 계산 2. Vertex Shader를 사용하여 Occ_Term적용 Shader 의 Attribute 변수를 사용하여 정점당 Occ_Term 적용

11 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 한 정점에서 많은 수의 Ray를 생성 Ray가 모델과 부딫히는지 검사 Occ_Term = 충돌하지 않은 Ray 의 수 모든 Ray 의 수

12 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 컨셉 Non Occluded Area Occluded Area Polygon Surface

13 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 Ray intersect triangle 1. 세 점 v1,v2,v3 를 가지고 평면의 방정식 L를 만든다 2. 평면과 반직선의 교점 P를 찾는다 3. 교점 P가 삼각형 내부에 있는지 외부에 있는지 판별한다

14 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 1. 평면 L L = P∙N + d = 0 N = ( v1 – v0 ) X ( v2 – v0 ) d = -N ∙ v0 v0 v1 v2

15 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 2. 반직선 R R(t) = P0 + tV P0 : 시작위치 V : 방향벡터 t : 시간 V P0

16 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 3. 반직선과 평면과의 교점 P, t t = - (P0 ∙ N + d) / V ∙ N P = P0 + tV n V P0 P

17 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 4. 교점 p 가 삼각형 내부에 있는지 판별 hit miss

18 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 4. 교점 p 가 삼각형 내부에 있는지 판별 삼각형의 각 점에서 P로 연결한 작은 삼각형들의 와인딩 검사 ccw v0 v1 v2 ccw cw v0 v1 v2

19 Ambient Occlusion 적용방법
1. 정점당 Occ_Term 계산 4. 교점 p 가 삼각형 내부에 있는지 판별 ( v1 – v0 ) X ( p – v0 ) ∙ n >= 0 ( v2 – v1 ) X ( p – v1 ) ∙ n >= 0 ( v0 – v2 ) X ( p – v2 ) ∙ n >= 0 ccw v0 v1 v2 ccw cw v0 v1 v2

20 Ambient Occlusion 적용방법
2. Vertex Shader를 사용한 Occ_Term적용 Application loc = glGetAttribLocation(p, "occ"); glVertexAttrib4f(loc , 0, 0, 0, …occ); glVertex3fv( … );

21 Ambient Occlusion 적용방법
2. Vertex Shader를 사용한 Occ_Term적용 Vertex Shader attribute vec4 occ; ambient = gl_LightSource[0].ambient; gl_FrontColor = ambient * occ.w;

22 기타 다른 방법의 AO Ambient Occlusion Fields
SSAO (Screen Space Ambient Occlusion) Crysis에서 처음으로 선보였음 순수하게 GPU 만으로 수행됨 (실시간 처리 ) screen space에서의 각 pixel에 대하여 그 pixel 의 주변 pixel을 샘플링하고,  샘플링된 pixel들과의 depth 차이에 의해 occlusion의 정도를 결정


Download ppt "Ambient Occlusion 발표자 : 정광일 일 시 : 05.06."

Similar presentations


Ads by Google