깊이 버퍼 그림자 (6) 장에 설명된
쉐이더 코드의 마지막 부분입니다.
픽셀 쉐이더에서는
그림자가 드리워졌는지를 검사하고, 드리워 진것으로 판정되면,
바로 컬러를 계산 후 리턴합니다.
//PS
float4 PixelShader_0 ( VS_OUTPUT _In ) : COLOR
{
float4 color;
//근거리 그림자 텍스쳐를 검사하여,
//그림자가 체크되었다면, 그림자와 색상값을 섞어서 리턴해준다.
color = Is_Shadow( _In, 0 );
if( g_bIsColor )
{
return color;
}
//중거리 그림자 텍스쳐를 검사하여,
//그림자가 체크되었다면, 그림자와 색상값을 섞어서 리턴해준다.
color = Is_Shadow( _In, 1 );
if( g_bIsColor )
{
return color;
}
//원거리 그림자 텍스쳐를 검사하여,
//그림자가 체크되었다면, 그림자와 색상값을 섞어서 리턴해준다.
color = Is_Shadow( _In, 2 );
if( g_bIsColor )
{
return color;
}
//여기까지 왔다면, 그림자가 드리워지지 않았다는것
//자기색상을 돌려준다.
return Ret_Color_Def( _In, 1.f );
}
technique Tech
{
pass P0
{
// shaders
VertexShader = compile vs_2_a VertexShader_0();
PixelShader = compile ps_2_a PixelShader_0();
}
}
*주의할점
지형에 캐릭터 그림자를 드리울때는,
깊이비교를 위해서, 지형도 꼭 깊이버퍼에 그려주어야 합니다
처음에 구현할때, 지형은 깊이버퍼에 렌더링하지 않아서,
깊이값 비교가 제대로 되지 않고,
결국,
지형에 드리워지는 그림자는, 아주 거친 도트식으로만 출력되었습니다 ㅜㅜ
'프로그래밍' 카테고리의 다른 글
C++ UIProperty_String - 02 (0) | 2014.03.09 |
---|---|
C++ UIProperty_String - 01 (0) | 2014.03.09 |
depth buffer shadow - 깊이 버퍼 그림자 (6) (0) | 2014.01.13 |
depth buffer shadow - 깊이 버퍼 그림자 (5) (0) | 2014.01.13 |
depth buffer shadow - 깊이 버퍼 그림자 (4) (0) | 2013.12.23 |