DirectX12_초기화 정리

CJB_ny·2022년 11월 29일
0

DirectX12

목록 보기
2/4
post-thumbnail

OT

CPU 프로그램 실행하고 껏다 키고

이런범용 적인 부분에서 유용.

GPU는? 서로 연관성이 없는 독립적인 일감 떠넘길때 병렬로 처리할 때 유용함.

비트코인, 암호학 등등.

정해진 규칙에 따라 GPU에게 데이터를 줘야함.

이게 "렌더링 파이프 라인"이다.

렌더링 파이프 라인 단계

  1. Input Assembler

    삼각형 좌표가 어떻게 있는지 정점 좌표 전달하는 부분.

  2. vertex Shader

    Input Assembler 넘겨준 데이터를 연산을 해주는 부분임. 즉, 정점 변환해주는 부분.

  1. Tessllation

    DX12 에 추가된 부분
    정점을 추가를 하는 부분임

  1. Resterizeer

    이부분 좀 중요함

    색상을 보간 하는 부분임. 정점데이터를 기준으로 픽셀데이터를 채워주고 보간하는 작업임.

  2. Pixel Shader

    색상을 강제로 조졸하는 부분

  3. outPut-Merger

    모든거 조합하는 단계

2. 장치 초기화

  • Device

    GPU객체 맡는 부분임

  • CommandQueue

    일감들을 몰아서 처리를 하는 부분

    WiatForSync를 통해서 싱크 맞춤.

    RenderBegin, RenderEnd가 있음. (실제로 그리는 부분)

    이부분에서 SwapChain, DesciptorHeap을 다 사용함 RenderBegin()에서.

  • SwapChain

    Buffer(종이) 두장 만드는 부분.

    Double Buffering

  • DestriptorHeap

    기안서, DX12에서 View->DestriptorHeap로 바뀜.

    GPU에게 데이터 보낼때 기안서 작성해서 보내는 부분임.

    SwapChain에서 만든 Resource를 바로 GPU에게 건내줄 수 없으니 DescriptorHeap에서 기안서를 만들어서 GPU에게 건내주는 방식이다.

삼각형 띄우기

  • Mesh

    정점으로 이루어진 물체.

  • Shader

    일감 기술서 : 외주 인력들이 뭐 해야할지 기술

Constant Buffer

CPU vs GPU 구조 차이.

CommandQueue의 RenderBegin에서 RootSignature서명을 해주고 CBV를 사용한다고 알려줌

그러면 공간은 임대를 한 상황인데 그 공간에 데이터를 넣는 부분은 Mesh의 Render부분에서 해주게 된다.

이렇게 CBV를 만들었는데

Rootsignature에서 정확히 만들어 주었다.

Root Signature

CBV를 무한정 만들 수 없기 때문에 table을 만들 것이다.

Register안에 table을 만들어서 그 table안에 무엇을 사용을 할지 b0~b4까지 정의를 해준다.

SetDescriptorHeap이 매우 느려서 큰 테이블을 만들어서 사용을 해야한다.

Index Buffer

Vertext Buffer로 정점 데이터 넘기고 이 정점들이 어떻게 연결 되어있는지를 Index Buffer로 넘겨준다.

Texture Mapping

nv 좌표계를 사용해서 Texture입힐 것이다.

Depth Stencil View

3D물체를 그리그 위한 준비

깊이를 통해서 그린다.

투영좌표계

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글