1 / 19

실제 구현을 위한 개념 .

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

Download Presentation

실제 구현을 위한 개념 .

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 실제 구현을 위한 개념.

  2. 왜 DX 가 아니지? 빛의 시뮬레이션을 위한 도구. • Backword Ray-tracing.

  3. 그림자 part2

  4. 그림자의 역활 • 그림자의 방향으로 광원의 위치를 추측. 광원과 반대 방향이다. • 공간 파악. 얼마나 지면으로 부터 떨어져 있는가?

  5. 그림자의 종류

  6. 투영 텍스쳐 그림자 • 조명의 위치에 카메라를 배치. • 조명이 비추는 방향으로 카메라를 바라보게 해서 투영. • 이렇게 생성된 화면을 그림자로 사용. 물체가 있는 곳에는 바닥의 화면이 가려지기 때문...

  7. 투영 텍스쳐 그림자 고려 사항 • 투영된 NDC 좌표계를텍스쳐좌표계로 변환해 주어야 한다.(-1~1), ( 1,1)  ( 0,0), (1,1)  광원과 반대 방향이다. • 원래 모델보다 폴리곤 수가 적은 모델을 사용해서 부하를 줄일 수 있다.( 원형 그림자나 평면 투영 그림자도 같은 이점을 가짐 ) • 많은 캐릭터의 그림자를 한번에 그릴 수 있다.한 개의 텍스쳐에 모든 캐릭터의 그림자를 그린 후에,마지막에 지면에 렌더링한다. • 자기 그림자 효과를 처리할 수 없다.

  8. 투영 텍스쳐 그림자 생성 원리. • 투영 공간의 폭은 2이며, 텍스쳐좌표계의y 가 반대이다. • 투영공간(x,y)과 텍스쳐 좌표(u,v의 관계)U = +0.5X + 0.5V = -0.5Y + 0.5

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

  10. 깊이 버퍼 그림자 • 광원 방향에서 본 깊이 값을 깊이 버퍼에 저장. 광원과 물체와의 거리를 계산. • 광원의 방향에 카메라를 위치시켜 텍스쳐를 생성.화면에 보이는 모든 물체를 렌더링.카메라와 물체 사이의 거리를 깊이 버퍼에 저장. ( 큰 텍스쳐가 필요 ) • 자기 그림자 처리.( 현실적인 느낌 ) • 부하가 크다. • 그림자 맵의 해상도에 따라 품질이 달라진다.

  11. 깊이 버퍼 그림자

  12. 깊이 버퍼 그림자 처리 단계. • 빛의 방향에 카메라를 위치시키고 투영 변환. • 투영 변환된 값에서 Z값만 런더. 텍스쳐에 저장( 그림자 맵) • 카메라 방향에서 렌더링. • 카메라 방향에서 볼 수 있는 픽셀의 좌표를 라이트뷰 좌표로 변환 • 라이트뷰에서렌더링했을때텍스쳐의몇번째 픽셀에 그려지는지 검사 • 라이트뷰에서렌더링했을때의 깊이 값 조사 • 추출한 픽셀의 깊이 값을 2단계 깊이 텍스쳐에서 추출. • 깊이 값을 비교해서 더 깊으면 그림자 처리 • 그림자 맵이 생성될 때는 z-버퍼링만 필요하다. 즉, 조명 처리, 텍스처 처리 그리고 색상값을 색상 버퍼에 쓰는 기능들은 꺼도 된다.

  13. 깊이 버퍼 그림자 생성 원리. • 정점 쉐이더에서 빛의 방향에서 바라본 투영 변환 행렬로모든 정점을 투영 변환 시킨 후, 투영 공간의 좌표 값을픽셀 쉐이더로 넘긴다. • Z 값을 얻기 위해서 z값을 w로 나누어 0~1범위로 얻는다.

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

  15. 그림자 맵 만들기 R32F 포맷

  16. 깊이 버퍼 그림자 코드 (VS) 그림자 맵에서깊이값을 가져오는 인덱스가 된다,

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

  18. 쌍선형 보간 (PS) 그림자 맵에는z/w 값이 저장되어 있다. 그림자맵에 저장된 값보디 더 작다면, 그림자이다.

More Related