정점(vertex)

두 변이 만나는 점(꼭지점). 하나의 점이거나, 선분의 양 끝점이거나, 도형의 꼭지점 등이 될 수 있다.

정점은 프리미티브의 꼭지점 위치 정보를 담을 수 있지만, 그 뿐만 아니라 노말 값이나 텍스쳐 값, 컬러 값 등을 담을 수도 있다.

 

프리미티브(primitive)

기본도형. 렌더링을 할 수 있는 도형의 최소단위(삼각형, 선, 점 등...)을 말한다.

 

정점 버퍼(Vertex buffer)

렌더링에 사용할 버텍스들을 모아놓은 자료구조이다. IA에 동시에 설정할 수 있는 정점 버퍼는 32개이다.

 

인덱스 버퍼(Index Buffer)

정점을 사용하여 프리미티브를 만들 때, 불필요한 중복이 발생할 수 있다. 

이러한 중복을 해결하기 위해 정점 버퍼에 존재하고 있는, 프리미티브를 구성하는 정점들의 순서를 인덱스로 정의하여 중복을 제거할 수 있다.

IA에 동시에 설정할 수 있는 인덱스 버퍼는 1개이다.

 

정점 중복 문제

 

 

상수 버퍼(Constant Buffer)

셰이더가 CPU에게서 전달되어야 하는 값이 필요할 때, 상수버퍼를 생성하여 셰이더 스테이지에 전달할 수 있다.

상수 버퍼는 dx9의 공유 배열보다 훨씬 효율적으로 업데이트 되도록 디자인되었다.

그래서 GPU의 메모리 대역폭과, CPU사용량을 최소화할 수 있다.

상수 버퍼의 사이즈는 16바이트의 배수 형태로 지정되어야 한다.

상수 버퍼는 구조체의 형태로 정의할 수 있다.

 

프리미티브 토폴로지(Primitive Topology)

정점들을 어떤 식으로 조합해서 프리미티브를 형성할 것인지를 정의하게 해 주는 수단. (삼각형, 선 등..)

 

D3D11_PRIMITIVE_TOPOLOGY_POINTLIST : 점 목록(point list)이 적용된다. 모든 정점은 점으로 그려진다.
D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP : 모든 정점들이 차례로 이어진다. 모든 정점이 이어진 선으로 글진다.
D3D11_PRIMITIVE_TOPOLOGY_LINELIST : 두 개의 정점이 서로 다른 정점들과 분리된 선분으로 그려진다.(다른 정점들과 이어지지 않는다)
D3D11_PRIMITIVE_TOPOLOGY_TRANGLESTRIP : 모든 정점들이 연결되어 일련의 삼각형들을 생성한다.

 

 

InputLayout 

버텍스 버퍼는 단순한 정점을 담고있는 자료구조일 뿐이다. 그러므로 버텍스 버퍼가 담고 있는 데이터가 어떤 데이터인지, 셰이더에 어떻게 넘길 것인지 같은 정보를 저장해 두는 것이 입력 레이아웃 오브젝트이다.

또한, Input-Assembler 단계에서는 Input Layout Object의 시멘틱스와 버텍스 셰이더의 시멘틱스를 비교하여, 전달된 데이터가 타당한지 검증하는 작업을 수행한다.

 

D3D11_INPUT_ELEMENT_DESC 구조체에 정보를 입력하여 구축한다.

 

Input-Assembler Stage

IA 단계에서는 버텍스 버퍼와 인덱스 버퍼에서 정점들과 인덱스를 읽어들여서 프리미티브를 조립하여, 버텍스 셰이더 스테이지로 전달한다.

IA 단계의 첫 번째 목적은 사용자의 버퍼에서 데이터를 읽어서 다른 파이프라인 단계에서 사용할 프리미티브를 조합하거나 시스템 생성 값을 연결하여 셰이더의 효율을 높이는 것이고,

두 번째 목적은 시스템 생성 값(시맨틱)을 추가하는 것이다. 이 시맨틱은 다음 단계의 셰이더에서 유용하게 쓰인다.

예를 들면 프리미티브ID, 인스턴스ID, 정점 ID등이 있는데 이 값은 셰이더에서 특정한 정점 또는 인스턴스를 처리할 수 있도록 해준다.

 

http://m.blog.daum.net/tjdgmlrnsk/11

 

DIRECTX11 다이렉트x 기초

다이렉트 x 11 프레임워크의 기초 삼각형을 그리기 위해선 이 3개의 점을 GPU로 보내야한다. D3D11에서 위치같은 버텍스정보는 버퍼리소스에 저장된다. 버텍스정보를 저장하는데 사용되는 버퍼는 당연하게도, 버텍스버퍼라 불린다. 버퍼리

blog.daum.net

D3D11_INPUT_ELEMENT_DESC 

 

https://m.blog.naver.com/PostView.nhn?blogId=sorkelf&logNo=40162437338&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

DirectX 11 기초 (Tutorial) - 입력 어셈블러 스테이지 Input Assembler Stage

입력 어셈블러 스테이지(Input Assembler 이하 IA) 는 렌더링 파이프라인의 젤 처음 스테이지이자 어플...

blog.naver.com

 

http://blog.naver.com/PostView.nhn?blogId=sorkelf&logNo=40162381015&parentCategoryNo=&categoryNo=80&viewDate=&isShowPopularPosts=false&from=postView

 

DirectX 11 기초 (Tutorial) - 상수 버퍼, 셰이더 스테이지 오브젝트(Constant Buffer, Shader Stage Object)

셰이더에서 실행하는 코드는 Dx9와 마찬가지로 HLSL 코드를 사용한다지난 포스팅에도 했지만 이번 포...

blog.naver.com

https://m.blog.naver.com/PostView.nhn?blogId=sorkelf&logNo=40162437338&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

DirectX 11 기초 (Tutorial) - 입력 어셈블러 스테이지 Input Assembler Stage

입력 어셈블러 스테이지(Input Assembler 이하 IA) 는 렌더링 파이프라인의 젤 처음 스테이지이자 어플...

blog.naver.com

 

+ Recent posts