자체 엔진 3

filament 렌더링 엔진 여행기 #3 - RenderPass (1)

이전에 FRenderer 코드를 보면서 filament의 렌더링이 RenderPass라는 객체 단위로 동작한다는 것을 추론할 수 있었다. 물론 모든 코드를 다 본 것은 아니기엔 예외는 존재할 수 있으나 RenderPass가 적어도 filament 렌더링 동작의 핵심적인 역할을 하는 클래스인 것까진 틀림없을 것이다. filament의 RenderPass는 그럼 어떻게 동작할까? 코드를 보기 전 클래스 다이어그램부터 보자 위 클래스 다이어그램이 RenderPass와 관련된 클래스 다이어그램이다. 클래스 간의 관계까지 표현해두진 않았다. 그리고 당연하지만 모든 멤버가 포함된 다이어그램은 아니다. 거기에 처음보는 클래스도 꽤 있는데... 이런 부분은 당장 알아야할 건 아니므로 넘어가자. 디자인 패턴에 대..

Graphics/filament 2025.04.28

filament 렌더링 엔진 여행기 #2 - Renderer와 RenderPass

렌더링 엔진에서 가장 중요한 요소 하나를 꼽으라면 뭘 꼽아야 할까? 실질적인 렌더링 파이프라인을 시작시키는 Draw Call? 아니면 메쉬 렌더링을 위한 기본 중의 기본인 Vertex Buffer? 혹은 메쉬의 표면에 대해 정의하는 Material? 아마 모두 중요할 것이다. 그래픽스를 공부한 사람이라면 뭐 하나 빠져선 안 되는 중요한 개념들이고, 렌더링 품질과 성능 모두를 만족하기 위해선 무엇보다 잘 이해하고 있어야할 개념들일 것이다. 그러나 렌더링 엔진을 처음 뜯어보고자 하는 상황에서 가장 먼저 살펴볼만한 게 있다면 그건 뭘까? 필자의 의견을 말해보자면 렌더러가 아닐까 생각한다. 렌더러에선 렌더링할 데이터들을 받아 쉐이더 프로그램을 설정하고, 리소스 바인딩을 진행하며 드로우 콜을 호출하는....

Graphics/filament 2025.04.21

filament 렌더링 엔진 여행기 #1 - 구글의 오픈소스 엔진은 렌더링을 어떻게 할까?

요즘 출시되는 게임들을 보면 상당히 많은 게임들이 상용 엔진을 이용해 제작되고 있다.  국내 게임사 대부분은 상용 엔진인 언리얼과 유니티를 활용해 게임을 개발하고 있고, 꼭 게임이 아니라도 렌더링이 필요한 여러 분야에서 상용 엔진을 사용하고 있다.  확실히 상용 엔진은 직접 엔진을 개발해서 사용하는 것에 비하면 훨씬 싸게 먹힌다. 그러면서 품질 좋은 렌더링 결과를 제공하기 때문에 자연히 상용 엔진의 점유율을 높을 수 밖에 없을 것이다.  그런데 상용 엔진을 배우고 개발하는 많은 개발자들 중에서 엔진의 핵심적인 부분 중 하나인 렌더링 관련 영역에 대해 자세히 알고 있는 개발자는 얼마나 있을까? 아마 많지 않을 것이다.  이게 참 쉽지 않다. 일반적인 게임 혹은 기타 프로그램 개발에서 렌더링 관련 부분까지 ..

Graphics/filament 2025.04.13