게임 엔진 Component 기반 구조 완벽 이해
최근 게임 엔진 구조가 지금과 같은 방향으로 발전한 이유와 왜 Component, ECS, Data Oriented Design 같은 기법들이 등장하게 되었는지를 정리했습니다.
시리즈 열기Game Engine Framework Notes
C++와 실제 엔진 사례를 바탕으로 메모리, 자료구조, Unreal/Unity 내부 구조를 설명하는 기술 블로그입니다.
최근에 직접 정리한 허브 글을 기준으로, 먼저 읽으면 좋은 시리즈를 모아 둡니다.
최근 게임 엔진 구조가 지금과 같은 방향으로 발전한 이유와 왜 Component, ECS, Data Oriented Design 같은 기법들이 등장하게 되었는지를 정리했습니다.
시리즈 열기게임 엔진 Transform 구조를 정리한 시리즈 글입니다. Position, Rotation, Scale부터 Local 좌표와 World 좌표, Parent/Child 구조, 행렬까지 게임 엔진의 공간 계산 구조를 함께 설명합니다.
시리즈 열기게임 렌더링 구조와 Rendering Pipeline의 전체 흐름을 입문자 기준으로 정리한 시리즈입니다. GPU가 Vertex 데이터를 어떻게 화면 픽셀로 변환하는지, Vertex Shader와 Rasterizer, Pixel Shader, Output Merger 단계는 왜 필요한지, 그리고 CPU와 GPU는 어떤 방식으로 협력하면서 화면 이미지를 만들어내는지를 전체 흐름 기준으로 설명합니다.
시리즈 열기함수 포인터, callback, std::function, delegate, multicast delegate까지 엔진 관점으로 이어서 읽을 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기fixed timestep, variable timestep, hybrid loop, deltaTime, FPS 제어를 엔진 관점에서 이어서 정리한 게임 루프 시리즈 허브 글입니다.
시리즈 열기allocator 설계, memory pool, placement new까지 C++ 게임 엔진 메모리 흐름으로 이어서 읽을 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기C++ RTTI의 기초부터 custom RTTI, Unreal 스타일 reflection 흐름까지 한 번에 따라갈 수 있게 정리한 시리즈 허브 글입니다.
시리즈 열기stack, heap, cache miss, AoS, SoA, ECS까지 게임 메모리 구조 관점에서 이어서 읽을 수 있게 모아 둔 시리즈 허브 글입니다.
시리즈 열기최근에 올린 글을 시간순으로 확인할 수 있습니다.
Introduction to Precomputed Realtime GI – 번역 – 원문 링크 – Introduction to Precomputed Realtime GI 확인 완료한 버전: 5.5 – 난이도: 중급 유니티는 글로벌 일루미네이션(Global Illumination(GI))이나…
🚀 들어가며 이번 글에서는 GPU 렌더링 병목의 원인과 최적화 방법을 정리해보겠습니다. GPU Bound 상태란 무엇인지 필레이트(Fill Rate) 메모리 대역폭(Memory Bandwidth) 정점 프로세싱(Vertex Processing) 특히 모바일 환경에서는 아래 내용이…
이전글 – 렌더링 문제의 유형 🚀 들어가며 이번 글에서는 렌더링 최적화 주제를 정리해보겠습니다. CPU 바운드(CPU Bound) SetPass Call Batching Culling Skinned Mesh 특히, GPU에 명령을 보내는 과정에서 발생하는…
🚀 들어가며 이전글 – 렌더링 개요 이번 글에서는 렌더링 성능 문제의 기본 개념을 정리해보겠습니다. 렌더링 병목(Rendering Bottleneck) CPU Bound GPU Bound Profiler Frame Debugger 렌더링 최적화에서 가장…
🚀 들어가며 – 원문 링크 – (참고: 원문 링크가 접속이 불가하네요…) 이번 글에서는 유니티가 프레임을 렌더링할 때 내부에서 어떤 일이 벌어지는지 렌더링 과정에서 어떤 성능 문제가 발생할 수…
유니티에서 가비지 컬렉션 최적화하기6 – 원문 링크 – 이전글 – 불필요한 힙 할당을 발생시키는 주요 원인 2 가비지 컬렉션의 영향을 최소하하기 위한 코드의 구조화 (Structuring our code to minimize…
유니티에서 가비지 컬렉션 최적화하기 5 – 원문 링크 – 이전글 – 불필요한 힙 할당을 발생시키는 주요 원인 1 코루틴 (Coroutine) 유니티가 코루틴을 관리하기 위해서 인스턴스를 생성해야만하는 클래스 때문에, StartCoroutine() 함수를…
유니티에서 가비지 컬렉션 최적화하기 4 – 원문 링크 – 이전글 – 가비지 컬렉션에 의한 피해 줄이기 불필요한 힙 할당을 발생시키는 주요 원인 (Common causes of unnecessary heap allocations) 값…