필요 변수의 선언
float4x4 matWorld;
float4x4 matView;
float4x4 matProjection;
입력 구조체의 작성.
정점 셰이더 계산에 필요한 데이터 형식을 구조체에 정의한다.
struct VS_INPUT
{
float4 position : POSITION0;
float2 Texcoord : TEXCOORD0;
};
출력 구조체의 정의
정점 셰이더에서 연산을 수행한 후 다음 단계로 전달할 결과 형식을 구조체로 정의한다.
struct VS_OUTPUT
{
float4 position : POSITION0;
float2 Texcoord : TEXCOORD0;
};
그리고 셰이더 작성 예시
float4x4 matWorld;
float4x4 matView;
float4x4 matProjection;
struct VS_INPUT
{
float4 position : POSITION0;
float2 Texcoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 position : POSITION0;
float2 Texcoord : TEXCOORD0;
};
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Output;
Output.Position = mul( Input.position, matWorld);
Output.Position = mul( Output.position, matView);
Output.Position = mul( Output.Position, matProjection);
Output.TexCoord = Input.TexCoord;
return(Output);
}
구조체 정리중.. |
주로 엔진으로부터 데이터를 받아와서 넣습니다.
struct appdata
{
POSITION정점 위치이며 일반적으로 float3또는 float4입니다.
NORMAL정점 법선이며 일반적으로 float3.
TEXCOORD0제 UV 전형적, 좌표 float2, float3또는 float4.
TEXCOORD1, TEXCOORD2및 TEXCOORD3각각 2, 3, 4 UV 좌표입니다.
TANGENT접선 벡터 (법선 매핑에 사용됨)이며 일반적으로 float4.
COLOR정점 별 색상이며 일반적으로 float4.
};
struct v2f
{
float4 position : SV_POSITION;
float3 normal : NORMAL;
float3 uv : TEXCOORD0;
float fogCoord : TEXCOORD1;
float4 shadowCoord : TEXCOORD2;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO //VR이 활성화 되어 있는 경우만 유효한 매크로
};
struct appdata_base: vertex shader input with position, normal, one texture coordinate.
struct appdata_tan: vertex shader input with position, normal, tangent, one texture coordinate.
struct appdata_full: vertex shader input with position, normal, tangent, vertex color and two texture coordinates.
struct appdata_img: vertex shader input with position and one texture coordinate.