728x90
[DirectX12] 섀도우 매핑 (shadow mapping), 섀도우 알고리즘 상세 정리
🎯 game engine/◽ directX122024. 12. 18. 17:40[DirectX12] 섀도우 매핑 (shadow mapping), 섀도우 알고리즘 상세 정리

1. 장면 깊이 렌더링 광원의 시점에서 본 장면의 깊이를 렌더링하는 과정이 있다. 이는 텍스처 대상 렌더링 ( render - to - texture )의 일종이며, 광원의 시점에서 본 장면의 깊이 값들을 깊이 버퍼에 기록하는 것을 뜻한다. 그림자 매핑 알고리즘에는 두 번의 렌더링 패스가 필요하다. 광원의 시점에서 본 장면 깊이를 그림자 맵에 렌더링플레이어 카메라에서 본 장면을 후면 버퍼에 렌더링  2. 직교 투영/정사영 (Orthographic_Projection)그림자 매핑에서 평행 광이 만들어 내는 그림자를 본뜰때 직교 투영이 필요하다.  (2.1). 직교 투영 행렬 구하기 (orthogonal_projection_matrix) 벡터를 특정 벡터 공간 또는 부분 공간에 직교적으로 투영할 떄 사용하는..

[DirectX12] 큐브맵 만들기 / StructuredBuffer
🎯 game engine/◽ directX122024. 11. 26. 23:05[DirectX12] 큐브맵 만들기 / StructuredBuffer

휴 ,,, 드디어 성공했다..큐브맵 자체를 만드는 건 어렵지 않다.하지만 이전 프로젝트와 큐브맵 프로젝트에서 달라지는 것이 많았다.매 장 새로운 걸 받아들이는 부분에서 제공해 주는 코드와 비교해 보면 달라지는 부분이 많다directX12 문법을 이해하고 연관성을 알아야만 큐브맵을 완성할 수 있었다.   1. 큐브맵 cubeMap / 입방체 매핑큐브맵의 텍스처는 단지 텍스처 여섯 장을 담은 배열이다. 2. 큐브맵 적용하기 🔸1) RootSignature  Texture Cube를 쉐이더와 연결하기 위해 table을 만들어준다.여기서 빨간색으로 표시한 RootParameterIndex(3)을 Texture Cube로 만들 거고 Init 매개변수 3번째 인자 0이므로 shader에서 t0으로 사용된다.  ?..

[DirectX12] 스텐실(stencil) 거울 만들기
🎯 game engine/◽ directX122024. 11. 7. 12:00[DirectX12] 스텐실(stencil) 거울 만들기

1. 스텐실 버퍼 Stencil Buffer🔸 특징스텐실 버퍼는 후면 버퍼 및 깊이 버퍼와 해상도가 같다.스텐실 버퍼를 지정하면 그 스텐실 버퍼는 깊이 버퍼에 부착된다.픽셀 단편들이 후면 버퍼에 기록되지 못하게 하는 역할을 한다.CD3DX12_DEPTH_STENCIL_DESC구조체 채우고, D3D12_GRAPHICS_PIPELINE_STATE_DESC 설정한다.   2. 스텐실 판정 스텐실 버퍼를 이용하면 장면이 후면 버퍼의 특정 영역에만 렌더링되지 않게 만들수 있다. 스텐실을 적용하는 경우, 주어진 한 픽셀이 후면 버퍼에 기록되는지 아닌지는 스텐실 판정의 결과에 따라 결정된다. 스텐실 판정은 픽셀이 래스터화되는 과정에서, 즉 출력 병합기 단계에서 일어난다. 픽셀을 허용 : 후면 버퍼에 그리겠다. 픽셀..

[DirectX12] 조명의 종류
🎯 game engine/◽ directX122023. 12. 19. 16:43[DirectX12] 조명의 종류

