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 );
    }

     

    컴파일하여 빨간색이 적용된 셰이더를 확인했다.
    픽셀셰이더의 return float(0.0f, 1.0f, 0.0f, 1.0f); 값을 변경하여 다른 색상도 확인이 가능하다.

    출처 : 셰이더 프로그래밍 입문

    댓글