[RenderMonkey] Vertex Animation
// Vertex Shader
float4x4 gWorldMatrix;
float4x4 gViewMatrix;
float4x4 gProjectionMatrix;
float4 gWorldLightPosition;
float4 gWorldCameraPosition;
float gTime;
float gWaveHeight;
float gSpeed;
float gWaveFrequency;
float gUVSpeed;
struct VS_INPUT
{
float4 mPosition : POSITION;
float3 mNormal : NORMAL;
float2 mUV : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 mPosition : POSITION;
float2 mUV : TEXCOORD0;
float3 mDiffuse : TEXCOORD1;
float3 mViewDir : TEXCOORD2;
float3 mReflection : TEXCOORD3;
};
VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Output;
float cosTime = gWaveHeight * cos(gTime * gSpeed + Input.mUV.x * gWaveFrequency);
Input.mPosition.y += cosTime;
Output.mPosition = mul(Input.mPosition, gWorldMatrix);
float3 lightDir = Output.mPosition.xyz - gWorldLightPosition.xyz;
lightDir = normalize(lightDir);
float3 viewDir = normalize(Output.mPosition.xyz - gWorldCameraPosition.xyz);
Output.mViewDir = viewDir;
Output.mPosition = mul(Output.mPosition, gViewMatrix);
Output.mPosition = mul(Output.mPosition, gProjectionMatrix);
float3 worldNormal = mul(Input.mNormal, (float3x3)gWorldMatrix);
worldNormal = normalize(worldNormal);
Output.mDiffuse = dot(-lightDir, worldNormal);
Output.mReflection = reflect(lightDir, worldNormal);
//Output.mUV = Input.mUV + float2(gTime * 0.25f, 0);
Output.mUV = Input.mUV + float2(gTime * gUVSpeed, 0);
return Output;
}
'Study > RenderMonkey - 2019년 백업' 카테고리의 다른 글
[RenderMonkey] Shadow 2/2 (1) | 2023.12.06 |
---|---|
[RenderMonkey] Shadow 1/2 (0) | 2023.12.06 |
[RenderMonkey] UV Animation (1) | 2023.12.06 |
[RenderMonkey] Environment Sampler / Cube Map (0) | 2023.12.06 |
[RenderMonkey] Normal Mapping (1) | 2023.12.06 |