This project is an experimental attempt to mimic the Unreal Widget System by developing a custom engine using DirectX 11. It was created with a focus on implementing the Prepass and Painting processes.
본 프로젝트는 DirectX11을 활용한 자체 엔진을 제작하여 언리얼 위젯 시스템을 모방해본 실험용 프로젝트입니다. Prepass와 Painting 과정 구현에 집중하여 제작되었습니다.
- Widgets are processed through a tree in two stages: Prepass and Paint. In the Prepass stage, where the desired size is calculated, traversal prioritizes children first (bubbling up).
- In the Paint stage, processing follows the parent order based on ZOrder, and the actual rendering elements are stored in the WidgetRenderElementContainer (equivalent to Unreal’s FSlateDrawElement). This stage also computes the final render geometry and stores it in a cell-based Hit Grid.
- Once all elements are stored, they are sent to the Render Thread and drawn in batches.
- The stored Hit Grid is then used in the next tick for widget input handling, serving as the Widget Path.
- 위젯은 트리를 거쳐 Prepass와 Paint 두 단계로 나뉘어 진행됩니다. Desired Size를 구하는 Prepass 단게에서는 자식을 우선적으로 버블링됩니다.
- Paint 단계에서는 부모 순으로 ZOrder에 따라 진행되며 실제 랜더링 항목을 WidgetRenderElementContainer에 저장합니다. (언리얼의 FSlateDrawElement와 동일) 최종 Render Geometry를 연산하고 셀 단위의 Hit Grid에 저장하는 단계이기도 합니다.
- 모든 Element가 저장되었다면 Render Thread에 전달하여 Batch 단위로 출력합니다.
- 저장된 Hit Grid는 다음 틱의 위젯 Input 처리에서 Widget Path로 사용됩니다.
- Client : DirectX11
- Lib : DirectXTex, SimpleMath, FreeType, nlohmann
type: Title
body(Optional)
Types
+ feat : 기능 추가
+ fix : 오류 수정
+ docs : 문서 추가
+ assset : 에셋 추가
Libraries : 외부 종속 파일들
└ Lib : 동적 및 정적 라이브러리
└ Include : 헤더 포함 파일
Engine : 엔진 프로젝트
└ Core : 핵심 엔진 코드
└ Refelection : C++ 리플렉션 코드
ConsoleTest : 콘솔 테스트 프로젝트
Client : 클라이언트 프로젝트
Resources : 에셋
Code Prefix Name Rule
On"Verb" : 대리자 Prefix
_ : private 변수 Prefix
m : member 변수 Prefix


