[0911 황대영] 렌더링 파이프라인
-
Upload
daeyoung-hwang -
Category
Technology
-
view
3.217 -
download
8
description
Transcript of [0911 황대영] 렌더링 파이프라인
![Page 1: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/1.jpg)
렌더링 파이프라인
DevRookie 황대영
![Page 2: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/2.jpg)
렌더링 파이프라인 정의렌더링 파이프라인실전 코드
![Page 3: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/3.jpg)
렌더링 파이프라인 정의렌더링 파이프라인실전 코드
![Page 4: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/4.jpg)
이해 필요성 ?
셰이더 프로그래밍
렌더링 속도의 최적화
![Page 5: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/5.jpg)
컴퓨터는 0 과 1 만을 구분할 줄 아는 어쩌면 바보 상자
그렇다면 어떻게 3D 세계를 보여줄 수 있나 ?
![Page 6: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/6.jpg)
3D 세계에 주전자가 실제로 존재하는가 ?
2D 모니터 안의3D 가상세계
가짜다 !!
![Page 7: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/7.jpg)
3D 세계에 대한 기하학적 표현과이 세계를 바라보는 관점을 정의하는 가상카메라를 이용해 2D 이미지를 만들어내는 과정
렌더링 파이프라인 ?
![Page 8: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/8.jpg)
렌더링 파이프라인 정의렌더링 파이프라인실전 코드
![Page 9: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/9.jpg)
전체 렌더링 파이프라인
테셀레이션 클리핑 투영 뷰포트 래스터라이즈
텍스처 적용 렌더 백엔드
로컬 변환 월드 변환 뷰 변환 후면 추려내기 조명
출력
![Page 10: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/10.jpg)
1. 로컬 (Local) 변환
모델 하나의 고유의 좌표계 ( 모델 좌표계 )
모델 뷰어와 같이 단일 개체를 표현하는 데에는 문제 없음
![Page 11: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/11.jpg)
2. 월드 (World) 변환
로컬 스페이스의 개체들을 월드 좌표계로 변환
이동 , 회전 , 크기 변형
![Page 12: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/12.jpg)
3. 뷰 (View) 변환 ( 카메라 변환 )
카메라를 좌표계의 원점으로 변환=> 모든 개체들 변환
![Page 13: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/13.jpg)
4. 후면 추려내기 (back-face culling)
두르기 순서의 시계 방향에 지정된 폴리곤을 전면 (front-face) 폴리곤으로 설정
![Page 14: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/14.jpg)
5. 조명 (Light)
광원 벡터 , 시선 벡터 , 법선 벡터 등 조명 계산식을 이용해 정점의 색상 계산
![Page 15: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/15.jpg)
6. 테셀레이션 (Tesselation)
GPU 에서 정점을 자유자재로 증가 , 감소
![Page 16: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/16.jpg)
7. 클리핑 (clipping)
시야를 벗어나는 폴리곤잘라냄
시야 절두체 기준
![Page 17: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/17.jpg)
8. 투영 (projection)
3 차원에서 2 차원을 얻는 과정
원근투영 / 직교투영
![Page 18: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/18.jpg)
9. 뷰포트 (viewport) 변환 (screen map-ping)
윈도우 화면 좌표로 변환
![Page 19: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/19.jpg)
10. 래스터라이즈 (triangle setup)
변환이 끝난 폴리곤을 화면에 보여줄 픽셀로 계산
결과물 - 모니터에디스플레이 될 2D 이미지
![Page 20: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/20.jpg)
11. 텍스처 적용UV 좌표계 이용 (0~1)
![Page 21: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/21.jpg)
12. 렌더 백엔드
비디오 메모리에 써넣어도 좋을 것인가 ?• 알파 테스트 (Alpha Test)• 스텐실 테스트 (Stencil Test)• 깊이 테스트 (Z buffer Test)
![Page 22: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/22.jpg)
12. 렌더 백엔드
비디오 메모리에 어떻게 써넣을 것인가 ?• 알파 블렌딩 (Alpha Blending)• 안개 (Fog)• 안티앨리어싱 (Anti-aliasing)
![Page 23: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/23.jpg)
렌더링 파이프라인 정의렌더링 파이프라인
실전 코드
![Page 24: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/24.jpg)
VOID SetupMatrices(){
// 월드 변환D3DXMATRIXA16 matWorld;D3DXMatrixIdentity( &matWorld );g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
// 뷰 ( 카메라 ) 변환D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f ); // 눈의 위치D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f ); // 눈이 바라보는 위치D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );// 천정방향을 나타내는 상방벡터D3DXMATRIXA16 matView;D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
![Page 25: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/25.jpg)
// 투영 변환D3DXMATRIXA16 matProj;// matProj : 값이 설정될 행렬// D3DX_PI/4 : FOV ( 시야각 )// 1.0f : 종횡비 ( 가로세로의 비율 )// 1.0f : 근접 클리핑 평면 (near clipping plane)// 100.0f : 원거리 클리핑 평면 (far clipping plane)D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
![Page 26: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/26.jpg)
리뷰
![Page 27: [0911 황대영] 렌더링 파이프라인](https://reader031.fdocument.pub/reader031/viewer/2022012403/5562454fd8b42a74188b5941/html5/thumbnails/27.jpg)
참고자료• Windows DirectX Graphics 문서• DirectX 9 를 이용한 3D GAME 프로그래밍 입문• 3D 게임 프로그래밍 ( 개정판 )• 알로샤님의 블로그 http://bit.ly/9vtHSg• 조해성 ( 켈 ) 님의 데브루키 발표자료