# Unreal Engine 5의 OpenGL 관련 RHI 계층 구조1. 구조적 형태 : 데이터와 행동의 철저한 분리이 설계의 가장 큰 특징은 "무엇을 만들 것인가(Desc)"와 "만들어진 결과물(Resource)",그리고 이를 "어떻게 볼 것인가(View)"가 세 개의 기둥으로 나뉘어 있음설명자 계층 (Descriptor Layer)FRHITextureDesc, FRHIBufferDesc 등. 실제 리소스를 생성하기 전, 하드웨어에 요구할 사양서추상화 계층 (RHI Layer)FRHIResource를 기준으로 생성되는 인터페이스 계층구현 계층 (OpenGL Backend)FOpenGLTexture, FOpenGLShader 등. 상위 인터페이스를 상속받음실제 glGenTextures나 glCompile..
🚀 v-table 없는 RHI 설계: Custom vs UE5게임 엔진 아키텍처에서 RHI(Render Hardware Interface) 커맨드 시스템은메인 스레드와 렌더 스레드 사이의 가교 역할을 합니다.수만 개의 명령이 오가는 구간에서 CPU 오버헤드(특히 가상 함수 호출 비용)를줄이는 것이 성능 최적화의 핵심입니다.오늘은 직접 구현한 v-table 프리(Static Dispatch) 방식과 UE5의 하이브리드 방식을소스 코드로 비교해 보겠습니다.1. UE5의 방식: "Virtual 인터페이스 + 강력한 확장성"먼저 언리얼 엔진 5의 소스 코드를 보겠습니다.UE5는 성능을 챙기면서도 거대 엔진에 필요한 디버깅 기능을 통합한 설계를 가집니다.// [UE5] 최상위 베이스: 가상 함수를 사용하여 인터..
World - Render 스레드 분리 및 CommandList 설계현재 프로토타입에서 World(Update)와 Renderer 스레드를 분리하고,데이터 동기화 과정에서 Mutex를 제거한 설계 근거를 설명합니다.1. 개요 (Background)초기에서는 World 스레드(객체의 상태 변경)와 Renderer 스레드(화면 출력)가 동일한 CommandList 자원에접근할 때 발생할 수 있는 데이터 경합(Race Condition)을 방지하기 위해 Mutex 도입을 고려했습니다.하지만 Mutex의 경우에는 런타임 중에 계속해서 World와 Renderer 스레드 간의 대기 시간(Lock)을유발할 것으로 예상되었습니다.2. 핵심 설계 결정: CommandList 소유권 분리 (Lock-Free)구현한 방식..
🏛️ wtrEngine 시스템 계층 구조 (Layered Architecture)1. 클라이언트 계층 (Client / Game Project)사용자가 실제로 코딩하는 영역입니다. 엔진의 인터페이스(Public)만 바라봅니다.GameApp: Application을 상속받아 게임 로직 구현.GameLogic: 커스텀 Component, System, Node를 정의.2. 프레임워크 계층 (Framework - Public)엔진의 뼈대와 수명 주기를 관리합니다.Application: 게임의 진입점 및 루프 관리 (GC Root).Window: OS 창의 추상 인터페이스.InputHandler: 키보드/마우스 입력의 추상 인터페이스.Engine: 모든 모듈(RHI, Renderer, World)을 소유하고 ..
- Total
- Today
- Yesterday
- 포인터
- 증명
- cmake
- 세그먼테이션기법
- SFINAE #Template #C++
- cmakelists
- 보이드 포인터
- 뮤택스
- 그래픽스
- std::is_base_of
- 내부단편화
- FloatingPoint
- Reflection
- RHICommand
- 페이징기법
- 개발 일지
- GameEngine
- MemoryProject
- 로드리게스 회전 행렬
- C++
- void pointer
- 외부단편화
- 수학
- logproject
- void* pointer
- GC
- pointer
- 메모리
- RHI
- 모던 C++ 챌린지
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |