port from perforce
This commit is contained in:
56
evoke-64k/ev10/cfg/psray.txt
Normal file
56
evoke-64k/ev10/cfg/psray.txt
Normal file
@@ -0,0 +1,56 @@
|
||||
float3 lightDir : register(c1);
|
||||
float3 viewDir : register(c4);
|
||||
float3 passID2expIsLast : register(c23);
|
||||
|
||||
sampler2D colorSampler : register(s0);
|
||||
sampler2D depthSampler : register(s1);
|
||||
|
||||
// Tweakables
|
||||
static float4 g_fRayColor = float4(0.9f, 0.8f, 0.7f, 1.0f);
|
||||
static float g_fRayNearPlane = 10.0f;
|
||||
static float g_fRayFarPlane = 500.0f;
|
||||
static float g_fRayDensity = 0.25f;
|
||||
static float g_fRayDecay = 0.9125f;
|
||||
static float g_fRayAnglePersistence = 4.f;
|
||||
|
||||
float4 ps_ray_mask(float2 TexCoord : TEXCOORD0, float2 LightPos : TEXCOORD2) : COLOR0
|
||||
{
|
||||
float2 d = LightPos - TexCoord;
|
||||
float r = saturate( 1.f - dot(d, d) );
|
||||
r *= saturate( g_fRayAnglePersistence * dot(-lightDir, viewDir) );
|
||||
|
||||
float m = tex2D(depthSampler, TexCoord).x;
|
||||
m = saturate( (m - g_fRayNearPlane) / (g_fRayFarPlane - g_fRayNearPlane) );
|
||||
// m = saturate(1.f - m);
|
||||
|
||||
// float2 p = TexCoord * 2.0f - 1.0f;
|
||||
// float b = saturate( 1.0f - 0.7071f * dot(p, p) );
|
||||
|
||||
return /* b */ m * r * g_fRayColor;
|
||||
}
|
||||
|
||||
// Pixel shader
|
||||
float4 ps_ray_extrude(float2 TexCoord : TEXCOORD0, float2 LightPos : TEXCOORD2) : COLOR0
|
||||
{
|
||||
float2 s = g_fRayDensity / (passID2expIsLast.y) * (LightPos - TexCoord) / 8.f;
|
||||
|
||||
float4 r = 0.f, ro = 0.f, rm = 0.f, rd = .125f;
|
||||
float2 c = TexCoord;
|
||||
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
float4 rs = tex2D(colorSampler, c);
|
||||
ro = (i == 0) ? rs : ro;
|
||||
|
||||
rm = max(rs, rm);
|
||||
rs.xyz = rm.xyz;
|
||||
r += rs * rd;
|
||||
|
||||
rd.xyz *= (float3)g_fRayDecay;
|
||||
c += s;
|
||||
}
|
||||
|
||||
r.a = min(ro.a, r.a);
|
||||
|
||||
return r * saturate(1.f - passID2expIsLast.z * r.a);
|
||||
}
|
||||
Reference in New Issue
Block a user