본문 바로가기

[ C/ C++ 프로그래밍 ]/[ Shader ]

퐁세이딩

ㅇ 원본



ㅇ 퐁세이딩



ㅇ 세이더
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