Files
bluflame/evoke-64k/trunk/ev10/cfg/pstexgen.txt
2026-04-18 22:31:51 +02:00

146 lines
3.8 KiB
Plaintext

float4 g_fResolution : register(c0);
float3x3 g_mCubeMatrix : register(c40);
float g_fCubeWeight : register(c43);
float g_fOverlayFade : register(c50);
float4 g_fFadeColor : register(c51);
sampler2D randomSampler : register(s0);
sampler3D randomCubeSampler : register(s1);
sampler2D ditherSampler : register(s2);
sampler2D inputSampler : register(s3);
samplerCUBE inputCubeSampler : register(s4);
float4 rand_val(float4 r)
{
return r;
// float lr = dot(r, float4(10.f, 100.f, 1000.f, 1.f));
// return lr / 1111.f;
}
float4 noise(float2 t)
{
float4 r = tex2D(randomSampler, .03125f * t);
return rand_val(r)* 2.f - 1.f;
}
float4 noise_grad(float2 t, float2 dtX, float2 dtY)
{
float4 r = tex2Dgrad(randomSampler, .03125f * t, .0625f * dtX, .0625f * dtY);
return rand_val(r)* 2.f - 1.f;
}
float4 abs_noise(float2 t)
{
return abs( noise(t) );
}
float4 abs_noise_grad(float2 t, float2 dtX, float2 dtY)
{
return abs( noise_grad(t, dtX, dtY) );
}
float4 ps_perlin(float2 TexCoord : TEXCOORD0) : COLOR0
{
float2 t = 32 * TexCoord;
float4 fNoise = noise(t) / 2.0f;
fNoise += noise(2 * t) / 4.0f;
fNoise += noise(4 * t) / 8.0f;
fNoise += noise(8 * t) / 16.0f;
fNoise += noise(16 * t) / 32.0f;
fNoise += noise(32 * t) / 64.0f;
fNoise += noise(64 * t) / 128.0f;
fNoise += noise(128 * t) / 256.0f;
fNoise += noise(256 * t) / 512.0f;
fNoise += noise(512 * t) / 1024.0f;
return fNoise * 0.5f + 0.5f;
}
float4 ps_wave(float2 TexCoord : TEXCOORD0) : COLOR0
{
float4 fNoise = tex2D(inputSampler, TexCoord);
float4 fX = 0.5f * fNoise;
fX -= round(fX);
float4 fWave = 8.1688f * (1.0f - cos(fX));
return fNoise;
}
float4 ps_normal(float2 TexCoord : TEXCOORD0) : COLOR0
{
// Construct pixels
float3 vPixel = TexCoord.xyy;
vPixel.z = tex2D(inputSampler, vPixel.xy).r;
float3 vRightPixel = TexCoord.xyy;
vRightPixel.x += g_fResolution.z;
vRightPixel.z = tex2D(inputSampler, vRightPixel.xy).r;
float3 vBottomPixel = TexCoord.xyy;
vBottomPixel.y += g_fResolution.w;
vBottomPixel.z = tex2D(inputSampler, vBottomPixel.xy).r;
// Get change rates
float3 vRight = vRightPixel - vPixel;
float3 vDown = vBottomPixel - vPixel;
// Compute normal
float3 vNormal = cross(vRight, vDown);
vNormal.z = max(vNormal.z, 0.0f);
vNormal = normalize(vNormal);
// Encode & return
vNormal.xy = vNormal.xy * 0.5f + 0.5f;
return float4(saturate(vNormal), vPixel.z);
}
float4 ps_cube_blur(float2 TexCoord : TEXCOORD0) : COLOR0
{
float3 vCubeDir = float3(TexCoord * float2(2.0f, -2.0f) - float2(1.0f, -1.0f), 1.0f);
float3 vCubeCoord = mul(vCubeDir, transpose(g_mCubeMatrix));
return texCUBE(inputCubeSampler, vCubeCoord) * g_fCubeWeight;
}
bool flame(float2 o)
{
return (o.x < -0.52) && (pow(2 * (o.x + 0.52), 2.0) + pow(o.y - 0.33, 2.0) < 1) ||
(o.x >= -0.52 && o.x < 1.57 && o.y <= 1 - sin(3 * o.x) / 3 || o.x >= 1.57 && o.y < 1.33 - pow(o.x - 1.57, 2.0)) &&
(o.x >= -0.52 && o.y >= -0.01 + sin(1.5 * o.x - 0.9) / 1.5);
}
float4 ps_logo(float2 TexCoord : TEXCOORD0) : COLOR0
{
float4 fColor = 0.0f;
float2 o;
TexCoord.y = (TexCoord.y - 0.5f) * (g_fResolution.y * 16) / (g_fResolution.x * 9) + 0.5f;
TexCoord.y = 1.0f - TexCoord.y;
TexCoord *= float2(1024, 768);
// 4x sampling
for (float x = 0; x < 1/128.0; x += 1/256.0)
for (float y = 0; y < 1/128.0; y += 1/256.0)
{
o = (TexCoord.yx - float2(384.0f, 512.0f)) / 128.0f + float2(0.5f + y, 0.3f + x);
o.y *= (3.0f * 16) / (4.0f * 9);
o.x /= 1.1;
o.y *= 1.2;
fColor += flame(o) * float4(0, 0.5, 1, 1);
o.y /= -1.2;
o.x *= 1.1;
o += float2(0.2, 0.3);
fColor += flame(o) * float4(0, 0.75, 1, 1);
}
fColor /= 8.0f;
fColor *= g_fOverlayFade * length((o+float2(.4,0))*.8);
return fColor;
}
float4 ps_fade() : COLOR0
{
float4 fColor = g_fFadeColor;
fColor.xyz *= fColor.w;
return fColor;
}