※ 제 개인 공부이므로 풀 소스 코드는 작성하지 않습니다. ※
※ 생략 되어 있는 부분이 많습니다. ※
삼각형을 그리기 위한 셋팅들은 전 글인
2. 노란 삼각형을 그려보자..(외부 fx파일, 전역, 지역 변수 핸들 개념 등등..) 와 모두 같다.
// External Variable Semantic
float4x4 m_mtWldViw : WORLDVIEW;
float4 pos: POSITION;
// Struct
struct T
{
float3 pos : POSITION;
float3 normal;
};
// User Defined Function Semantic
float4 MyFunc( float3 pos: POSITION) : POSITION
{
return float4(pos, 1);
}
void VtxPrc( in float3 iPos : POSITION, out float4 oPos : POSITION, out float4 oD0 : COLOR)
{
float4 posLocal: POSITION; // 지역 변수는 Semantic을 붙일 수 없다.
// 구조체 초기화
struct T v={ {1,2,3}, {4,5,6}};
// vector 형 초기화
vector<float, 4> Dif = float4(1,1,0,1);
// vector 형 갱신
Dif = vector(1, 0, 1, 1);
// boo형 변수
bool t=true;
// 사용자 정의 함수 call Semantic이라고 하는 것은 변수의 입력과 출력을 확인 또는 지정하거나 데이터의 출처와 역할에 의미를 부여하기 위해 함수나, 변수, 인수 뒤에 선택적으로 붙여서 서술하는 것이라고 한다. 방법은 간단하다 변수,인수,함수 끝에 콜론( : )을 붙이고 명시할 시맨틱 이름을 붙이면 된다. 위 셰이더 코드에서 빨간색으로 되어있는 posLocal 변수는 지역변수인데 지역 변수에는 시맨틱을 붙일 수 없다고 한다. 위 코드 대로 셰이더를 컴파일하게 되면 에러가 난다. 시맨틱을 없애거나 변수를 없애면 정상적으로 보라색 삼각형이 나온다. 1.입력에 사용되는 시맨틱s POSITION[n]: 정점의 위치. POSITION, POSITION0, POSITION1, …. BLENDWEIGHT[n]: 정점 블렌딩 비중 값 BLENDINDICES[n]: 정점 블렌딩 인덱스 값 NORMAL[n]: 정점 법선 벡터 PSIZE[n]: Point Size COLOR[n]: 정점 Diffuse(COLOR, COLOR0), Specular(COLOR1) TEXCOORD[n]: 텍스처 좌표 TANGENT[n]: 정점 접선 벡터 BINORMAL[n]: 정점 종법선 벡터 TESSFACTOR[n]: tessellation factor POSITION: 정점의 출력 위치 PSIZE: Point Size FOG: 정점 포그 값 COLOR[0,1]: Diffuse, Specular TEXCOORD[0~7]: 텍스처 좌표 D3D에서 사용자가 만든 데이터는 출력 레지스터가 없기 때문에 이 데이터를 픽셀 쉐이더로 전달하기 위한 경우 TEXCOORD 출력 시멘틱을 가장 많이 사용하며 TEXCOORD0, TEXCOORD1은 대부분 사용하기 때문에 보통TEXCOORD7부터 TEXCOORD6, TEXCOORD5, … 등을 이용한다고 한다.
oPos = MyFunc(iPos);
oD0 = Dif;
}
'Shader' 카테고리의 다른 글
6. 알록달록 사각형을 돌려보자.(변환) (0) | 2017.02.03 |
---|---|
5. 알록달록 삼각형을 그려보자.(Semantic 시맨틱2) (0) | 2017.02.03 |
3. 청록색 삼각형을 그려보자(uniform, varing 키워드) (0) | 2017.02.02 |
2. 노란 삼각형을 그려보자..(외부 fx파일, 전역, 지역 변수 핸들 개념 등등..) (0) | 2017.02.02 |
1. 하얀색 삼각형을 그려보자. (0) | 2017.02.02 |