일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- engine
- 프로그래밍
- 다이렉트X 튜토리얼
- Input Assembler
- 전처리문
- 다중표본화
- 동기화
- swapchain
- DirectX12
- vertex
- CPU
- C언어
- GPU
- Direct3D
- DirectXTK
- View
- 다이렉트 초기화
- UE4
- C++
- Direct Init
- DESC
- Direct3D Init
- 코딩
- c
- RenderTargetView
- 세팅
- 게임수학
- 다이렉트X
- DirectX
- CommandList
- Today
- Total
목록Vertex Shader (2)
비타Cpp
Direct3D에서는 정점(Vertex)에 공간적인 좌표값과 다른 추가적인 데이터를 부여할 수 있다. 원하는 데이터(특성)를 커스텀 정점 형식(Vertex Format)을 만들려면 우선 그러한 자료를 담을 구조체를 정의해야 한다. 다음은 서로 다른 두 가지 정점 형식의 예이다. Vertex1 구조체 struct Vertex1 { XMFLOAT3 Pos; XMFLOAT4 Color; } Vertex2 구조체 struct Vectex2 { XMFLOAT3 Pos; XMFLOAT3 Normal; XMFLOAT2 Tex0; XMFLOAT2 Tex1; } 정점 구조체를 정의한 다음에는 정점 구조체의 각 필드, 즉 정점의 각 성분으로 무엇을 해야 하는지를 Direct3D에게 알려 주어야 한다. 그러한 정보를 Dir..
IA(Input Assembler) 단계에서 Primitive를 조립한 후 해당 Vertex들은 VS(Vertex Shader)단계로 넘겨진다. VS단계를 한 개의 Vertex를 받아서 한 개의 Vertex를 출력하는 단계라고 생각하면 된다. 이러한 작업을 화면에 그려지는 모든 Vertex에 대하여 수행이 된다. 개념적으로 아래와 같은 일이 벌어지는 것이다. for(UINT i = 0, i < numVerticesl i++) { outputVertex[i] = VertexShader(inputVertex[i]); } VertexShader함수의 내용은 프로그래머가 구현하여 GPU에 제출한다(HLSL : High-Level Shader Language). 이러한 함수는 각 정점에 대해 GPU에서 실행되기 ..