Featured image of post 쉐이더 프로그래밍 _ 물 쉐이더

쉐이더 프로그래밍 _ 물 쉐이더

물 쉐이더는 나름 간편.
재미있는 원리군요.

아니 정확히 말하면 물 쉐이더는 이걸로 끝이 아니죠
이건 가장 간단한 물 표현 쉐이더의 하나.
더 계산해서 R2의 물 쉐이더만큼 만들어 줘야 할텐데 말입니다 ㅎㅎ

여기서 중요한건 움직이는 이미지를 tex2D 해서, 그 이미지값을 가지고 다시 tex2D의 좌표를 보정하는 것입니다.
이건 뭐 굴절도 아니고 ㅎㅎ

float4x4 matViewProjection;

struct VS_INPUT
{
   float4 Position : POSITION0;
   float2 texcoord : TEXCOORD0;
};

struct VS_OUTPUT
{
   float4 Position : POSITION0;
   float2 texcoord : TEXCOORD0;
  
};

VS_OUTPUT vs_main( VS_INPUT Input )
{
   VS_OUTPUT Output;

   Output.Position = mul( Input.Position, matViewProjection );
   Output.texcoord = Input.texcoord ;
  
   return( Output );
  
}

sampler2D Texture0;
sampler2D Texture1;
float Flowspeed;
float fTime0_X;
float bumpness;

float4 ps_main(float2 texcoord : TEXCOORD0) : COLOR0
{

   //float2 uv = float2(texcoord.x + fTime0_X * Flowspeed, texcoord.y);
   float3 normal ;
   normal = tex2D(Texture1,float2(texcoord.x + fTime0_X * Flowspeed, texcoord.y));
  
  
  //float4 ripple = tex2D ( Texture1, float2(texcoord.x + fTime0_X * flowspeed, texcoord.y));
   float4 base = tex2D ( Texture0, texcoord.xy + bumpness * normal.xy );

   return base;
  
}

Hugo로 만듦
JimmyStack 테마 사용 중