[0108 조진현]출발 소프트웨어 렌더러
TRANSCRIPT
![Page 1: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/1.jpg)
출발 ! 소프트웨어 렌더러
조 진현
![Page 2: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/2.jpg)
신입 게임 프로그래머로 취업하기 위해서는 ?
포트폴리오 !!!
![Page 3: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/3.jpg)
그렇다면 , 최고의 포트폴리오의 조건은 ?
![Page 4: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/4.jpg)
소프트웨어 렌더러 제작 경험의 의미 !
3D 에 대한 기본적인 이해
![Page 5: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/5.jpg)
옛날 옛적에…
![Page 6: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/6.jpg)
3D 가속 카드의 발전사
![Page 7: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/7.jpg)
옛날 옛적에는 이랬어요 !! ^^
- 3D 가속 카드는 없었다 .
- 3D API 도 활용할 수 없었다
모든 것을 직접 처리해야 했다 !
![Page 8: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/8.jpg)
![Page 9: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/9.jpg)
프로그래머들의 우상 (?) 이라는 이분은…
옛날 옛적부터 직접 만드셨답니다 !!
![Page 10: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/10.jpg)
중딩 때 , 이 정도 하셨데욤 !
우리의 우상 (?) 인 이분도…
![Page 12: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/12.jpg)
![Page 13: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/13.jpg)
렌더링 종류
- 폴리곤 ( Vertex )
- 곡면 ( Patch )
- 볼륨 ( Voxel )
![Page 14: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/14.jpg)
폴리곤 렌더링 단위들
- 정점 ( Vertex )
- 삼각형- 메시 ( Mesh )
모든 것은 정점에서 시작된다 !!!
![Page 15: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/15.jpg)
왜 정점이 기본 렌더링 단위인가 ?
![Page 16: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/16.jpg)
왜 기본 다각형이 삼각형인가 ?
구현이 쉬우니깐… .
![Page 17: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/17.jpg)
렌더링 파이프라인의 기본 구성 !
장면 그래프 모듈
좌표 변환 모듈
조명 모듈
삼각형 설정 모듈
주사변환 모듈
![Page 18: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/18.jpg)
가장 기본적인 소프트웨어 렌더링을 위해서…
좌표 변환 모듈
삼각형 설정 모듈
주사 변환 모듈
![Page 19: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/19.jpg)
100% 소프트웨어 렌더링은 구현 불가능하다 !
비디오 모드에 접근할 수 없다 !
픽셀을 찍을 수 있는 방법을 강구해야 한다 !
![Page 20: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/20.jpg)
픽셀 찍기가 허락된 API 들…
3D API
Windows API
Direct2D( ? )
![Page 21: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/21.jpg)
DIB Section 으로 접근하기 !
![Page 22: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/22.jpg)
![Page 23: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/23.jpg)
선 그리기
브리젠함 알고리즘
midpoint line 알고리즘
너무 많음…
![Page 24: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/24.jpg)
삼각형을 그려보자 !
![Page 25: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/25.jpg)
클리핑 선
![Page 26: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/26.jpg)
클리핑 삼각형
![Page 27: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/27.jpg)
쉐이딩
![Page 28: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/28.jpg)
비트맵 출력
![Page 29: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/29.jpg)
픽셀 연산하기
Pixel Shader ?
![Page 30: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/30.jpg)
여기까지…
좌표 변환 모듈
삼각형 설정 모듈
주사 변환 모듈
![Page 31: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/31.jpg)
![Page 32: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/32.jpg)
행렬을 만들어서 구현해 보자
WorldTM * ViewTM * ProjTM * View-portTM
![Page 33: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/33.jpg)
투영 행렬
![Page 34: [0108 조진현]출발 소프트웨어 렌더러](https://reader033.vdocuments.site/reader033/viewer/2022061609/5588f897d8b42a0b688b45bb/html5/thumbnails/34.jpg)
참고 자료
g-matrix 김성완 선생님