struct Params { float bias; }; cbuffer params_CB : register(b0, space0) { Params params; }; Texture2D diffuse_tex_tex : register(t0, space0); SamplerState diffuse_tex_samp : register(s1, space0); Texture2D shadow_map_tex : register(t2, space0); SamplerState shadow_map_samp : register(s3, space0); struct _fs_main_Input { float4 _sv_position : SV_Position; float2 uv : TEXCOORD0; float2 shadow_uv : TEXCOORD1; }; struct _fs_main_Output { float4 _value : SV_Target0; }; _fs_main_Output fs_main(_fs_main_Input input) { _fs_main_Output __luma_output; float4 mip_color = diffuse_tex_tex.SampleLevel(diffuse_tex_samp, input.uv, params.bias); float shadow = shadow_map_tex.SampleCmpLevelZero(shadow_map_samp, input.shadow_uv, 0.5); __luma_output._value = float4((mip_color.rgb * shadow), mip_color.a); return __luma_output; }