전체 글
-
Render Graph개인 프로젝트 2025. 10. 17. 23:12
개요Render Graph(이하 렌더 그래프)는 2017년 GDC에서 ‘FrameGraph: Extensible Rendering Architecture in Frostbite’라는 발표에서 처음 소개되었습니다. 발표 명에서 알 수 있듯 이때는 프레임 그래프라는 이름으로 소개되었습니다. 하지만 근래의 최신 상용 엔진들을 살펴보면 Unreal Engine에서는 Render Dependency Graph(혹은 RDG)로 부르고 있고 Unity Engine에서는 Render Graph로 부르고 있어 렌더 그래프라는 이름이 널리 사용되고 있는 것으로 보입니다.이 글에서는 Direct3D 11 / 12로 구현된 샘플 프로그램을 통해 렌더 그래프가 무엇이고 왜 사용되는지 알아볼 예정입니다. 렌더 그래프는 특정 그래..
-
Async Compute개인 프로젝트 2025. 10. 6. 14:08
개요이 글에서는 Direct3D 12로 구현된 샘플 프로그램을 통해 Direct3D 12부터 지원하는 Async Compute(이하 비동기 컴퓨트)에 대하여 알아보도록 하겠습니다.비동기 컴퓨트란?비동기 컴퓨트가 무엇인지 알아보기 전에 잠시 간략하게 Direct3D 12 API가 GPU에 작업을 제출하는 과정을 살펴봅시다. 대략 다음과 같습니다.CPU에서 Command List에 제출하고자 하는 명령을 기록.Command List를 Command Queue에 제출.GPU는 Command Queue에 제출된 작업을 차례대로 꺼내서 실행하게 됩니다. 그런데 Command Queue는 반드시 하나만 있어야 하는 것은 아닙니다. 하나의 프로그램에서 복수의 Command Queue를 생성할 수 있고 각 Comman..
-
Screen Space Global Illumination개인 프로젝트 2025. 7. 5. 22:37
개요이 글에서는 Direct3D 11 / 12로 구현된 샘플을 통해 실시간으로 전역 조명 (Global Illumination, 이하 GI)을 근사하는 기법 중 하나인 Screen Space Global Illumination (이하 SSGI)에 대해서 알아보도록 하겠습니다.SSGI 란?SSGI는 이름에서 알 수 있듯 화면에 렌더링된 정보 (깊이, 색 등)를 통해 실시간으로 전역 조명을 계산합니다.물체에 의한 빛의 차폐를 계산하는 Screen Space Ambient Occlusion (이하 SSAO)과 거의 유사하며 여타 화면 공간 기법들과 같이 장면의 복잡도에 영향을 받지 않는다는 장점과 화면 밖의 정보가 없어 이로 인한 아티팩트가 발생한다는 단점을 공통으로 가지고 있습니다.이 때문인지 언리얼 엔진에..
-
To Early-Z, or Not To Early-Z (번역)개인 번역 2025. 6. 3. 11:15
원문 : https://therealmjp.github.io/posts/to-earlyz-or-not-to-earlyz/ To Early-Z, or Not To Early-ZDepth In The Logical Rendering Pipeline Where Does Early-Z Fit In? When Does Early-Z Have To Be Disabled? Discard/Alpha Test Pixel Shader Depth Export UAVs/Storage Textures/Storage Buffers Forcing Early-Z Forced Early-Z With UAVs And Depth Writes Rasterizetherealmjp.github.io우리가 GPU에서 당연하게 여기는 것 중 하나..
-
PSO Cache개인 프로젝트 2025. 4. 26. 15:31
개요이 글에서는 Direct3D 12로 구현된 샘플을 통해 PSO Cache에 대해서 알아보도록 하겠습니다.PSO 란?우선 PSO가 무엇인지 알아보겠습니다. PSO는 Pipeline State Object의 약자입니다. 컴퓨터 그래픽스에서 3차원 공간을 2D 스크린에 그리기 위해 Direct3D와 같은 그래픽스 API는 다음과 같은 일련의 정형화된 단계들을 거치게 됩니다.출처 : https://open.gl/drawing이러한 단계를 Rendering Pipeline이라고 하며 Pipeline State Object의 Pipeline 이 바로 그것입니다. Rendering Pipeline은 여러 단계로 구성되어 있으며 물체를 그릴 때 삼각형의 앞면을 어떻게 판단할지, 깊이 검사를 할지, 어떤 색상 채널을..
-
Mesh Shader개인 프로젝트 2025. 2. 25. 00:29
개요이 글에서는 Direct3D 12로 구현된 샘플을 통해서 Mesh Shader로 불리는 모던 그래픽스 API에 새롭게 등장한 프로그래밍 가능한 파이프라인 단계에 대해서 알아보도록 하겠습니다.Mesh Shader는 2019년도에 Direct3D 12를 통해서 소개되었고 Vulkan의 경우에는 2022년도에 VK_EXT_mesh_shader 확장으로 지원하게 되었으며 Metal도 2022년도에 Metal3를 통해 지원하게 된 만큼 모든 모던 그래픽스 API에서 지원하고 있습니다.비록 이 글에서는 Direct3D 12의 예제만 다루지만 각 그래픽스 API 간에 유사한 개념을 공유하고 있으므로 다른 그래픽스 API에서 Mesh Shader를 사용하는데 이 글이 도움이 되었으면 합니다.Mesh Shader란?..
-
HLSL 2021개인 프로젝트 2024. 12. 15. 18:40
목차개요컴파일 방법DirectX Shader Compiler 다운로드코드를 통한 컴파일러 사용법주요 변경점사용자 정의 데이터형에 대한 엄격한 캐스팅논리 연산자 단락 평가C++ for문 범위 규칙템플릿 함수와 데이터 타입멤버 연산자 오버로딩데이터형의 비트 필드 멤버마치며개요이 글에서는 HLSL의 최신 언어 사양인 HLSL 2021에 대하여 알아보겠습니다. 이름과 같이 2021년도에 발표된 HLSL의 최신 업데이트로 특정 셰이더에 대한 문법 및 기능 추가를 위한 셰이더 모델 업데이트와 다르게 HLSL의 전반에 영향을 미치는 기능입니다.HLSL 2021를 소개하는 Microsoft의 개발자 블로그에서는 일정 시간 후 HLSL 2021를 기본 언어 버전으로 만들 계획이라고 소개했는데 3년이 지난 2024년 현재..