Graphics/기본
-
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..
-
Bindless Resource - DX12, VulkanGraphics/기본 2024. 1. 17. 23:55
Bindless Resource - DX12, Vulkan 최초 작성 : 2024-01-17 마지막 수정 : 2024-01-17 최재호 목차 1. 목표 2. 내용 2.1. Bindless Resource 에 대해서 2.2. API 별 Bindless Resource 2.2.1. Vulkan Bindless Resource 2.2.2. DX12 Bindless Resource 2.2.3. DX12 Dynamic Resources 3. 레퍼런스 1. 목표 레이트레이싱을 시작하면서 Bindless Resource 필요성을 느껴서 관련해서 알아본 것을 정리합니다. Bindless 리소스가 무엇인지 알아보고 어떤 장점이 있는지 알아봅시다. DX12, Vulkan 의 Bindless Resource 의 사용법과 특..
-
DX12 Shader Visible Descriptor HeapGraphics/기본 2023. 8. 5. 00:37
DX12 Shader Visible Descriptor Heap 최초 작성 : 2023-08-05 마지막 수정 : 2023-08-05 최재호 목표 Shader visible descriptor heap(Online descriptor heap), CPU only visible descriptor heap(Offline descriptor heap) 에 대해서 알아보고 UE5.2 에서의 구현도 확인해 봅시다. 내용 DX12 리소스 중 버퍼 또는 텍스처와 같이 Shader 에 전달하여 사용할 수 있는 리소스들이 있습니다. 이런 리소스를 Shader 에서 사용할 수 있게 하려면 Descriptor 를 만들어야 합니다. Descriptor 의 종류는 CBV, SRV, UAV, RTV, DSV, Sampler 등..
-
BCn Texture Compression Formats 정리Graphics/기본 2023. 4. 21. 01:45
목차 1. 개요 2. 내용 2.1. BCn 포맷의 공통 특징 2.1.1 BCn 의 블록에는 두 가지 주요 데이터 2.2. BC1 2.2.1. BC1 블록 레이아웃 2.3. BC4 2.3.1. 두 가지 모드 2.4. BC2, BC3 그리고 BC5 2.4.1. BC3 (BC1 + BC4) 2.4.2. BC5 (BC4 + BC4) 2.4.3. BC2 2.5. BC6, BC7 2.5.1. BC7 2.5.2. BC6 3. 레퍼런스 1. 개요 레퍼런스1의 BCn 설명을 읽어보고 각 포맷의 특징을 요약하는 것을 목표로 합니다. 2. 내용 2.1. BCn 포맷의 공통 특징 BCn 형식은 모두 4x4 픽셀 블록을 사용하며, 형식에 따라 각 블록은 8 byte or 16 byte 2.1.1. BCn 의 블록에는 두 가지 ..
-
Wave IntrinsicsGraphics/기본 2022. 9. 27. 01:05
개요 레퍼런스1, 2, 3을 통해 GPU 가 실행하는 각각의 Work Item 이 Wavefront 라는 그룹단위로 실행되는 것을 알 수 있었습니다. Shading Model 6(SM6) 이상 부터는 Wavefront 관련 Intrinsics 가 추가되었고 이 기능을 활용할 수 있습니다. 이것에 대해서 알아봅시다. 내용 GPU 작업은 여러 카테고리로 분류됩니다. 전체 작업을 나타내는 Domain. 그리고 그 보다 작은 단위의 WorkGroup 이 있습니다. WorkGroup 은 동일한 Compute Unit 에 실행되며 WorkGroup 단위로 내부 작업을 동기화 하기에 좋습니다. 마지막으로 WorkGroup 은 각각의 WorkItem 들이 모여서 구성됩니다. Work Gorup 과 Work Item 사..
-
Variable Shading Rate(VRS)Graphics/기본 2022. 9. 27. 00:08
목차 1. 개요 2. 내용 2.1. 디바이스 생성 2.2. VRS 이미지 생성 2.3. VRS 사용을 위한 Graphics Pipeline State 생성 2.4. VRS 디버깅을 위한 코드 추가 2.5. 구현결과 2.6. 구현 코드 3. 레퍼런스 1. 개요 Variable Shading Rate(VRS) 에 대해서 알아보고 구현해봅시다. VRS 는 화면의 영역별로 쉐이딩 비율을 조정하는 기능입니다. 그림1을 보면, 1x1 부터 4x4 까지 다양한 쉐이딩 비율이 있습니다. 1x1 이 VRS 를 사용하지 않은 기본 비율입니다. 그리고 2x2 는 4픽셀당 1번 쉐이딩을 합니다. 이 기능을 활용하여 사람의 시야에서 인지적으로 크게 영향을 미치지 않는 부분는 더 적은 수의 픽셀을 쉐이딩 하여 퍼포먼스를 얻을 수..
-
Halfspace Fog 공식 유도 정리 - 흡수와 산란 응용Graphics/기본 2022. 3. 22. 23:53
개요 FGED2 에 나오는 Halfspace fog 공식을 유도해봅니다. 이미 책에 유도된 공식에서 이해가 안되는 부분을 추가하여 정리한 글입니다. Halfspace fog는 평면을 기준으로 평면의 앞쪽은 Fog가 없고, 뒤쪽은 Fog가 있습니다. 평면과의 거리가 멀어질 수록 Fog가 더 짙어집니다. Halfspace fog의 구현에는 흡수와 산란에서 본 Extinction (Absortion + Out scattering) 과 In scattering 을 고려한 Fog 공식이 포함됩니다. 이 공식 Color = ShadedColor * Extinction + FogColor * (1 - Extinction) 을 사용하여 최종 쉐이딩 컬러를 결정합니다. 이 글을 보기전에 흡수와 산란 글을 먼저 보시면 좋..
-
SphereMap TwoMirrorBall - 360도 방향 커버 됨Graphics/기본 2020. 12. 11. 20:31
개요[번역+설명추가] Spherical Mapping 에서 알아본 SphereMap은 360도 방향을 모두 커버하지 못합니다. 이 부분을 완화한 SphereMap에 대해 알아봅니다. 내용[번역+설명추가] Spherical Mapping에서 사용한 전통적인 Sphere Environment Map의 단점은 SphereMap을 전면에서만 촬영하므로 후면 정보가 없다는 점입니다. 그래서 SphereMap 360도의 환경맵 정보를 모두 커버하지 못합니다. Light Probe Image Gallery 에서 제공하는 SphereMap은 2번 촬영한 이미지를 붙여서 이런 문제를 해결하였습니다. 그래서 SphereMap의 연산 방식이 전통적인 SphereMap과는 다릅니다. (여기서 제공하는 이미지는 .hdr 형태로..