이런 기록을 남겨두는 것은 이전으로부터 어떻게 발전해왔는지를 보여주기 때문에
종종 남겨놓는 것이 좋다고 생각한다.
1. 현재 만들어놓은 3D 게임 엔진의 최종 상황이다.
Sponza 모델과 Nanosuit를 통해 렌더링 했다.
영상은 최종 Scene을 만들기 위해 Light의 여러 Property를 수정하는 것을 보여준다.
아직 Culling 기능을 개발하지 않고 최적화가 이루어지지 않아 한 프레임 연산 속도는 느리다. Object Picking With Broad Phase(Dynamic AABB Tree), Model Loading (using Assimp) and Rendering + Model Diffuse/Specular/Emissive/Normal/Height Map (Normal Mapping, Parallax Occlusion Mapping), Light Property 편집, Light Shadow 설정 등이 들어갔다. learnopengl.com에서 배웠던 것을 Deferred Rendering 기반으로 바꾸면서 나의 이해를 증진시켰다. Post-Processing으로 Gamma Correction, Bloom, SSAO가 들어갔다.
Terrain을 Triangle Strip으로 한 번의 draw call로 렌더링했다.
그리고 Mesh vs Sphere의 Collision Detection and Response를 특히, Collision Detection 부분을 Bullet Physics를 참고해서 따라했다. 그 Bullet Physics의 코드를 이해하고 내 엔진에 적용할 수 있어서 매우 도전적이고 재미있는 경험이였다.
여기에서 BroadPhase(Dynamic AABB Tree) -> Mesh Quantization -> Early Exit (AABB vs AABB(of sphere) -> Narrow Phase(Triangle vs Sphere, Closest point on triangle using barycentric coordinate from Real Time Collision Detection book). 등의 많은 것들이 적용되었다. Mesh vs Box를 구현하려다 포기하고 Box2D로 돌아가게 되는 계기였는데, 어쨋든 가치있는 작업이였다.
댓글 없음:
댓글 쓰기