Files
render/assets/shaders/_this_is_fuckin_default_shader.hlsl
T
2026-08-17 06:31:43 +09:00

78 lines
1.6 KiB
HLSL

#include "include/shadow_mainlit.hlsli"
// cbuffer CBScene : register(b0)
// {
// row_major float4x4 view;
// row_major float4x4 proj;
// float4 cameraPos;
// float4 lightDirection;
// float4 cameraColor;
// }
cbuffer CBPerMat : register(b1){
float4 cbColor;
}
// cbuffer CBPerObj : register(b2)
// {
// row_major float4x4 world;
// }
struct VSInput
{
float3 position : POSITION;
float3 normal : NORMAL;
// float3 tangent : TANGENT;
float2 texcoord0 : TEXCOORD0;
// float2 texcoord1 : TEXCOORD1;
// float4 color : COLOR0;
// int4 boneIndex : BLENDINDICES0;
// float4 boneWeight : BLENDWEIGHT0;
};
struct PSInput
{
float4 pos : SV_POSITION;
float3 worldPos : MPROP0;
float4 shadowPos : MPROP1;
float2 uv : MPROP2;
float3 worldNrm : MPROP3;
};
PSInput VSMain(VSInput i)
{
PSInput o;
float4 pos = float4(i.position, 1.0f);
pos = mul(pos, cbWorld);
o.worldPos = pos.xyz;
o.shadowPos = mul(pos, cbLightViewProjection);
pos = mul(pos, cbView);
pos = mul(pos, cbProj);
o.pos = pos;
o.uv = i.texcoord0;
float4 _normal = float4(i.normal, 0.0f);
_normal = mul(_normal, cbWorld);
o.worldNrm = _normal.xyz;
return o;
}
half4 PSMain(PSInput i) : SV_TARGET
{
half3 color = half3(0.8f, 0.8f, 0.9f);
i.worldNrm = normalize(i.worldNrm);
float intlit = saturate(-dot(i.worldNrm, cbMainLightDirection.xyz));
intlit *= CalculateMainLightShadow(i.shadowPos, i.worldNrm);
intlit = 0.5f * (intlit + 1.0f);
half3 col = color * intlit;
return half4(col.xyz, 1.0f);
}