1. 조명의 주요 벡터 2. 람베르트 코사인 법칙 [ Lambert's Cosine Law ] 빛에서 중요한 것은 단위 면적당 받는 빛의 에너지(E) 이다. 같은 양의 빛을 비스듬하게 비추는 것보다 정면으로 비추는 빛이 더 강한 빛이다. 이는 빛의 에너지 = 복사조도(단위 면적당 복사 선속의 밀도) 한 영역에 빛의 양을 결정한다. A1 단면적인 빛을 표면에 정면으로 때릴 떄 각은 0도 (1번)이고 같은 양(A1) 단면적인 빛을 사전으로 때릴 때 각은 세타도이다. 이 각으로 통해 복사조도(단위 면적당 복사 선속의 밀도)를 구할 수 있다. 위의 그림과 같이 삼각법에 따라 2번의 E2를 구하면, 아래와 같은 식이 도출된다. 3. 분산 조명 [ diffuse light / 난반사광, 분산광 ] 빛은 어떤 물체 ..

[DirectX12] 조명 연산을 위한 법선 벡터, 법선 벡터의 변환
🎯 game engine/◽ directX122023. 12. 14. 13:54[DirectX12] 조명 연산을 위한 법선 벡터, 법선 벡터의 변환

물체의 입체감과 부피감을 표현하기 위해 조명(Lighting)과 음영(Shadering)이 중요하다. 일반적으로 조형 모형이 정확할 수록 그 계산의 비용은 크고 영화와 같은 미리 렌더링 해두어도 되는 장면은 게임같은 실시간 렌더링을 해야하는 장면보다 비용이 더 높다. 재질(material)은 빛이 물체의 표면과 상호작용하는 방식을 결정하는 속성들의 집합이라고 할 수 있다. 흡수하는 빛의 색, 표면 아래 재질의 굴절률, 표면의 매끄러운 정도, 투명도 등 .. 광원은 다양한 빛의 색을 낼 수 있고 여러가지 세기(intensity)로 방출한다. 광원에서 나온 빛이 물체와 충돌하면, 그 빛의 일부는 흡수되고 일부는 반사된다. 대부분 게임과 같은 실시간 응용 프로그램이 사용하는 조형 모형은 국소 조명 모형(loc..

[DirectX12] 원기둥의 정점 찍기/렌더링 과정 이해하기
🎯 game engine/◽ directX122023. 12. 12. 17:37[DirectX12] 원기둥의 정점 찍기/렌더링 과정 이해하기

위 내용에 맞춰 버텍스를 만들어보자. 인덱스는 생략함.float stackheight = height / stackCount; // 한 층 위의 더미로 올라 갈 때의 반지를 변화량float radiusStep = (topRadius - bottomRadius) / stackCount;uint32 ringCount = stackCount + 1;for( uint32 i = 0; i  위와 같이 정점을 구하고 인덱스를 찍었다면 배열에 담아 그림을 그려달라고 GPU에게 요청해야한다. DirectX12에서 GPU에게 요청하는 과정을 알아보자. 이전의 [Prev]CommandList를 CommandQueue(GPU가 실행하도록)에 제출하고 새롭게 그릴 명령들을 [New]CommandList에 담아 CommnadQ..

[DirectX12] Direct3D 초기화 과정, 그래픽 프로그래밍의 CPU와 GPU의 상호작용
🎯 game engine/◽ directX122023. 12. 6. 16:39[DirectX12] Direct3D 초기화 과정, 그래픽 프로그래밍의 CPU와 GPU의 상호작용

🍟 Direct3D 장치 초기화 과정 및 용어 정리 1. 서술자(descriptor) 객체 서술자는 자원 자료를 지정하는 수단일 뿐만 아니라 자원을 gpu에 서술하는 수단이기도 하다. 서술자는 direct3d에게 자원의 사용법을(자원을 파이프라인의 어떤 단계에 묶어야 하는지) 말해준다. Dirext3D 응용 프로그램은 자원을 직접 파이프라인에 묶지 않는다. 대신, 그리기 호출이 참조할 서술자들을 지정함으로써 자원을 파이프라인에 묶는다. 2. 서술자 종류(형식) CBV 서술자 : constant buffer(상수 버퍼)를 서술한다. SRV 서술자 : shader resource(셰이더 자원)을 서술한다. UAV 서술자 : unordered access view(순서 없는 접근)을 서술한다. 표본추출기 서술..

728x90
image