RnimanEngine 프로젝트 기준¶
프로젝트별 목차 · 관련: 컨벤션 적용 기준, 검증 결과 기록, 원본과 생성물 관리
상태: 참조 초안(아래 D3D12 초기 구현 선택과 프레임 동기화 전환만 프로젝트 한정 채택) · 적용 범위: RnimanEngine · 확인일: 2026-09-18
D3D12 기반 미니 게임 엔진의 컨벤션 적용과 프로젝트 제약을 요약한다. 상세 구현·실행 안내·검증 기록은 프로젝트 저장소에서 관리한다. 원본은 비공개 저장소이므로 접근 권한이 필요하다.
주요 문서¶
| 원본 | 확인할 내용 |
|---|---|
| README | 현재 기능·빌드·실행과 전체 문서 안내 |
| 개발 설정과 검증 | 적용 상태·개발 환경·검증 결과 |
| 엔진 설계 | 책임·수명·데이터 경계와 미결정 설계 |
| 프로젝트와 공유 자원 구조 | 출력·에셋·셰이더 배치와 현재·목표 구조 |
추가 문서는 원본 README의 목차에서 찾는다. 위 링크는 현재 안내용이며 특정 시점의 구현 완료를 보장하지 않는다.
컨벤션 적용 상태¶
공통 기준은 위키의 채택 규칙이다. 프로젝트의 새 결정은 상호 반영 절차에 따라 위키에 반영한다.
최초 원격 조사에서는 과거 커밋 고정 안내를 확인했다. 이후 로컬 엔진 커밋 73f1cc0의 위키 중심 절차와 이번 D3D12 구현 작업 트리를 확인했다. 이 문서의 새 선택과 엔진 구현은 로컬에 반영했으며 원격 최신 상태·푸시·배포 완료는 확인하지 않았다.
프로젝트 제약과 전용 기준¶
아래는 조사 시점에 확인한 선택의 요약이다. 공통 규칙의 자동 채택을 뜻하지 않으며 설정 상세는 원본 개발 문서를 따른다.
| 항목 | 상태·핵심 내용 | 공통 기준과의 관계 |
|---|---|---|
| 대상 환경 | Windows·C++20·MSVC, x64 | 다른 플랫폼이나 언어 버전의 공통 요구로 확대하지 않음 |
| PCH | 구현 파일에서 PCH 선행 사용 | 헤더 규칙의 허용 범위이며 헤더 독립성·직접 include는 유지 |
| 출력 구분 | 프로젝트·빌드 구성별 출력 분리 | 다중 플랫폼 추가 시 충돌 조건을 재검토. 구체적인 경로는 원본 구조 문서에서 관리 |
| 텍스트 설정 | Windows 명령 스크립트의 CRLF | C++ 소스의 UTF-8·LF 기준을 변경하지 않음 |
| 자원 수명 | GPU 사용 완료까지 자원 재사용·해제를 미룸 | 아래 초기 구현 선택과 프레임 동기화 전환으로 구체화 |
오류 처리·ECS 저장 방식·Unity 데이터 규격 등 미결정 사항은 원본 설계 문서에서 구체화한다. 실제 결정 중 공통화할 내용은 해당 위키 주제로, 프로젝트 고유 규칙은 이 문서로 반영한다.
D3D12 초기 구현 선택¶
2026-09-15 사용자 선택에 따라 Sandbox 초기 D3D12 구현 범위에서 채택한다. 공통 C++ 규칙이나 다른 프로젝트로 확대하지 않는다.
| 선택 | 적용 조건·이유 |
|---|---|
| 앱이 창과 렌더러를 각각 소유 | 창의 메시지 처리와 GPU 수명을 분리. 렌더러를 창보다 먼저 정리 |
| 고성능 하드웨어 GPU 우선, 미지원 시 오류 | 하드웨어 선택 결과를 명확히 유지. WARP 자동 대체 없음 |
| 매 프레임 Fence 대기(초기 구현 당시) | 초기 수명 검증을 단순화하기 위한 선택. 2026-09-17 아래 프레임 동기화 전환으로 대체 |
| WM_SIZE는 크기를 기록, 프레임 경계에서 리사이즈 | 창 콜백과 GPU 자원 재생성을 분리. 최소화·0 크기에는 렌더링 중지 |
구현 단계의 시험 적용은 ComPtr·렌더러 소유 Event, bool 실패 반환과 API/HRESULT 보고, Debug 레이어 필수, VSync·두 백 버퍼다. 소유권을 명확히 하고 초기 진단 경로를 연결하기 위한 최소 선택이며 통일 오류 정책·다중 프레임 설계의 채택을 뜻하지 않는다. 시험 적용 결과와 제한은 원본 검증 기록에 둔다. 새 절은 로컬 수정이 원격에 반영된 뒤 접근할 수 있다.
일반화 후보는 HRESULT 실패 정보와 GPU 자원 수명이다. 현재는 Sandbox 한 곳의 적용 사례이므로 공통 규칙으로 올리지 않는다. 다른 실제 사용 경로에서 요구가 확인되면 공통 오류 처리·소유권 규칙과의 경계를 다시 검토한다.
프레임 동기화 전환¶
2026-09-17 사용자 요청으로 Sandbox의 프레임별 Command Allocator·Fence 값과 재사용 시 대기를 프로젝트 한정 채택했다. 리사이즈·종료에는 전체 GPU 완료 대기를 유지한다. 이전 화면 검증 선행 조건은 이번 요청 범위에서 변경했으며 남은 미검증 항목을 완료로 간주하지 않는다.
현재 두 백 버퍼에 대응하는 슬롯, 단일 Command List와 공유 Fence/Event는 Sandbox에 한정한 구현 선택이다. Allocator는 해당 제출의 완료 후에만 재사용하며 제출 실패 시에도 자원 정리를 시도한다. 이 선택을 다중 Queue나 공통 C++ 동기화 규칙으로 확대하지 않는다. 상세 흐름·검증 결과·성능 미측정 상태는 원본 개발 문서에서 관리한다.
삼각형 출력의 시험 적용¶
2026-09-18 Sandbox 삼각형 구현에서 다음을 프로젝트 한정 시험 적용했다. 공통 C++ 규칙이나 장기 그래픽스 정책으로 채택한 것은 아니다.
- 기존 빌드 시 셰이더 컴파일·앱별 출력 방향을 적용하고, SDK FXC·Shader Model 5.0과 EXE 기준 CSO 로딩을 사용한다. 설치 도구와 기존 하드웨어 요구를 유지하는 초기 선택이며 SM6 기능 도입 시 DXC 전환을 검토한다.
- 세 정점의 고정 데이터만 Upload Heap에서 직접 읽고 CPU가 다시 쓰지 않는다. 일반 메시 로더의 업로드 정책으로 확대하지 않는다.
- 중앙 정사각형 Viewport로 창 비율에 따른 삼각형 왜곡을 막는다. 카메라 투영 정책은 해당 기능 구현 시 정한다.
셰이더 빌드 설정은 실제 소비자인 Sandbox·RendererSmoke 사이에서만 공유한다. 구현 흐름·검증 결과·미검증 범위는 엔진 개발 문서, 파일 배치는 원본 구조 문서에서 관리한다.
HLSL 컨벤션 적용 상태¶
2026-09-18 HLSL 셰이더 규칙을 공통 초안으로 작성했다. 아래는 기존 로컬 구현과 초안의 일치 여부이며, 공통 규칙을 채택하거나 엔진 전체 적용을 완료했다는 의미는 아니다.
- 로컬
Shaders/Samples/Sandbox/TriangleVS.hlsl·TrianglePS.hlsl의 단계별 파일명과 두Main진입점, 구조체·필드·매개변수의 표기가 초안과 일치한다. - TriangleShaders.props에서
EntryPointName=Main,ShaderModel=5.0, Vertex·Pixel 단계와$(OutDir)Shaders/파일명.cso출력을 확인했다. 실제 설정의 경로 구분자는 Windows 표기다. - 현재 공유
.hlsli는 없으며 공유 선언 추출·공간 접미어·변형별 출력 구분은 필요해지는 범위에서 검토한다. 현 삼각형의position이름을 일괄 변경하지 않았다.
확인 대상은 D:/STUDY/DirectX12/RnimanEngine의 로컬 작업 트리다. GitHub 웹 조회는 404로 원격 최신 내용을 확인하지 못했다. 이번 작업은 Convention 문서에만 반영했으며, 엔진 개발 문서에 위키 링크·채택 여부를 기록하는 작업과 엔진 빌드·실행 검증은 미수행이다.
코드 가독성 적용¶
2026-09-15 Sandbox·RendererSmoke 코드에 작업 경계와 인자 배치를 적용했다. 기존 소유권·GPU 동기화와 식별자를 유지하며 작업별 실패 처리와 빈 줄을 정리했다.
적용 경과: 위 코드 정리 당시에는 120열을 시험 적용했다. 이후 2026-09-15 사용자 선택으로 긴 줄과 함수 인자의 공통 기준이 개정되었다. 앞으로의 배치는 해당 채택 규칙을 따른다. 이번 위키 개정에 따른 엔진 코드·도구 설정의 추가 반영 여부는 확인하지 않았다.
공통 초안의 근거¶
- 검증 결과 기록: 빌드·실행·시각 확인을 구분한 사례는 원본 개발 문서를 참조한다. 검증 로그는 위키에 복제하지 않는다.
- 원본과 생성물 관리: 기준 에셋과 재생성 결과를 구분한 사례는 원본 구조 문서를 참조한다. 파일별 추적 정책과 변환 계획은 프로젝트에서 관리한다.
두 공통 문서는 아직 초안이다. 과거 개인 자료는 비교 근거이며 이미 채택된 위키 규칙이나 현재 프로젝트의 미결정 상태를 대체하지 않는다.
확인한 범위와 원본¶
2026-09-15에 원격 커밋 2845efb의 README·개발 문서·설정·최소 창 코드를 대조했다. 이 링크는 조사 근거 보존용이며 현재 안내는 위 주요 문서를 따른다. 엔진 빌드·실행은 이번 문서 작업에서 수행하지 않았다.
변경 기록¶
-
2026-09-18: HLSL 공통 초안과 기존 로컬 셰이더·빌드 설정의 일치 범위를 기록했다. 엔진 측 문서 반영은 미수행이며 공통 규칙은 초안으로 유지했다.
-
2026-09-18: 삼각형 데모의 FXC·CSO 로딩·고정 정점 Upload Heap·Viewport 선택을 시험 적용으로 기록했다. 기존 프레임 동기화와 공통 채택 규칙은 유지한다.
-
2026-09-17: 사용자 요청에 따른 프레임별 자원 재사용 대기와 리사이즈·종료 전체 대기를 기록했다. 초기 매 프레임 대기는 대체된 이력으로 유지하고, 검증 상세는 엔진 문서로 연결한다.
-
2026-09-15: 공통 줄바꿈 개선안 채택에 맞춰 기존 120열 시험 적용의 경과와 현재 기준 링크를 정리했다. 엔진 코드·도구 설정의 추가 반영은 확인하지 않았다.
-
2026-09-15: 공통 가독성 규칙의 코드 적용과 프로젝트 120열 시험 적용을 기록했다.
-
2026-09-15: 사용자 확정 D3D12 초기 구현 선택 네 가지를 프로젝트 한정 채택으로 기록했다. 구현 시험 적용과 공통화 후보를 구분했으며 실행·검증 상세는 원본 프로젝트에 유지했다.
-
2026-09-15: 핵심 요약·컨벤션 적용·제약과 주요 원본 링크 중심으로 축소했다. 상세 환경·빌드 명령·설계·검증 기록은 원본으로 연결하고, 조사 근거만 커밋 고정 링크로 보존했다.
- 2026-09-15: 프로젝트 참조 초안을 작성하고 위키 중심의 적용 절차와 원격 안내의 미반영 상태를 기록했다. 프로젝트 고유 사례를 이 문서로 모았으며 공통 초안은 별도 주제로 연결했다.