c++ 15

[책공부] Tessellation + chap 14 연습 문제

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) 1. Tessellation - Shader를 이용해서 GPU에게 점 (삼각형)을 새로 생성해달라고 하는 거다. ( App에서 작업을 줄이고, GPU의 작업을 늘리는 느낌 ) - 그래픽스 파이프라인에서 Vertex Shader 다음에 작성할 수 있는 단계다. 그래픽 파이프라인 - Win32 apps | Microsoft Learn 그래픽 파이프라인 - Win32 apps 이 섹션에서는 Direct3D 11 프로그래밍 가능 파이프라인에 대해 설명합니다. learn.microsoft.com - (Constants) Hull Shader + Tessellator + Domain Shader 단계를 가진다. - 여기서 프로그래머..

Programming/D3D12 2024.02.14

[책공부] Geometry Shader + chap 12 연습 문제

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.)1. Geometry Shader - Primitive를 GPU단에서 새로 생성하거나, 파괴하여서 다양한 효과를 낼 수 있게 해주는 기술이다.- VS와 PS 사이에 optional 하게 존재한다. VS에서 받은 데이터를 작업한 다음에 바로 PS로 넘기 때문에, 대부분 상황에서는 Homogenous Coordinates 으로 변환한 다음에 넘겨주어야, 프로그래머가 원하는 모습이 렌더링 될 것이다.- 함수 시그니처가 굉장히 특이하다. 아래 문서를 보고 공부하도록 하자.- Geometry-Shader Object - Win32 apps | Microsoft Learn Geometry-Shader Object - Win32 app..

Programming/D3D12 2024.01.30

[책공부] Stencil 예제 + chap 11 연습 문제

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) 1. Depth - Stencil은 GPU에서 작업 해준다. - 얘도 RenderTarget Buffer와 1대1(?)로 대응이 되는 Buffer이고, App에서 규칙과 파라미터를 정해서 던지면 GPU가 Depth-Stencil Buffer에 값을 넣든지, 조건을 확인하든지... 요청에 맞춰서 렌더링을 해준다. - Blend와 마찬가지로 PSO으로 관리를 하고, 렌더링 파이프라인에 적용하는 것이다. - D3D12_DEPTH_STENCIL_DESC 구조체를 이용해서 그 동작을 정의한다. - 그래서 그 동작이 뭐냐? Depth 동작과 Stencil 동작이 따로 작동한다. - 각각 Depth - Stencil 버퍼에 계산된 값..

Programming/D3D12 2024.01.23

