hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
Software Rasterizer

옛날에는 하드웨어 가속이 존재하지 않았기 떄문에, 프로그래머들이 지금 D3D나 OGL같은 역할을 하는 모듈을 직접 만들었습니다.

D3D나 OGL이 렌더링이 어떻게 수행되는지 이해하고 싶어서 만들어 봤습니다.
구현할 떄 클리핑 부분에 대해서 애매하게 알았던 부분을 이해했습니다.

일반적으로 책에 나와있는 것 같이 정규화된 투영공간(-1~1)에서 클리핑을 하면 발생하는 문제는 w 성분으로 나누어 줄 때 z값이 항상 양수가 되기 때문에 near 평면의 clipping을 수행할 수가 없습니다.

그래서 Homogeneous 공간에서 Clipping을 수행합니다. 이 공간은 Perspective Matrix를 적용한 즉후의 공간, 즉 w로 나눠서 투영공간을 정규화(-1~1) 해주기 이전의 공간입니다.
Homogeneous clipping에 대해서는 아래 문서에 잘 나와있습니다.

- 게임 & 인터랙티브 애플리케이션을 위한 수학 5.4.4 동차 오려내기 p.227
- http://medialab.di.unipi.it/web/IUM/Waterloo/node51.html
- [Jim Blinn] A Trip Down the Graphics Pipeline : Line Clipping


사용자 삽입 이미지


내부적으로 VertexShader, PixelShader 클래스를 만들어서 D3D의 Vertex Shader, PixelShader를 흉내냈습니다.

위스샷은 Phong Shading이 적용된 모습입니다.

sw_rasterizer_bin-shader_x.zip



BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
바보가 아닌 Mr
V i n t e r s o r g
 Visitor Statistics
Total :
Today :
Yesterday :
rss