# DirectX12

[DirectX12][DXR] PBR 구현하기
DXR프로젝트에 구현한 PBR내용 정리PBR이 대세가 되기전에 자주 사용하던 Phong Shading등의 방식들은 다음과 같은 문제가 있다.그래서 미세면(Microfacet)의 특성을 고려한 물리적으로 말이되는 렌더링방식인 PBR이 등장한다.참고한 사이트: https&

[DirectX12][DXR] 노말맵 구현
노말맵의 개념과 DXR에서의 구현기노말맵은 위 그림과 같이 평평한 표면이 마치 평평하지 않은것처럼 보이게 하는 트릭이다.적은 계산복잡도로 월등한 퀄리티의 결과물을 낼 수 있어서 현대 게임에서도 많이 사용되는 기술이다.노말맵은 텍스처의 일종으로 rgb값들이 2차원으로 나
[DirectX12] 기본 개념 정리2
소실점거리에따른 크기물체 겹침조명그림자삼각형이 많으면 근사하게 본뜨지만 처리량 늘어난다균형점 찾아야한다모델러가 생성해준다내적외적없는 대신 변조가 있다32비트색상벡터를 xmcolor로 변환하는 함수정점에 공간위치 정보, 법선 벡터, 텍스터 좌표정점 중복되면 안됨정점 인덱
[DirectX12] 기본 개념 정리
XMVECTORXMFLOAT234load float234 벡터변환store float234 플로트변환get set xyzwFFFGHHCXMVECTOR32XMMATRIXXMFLOAT4x4ScalingRotation xyz axistranslationtranslation

[DirectX12] Initializing DirectX 12
본 포스트는 Introduction to Direct3D 12를 발췌하여 번역 및 정리한 포스트입니다. DirectX 11 프로그래밍에 대한 기본적인 개념을 이해하셔야 내용을 조금 더 쉽게 이해할 수 있습니다. Introduction to Direct3D 12 “DirectX 12는 마이크로소프트에서 발표한 DirectX API의 최신 버전으로, Dir...

Component
유니티 스타일로 Input 만듦.이렇게 매 프레임마다 키 체크를 하는 이유는 동일한 프레임에서는 키상태가 항상 일정하다고 가정을 해야한다.동일 프레임에서 한번 확인했을때는 누른 상태였는데 다시 확인하니까 때진 상태라거나 하는게 말이안된다.그리고 이부분 winAPI인데:

[DirectX12][DXR] DXR프로그래밍3(Shader Binding Table)
DXR프로그래밍을 진행하기 위해서는 Shader Binding Table,줄여서 SBT란 녀석을 만들어야 한다.mesh별로 Draw콜을 할 수 있는 Rasterization Pipeline과 달리 DXR Ray Tracing은 화면을 DispatchRay콜로 한번에 그

[DirectX12][DXR] DXR프로그래밍2(Acceleration Structure)
DXR로 Ray tracing 렌더링을 하기 위해서는 렌더링할 Object들의 데이터(Vertex,Index)를 특수한 가속 구조(Acceleration Structure)에 넣어줘야 한다.왜 이러한 가속구조에 렌더링 데이터를 넣어줘야하는지 이해하는게 중요하다.그 이유

[DirectX12][DXR] DXR프로그래밍-1(Raytracing Pipeline State Object)
22년 7월~8월 까지 DXR프로그래밍을 열심히 했다.깃헙 링크코딩을 진횅하면서 이해한 DXR개념들을 간단히 정리한다.DXR은 2018년 10월 기존 DirectX12 API에 새로 추가된 기능이다.DXR의 약자는 (DirectX Raytracing)이다. 이전까지 R

[DirectX12] Root Signature
DirectX12의 Root SIgnature개념에 대한 정리루트 시그니처를 간단히 말하자면 GPU에서 돌아가는 Shader프로그램이 특정 Register에 어떤 데이터를 가리키게 할것인가? 를 정의해주는 GPU에 할당된 정보라고 할 수 있다.문법은 위와 같다. 특이한

[DirectX12] Descriptor Heap
DirectX12의 GPU메모리 관리의 핵심인 Descriptor Heap 정리Descriptor Heap은 Descriptor들이 저장된 GPU힙 메모리를 의미한다.Descriptor Heap을 이해하기 위해서는 먼저 Descriptor가 무엇인지 정확히 알아야 한다
DEPTH STENCIL VIEW
Render target View처럼 마지막 단계에 무언가 하는 녀석이다. 우리는 3D로 찍은 카메라를 2D로 표현하기를 바라고 있다. 이를 처리해주는 단계가 DTV라고 보면 되겠다.카메라에 찍힌 세상 즉 3D 세상의 깊이를 표현하는 좌표계로, 위에 말한 Depth S

Texture Mapping
Texture는 jpg, png와 같은 이미지 파일로 게임에서 모델을 만들 때 사용하는 이미지를 뜻한다.UV 좌표계는 3차원 공간에 폴리곤에 텍스쳐를 입히기 위한 기준이 되는 2차원 좌표계이다. UV 좌표는 최소0 최대1의 좌표를 가지고 있다.정점 대신 UV좌표를 매핑

Index Buffer
Mesh를 그려주는 것을 살펴보면 하나의 Mesh 객체를 사용하여 그린다는 점을 알 수 있다. 그렇기 때문에 처음 Mesh에 대한 좌표값에 대한 설정은 한 번만 실행 해주게 된다. Mesh의 Init에서 Mesh는 Descriptor를 만들어준다. 이러한 행동은 자원을
Root Signature
🌞 Root Signature의 한계 Root Signature는 데이터를 담을 수 있는 크기가 DWORD64로 정해져 있다. 그렇기 때문에 너무 많은 데이터를 Root Signature에 넣을 수 없기 때문에 여러 데이터를 담을 수 있는 테이블을 선언하고 매핑하여

DirectX12 #1 [DirectXMath 라이브러리 벡터]
DirectX12에서 사용하는, 엄밀히는 Windows SDK의 일부인 DirectXMath의 벡터에 대해 알아보겠습니다.
Constant Buffer
🌞 Constant Buffer(CBV) Constant Buffer란? ( 상수 버퍼 ) Root Signature의 하나의 서명방법으로, 아래의 예제는 상수를 다룰 때의 버퍼를 보여준다. root constant로 값은 상수를 다룬다는 것을 의미한다.
장치 초기화
DirectX는 프로그래머가 컴퓨터의 GPU에게 명령을 내릴 수 있는 것이라고 생각하면 된다.GPU는 여러가지 제조사가 있을 것이다. Intel이 됐든, Nvdia가 됐든, 이러한 회사 각각이 다른 정책을 가지고 GPU와의 연동을 지원한다면 프로그래머 입장에서 보았을