Study/RenderMonkey - 2019년 백업

[RenderMonkey] Shadow 1/2

김성인 2023. 12. 6. 23:33

[RenderMonkey] Shadow 1/2


// Vertex Shader

struct VS_INPUT
{
    float4 mPosition : POSITION;
};

struct VS_OUTPUT
{
    float4 mPosition : POSITION;
    float4 mClipPosition : TEXCOORD1;
};

float4x4 gWorldMatrix;
float4x4 gLightViewMatrix;
float4x4 gLightProjectionMatrix;

float4 gWorldLightPosition;

VS_OUTPUT vs_main(VS_INPUT Input)
{
    VS_OUTPUT Output;

    float4x4 lightViewMatrix = gLightViewMatrix;

    float3 dirZ = -normalize(gWorldLightPosition.xyz);
    float3 up = float3(0, 1, 0);
    float3 dirX = cross(up, dirZ);
    float3 dirY = cross(dirZ, dirX);

    lightViewMatrix = float4x4(
        float4(dirX, -dot(gWorldLightPosition.xyz, dirX)),
        float4(dirY, -dot(gWorldLightPosition.xyz, dirY)),
        float4(dirZ, -dot(gWorldLightPosition.xyz, dirZ)),
        float4(0, 0, 0, 1));
    lightViewMatrix = transpose(lightViewMatrix);

    Output.mPosition = mul(Input.mPosition, gWorldMatrix);
    Output.mPosition = mul(Output.mPosition, lightViewMatrix);
    Output.mPosition = mul(Output.mPosition, gLightProjectionMatrix);

    Output.mClipPosition = Output.mPosition;

    return Output;
}

// Pixel Shader

struct PS_INPUT
{
    float4 mClipPosition : TEXCOORD1;
};

float4 ps_main(PS_INPUT Input) : COLOR
{
   float depth = Input.mClipPosition.z / Input.mClipPosition.w;
   return float4(depth.xxx, 1);
}

'Study > RenderMonkey - 2019년 백업' 카테고리의 다른 글

[RenderMonkey] Color Conversion  (1) 2023.12.06
[RenderMonkey] Shadow 2/2  (1) 2023.12.06
[RenderMonkey] Vertex Animation  (1) 2023.12.06
[RenderMonkey] UV Animation  (1) 2023.12.06
[RenderMonkey] Environment Sampler / Cube Map  (0) 2023.12.06