ㅇ 원본
ㅇ 퐁세이딩
ㅇ 세이더
float4x4 matWorldViewProjection;
float4x4 matWorldView;
float4 vLightDir;
float4 vColor;
float3 vEyePos;
texture diffuse;
//sampler Texture0;
sampler2D Texture0 = sampler_state
{
texture = (diffuse);
minfilter = LINEAR;
magfilter = LINEAR;
mipfilter = LINEAR;
addressu = wrap;
};
struct VS_INPUT
{
float4 Position : POSITION0;
float4 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 Position : POSITION0;
float2 Texcoord : TEXCOORD0;
float3 N : TEXCOORD1;
float3 Eye : TEXCOORD2;
};
struct PS_INPUT
{
float2 Texcoord : TEXCOORD0;
float3 N : TEXCOORD1;
float3 Eye : TEXCOORD2;
};
VS_OUTPUT vs_main( VS_INPUT Input )
{
VS_OUTPUT Output;
Output.Position = mul( Input.Position, matWorldViewProjection );
Output.Texcoord = Input.Texcoord;
float amb = -vLightDir.w;
float3 L = -vLightDir;
// Output.Color = vColor * max(amb, dot(Input.Normal, -vLightDir )) ;
Output.N = Input.Normal.xyz;
Output.Eye = (vEyePos - Input.Position.xyz);
return( Output );
}
float4 ps_main(PS_INPUT input) : COLOR0
{
float3 L = -vLightDir.xyz;
float3 H = normalize( L + normalize(input.Eye));
float3 N = normalize( input.N);
return( tex2D( Texture0, input.Texcoord ) + pow(max(0,dot(N,H)),10) );
}
technique TSader
{
pass P0
{
VertexShader = compile vs_2_0 vs_main();
PixelShader = compile ps_2_0 ps_main();
Texture[0] = diffuse;
MinFilter[0] = LINEAR;
MagFilter[0] = LINEAR;
MipFilter[0] = LINEAR;
}
}
'[ C/ C++ 프로그래밍 ] > [ Shader ]' 카테고리의 다른 글
카툰 렌더링 (0) | 2010.07.19 |
---|---|
VC++ 2008에서 쉐이더 코드를 C++ 코드처럼 (0) | 2010.07.07 |
Glow 효과 (1) | 2010.07.07 |
[HLSL] 블린- 퐁 반영 반사광 (2) | 2010.06.02 |
[HLSL] 퐁 반영 반사광 (반사벡터) (2) | 2010.06.02 |