19

실제 구현을 위한 개념

Embed Size (px)

DESCRIPTION

실제 구현을 위한 개념. 왜 DX 가 아니지 ?. 빛의 시뮬레이션을 위한 도구. Backword Ray-tracing. 그림자 part2. 그림자의 역활. 그림자의 방향으로 광원의 위치를 추측 .  광원과 반대 방향이다 . 공간 파악 .  얼마나 지면으로 부터 떨어져 있는가 ?. 그림자의 종류. 투영 텍스쳐 그림자. 조명의 위치에 카메라를 배치 . 조명이 비추는 방향으로 카메라를 바라보게 해서 투영 . - PowerPoint PPT Presentation

Citation preview

Page 1: 실제 구현을 위한 개념
Page 2: 실제 구현을 위한 개념

실제 구현을 위한 개념 .

Page 3: 실제 구현을 위한 개념

빛의 시뮬레이션을 위한 도구 .

Backword Ray-tracing.

Page 4: 실제 구현을 위한 개념

그림자 PART2

Page 5: 실제 구현을 위한 개념

그림자의 역활 그림자의 방향으로 광원의 위치를 추측 .

광원과 반대 방향이다 . 공간 파악 .

얼마나 지면으로 부터 떨어져 있는가 ?

Page 6: 실제 구현을 위한 개념

그림자의 종류이름 부 하 임의의 형상 자기 그림자 특징

원형 그림자 가장 적다 X X물체의 형태가

안나온다 .

평면 투영 그림자 적다 X X 평면에만 사용 가능

스텐실 그림자 크다 O O 정점 수가 많다

투영 텍스쳐 그림자 적당 O X 하나의 물체에만 가능

우선 순위 버퍼 그림자 크다 O X

자기 그림자가 안나온다 .

깊이 버퍼 그림자 크다 O O부분적으로 깜빡임이

있음

Page 7: 실제 구현을 위한 개념

투영 텍스쳐 그림자 조명의 위치에 카메라를 배치 . 조명이 비추는 방향으로 카메라를 바라보게 해서 투

영 . 이렇게 생성된 화면을 그림자로 사용 .

물체가 있는 곳에는 바닥의 화면이 가려지기 때문 ...

Page 8: 실제 구현을 위한 개념

투영 텍스쳐 그림자 고려 사항 투영된 NDC 좌표계를 텍스쳐 좌표계로 변환해

주어야 한다 .(-1~1), ( 1,1) ( 0,0), (1,1) 광원과 반대 방향이다 .

원래 모델보다 폴리곤 수가 적은 모델을 사용해서 부하를 줄일 수 있다 .( 원형 그림자나 평면 투영 그림자도 같은 이점을 가짐 )

많은 캐릭터의 그림자를 한번에 그릴 수 있다 . 한 개의 텍스쳐에 모든 캐릭터의 그림자를 그린 후에 , 마지막에 지면에 렌더링한다 .

자기 그림자 효과를 처리할 수 없다 .

Page 9: 실제 구현을 위한 개념

투영 텍스쳐 그림자 생성 원리 .

투영 공간의 폭은 2 이며 , 텍스쳐 좌표계의 y 가 반대이다 .

투영공간 (x,y) 과 텍스쳐 좌표 (u,v 의 관계 )U = +0.5X + 0.5V = -0.5Y + 0.5

Page 10: 실제 구현을 위한 개념

투영 텍스쳐 그림자 생성 원리 .

Page 11: 실제 구현을 위한 개념

깊이 버퍼 그림자

광원 방향에서 본 깊이 값을 깊이 버퍼에 저장 .

광원과 물체와의 거리를 계산 .

광원의 방향에 카메라를 위치시켜 텍스쳐를 생성 .

화면에 보이는 모든 물체를 렌더링 .

카메라와 물체 사이의 거리를 깊이 버퍼에 저장 .

( 큰 텍스쳐가 필요 )

자기 그림자 처리 .( 현실적인 느낌 )

부하가 크다 .

그림자 맵의 해상도에 따라 품질이 달라진다 .

Page 12: 실제 구현을 위한 개념

깊이 버퍼 그림자

Page 13: 실제 구현을 위한 개념

깊이 버퍼 그림자 처리 단계 .

빛의 방향에 카메라를 위치시키고 투영 변환 . 투영 변환된 값에서 Z 값만 런더 . 텍스쳐에 저장 ( 그림자

맵 ) 카메라 방향에서 렌더링 . 카메라 방향에서 볼 수 있는 픽셀의 좌표를 라이트 뷰 좌표로

변환 라이트 뷰에서 렌더링 했을때 텍스쳐의 몇번째 픽셀에

그려지는지 검사 라이트 뷰에서 렌더링 했을때의 깊이 값 조사 추출한 픽셀의 깊이 값을 2 단계 깊이 텍스쳐에서 추출 . 깊이 값을 비교해서 더 깊으면 그림자 처리 그림자 맵이 생성될 때는 z- 버퍼링만 필요하다 .

즉 , 조명 처리 , 텍스처 처리 그리고 색상값을 색상 버퍼에 쓰는 기능들은 꺼도 된다 .

Page 14: 실제 구현을 위한 개념

깊이 버퍼 그림자 생성 원리 .

정점 쉐이더에서 빛의 방향에서 바라본 투영 변환 행렬로모든 정점을 투영 변환 시킨 후 , 투영 공간의 좌표 값을픽셀 쉐이더로 넘긴다 .

Z 값을 얻기 위해서 z 값을 w 로 나누어 0~1 범위로 얻는다 .

Page 15: 실제 구현을 위한 개념

깊이 버퍼 그림자 오류 상황 .

Page 16: 실제 구현을 위한 개념

그림자 맵 만들기

R32F 포맷

Page 17: 실제 구현을 위한 개념

깊이 버퍼 그림자 코드 (VS)

그림자 맵에서 깊이값을 가져오는 인덱스가 된다 ,

Page 18: 실제 구현을 위한 개념

깊이 버퍼 그림자 코드 (PS)

Page 19: 실제 구현을 위한 개념

쌍선형 보간 (PS) 그림자 맵에는 z/w 값이 저장되어 있다 .

그림자맵에 저장된 값보디 더 작다면 , 그림자이다 .