반투명 셰이더 - 03
셰이더 코드는,
사각형에 텍스쳐를 입히는 코드이므로, 심플합니다.
- actor_pre.fx -
texture tex_src;
float _fAlpha = 0.5f; //0 ~ 1
//--------------------------------------------------------------------------------------
// Texture samplers
//--------------------------------------------------------------------------------------
sampler2D Samp_Tex_Src =
sampler_state
{
Texture = <tex_src>;
//4.0
Filter=MIN_MAG_MIP_LINEAR;
//AddressU = Wrap;
//AddressV = Wrap;
};
//--------------------------------------------------------------------------------------
// VS_INPUT
//--------------------------------------------------------------------------------------
struct VS_INPUT
{
float4 pos : POSITION;
float4 diff : COLOR0;
float2 uv : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 pos : POSITION;
float4 diff : COLOR0;
float2 uv : TEXCOORD0;
};
//--------------------------------------------------------------------------------------
// shader func
//--------------------------------------------------------------------------------------
VS_OUTPUT _VS( VS_INPUT _In )
{
VS_OUTPUT Out = (VS_OUTPUT)0;
Out.pos = _In.pos;
Out.uv = _In.uv;
Out.diff = _In.diff;
return Out;
}
float4 _PS( VS_OUTPUT _In ) : COLOR
{
float4 Out;
Out = tex2D( Samp_Tex_Src, _In.uv ) * _In.diff;
//배경은 투명상태....
//픽셀검사 - draw 필요 없는 부분은 완전 투명하게
if( Out.r < 0.001 && Out.g < 0.001 && Out.b < 0.001 )
{
Out *= 0.f;
}
else
{
//Out.a *= 0.5f;
//Out *= 0.3f;
Out.a = _fAlpha;
}
return Out;
}
technique Tech
{
pass P0 //0
{
VertexShader = compile vs_2_a _VS();
PixelShader = compile ps_2_a _PS();
}
}
게임속,
처녀귀신에게 적용한 모습입니다.
cull mode 는 none 으로 한 것입니다.
ㅋㅋㅋ
처녀귀신 얼굴의 압박,,,,,,
겹쳐져 draw 되는 폴리곤없이,
깨끗하게 알파가 빠졌습니다.
오옷!
좋네요!
--------------------------------------------------------------
다른 작업하느라 놔두었다가,
다시 테스트를 해보니,
큰!
문제가 있습니다,,,,,
screen 좌표로 렌더링을 하니,,,
맵에서 가려져야 할 오브젝트에
가려지지 않습니다
ㅜㅜ
이런,,,,
생각해보니 당연한 것을,,,
'프로그래밍' 카테고리의 다른 글
BSP 트리 ( bsp tree ) - 01 (0) | 2014.04.20 |
---|---|
BSP 트리 ( bsp tree ) - 02 (0) | 2014.04.20 |
반투명 쉐이더 - 02 (0) | 2014.04.15 |
반투명 셰이더 - 01 (0) | 2014.04.15 |
HDR LDR Bloom (0) | 2014.03.23 |