DirectX
DirectX 는 GPU를 사용하는 API
Rendering Pipeline
IA -> VS -> RS -> PS -> OM
VS,PS는 코딩이 가능한 영역
순이다.
IA - Input Assembler
- 기초 데이터 입력받음
vertex 정보 생성
하지만 프로그래머의 니즈를 모두 알기 힘들기 때문에 새로 자료형을 만들어서 생성
그 후에 CPU와 GPU의 데이터가 서로 다르기 때문에 변경
ID3D11Buffer -> vertext buffer 생성
하지만 이 데이터가 어떤 순서로 들어오는지 모르기 때문에
ID3D11InputLayout 을 생성해서 정해줌
점들을 정해줬지만, 어떻게 이어야 할지 정해줘야 하기 때문에
D3D11_PRIMITIVE_TOPOLOGY로 결정
하지만, 삼각형을 만들때 상관 없지만, 사각형을 만들때 삼각형 두개를 만들면 메모리 낭비가 생기기 때문에 중복된 정점을 줄여야 함
ID3D11Buffer -> input buffer 생성
VS - Vertex Shader
공간 변환
- Constant Buffer
공간
Local - World - View - Projection - Clip - NDC - Viewprot
의 공간이 존재함.
Local - World - View - Projection - Clip 은 RS에서
나머지는 PS에서 변환 가능
RS - Rasterizer
NDC - Viewprot
NDC와 Clip은 좌표계가 같다
다만, Clip 은 동차공간
NDC 은 동차가 정규화된 유클리드 공간
정규화된 공간에 Viewport데이터를 넣음
그 다음에 Raterizer State를 통해 어떤 면이 앞면인지, 어떤 면이 보여줄지 등 결정
PS - Pixel Shader
RS에서 설정해준 픽셀들만 세팅
-
Shader Resource
-
Sampler State
OM - Output Merger
Render Target, Blend State 등 세팅
리소스
Resource View
Buffer Texture