[책공부] Texturing 예제 + chap 9 연습 문제

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) 1. D3D에서 Texture 입히기 - 점 하나에 색 하나면, 진짜 점을 말도 안되게 찍어야 할 것이다. - 그 대신에 어떤 텍스쳐 이미지를 이용해서 Pixel을 찍는 Texturing에 대해서 연습했다. - 방법은 Texture와 Vertex의 UV좌표고, 그걸 가능케 하는 DirectX 기능은 ID3DResource와 Sampler 이다. (.... 그냥 생각나는 걸 적었는데, 당연히 중간중간 다른 기능들이 많이 쓰인다.) - 일단 예제에서는 GPU 친화적인 이미지 파일 포멧인 DDS와 그것을 Resource로 로드 해주는 업로드 함수를 사용하였다. (추후에 Toolkit이나 DirectXTex를 써서 다른 이미지 ..

Programming/D3D12 2024.01.13

[책공부] FrameResource 예제 ( + Root Constant)

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) 1. FrameResource를 이용한 지형 + 파도 그리기 예제(까지)가 연습시켜주는 기술 1_1 어뎁터 초기화 단계 ( 이전 예제 에서 한 초기화와 같다.) 더보기 - 창(window) 생성 - 어뎁터 (D3DDevice) 생성 - GPU와 CPU 동기화를 위한 Fence 생성 - GPU와 CPU의 [데이터 전송을 위한 Descriptor View]의 Handle Size 초기화 (아마 요걸로 데이터 블록(아마도 테이블?)을 점프하면서 데이터를 읽을 것 같다.) - Command Queue, Command Allocator, Command List 생성 (멀티 스레딩을 위해 새로 바뀐 GPU에게 렌더링 동작을 요청하는..

Programming/D3D12 2024.01.08

[책공부] Chap7 연습 문제

연습 문제 1 연습 문제 2 연습 문제 3 연습 문제에서 주어진 건 Vertex 개수가 몇개인지, Type이 어떻게 되는지 Index가 몇개인지 알려주고, {} 안에 공백으로 포멧에 맞게 예쁘게 구분되어 들어었었다. 머... 파일 입출력을 잘 못하기도 하고, 귀찮기도 해서... 오로지 이 예제 텍스트 파일을 위한 읽기 함수를 만들었다. namespace Prac3 { void Prac3VerticesNIndicies(const wstring& _Path, vector& _outVertices, vector& _outIndices) { ifstream fin; fin.open(_Path); string TrashBin; UINT VertexCount; UINT IndicesCount; float px, p..

Programming/D3D12 2024.01.08

[책공부] FrameResource 예제 ( + Descriptor Table)

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) 1. FrameResource를 이용한 기본 도형 그리기 예제(까지)가 연습시켜주는 기술 1_1 어뎁터 초기화 단계 (박스 예제에서 한 초기화 이후에 뭐가 없는 듯) 더보기 - 창(window) 생성 - 어뎁터 (D3DDevice) 생성 - GPU와 CPU 동기화를 위한 Fence 생성 - GPU와 CPU의 [데이터 전송을 위한 Descriptor View]의 Handle Size 초기화 (아마 요걸로 데이터 블록(아마도 테이블?)을 점프하면서 데이터를 읽을 것 같다.) - Command Queue, Command Allocator, Command List 생성 (멀티 스레딩을 위해 새로 바뀐 GPU에게 렌더링 동작을 요..

Programming/D3D12 2024.01.04

[C][책정리] 전처리기 냅다 정리

옛날에 사놓고 한번도 안 본 책 버리기 전에, 아리까리한게 뭔지 보니깐... 전처리기 챕터가 있었다. 그걸 정리하는 글 (근데 msdn 보니까 이것 말고 뭐가 엄청 많다?) 1. 전처리기 지시문 #include : 헤더 인클루드 #define : 매크로 정의 #undef : 정의 된 매크로 해제 #if, #elif, #else, #endif : 조건에 따라 블럭(?)을 활성화해서 컴파일 할지 결정 #ifdef : 매크로 조건 만족이면 블럭(?)을 활성화해서 컴파일 #ifndef : 매크로 조건 불만족 블럭(?)을 활성화해서 컴파일 2. #define 작동 원리 전처리기라는 이름처럼 컴파일 전에 PI라고 적힌 단어들을, 전처리기 과정에서 3.14로 바꿔(치환)주는 것이다..... 아마도? > #define..

Programming/C++ 2023.12.16

[일기장] 설계를 좀 더 간단히....

뭐 기능을 넣으면서 새로 공부할 때마다, D3D comptr leak이 나고... 찾기도 힘들고... ReportLiveObjects() 해도 여전히 힘들고... 그래서 struct는 struct 답게, 동작을 싸그리 빼기로 했다. (소멸자는 냅두고) 내부 함수로 초기화를 하든, 맴버를 직접 초기화 하든 내 실력이 부족하면 얼마든지 터질 수 있기에... 1. struct를 가져다 쓰는 쪽에서, 직접 초기화를 한다. 2. 조금 복잡한 친구나, 분기가 많은 경우도 그냥 외부함수를 하나 만들어서 가져다 쓰는 쪽에서 초기화 한다. 로 바꿨다. (1 법칙을 잊지 마라?)

Programming/D3D11 2023.12.02