[0108 조진현]출발 소프트웨어 렌더러

Preview:

Citation preview

출발 ! 소프트웨어 렌더러

조 진현

신입 게임 프로그래머로 취업하기 위해서는 ?

포트폴리오 !!!

그렇다면 , 최고의 포트폴리오의 조건은 ?

소프트웨어 렌더러 제작 경험의 의미 !

3D 에 대한 기본적인 이해

옛날 옛적에…

3D 가속 카드의 발전사

옛날 옛적에는 이랬어요 !! ^^

- 3D 가속 카드는 없었다 .

- 3D API 도 활용할 수 없었다

모든 것을 직접 처리해야 했다 !

프로그래머들의 우상 (?) 이라는 이분은…

옛날 옛적부터 직접 만드셨답니다 !!

중딩 때 , 이 정도 하셨데욤 !

우리의 우상 (?) 인 이분도…

또 하나의 전설 ?

렌더링 종류

- 폴리곤 ( Vertex )

- 곡면 ( Patch )

- 볼륨 ( Voxel )

폴리곤 렌더링 단위들

- 정점 ( Vertex )

- 삼각형- 메시 ( Mesh )

모든 것은 정점에서 시작된다 !!!

왜 정점이 기본 렌더링 단위인가 ?

왜 기본 다각형이 삼각형인가 ?

구현이 쉬우니깐… .

렌더링 파이프라인의 기본 구성 !

장면 그래프 모듈

좌표 변환 모듈

조명 모듈

삼각형 설정 모듈

주사변환 모듈

가장 기본적인 소프트웨어 렌더링을 위해서…

좌표 변환 모듈

삼각형 설정 모듈

주사 변환 모듈

100% 소프트웨어 렌더링은 구현 불가능하다 !

비디오 모드에 접근할 수 없다 !

픽셀을 찍을 수 있는 방법을 강구해야 한다 !

픽셀 찍기가 허락된 API 들…

3D API

Windows API

Direct2D( ? )

DIB Section 으로 접근하기 !

삼각형을 그려보자 !

클리핑 선

클리핑 삼각형

쉐이딩

비트맵 출력

픽셀 연산하기

Pixel Shader ?

여기까지…

좌표 변환 모듈

삼각형 설정 모듈

주사 변환 모듈

행렬을 만들어서 구현해 보자

WorldTM * ViewTM * ProjTM * View-portTM

투영 행렬

참고 자료

g-matrix 김성완 선생님