AMD RenderMonkey를 사용하여 HLSL문법에 대해 알아보도록 하겠다.
HLSL High-Level Shader Language
: DirectX에서 프로그래밍 가능한 셰이더와 함께 사용하는 C와 비슷한 고급 셰이더 언어이다.
정점셰이더 Vertex Shader
: 각 정점의 위치를 공간변환한다.
// float4x4 4x4 행렬 데이터 전역변수 선언
float4x4 gWorldMatrix;
float4x4 gViewMatrix;
float4x4 gProjectionMatrix;
// 정점셰이더에서 입력받을 데이터 구조체 선언
struct VS_INPUT
{
// float4 4개의 성분을 가지는 벡터 데이터형
// POSITION 태그를 이용하여 정점 위치를 받아온다.
float4 Position : POSITION0;
};
// 정점셰이더의 출력데이터 구조체를 선언
struct VS_OUPUT
{
float4 Position : POSITION0;
};
// VS_INPUT을 인수로 받는다.
VS_OUTPUT vs_main( VS_INPUT Input )
{
VS_OUTPUT output;
// mul() 곱하기 함수
OUTPUT.Position = mul( Input.Position, gWorldMatrix );
OUTPUT.Position = mul( OUTPUT.Position, gViewMatrix );
OUTPUT.Position = mul( OUTPUT.Position, gProjectionMatrix );
return output;
}
픽셀셰이더 Pixel Shader
: 픽셀의 색을 반환한다.
// 반환 값을 백버퍼의 색상(COLOR)로 처리한다.
float4 ps_main() : COLOR
{
// RGBA의 값을 비트 수에 상관없이 표현하기 위해 백분율을 사용한다.
return float4( 1.0f, 0.0f, 0.0f, 1.0f );
}
출처 : 셰이더 프로그래밍 입문
'Shader & 포스트 프로세싱' 카테고리의 다른 글
디퓨즈/스페큘러 매핑 (0) | 2022.02.23 |
---|---|
기초적인 조명셰이더(2)_정반사광specular light (0) | 2022.02.23 |
기초적인 조명셰이더(1)_난반사광diffuse light (0) | 2022.02.22 |
텍스처매핑 (0) | 2022.02.15 |
Shader란? (0) | 2022.02.14 |
댓글