47 lines
946 B
HLSL
47 lines
946 B
HLSL
//[entrypoint(ps)]
|
|
float ps_DrawDepth(in Hull h, out float d : SV_Depth) : SV_Target0
|
|
{
|
|
float3 rd;
|
|
float t;
|
|
d = 0;
|
|
if (raymarch(h, 24, rd, t))
|
|
{
|
|
float3 p = h.world + t * rd;
|
|
d = length(p - _c._e.xyz) / 500;
|
|
return exp(80 * d);
|
|
}
|
|
discard;
|
|
return 0;
|
|
}
|
|
|
|
float log_conv(float x0, float X, float y0, float Y)
|
|
{
|
|
return X + log(x0 + (y0 * exp(Y - X)));
|
|
}
|
|
|
|
float blur(float2 uv, float2 dirAndSize)
|
|
{
|
|
const float coeff[7] = { 0.006, 0.061, 0.242, 0.382, 0.242, 0.061, 0.006 };
|
|
float2 s = uv - 3 * dirAndSize.xy;
|
|
float accum = 0;
|
|
for (int i = 0; i < 7; ++i)
|
|
accum += t2d4.Sample(s0, s + i * dirAndSize.xy).x * coeff[i];
|
|
return accum;
|
|
}
|
|
|
|
//[entrypoint(ps)]
|
|
float ps_BlurH(in float2 uv : TEXCOORD) : SV_Target0
|
|
{
|
|
float w,h;
|
|
t2d4.GetDimensions(w, h);
|
|
return blur(uv, float2(1/w,0));
|
|
}
|
|
|
|
//[entrypoint(ps)]
|
|
float ps_BlurV(in float2 uv : TEXCOORD) : SV_Target0
|
|
{
|
|
float w,h;
|
|
t2d4.GetDimensions(w, h);
|
|
return blur(uv, float2(0,1/h));
|
|
}
|