< 개인적으로 내가 걸어온 길이고 무조건 맞고 효율적인건 아님. 참고정도로만 봐줘. 반박시 니 말이 맞음! >
- 미적분학 + 선형 대수학(벡터, 행렬, 변환에 대한 이해 위주로)
- 수치 해석(심화된 그래픽스 이론들 이해에 어느정도 필요함)
- C++
- 자료 구조/알고리즘/OS (렌더링에 직접적으로 연관이 있다기보다는, 최적화 기법들과 연관성이 있음)
- 기초 컴퓨터 그래픽스 이론(색 이론, 카메라, 오브젝트, 빛, 셰이더에 대한 이해, 렌더링 파이프라인에 대한 이해 : 기본)
--------------------------------------------------------------------
< 여기까지가 보통 대부분 대학 학부 과정에서 다루는 내용이라 생각함 >
--------------------------------------------------------------------
- 영어(읽기) : 어쩔 수 없다, 국내에서 얻을 수 있는 정보가 특히나 적은 분야라고 생각함. 학부에서 가르쳐주는 내용 이후부터 얻어야하는 정보는 대다수(사실상 전부)가 영어로 되있다.
- LearnOpenGL 과 같은 튜토리얼 사이트를 참고해가면서 좀 더 깊숙히 파고들기(그래픽스 라이브러리랑 친해지기)
<LearnOpengl로 한번 해보고, 최근에 나도 읽고 있는 책인데 3D Graphics Rendering Cookbook(Packt Pub. 2021) 도 여러 기법들이랑 최적화 기법, 그리고 모던 OpenGL API들이랑 Vulkan 활용에 대해서도 다뤄서 괜찮은 것 같음! 다만 앞에서 언급한 내용들은 잘 숙지해야 함!>
- 기초적인 광학 지식(Geometrical optics)
- 실제로 게임 엔진들에서 사용하는 반사 모델들(BRDF, BSDF, BSSRDF, ...)에 대한 지식(Unreal Engine, Frostbite, Filament 등 여러 게임/실시간 렌더링 엔진들이 이를 정리해둔 아티클들을 배포하고있어서 구글링 하면 쉽게 찾을 수 있음)
< 예를 들어, Real Shading in Unreal Engine 4<Siggraph 2013> 에는 어떤 라이팅 모델, BRDF 등을 사용했는지 나와있고 셰이더 코드까지 어느정도 제공해줘서 좋다고 생각함. 좀 더 자세한 내용을 담고있고 figure도 많이 제공해주는 EA의 Frostbite 엔진에서 어떻게 했는지 알려주는 문서로는 Moving Frostbite to Physically Based Rendering<Siggraph 2014>이 있고. 여기에 Google의 Filament 프로젝트 Core documentation 도 관련 내용을 깔끔하게 잘 정리해뒀으니 꼭 읽어보는걸 추천함 >
- GDC 같은 게임 개발 컨퍼런스에서 최근에 어떤 기법들이 주류로 떠오르는지 찾아서 공부/구현 해보기
< 멤버쉽이 있어야 들을 수 있는 내용도 있지만, 대부분의 경우 무료로 자료 열람이 가능하고, 보통 많이 들어본 게임들이나 게임 개발사들이 많이 발표함. 꼭 렌더링 기법들 뿐만 아니더라도 게임 프로그래밍에 필요한 예를 들어 디버깅 기법들이나 프로파일링, 메모리 관리, 멀티 플랫폼 대응, AI 적용등 여러 흥미로운 내용이 많으니까. 꼭 한번 둘러보는걸 추천 >
Realtime Rendering(A K Peters/CRC Press; 최신 번역서 없음;) 같은 서적을 찾아서 실시간 렌더링 기법(그림자, 애니메이션, 톤 매핑, 후처리, off-screen 렌더링 기법들)들에 대한 포괄적인 레퍼런스 확보하기
- 최신 그래픽스 API(Direct3D 11, OpenGL 4.x)들 에 대해서 공부하고, 기본적인 셰이더 뿐만아니라 여러 보조적인(Geometry Shader, Tessellation Stage, Compute Shader)들의 활용법에 대해서 공부하기
< 특히 여기서는, 일단 만들어보는게 중요함. 일단 만들어보고 기능들을 계속 추가해나가면서 확장해나가는게 실력 향상, 이해에 많은 도움이 되고. 튜토리얼에서 제공하는 기본적인 기능들에서 더 최적화 할려면, 더 좋게 보이게 할려면 어떻게 해야할지에 대해 계속 고민하고, 시도해보는걸 추천함. 또한 일단 내맘대로 만들어보되, 끊임없이 다른 사람들은 어떻게 만들었는지를 깃헙에 소규모 게임 엔진, 또는 렌더링 엔진들의 소스코드를 분석해나가면서 최적화/개선 해가는게 중요한 것 같음. >
------------------------------------------------------------------
여기까지가 기본적으로 게임 엔진 개발/실시간 렌더링 기법들에 대한 공부의 마지노선. 아래 부터는 자체적으로 R&D나 더 복잡한 현상들에 대한 모델링, 기법, 그리고 최신 연구(논문)들을 따라가기 위해서 알아야 하는 내용들. 여기서 부터는 책을 읽더라도 전부를 이해한다기보다는 이런게 있구나 정도로 이해하는 식으로. 그러다가 이부분에 대해서 조금 더 알아보고 싶은데? 하는것들은 책에서 reference로 쓴 논문이나 자료들. 또는 Further Reading에 있는 자료들을 직접 더 찾아보는 식으로.
특정 기술에나오는 어떤 현상/기법을 설명하기 위해서 수학/물리적 개념들을 사용하는 경우가 많은데. 이런 개념들이 어떤 현상을 나타내는지에 대한 직관적인 이해만 할 수 있어도 충분하고. 더 깊게 공부할 필요성이 있는 경우에만<또는 직관적인 이해가 되지 않는 경우> 다른 분야(대표적으로 공학수학/수치해석 기법/통계 및 확률 이론/샘플링 이론/알고리즘 기타..)에서 취사선택해서 공부할 필요가 있음.
------------------------------------------------------------------
- GPU의 구조/동작 방식에 대해서 더 자세하게 파고들어 보기(GPU 아키텍쳐 whitepaper 들이나 CUDA에서 설명하는 개념, 그리고 OS 배우면서 들어봤을 캐싱 개념들도 중요함)
- 기초적인 Raytracing, Raymarching 등 오프라인 렌더링 기법들(RTX 이후로 실시간 렌더링에서도 활용 가능)
- 개인적으로 Raytracing 구현의 시작은 Ray tracing in one weekends 시리즈 를 추천하고 싶음. 0부터 기본적인 ray tracer에 대한 간단한 구현부터 BVH-tree 같은 가속 구조, 그리고 뒤로 갈수록 더 복잡한 알고리즘들을 step by step으로 구현해볼 수 있는 몇안되는 튜토리얼임! 실제로 CPU 상에서 돌아가고, 결과물을 뽑아 볼 수 있으니 C++ 에 거부감만 없다면 정말 뿌듯하고 재미있게 할 수 있다고 생각함.
- Advanced Global Illumination(원서) : GI 효과를 구현하는데(Offline Rendering) 쓰이는 여러가지 알고리즘(Radiosity, Path tracing)들에 대한 이론적인 설명이 무척 잘 되어있다고 생각함. 또한 그 알고리즘들을 이해하는데 필요한 수학적인 도구(확률, Monte-Carlo Method, Solid Angle)들이나 물리학 측면에서 필요한 지식들 또한 간단하게 다루고 있으므로. 만약 PBRT를 읽을 사람들이나 또는 렌더링에서 특히 Global Illumination이나 Light Transport에 관심있는 사람들에겐 강추해주고 싶음.
- 공학 수학 + 심화 수치 해석 기법들 + 통계/확률 이론
- PBRT( 웹에서 무료로 볼 수 있음 ; 번역서도 있음) 와 같은 서적으로 오프라인 렌더링에 대한 고급 이론들 공부하기 (전부 100% 이해한다기 보다는 필요한 부분, 그리고 흥미있는 부분부터 읽어 나가기, 초반에 설명하는 구조적인 부분만 제대로 숙지해두면 어느 챕터부터 읽든 상관없도록 구성되있음.)
- 최신 연구 동향 파악해서 따라가기(Siggraph, Eurographics 같은 학회에서 발표되는 연구들 찾아보기). 만약 아이디어가 있다면 직접 연구를 통해 현상을 모델링, 구현해보기
- Vulkan/Direct3D 12 와 같은 모던 그래픽스 라이브러리들에 대한 이해 및 활용
- 자신만의 렌더링 엔진(또는 게임 엔진) 계속 개발해나가기
-------------------------------------------------------------------------
* 마지막으로 덧 붙이자면 물론 그래픽스 라이브러리에 대해서 잘 아는것, 예를 들어 Direct3D 9, 11, 12.. OpenGL, Metal, Vulkan 등 많이 알고, D3D 12, Vulkan을 쓸 줄 아는것도 중요하겠지만은, 그래픽스 라이브러리 사용 유무가 공부를 하는 주 목적이 되지 않도록 주의하면 좋을 것 같음. 또한 진짜 개인적인 생각이지만 그래픽스 라이브러리를 D3D12, Vulkan으로 시작하지 않았으면 좋을 것 같음. 왜냐하면 이 둘의 특징이 기존에 드라이버에서 하던 작업들을 끄집어내서, 나쁘게 말하자면 프로그래머 한테 이 일을 덤탱이 씌운것(좋게 말하자면 더 로우레벨 컨트롤이 가능해졌다지만)이라서 이런 일들을 먼저 하다보면 배우는데 시간도 오래걸리고, 쉽게 지칠 수 있다고 생각함. 그러니까 D3D11, OpenGL을 위주로 먼저 공부를 하면서, 차라리 간단한 렌더링 라이브러리(엔진)을 만들면서 기본적인 내용들에 익숙해진 다음에 위 내용들을 다루면 좋다고 생각함.
나도 괜히 이런저런 라이브러리 만져보겠다, 다 배워서 라이브러리 만들어 보겠다고 깝치다가 년단위로 시간 날려먹었고 허비했음
2022/04/23 Advanced Global Illumination, Ray tracing in one weekends series 추가
다렉11 책 추천좀요
아에 노베이스에서 다렉 11 책 추천해달라해도 해줄수 있는건 루나 아저씨 책 밖에 없을거임. 만약 자기가 컴퓨터 그래픽스 이론을 숙지하고 있다면, "실용 Direct3D 11 렌더링 & 계산" 이라는 책을 추천함. 자세하게 설명되있을 뿐만아니라, 레퍼런스로도 쓸 수 있는 책이라
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788994405131
ㄳㄳ
어렵고 전문성은 있는데... 일자리는 있긴함?
킹치만 재미있는걸..
ㄸ 무섭다
그 책중에 physically based rendering라고 있는데 읽을만함?
읽을만 하다기에는 조금 어려운책임, 오프라인 렌더링에서 쓰이는 많은 테크닉들을 종합적으로 정리한거라. 책 한권으로 모든 내용을 이해하기위한 책 이라기보다는, 어떤게 필요할때 찾아보는 레퍼런스에 가까운 책이라고 생각함. 물론 그럼에도 기초적인 내용(알고리즘)도 있고, 알고리즘들이 어떻게 구현되는지 살펴보기 좋은 책이라 생각함(PBRT 소스코드 전체를 쌩으로 분석하기보다).
Raytracing에 대해 간단하게 알고싶다면, PBRT를 먼저 보기보다는 Raytracing in one weekend 시리즈(
https://raytracing.github.io/)를
먼저 보는걸 추천함. 무료기도하고, 실제로 간단한 레이트레이서를 직접 구현해볼 수 있고. 이걸 한번 해본다음에 PBRT를 보면 더 수월하게 파악가능함
리얼타임은 아닌데 내용이 매우 좋음 , 위 PBRT 가 그 책에서 구현하면서 나온 소스임
PBR책 꼭읽어라 이게 탑중에 탑임
learnopengl 지금 모델로딩하는 부분 보고있는데 움직이게 하고싶어요. learnopengl에 있는 스켈레톤 이거 바로 봐도 상관 없을까요?
나도 LearnOpenGL에 있는 모든 내용을 해본건 아니라 모르겠는데, 코멘트를 보면 그래도 최초 개시때보다 많이 수정/개선한 것 같으니까 한번 해보면 될 것 같음.
nerf하십시오
이런거배우려면 어느학과가야해요???
컴공과/소프트웨어/컴퓨터과학과, 하지만 위에 나오는 내용을 따로 가르쳐주진 않을거임. 학부과정 소화 하면서 +a로 공부해야했음
학생임 실무자임?
이제 백수임..
일하다 퇴사했다는건가?
아니 올해 학부 졸업했워
그래서 아직 많이 부족함.. 공부할 거리도 많고 구현 해야할것도 많고
아 게임업계 사람이면 뭐좀 물어보려했는데
게임 업계 목표로 하고있긴한데, 아직 군문제도 있고 해서 내가 따로 해줄수있는 말은 없을 것 같네ㅜㅜ
대학원 안가고 뭐해 그래픽스 대학원 박사까지 가즈아
고급정보는 개추야~~~
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791189909376&orderClick=LAG&Kc=
웹프론트
땔감이 이걸로 입문하려고 하는데 어떻게 생각하시나요 선생님. 참고로 고등학교 이과수학하고,물1,물2는 할줄 앎
사서 읽어보지는 않았는데, 있을내용 다있고, 부족하다 느끼는 부분은 선대책, 그래픽스책 찾아가면서 공부하면 좋을 것 같음!
답변 고맙읍니다 만수무강 행복하십셔
반박완료
전문성이 엄청 높아보이는데 이런 직군은 연봉 밴드가 어캐댐? - dc App
위 댓글에도 써뒀듯이 이런저런 문제로, 아직 연봉이 어느정도 된다, 수요가 어떻다를 말할 수 있는 단계는 아닌것 같음.. 공부는 했어도 어디까지나 그냥 좋아서 한거라
딱히 생각해본적도 없고
흠 뭔가 공급 수요 둘다 되게 적을거같은데.. 게임회사나 어도비 같은곳 취업하나?.? - dc App
게임 개발, 디즈니 리서치/어도비, 기타 CG 회사들에 취업할듯? 나같은 경우엔 게임 개발쪽을 목표로 하고있고
개멋있다 ㅅㅂ 공부할건 산더미여도 뒤질때까지 일못해서 굶어 죽을일은 없을거같네 - dc App
나도 더 열심히 해야할 것 같다 ㅠㅠ..
직접 만든거 어느정도 수준까지 구현함?? - dc App
뭐 간단한 프레임워크(Entity-Component, Scene Serialization, Logging, Resource 관리 등), 물리기반 렌더링 플로우, Voxel Cone Tracing GI(Single bounce), SSAO, SSR, Pixel shader 기반 ray tracing, DOF, Blur, Bloom, HDR rendering pipeline, 간단한 렌더링 그래프, View frustum culling(AABB, CPU 기반) 정도?
Tone mapping에 Eye adaptation 도
지금은 Vulkan 공부하면서, 렌더 그래프 관련해서 좋은 아티클 발견해서, 보고 구현하면서 Vulkan 기반 렌더링 프레임워크에, Skeletal Animation, SDFGI(Signed Distance Field Global Illumination)에 SSR, Bokeh DOF, GPU 기반 Culling 구현 해볼려고 계획중임!
CSM도 아직 구현안해봐서 이번 기회에 구현해볼듯
맘 같아서는 Linear-Light Shading with Linearly Transformed Cosines(Heitz17)랑 Atmospheric Scattering 모델(Hillaire20), Volumetric Fog 까지 해보고 싶긴한데 3개월안에 다 못 끝낼듯..
개추
비전이랑 그래픽스는 얼마나 관련있음? 공부하면 겹치는 부분 있음?
개인적으로 비전은 이미 만들어진 이미지를 분석하는 분야, 그래픽스는 주어진 데이터 셋(뭐 Scene에서의 geometry 정보나 표면들의 재질 특성들, 카메라의 위치, 렌즈의 생김새)로 부터 이미지를 만들어 내는 분야라고 생각해서 엄밀히 따지면 둘은 다르지만 그래픽스의 경우 최종 이미지에 추가적인 작업(post-process)와 같은 걸 하는데 비전에서 온 지식을 활용 할 수 있고. 비전 또한 주어진 이미지로부터 데이터 셋을 역으로 알아내거나(Inverse rendering), 그런 사전 정보들로 여러가지를 할 수 있기때문에 서로 아주 밀접한 관계라고 할 수 있는 것 같음
개추. 혹시 그래픽스 이론이나 API사용법 말고 렌더링 엔진 구조(오브젝트 관리나 데이터 직렬화, ECS)같은건 어떻게 공부했음? 다른사람들이 만든 오픈소스 엔진 보면서 배우는거밖엔 답없나?
나도 아직은 렌더링/게임 엔진 구조에 대해서 모든걸 완벽하게 이해하고 만드는 건 아니라 뭐라 깊게 답을 못해줄 것 같네. 다만 내가 만들었던 프레임워크나, 만들려고 하는 것들은 오픈소스 프로젝트들이나 GDC에서 발표된 내용들을 최대한 직접 구현해볼려고 하고있고. 기본적으로 ECS 와 같은 구조를 차용하되, 최대한 간단하게 유지하고, 아직까진 기술 자체의 구현을 1순위로 둘려고 노력하고 있어.
그래픽스 진로로 대학원 들어가려고 하는 학생입니다. 마땅한 로드맵이 없어서 굉장히 애먹었는데 이렇게 잘 써주니 참고가 됩니다. 감사합니다...
최근에 Advanced Global Illumination 이라는 서적을 접하게 되서 공부하고있는데, 혹시 오프라인 렌더링이나 Global Illumination 기법들(혹은 Light Transport 전반에 걸쳐서)에 관심 많으시면 PBRT에 앞서 읽어보시길 강력하게 추천드립니다.
옛날에 알고는 있었는데, 나중에 읽어야지 했다가 지금에서야 읽어보고 있는데. 진짜 기본적인 내용, 이론들이 잘 정리되있는것 같아요.. 조금 더 읽찍 먼저 읽어봤으면 좋았을 것 같은 책중 하나가 될 것 같습니다 ㅋㅋ
너무너무 도움이 되었음!
대단하다... 이제 csapp 다떼고 학부 graphics 과제 c++로 해보고 있는데 언제 pbr rtr 읽냐 싶다 ㅋㅋ 잘 참고할게여
나 엔진 개발 20년차인데, 블렌더 파이썬 공부해라... 렌더링처럼 쓸데없는거 하지 말고... 모델링이나 애니메이션 쪽으로 연구하는게 더 나음...
설님 db도 열심히 공부해두면 좋습니까?!
저는 db는 그렇게 열심히 안했어요 그냥 join이 뭐고 inner-outter join 어떻게 되고 primary key가 뭐고 foregin key가 뭐고.. DB 관계 그래프 어떻게 그리고 뭐 이런 간단한 내용만 머리에 러프하게 담고 있어요..
그렇군요 다음학기 db수업이 있어서 궁금했어요 ㅎㅎ.. 감사합니다 글 잘 보고 있어요
글 너무 늦게봤지만 정말 양질의글 고마워! 나는 그래픽스쪽을 꿈꾼지 얼마 안되었는데, 아직은. learn opengl 쭉 따라가면서 오브젝트 만들고 이동, 회전, virtual. track ball. 구현 stencil. Buffer. 활용해서 물체 선택하는거 구현해봤고, 3차원에서 물체 충돌하는거 구현하면서 게임 만들고있는데, 아직은 학부수준이라
겨우 왔는데, 이제 막 pbr 같이 실제처럼 렌더링하는거 이런것도 공부해보고 싶은데 너가 추천해준 책 읽고 거기나온 수식 이해해서 구현하는식으로 하면 되는건가? 내 수준에서 pbr. 렌더링까지 하기까지 얼마나걸릴지 궁금함! 하루에 4-5시간 투자한다는 가정하에
여유롭게 공부하고싶다는 생각도있는데 이제 졸업하고 취준판 뛰어들어야해서 마음이 급하네 분야를 너무 늦게 찾았어 흑
이거 내가 쓴건데, 일단은 다 재밌어보여서 mit 과제 한번 해보려구! 사용자가 점 아무데나 찍으면 이걸로 curve 그려주고 surface 까지 만드는 거 구현해보려고 ㅋㅋㅋ