Graphics Programming

집에서 코딩하면서 드는 이런저런 잡다한 생각 본문

Season 2

집에서 코딩하면서 드는 이런저런 잡다한 생각

minseoklee 2019. 12. 30. 04:31

도대체 언제적 상태인지 내 블로그를 뒤져보니 2016년 1월이었다. 갓 대학교 4학년 된 때구먼 -_-; 이 때 보더랜드 2를 그렇게 열심히 했는데.

취업하고 손을 놓았다. 집에서 게임을 하도 해서 게임이 질릴 때만 코딩했더니 3년간 만든 게 톤 매핑, 스켈레탈 애니메이션, 뎁스 오브 필드 뿐이다.

이건 올해 시작한 CPU 레이트레이서인데 OpenGL 프로젝트가 눈에 밟혀서 얼마 못 만들고 우선순위에서 밀렸다. 그래도 만들어보니 "OpenGL이나 DirectX로 리얼 타임 렌더링을 해야지 무슨 요즘 시대에 CPU 레이트레이서임?" 은 정말 잘못된 생각이었다. 훨씬 적은 코드로도 품질이 그럭저럭 나오며 PBR이나 라이팅 이론을 이해하기 훨씬 좋은 환경이라고 생각한다.

코드 막 뜯어고치는 중인 지금의 결과물. 사실 코드를 어마어마하게 갈아엎었지만 렌더링 퀄리티 자체는 크게 개선되지 않았다.

원본 레퍼런스 이미지. 퀄리티가 억만년 떨어져있다. 내 렌더링에는 거울의 리플렉션이 없고, 투명 재질(화면 가운데 유리병)을 지원하지 않고, 바닥에 SSR이 없고, 밖에서 들어오는 스카이 라이트도 없다. 그냥 GI 요소가 대부분 빠져있다. CSM과 DOF는 버그가 있어서 꺼뒀고, 모델 로더도 너무 대충 만들어서 바닥 재질은 예전에 만들어뒀던 퐁 셰이딩 패스를 타고 있다. 라이트맵 베이킹은... 나중에 생각하고... 그나마 SSAO를 넣긴 했는데 퀄리티가 너무 후져서 GPU Zen 1권에 있는, 섀도우 워리어에서 썼다는 구현을 보고 있다.

지금의 내 수준은 Real-Time Rendering, Physically Based Rendering 같은 책에 나오는 라이팅 이론이나 GPU Pro, Game Programing Gems 같은 책에 나온 테크닉들을 읽고 이게 무슨 말인지 이해하는 수준이다. 몇 년 전에는 이런 책을 읽어도 무슨 말인지 이해가 잘 안 되었는데 이제 이해라도 할 수 있어서 다행이다.

혼자 삽질한 시간이 너무 아깝다. 왜 내가 다닌 대학교에는 이런 강의가 없었을까? 지금 생각해보니 우리 과에는 그래픽스 연구실이 제일 많았는데 정작 학부생 그래픽스 수업은 제일 빈약했다. 3D 그래픽스와 관련 있는 유일한 강의에서는 OpenGL 4.x 나온 마당에 아직도 OpenGL 1.0을 가르쳤고, 이미지 프로세싱 강의에서는 최종 과제가 소벨 필터를 이용한 가장자리 검출이었나? 취업하고도 나를 이끌어줄 사람은 몇 명 없었고 그 사람들마저 곧 다른 부서나 직장으로 떠나버리거나 일이 너무 바빠서 내가 알아서 해야 하는 경우가 많았다.

게임이나 퍼질러 한 시간을 생각해보면 내가 공부를 썩 열심히 했다고는 말할 수 없지만, 그래도 뭘 어떻게 배울지 잘 알려주는 사람이 있었다면 내 실력이나 성취가 지금보다 크게 앞서있지 않았을까? 그래픽스 전공하고 취업해서 처음부터 렌더링 일 잘 하고 있을 프로그래머들 생각하면 내가 거북이라도 된 것 같다. 후회해봤자 이제와서는 별로 의미 없기는 하다. 맨땅에 헤딩을 하도 하다 보니 결국 온갖 그래픽스 자료를 수집했고 그걸 혼자 배울 준비는 되어버렸기 때문에 -_-; 이제 그걸 결과물로써 입증해야 하고, 못하면 내가 준비가 되었다고 혼자 착각한 것이고... 알아서 노력하는 수 밖에 없다.

Comments