전체 글
-
[UE5] Nanite (5/5)UE4 & UE5/Rendering 2024. 3. 25. 20:44
[UE5] Nanite (5/5) 최초 작성 : 2024-03-25 마지막 수정 : 2024-03-25 최재호 목차 1. 환경 2. 목표 3. 내용 3.1. DrawBasePass 전체 레이아웃 확인 3.2. FInitializeMaterialsCS 3.3. FClassifyMaterialsCS 3.4. FFinalizeMaterialsCS 3.5. BuildNaniteMaterialPassCommands 3.6. DrawNaniteMaterialPass 3.7. FNaniteIndirectMaterialVS 쉐이더 코드 확인 4. 부록 4.1. MaterialDepth 값에 생성에 대해서 5. 레퍼런스 1. 환경 Unreal Engine 5.3.2 (release branch 072300df18a94f..
-
[UE5] Nanite (4/5)UE4 & UE5/Rendering 2024. 3. 23. 22:16
[UE5] Nanite (4/5) 최초 작성 : 2024-03-23 마지막 수정 : 2024-03-23 최재호 목차 1. 환경 2. 목표 3. 내용 3.1. EmitDepthTargets 3.2. FEmitSceneDepthPS 3.3. FEmitSceneStencilPS 3.4. FEmitMaterialDepthPS 3.5. 현재 프레임의 최종 HZB 생성 4. 레퍼런스 1. 환경 Unreal Engine 5.3.2 (release branch 072300df18a94f18077ca20a14224b5d99fee872) 개인적으로 분석한 내용이라 틀린 점이 있을 수 있습니다. 그런 부분은 알려주시면 감사하겠습니다. 이번 글은 한 번에 많은 길이의 코드를 분석하는 부분이 종종 등장합니다. 그래서 글을 2개..
-
[UE5] Nanite (3/5)UE4 & UE5/Rendering 2024. 3. 22. 23:42
[UE5] Nanite (3/5) 최초 작성 : 2024-03-22 마지막 수정 : 2024-03-22 최재호 목차 1. 환경 2. 목표 3. 내용 3.1. AddPass_Rasterize(MainPass) 3.1.1. FRasterizerPass 준비 3.1.2. AddPass_Binning(MainPass) 전체 레이아웃 3.1.2.1. RasterBinCount 3.1.2.2. RasterBinReserve 3.1.2.3. RasterBinScatter 3.1.3. HW Rasterize 3.1.4. SW Rasterize 3.2. 현재 프레임 기반 HZB 생성 3.3. PostPass 와 MainPass 의 차이점 정리 3.3.1. FInstanceCull_CS 차이점 3.3.2. Instance..
-
[UE5] Nanite (2/5)UE4 & UE5/Rendering 2024. 3. 21. 00:14
[UE5] Nanite (2/5) 최초 작성 : 2024-03-21 마지막 수정 : 2024-03-21 최재호 목차 1. 환경 2. 목표 3. 내용 3.1. TwoPassOcclusionCulling 의 컬링파트 3.2. FRenderer 생성 및 InitArgs 코드 분석 3.3. Main/Post Culling 전체 코드 레이아웃 3.3.1. AddPassInitNodesAndClusterBatchesUAV 3.3.2. AddPass_InstanceHierarchyAndClusterCull 전체 레이아웃 3.3.2.1. FInstanceCull_CS (MainPass) 3.3.2.2. AddPass_NodeAndClusterCull (MainPass) 전체 레이아웃 3.3.2.2.1. LoadCand..
-
[UE5] Nanite (1/5)UE4 & UE5/Rendering 2024. 3. 14. 20:51
[UE5] Nanite (1/5) 최초 작성 : 2024-03-14 마지막 수정 : 2024-03-14 최재호 목차 1. 환경 2. 목표 3. 내용 3.1. Nanite 에서 주요 기술 둘러보기 3.1.1. MeshShader 와 같은 Cluster 기반 렌더링 3.1.2. TwoPassOcclusionCulling 3.1.3. Visibility Buffer Rendering 3.2. Nanite MeshDrawCommandCaching 3.3. Nanite PrimitiveSceneProxy 의 생성 3.4. 새로 생성한 Nanite PrimitiveSceneProxy 를 UpdateAllPrimitiveSceneInfos 으로 FScene 에 등록 3.5. GPU Scene MaterialSlot ..
-
PathTracing (1/2)Graphics/Graphics Study 자료 2024. 3. 1. 23:30
PathTracing(1/2)최초 작성 : 2024-03-01 마지막 수정 : 2024-03-01 최재호 목차1. 목표 2. 내용 3. 구현 결과 3.1. Cornell box orig scene 3.2. Cornell box sphere scene 3.3. Hyperion sphere light scene 3.4. Hyperion rect lights scene 4. 실제 구현 코드 5. 레퍼런스 1. 목표다양한 BSDF 를 평가해보고 변형해볼 수 있는 테스트 베드를 위한 PathTracer 를 제작합니다. 이 글은 총 2개로 나뉘며, 첫 번째는 PathTracing 의 구현 기반을 마련하는 것을 목표로 합니다. 두 번째 글은 다양한 BSDF 를 도입하여 여러 가지 재질을 표현하는 것을 목표로 할 예정..
-
AsyncCompute - DX12, VulkanGraphics/기본 2024. 2. 13. 20:31
AsyncCompute - DX12, Vulkan 최초 작성 : 2024-02-13 마지막 수정 : 2024-02-13 최재호 목차1. 목표 2. 내용 2.1. 사전에 알아야 할 것들 2.1.1. CommandQueue 2.1.2. 동일한 CommandQueue 내 렌더커맨드의 실행 순서 2.1.3. Resource Barrier 2.2. CommandQueue 간의 동기화 2.3. CommandQueue 간의 동기화 구현 2.3.1. 현재 CommandQueue 에서 실행 한 렌더커맨드가 모두 실행될 때까지 기다릴 수 있도록 동기화 정보를 제공 2.3.2. 특정 CommandQueue 가 앞서 다른 CommandQueue 에서 받은 동기화 정보를 사용 2.4. 실제 사용 예제 3. 테스트 케이스 3.1..
-
RayTraced Ambient Occlusion(RTAO)Graphics/Graphics Study 자료 2024. 1. 31. 23:53
RayTraced Ambient Occlusion(RTAO) 최초 작성 : 2024-01-31 마지막 수정 : 2024-01-31 최재호 목차 1. 목표 2. 내용 2.1. DispatchRay 코드 작성 2.2. Desnosing 2.2.1. RayPerPixel 개수를 늘린 경우 2.2.2. Temporal 2.2.2.1. RayAccumulation 2.2.2.2. Reprojection 2.2.3. Spatial 2.2.3.1. Jittering 2.2.3.2. Filtering 2.2.3.2.1. GaussianBlur(Separable) 2.2.3.2.2. BilateralFilter 3. 구현 결과 4. 실제 구현 코드 5. 레퍼런스 1. 목표 RayTracing 을 사용한 Ambient O..