1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

fix bilinear shader

This commit is contained in:
FunkyFr3sh 2023-08-22 22:38:26 +02:00
parent f564fa840e
commit ceb3a88149

View File

@ -134,10 +134,7 @@ const BYTE D3D9_PALETTE_SHADER[] =
mov r0.y, c1.y
rcp r1.x, c0.x
rcp r1.y, c0.y
mul r0.zw, t0.wzyx, c0.wzyx
frc r0.zw, r0
add r2.xy, -r0.wzyx, c1.x
mad r2.xy, r2, r1, t0
mad r2.xy, r1, c1.x, t0
add r3.xy, r1, r2
mov r1.z, c1.y
add r4.x, r1.z, r2.x
@ -145,26 +142,28 @@ const BYTE D3D9_PALETTE_SHADER[] =
add r1.x, r1.x, r2.x
add r1.y, r1.z, r2.y
texld r3, r3, s0
texld r2, r2, s0
texld r1, r1, s0
texld r4, r4, s0
texld r5, r2, s0
mad r0.x, r3.x, c1.z, c1.w
mov r3.y, c1.y
mad r2.x, r2.x, c1.z, c1.w
mad r1.x, r1.x, c1.z, c1.w
mad r3.x, r4.x, c1.z, c1.w
mov r3.y, c1.y
mad r4.x, r5.x, c1.z, c1.w
mov r4.y, c1.y
mov r1.y, c1.y
mov r2.y, c1.y
texld r4, r0, s1
texld r0, r0, s1
texld r3, r3, s1
texld r4, r4, s1
texld r1, r1, s1
texld r2, r2, s1
lrp r5, r0.w, r4, r3
lrp r3, r0.w, r1, r2
lrp r1, r0.z, r5, r3
mul r2.xy, r2, c0
frc r2.xy, r2
lrp r5, r2.x, r0, r3
lrp r0, r2.x, r1, r4
lrp r1, r2.y, r5, r0
mov oC0, r1
// approximately 32 instruction slots used (8 texture, 24 arithmetic)
// approximately 31 instruction slots used (8 texture, 23 arithmetic)
// fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h
/*
@ -176,24 +175,23 @@ float4 TextureSize : register(c0);
float4 bilinear(float2 coord)
{
float2 size = 1.0 / TextureSize.xy;
float2 f = frac(coord * TextureSize.xy);
coord += (.5 - f) * size;
float tli = tex2D(SurfaceTex, coord).r;
float tri = tex2D(SurfaceTex, coord + float2(size.x, 0.0) ).r;
float bli = tex2D(SurfaceTex, coord + float2(0.0, size.y)).r;
float bri = tex2D(SurfaceTex, coord + float2(size.x, size.y)).r;
float2 pos = coord + size * 0.5;
float2 f = frac(pos / size);
float tli = tex2D(SurfaceTex, pos).r;
float tri = tex2D(SurfaceTex, pos + float2(size.x, 0.0) ).r;
float bli = tex2D(SurfaceTex, pos + float2(0.0, size.y)).r;
float bri = tex2D(SurfaceTex, pos + float2(size.x, size.y)).r;
float4 tl = tex2D(PaletteTex, float2(tli * (255./256) + (0.5/256), 0));
float4 tr = tex2D(PaletteTex, float2(tri * (255./256) + (0.5/256), 0));
float4 bl = tex2D(PaletteTex, float2(bli * (255./256) + (0.5/256), 0));
float4 br = tex2D(PaletteTex, float2(bri * (255./256) + (0.5/256), 0));
float4 top = lerp(tl, tr, f.x);
float4 bot = lerp(bl, br, f.x);
return lerp(top, bot, f.y);
float4 t = lerp(tl, tr, f.x);
float4 b = lerp(bl, br, f.x);
return lerp(t, b, f.y);
}
float4 main(float2 texCoords : TEXCOORD) : COLOR
@ -204,142 +202,143 @@ float4 main(float2 texCoords : TEXCOORD) : COLOR
#endif
const BYTE D3D9_PALETTE_SHADER_BILINEAR[] =
{
0, 2, 255, 255, 254, 255,
56, 0, 67, 84, 65, 66,
28, 0, 0, 0, 179, 0,
0, 0, 0, 2, 255, 255,
3, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
172, 0, 0, 0, 88, 0,
0, 0, 3, 0, 1, 0,
1, 0, 0, 0, 100, 0,
0, 0, 0, 0, 0, 0,
116, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0,
128, 0, 0, 0, 0, 0,
0, 0, 144, 0, 0, 0,
2, 0, 0, 0, 1, 0,
2, 0, 156, 0, 0, 0,
0, 0, 0, 0, 80, 97,
108, 101, 116, 116, 101, 84,
101, 120, 0, 171, 4, 0,
12, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 83, 117, 114, 102,
97, 99, 101, 84, 101, 120,
0, 171, 4, 0, 12, 0,
1, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
84, 101, 120, 116, 117, 114,
101, 83, 105, 122, 101, 0,
1, 0, 3, 0, 1, 0,
4, 0, 1, 0, 0, 0,
0, 0, 0, 0, 112, 115,
95, 50, 95, 48, 0, 77,
105, 99, 114, 111, 115, 111,
102, 116, 32, 40, 82, 41,
32, 72, 76, 83, 76, 32,
83, 104, 97, 100, 101, 114,
32, 67, 111, 109, 112, 105,
108, 101, 114, 32, 49, 48,
46, 49, 0, 171, 81, 0,
0, 5, 1, 0, 15, 160,
0, 0, 0, 63, 0, 0,
0, 0, 0, 0, 127, 63,
0, 0, 0, 59, 31, 0,
0, 2, 0, 0, 0, 128,
0, 0, 3, 176, 31, 0,
0, 2, 0, 0, 0, 144,
0, 8, 15, 160, 31, 0,
0, 2, 0, 0, 0, 144,
1, 8, 15, 160, 1, 0,
0, 2, 0, 0, 2, 128,
1, 0, 85, 160, 6, 0,
0, 2, 1, 0, 1, 128,
0, 0, 0, 160, 6, 0,
0, 2, 1, 0, 2, 128,
0, 0, 85, 160, 5, 0,
0, 3, 0, 0, 12, 128,
0, 0, 27, 176, 0, 0,
27, 160, 19, 0, 0, 2,
0, 0, 12, 128, 0, 0,
228, 128, 2, 0, 0, 3,
2, 0, 3, 128, 0, 0,
27, 129, 1, 0, 0, 160,
4, 0, 0, 4, 2, 0,
3, 128, 2, 0, 228, 128,
1, 0, 228, 128, 0, 0,
228, 176, 2, 0, 0, 3,
3, 0, 3, 128, 1, 0,
228, 128, 2, 0, 228, 128,
1, 0, 0, 2, 1, 0,
4, 128, 1, 0, 85, 160,
2, 0, 0, 3, 4, 0,
1, 128, 1, 0, 170, 128,
2, 0, 0, 128, 2, 0,
0, 3, 4, 0, 2, 128,
1, 0, 85, 128, 2, 0,
85, 128, 2, 0, 0, 3,
1, 0, 1, 128, 1, 0,
0, 128, 2, 0, 0, 128,
2, 0, 0, 3, 1, 0,
2, 128, 1, 0, 170, 128,
2, 0, 85, 128, 66, 0,
0, 3, 3, 0, 15, 128,
3, 0, 228, 128, 0, 8,
228, 160, 66, 0, 0, 3,
2, 0, 15, 128, 2, 0,
228, 128, 0, 8, 228, 160,
66, 0, 0, 3, 1, 0,
15, 128, 1, 0, 228, 128,
0, 8, 228, 160, 66, 0,
0, 3, 4, 0, 15, 128,
4, 0, 228, 128, 0, 8,
228, 160, 4, 0, 0, 4,
0, 0, 1, 128, 3, 0,
0, 128, 1, 0, 170, 160,
1, 0, 255, 160, 1, 0,
0, 2, 3, 0, 2, 128,
1, 0, 85, 160, 4, 0,
0, 4, 2, 0, 1, 128,
2, 0, 0, 128, 1, 0,
170, 160, 1, 0, 255, 160,
4, 0, 0, 4, 1, 0,
1, 128, 1, 0, 0, 128,
1, 0, 170, 160, 1, 0,
255, 160, 4, 0, 0, 4,
3, 0, 1, 128, 4, 0,
0, 128, 1, 0, 170, 160,
1, 0, 255, 160, 1, 0,
0, 2, 1, 0, 2, 128,
1, 0, 85, 160, 1, 0,
0, 2, 2, 0, 2, 128,
1, 0, 85, 160, 66, 0,
0, 3, 4, 0, 15, 128,
0, 0, 228, 128, 1, 8,
228, 160, 66, 0, 0, 3,
3, 0, 15, 128, 3, 0,
228, 128, 1, 8, 228, 160,
66, 0, 0, 3, 1, 0,
15, 128, 1, 0, 228, 128,
1, 8, 228, 160, 66, 0,
0, 3, 2, 0, 15, 128,
2, 0, 228, 128, 1, 8,
228, 160, 18, 0, 0, 4,
5, 0, 15, 128, 0, 0,
255, 128, 4, 0, 228, 128,
3, 0, 228, 128, 18, 0,
0, 4, 3, 0, 15, 128,
0, 0, 255, 128, 1, 0,
228, 128, 2, 0, 228, 128,
18, 0, 0, 4, 1, 0,
15, 128, 0, 0, 170, 128,
5, 0, 228, 128, 3, 0,
228, 128, 1, 0, 0, 2,
0, 8, 15, 128, 1, 0,
228, 128, 255, 255, 0, 0
};
{
0, 2, 255, 255, 254, 255,
56, 0, 67, 84, 65, 66,
28, 0, 0, 0, 179, 0,
0, 0, 0, 2, 255, 255,
3, 0, 0, 0, 28, 0,
0, 0, 0, 1, 0, 0,
172, 0, 0, 0, 88, 0,
0, 0, 3, 0, 1, 0,
1, 0, 0, 0, 100, 0,
0, 0, 0, 0, 0, 0,
116, 0, 0, 0, 3, 0,
0, 0, 1, 0, 0, 0,
128, 0, 0, 0, 0, 0,
0, 0, 144, 0, 0, 0,
2, 0, 0, 0, 1, 0,
2, 0, 156, 0, 0, 0,
0, 0, 0, 0, 80, 97,
108, 101, 116, 116, 101, 84,
101, 120, 0, 171, 4, 0,
12, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0,
0, 0, 83, 117, 114, 102,
97, 99, 101, 84, 101, 120,
0, 171, 4, 0, 12, 0,
1, 0, 1, 0, 1, 0,
0, 0, 0, 0, 0, 0,
84, 101, 120, 116, 117, 114,
101, 83, 105, 122, 101, 0,
1, 0, 3, 0, 1, 0,
4, 0, 1, 0, 0, 0,
0, 0, 0, 0, 112, 115,
95, 50, 95, 48, 0, 77,
105, 99, 114, 111, 115, 111,
102, 116, 32, 40, 82, 41,
32, 72, 76, 83, 76, 32,
83, 104, 97, 100, 101, 114,
32, 67, 111, 109, 112, 105,
108, 101, 114, 32, 49, 48,
46, 49, 0, 171, 81, 0,
0, 5, 1, 0, 15, 160,
0, 0, 0, 63, 0, 0,
0, 0, 0, 0, 127, 63,
0, 0, 0, 59, 31, 0,
0, 2, 0, 0, 0, 128,
0, 0, 3, 176, 31, 0,
0, 2, 0, 0, 0, 144,
0, 8, 15, 160, 31, 0,
0, 2, 0, 0, 0, 144,
1, 8, 15, 160, 1, 0,
0, 2, 0, 0, 2, 128,
1, 0, 85, 160, 6, 0,
0, 2, 1, 0, 1, 128,
0, 0, 0, 160, 6, 0,
0, 2, 1, 0, 2, 128,
0, 0, 85, 160, 4, 0,
0, 4, 2, 0, 3, 128,
1, 0, 228, 128, 1, 0,
0, 160, 0, 0, 228, 176,
2, 0, 0, 3, 3, 0,
3, 128, 1, 0, 228, 128,
2, 0, 228, 128, 1, 0,
0, 2, 1, 0, 4, 128,
1, 0, 85, 160, 2, 0,
0, 3, 4, 0, 1, 128,
1, 0, 170, 128, 2, 0,
0, 128, 2, 0, 0, 3,
4, 0, 2, 128, 1, 0,
85, 128, 2, 0, 85, 128,
2, 0, 0, 3, 1, 0,
1, 128, 1, 0, 0, 128,
2, 0, 0, 128, 2, 0,
0, 3, 1, 0, 2, 128,
1, 0, 170, 128, 2, 0,
85, 128, 66, 0, 0, 3,
3, 0, 15, 128, 3, 0,
228, 128, 0, 8, 228, 160,
66, 0, 0, 3, 1, 0,
15, 128, 1, 0, 228, 128,
0, 8, 228, 160, 66, 0,
0, 3, 4, 0, 15, 128,
4, 0, 228, 128, 0, 8,
228, 160, 66, 0, 0, 3,
5, 0, 15, 128, 2, 0,
228, 128, 0, 8, 228, 160,
4, 0, 0, 4, 0, 0,
1, 128, 3, 0, 0, 128,
1, 0, 170, 160, 1, 0,
255, 160, 4, 0, 0, 4,
1, 0, 1, 128, 1, 0,
0, 128, 1, 0, 170, 160,
1, 0, 255, 160, 4, 0,
0, 4, 3, 0, 1, 128,
4, 0, 0, 128, 1, 0,
170, 160, 1, 0, 255, 160,
1, 0, 0, 2, 3, 0,
2, 128, 1, 0, 85, 160,
4, 0, 0, 4, 4, 0,
1, 128, 5, 0, 0, 128,
1, 0, 170, 160, 1, 0,
255, 160, 1, 0, 0, 2,
4, 0, 2, 128, 1, 0,
85, 160, 1, 0, 0, 2,
1, 0, 2, 128, 1, 0,
85, 160, 66, 0, 0, 3,
0, 0, 15, 128, 0, 0,
228, 128, 1, 8, 228, 160,
66, 0, 0, 3, 3, 0,
15, 128, 3, 0, 228, 128,
1, 8, 228, 160, 66, 0,
0, 3, 4, 0, 15, 128,
4, 0, 228, 128, 1, 8,
228, 160, 66, 0, 0, 3,
1, 0, 15, 128, 1, 0,
228, 128, 1, 8, 228, 160,
5, 0, 0, 3, 2, 0,
3, 128, 2, 0, 228, 128,
0, 0, 228, 160, 19, 0,
0, 2, 2, 0, 3, 128,
2, 0, 228, 128, 18, 0,
0, 4, 5, 0, 15, 128,
2, 0, 0, 128, 0, 0,
228, 128, 3, 0, 228, 128,
18, 0, 0, 4, 0, 0,
15, 128, 2, 0, 0, 128,
1, 0, 228, 128, 4, 0,
228, 128, 18, 0, 0, 4,
1, 0, 15, 128, 2, 0,
85, 128, 5, 0, 228, 128,
0, 0, 228, 128, 1, 0,
0, 2, 0, 8, 15, 128,
1, 0, 228, 128, 255, 255,
0, 0
};
/* catmull rom upscaling */