07 그림자(shadow) - it.sangji.ac.krit.sangji.ac.kr/~3d/ppt/cg/07.pdf · 01 그림자(shadow)...
TRANSCRIPT
1. Color Buffer와 Depth Buffer는 쓰기위해 개방하고 Depth Test는 활성화한다.
2. 그림자에 그리기를 위한 속성을 설정하고, 광원(Light Source)의 전원을 끈다.
3. 전체 장면을 Rendering한다.
4. Shadow Volumes을 둘러싸고 있는 다각형을 계산한다.
5. 데이터를 저장하기 위해 Color Buffer 및 Depth Buffer를 비활성화하고 Depth Test는 활성화를 유지한다.
6. 만약 시점(Viewpoint) 혹은 Camera가 Shadow Volume의 외부에 있다면 Stencil Buffer를 0으로 설정하여 지우고, Shadow Volumes의 내부에 있다면 Stencil Buffer를 1로
설정한다.
7. 항상 통과(Pass)하는 Stencil Test를 설정한다.
8. 만약 Depth Test가 통과(Pass)하면 증가하기 위해 Stencil Operation을 설정한다.
9. Back Face Culling을 활성화한다.
10. Shadow Volumes을 Rendering한다. 이것은 눈에 보이는 표면(Surface)의 전면(Front)에 있는 즉, 앞에 마주하고 있는 모든 다각형에 대한 Stencil을 증가시킬 것이다.
11. 만약 Depth Test가 통과(Pass)하면 줄이기 위한 Stencil Operation을 설정한다.
12. Front Face Culling을 활성화하고 Back Face Culling을 비 활성화한다.
13. Shadow Volumes을 Rendering한다. 이것은 눈에 보이는 객체의 전면(Front)에 있는 모든 Back Facing 그림자 다각형을 감소시킨다. Stencil Buffer는 그림자가 생성될 위치
에 대한 양(+)의 값을 가진다.
14. Stencil Function을 0으로 설정한다.
15. 아무것도 하지 않는 Stencil Operation을 설정한다. Depth Buffer를 지우고, 데이터를 저장하기 위해 Color Buffer와 Depth Buffer를 활성화한다.
16. 광원(Light Source)을 켠다.
17. 전체 장면을 Rendering한다.
그림자(Shadow) Volume 01
하나의 그림자와 광원을 위한 Algorithm
4
그림자 투영(Shadow Projection) 02
간단한 Projection Shadow
12
(A) 조명이 임의의 Y축 값을 가진 경우 (B) 조명이 Y축 값을 가지지 않은 경우(Y=0)
코드 7-2
X축과 Z축으로 구성된 평면에 그림자를 투영하기 위한 간단한 Projection
Shadow Matrix