2020-10-13 09:20:52 +02:00
|
|
|
#ifndef D3D9SHADER_H
|
|
|
|
#define D3D9SHADER_H
|
|
|
|
|
2018-10-06 12:24:43 +02:00
|
|
|
#if 0
|
|
|
|
//
|
|
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
|
|
|
//
|
|
|
|
// Parameters:
|
|
|
|
//
|
|
|
|
// sampler2D PaletteTex;
|
|
|
|
// sampler2D SurfaceTex;
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Registers:
|
|
|
|
//
|
|
|
|
// Name Reg Size
|
|
|
|
// ------------ ----- ----
|
|
|
|
// SurfaceTex s0 1
|
|
|
|
// PaletteTex s1 1
|
|
|
|
//
|
|
|
|
|
|
|
|
ps_2_0
|
|
|
|
def c0, 0.99609375, 0.001953125, 0, 0
|
|
|
|
dcl t0.xy
|
|
|
|
dcl_2d s0
|
|
|
|
dcl_2d s1
|
|
|
|
texld r0, t0, s0
|
|
|
|
mad r0.x, r0.x, c0.x, c0.y
|
|
|
|
mov r0.y, c0.z
|
|
|
|
texld r0, r0, s1
|
|
|
|
mov oC0, r0
|
|
|
|
|
|
|
|
// approximately 5 instruction slots used (2 texture, 3 arithmetic)
|
|
|
|
|
|
|
|
// fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h
|
|
|
|
/*
|
|
|
|
uniform sampler2D SurfaceTex;
|
|
|
|
uniform sampler2D PaletteTex;
|
|
|
|
|
|
|
|
float4 main(float2 texCoords : TEXCOORD) : COLOR
|
|
|
|
{
|
|
|
|
float pIndex = tex2D(SurfaceTex, texCoords).r;
|
|
|
|
return tex2D(PaletteTex, float2(pIndex * (255./256) + (0.5/256), 0));
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
#endif
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
const BYTE D3D9_PALETTE_SHADER[] =
|
2018-10-06 12:24:43 +02:00
|
|
|
{
|
|
|
|
0, 2, 255, 255, 254, 255,
|
|
|
|
44, 0, 67, 84, 65, 66,
|
|
|
|
28, 0, 0, 0, 131, 0,
|
|
|
|
0, 0, 0, 2, 255, 255,
|
|
|
|
2, 0, 0, 0, 28, 0,
|
|
|
|
0, 0, 0, 1, 0, 0,
|
|
|
|
124, 0, 0, 0, 68, 0,
|
|
|
|
0, 0, 3, 0, 1, 0,
|
|
|
|
1, 0, 0, 0, 80, 0,
|
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
|
96, 0, 0, 0, 3, 0,
|
|
|
|
0, 0, 1, 0, 0, 0,
|
|
|
|
108, 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, 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, 0, 0, 15, 160,
|
|
|
|
0, 0, 127, 63, 0, 0,
|
|
|
|
0, 59, 0, 0, 0, 0,
|
|
|
|
0, 0, 0, 0, 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, 66, 0,
|
|
|
|
0, 3, 0, 0, 15, 128,
|
|
|
|
0, 0, 228, 176, 0, 8,
|
|
|
|
228, 160, 4, 0, 0, 4,
|
|
|
|
0, 0, 1, 128, 0, 0,
|
|
|
|
0, 128, 0, 0, 0, 160,
|
|
|
|
0, 0, 85, 160, 1, 0,
|
|
|
|
0, 2, 0, 0, 2, 128,
|
|
|
|
0, 0, 170, 160, 66, 0,
|
|
|
|
0, 3, 0, 0, 15, 128,
|
|
|
|
0, 0, 228, 128, 1, 8,
|
|
|
|
228, 160, 1, 0, 0, 2,
|
|
|
|
0, 8, 15, 128, 0, 0,
|
|
|
|
228, 128, 255, 255, 0, 0
|
|
|
|
};
|
2020-10-13 09:20:52 +02:00
|
|
|
|
2021-07-21 14:52:44 +02:00
|
|
|
|
|
|
|
/* bilinear upscaling */
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
//
|
|
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
|
|
|
//
|
|
|
|
// Parameters:
|
|
|
|
//
|
|
|
|
// sampler2D PaletteTex;
|
|
|
|
// sampler2D SurfaceTex;
|
|
|
|
// float4 TextureSize;
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Registers:
|
|
|
|
//
|
|
|
|
// Name Reg Size
|
|
|
|
// ------------ ----- ----
|
|
|
|
// TextureSize c0 1
|
|
|
|
// SurfaceTex s0 1
|
|
|
|
// PaletteTex s1 1
|
|
|
|
//
|
|
|
|
|
|
|
|
ps_2_0
|
|
|
|
def c1, 0.5, 0, 0.99609375, 0.001953125
|
|
|
|
dcl t0.xy
|
|
|
|
dcl_2d s0
|
|
|
|
dcl_2d s1
|
|
|
|
mov r0.y, c1.y
|
|
|
|
rcp r1.x, c0.x
|
|
|
|
rcp r1.y, c0.y
|
2023-08-23 00:23:52 +02:00
|
|
|
mul r0.zw, t0.wzyx, c0.wzyx
|
|
|
|
frc r0.zw, r0
|
|
|
|
add r2.xy, -r0.wzyx, c1.x
|
|
|
|
mad r2.xy, r2, r1, t0
|
2021-07-21 14:52:44 +02:00
|
|
|
add r3.xy, r1, r2
|
|
|
|
mov r1.z, c1.y
|
|
|
|
add r4.x, r1.z, r2.x
|
|
|
|
add r4.y, r1.y, r2.y
|
|
|
|
add r1.x, r1.x, r2.x
|
|
|
|
add r1.y, r1.z, r2.y
|
|
|
|
texld r3, r3, s0
|
2023-08-23 00:23:52 +02:00
|
|
|
texld r2, r2, s0
|
2021-07-21 14:52:44 +02:00
|
|
|
texld r1, r1, s0
|
|
|
|
texld r4, r4, s0
|
|
|
|
mad r0.x, r3.x, c1.z, c1.w
|
2023-08-23 00:23:52 +02:00
|
|
|
mov r3.y, c1.y
|
|
|
|
mad r2.x, r2.x, c1.z, c1.w
|
2021-07-21 14:52:44 +02:00
|
|
|
mad r1.x, r1.x, c1.z, c1.w
|
|
|
|
mad r3.x, r4.x, c1.z, c1.w
|
|
|
|
mov r1.y, c1.y
|
2023-08-23 00:23:52 +02:00
|
|
|
mov r2.y, c1.y
|
|
|
|
texld r4, r0, s1
|
2021-07-21 14:52:44 +02:00
|
|
|
texld r3, r3, s1
|
|
|
|
texld r1, r1, s1
|
2023-08-23 00:23:52 +02:00
|
|
|
texld r2, r2, s1
|
|
|
|
lrp r5, r0.w, r4, r3
|
|
|
|
lrp r3, r0.w, r1, r2
|
|
|
|
lrp r1, r0.z, r5, r3
|
2021-07-21 14:52:44 +02:00
|
|
|
mov oC0, r1
|
|
|
|
|
2023-08-23 00:23:52 +02:00
|
|
|
// approximately 32 instruction slots used (8 texture, 24 arithmetic)
|
2021-07-21 14:52:44 +02:00
|
|
|
|
|
|
|
// fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h
|
|
|
|
/*
|
|
|
|
uniform sampler2D SurfaceTex;
|
|
|
|
uniform sampler2D PaletteTex;
|
|
|
|
|
|
|
|
float4 TextureSize : register(c0);
|
|
|
|
|
|
|
|
float4 bilinear(float2 coord)
|
|
|
|
{
|
|
|
|
float2 size = 1.0 / TextureSize.xy;
|
2023-08-23 00:23:52 +02:00
|
|
|
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;
|
|
|
|
|
2021-07-21 14:52:44 +02:00
|
|
|
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));
|
|
|
|
|
2023-08-23 00:23:52 +02:00
|
|
|
float4 top = lerp(tl, tr, f.x);
|
|
|
|
float4 bot = lerp(bl, br, f.x);
|
|
|
|
|
|
|
|
return lerp(top, bot, f.y);
|
2021-07-21 14:52:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
float4 main(float2 texCoords : TEXCOORD) : COLOR
|
|
|
|
{
|
|
|
|
return bilinear(texCoords);
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
#endif
|
|
|
|
|
|
|
|
const BYTE D3D9_PALETTE_SHADER_BILINEAR[] =
|
2023-08-23 00:23:52 +02:00
|
|
|
{
|
|
|
|
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
|
|
|
|
};
|
2021-07-21 14:52:44 +02:00
|
|
|
|
2023-07-03 10:23:37 +02:00
|
|
|
|
|
|
|
/* catmull rom upscaling */
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
//
|
|
|
|
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
|
|
|
//
|
|
|
|
// Parameters:
|
|
|
|
//
|
|
|
|
// sampler2D SurfaceTex;
|
|
|
|
// float4 TextureSize;
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Registers:
|
|
|
|
//
|
|
|
|
// Name Reg Size
|
|
|
|
// ------------ ----- ----
|
|
|
|
// TextureSize c0 1
|
|
|
|
// SurfaceTex s0 1
|
|
|
|
//
|
|
|
|
|
|
|
|
ps_2_0
|
|
|
|
def c1, -0.5, 0.5, 1, 2.5
|
|
|
|
def c2, 1.5, -2.5, 2, 0
|
|
|
|
dcl t0.xy
|
|
|
|
dcl_2d s0
|
|
|
|
mov r0.w, c1.x
|
|
|
|
mad r0.xy, t0, c0, r0.w
|
|
|
|
frc r0.zw, r0.wzyx
|
|
|
|
add r0.xy, -r0.wzyx, r0
|
|
|
|
add r0.zw, r0.wzyx, c1.x
|
2023-07-06 07:53:09 +02:00
|
|
|
rcp r1.x, c0.x
|
|
|
|
rcp r1.y, c0.y
|
|
|
|
mul r2.xy, r0.wzyx, r1
|
|
|
|
mov r3.x, r2.x
|
|
|
|
add r0.zw, r0.wzyx, c1.y
|
2023-07-03 10:23:37 +02:00
|
|
|
add r0.xy, r0, c1.w
|
2023-07-06 07:53:09 +02:00
|
|
|
mul r0.xy, r1, r0
|
|
|
|
mad r1.zw, t0.wzyx, c0.wzyx, -r0
|
|
|
|
mad r2.zw, r1, -c2.x, c2.z
|
|
|
|
mad r2.zw, r1, r2, c1.y
|
|
|
|
mul r3.zw, r1, r2
|
|
|
|
mad r4.xy, r1.wzyx, c2.x, c2.y
|
|
|
|
mul r4.zw, r1, r1
|
|
|
|
mad r4.xy, r4.wzyx, r4, c1.z
|
|
|
|
mad r2.zw, r1, r2, r4.wzyx
|
|
|
|
rcp r4.x, r2.w
|
|
|
|
rcp r4.y, r2.z
|
|
|
|
mad r0.zw, r3, r4.wzyx, r0
|
|
|
|
mul r1.xy, r1, r0.wzyx
|
|
|
|
mov r3.y, r1.y
|
|
|
|
mov r4.y, r3.y
|
|
|
|
mov r2.x, r1.x
|
|
|
|
mov r5.x, r2.x
|
|
|
|
mov r4.x, r0.x
|
|
|
|
mov r5.y, r0.y
|
|
|
|
texld r0, r3, s0
|
|
|
|
texld r3, r1, s0
|
|
|
|
texld r6, r2, s0
|
2023-07-03 10:23:37 +02:00
|
|
|
texld r5, r5, s0
|
2023-07-06 07:53:09 +02:00
|
|
|
texld r7, r4, s0
|
|
|
|
mad r1.xy, r1.wzyx, -c1.y, c1.z
|
|
|
|
mad r1.xy, r1.wzyx, r1, c1.x
|
|
|
|
mul r1.xy, r1, r1.wzyx
|
|
|
|
mad r1.zw, r1, c1.y, c1.x
|
|
|
|
mul r1.zw, r1, r4
|
2023-07-06 18:49:13 +02:00
|
|
|
mul r0.w, r2.z, r1.x
|
|
|
|
mul r0.xyz, r0.w, r0
|
|
|
|
mad r0.w, r2.w, r1.y, r0.w
|
|
|
|
mul r3.w, r1.y, r2.w
|
|
|
|
mad r0.w, r2.w, r2.z, r0.w
|
|
|
|
mad r0.w, r1.w, r2.z, r0.w
|
|
|
|
mad r0.w, r2.w, r1.z, r0.w
|
|
|
|
rcp r0.w, r0.w
|
|
|
|
mad r0.xyz, r6, r3.w, r0
|
|
|
|
mul r3.w, r2.z, r2.w
|
|
|
|
mad r0.xyz, r3, r3.w, r0
|
|
|
|
mul r5.w, r2.z, r1.w
|
|
|
|
mul r7.w, r1.z, r2.w
|
|
|
|
mad r0.xyz, r7, r5.w, r0
|
|
|
|
mad r0.xyz, r5, r7.w, r0
|
|
|
|
mul r0.xyz, r0.w, r0
|
|
|
|
mov r0.w, c1.z
|
2023-07-03 10:23:37 +02:00
|
|
|
mov oC0, r0
|
|
|
|
|
2023-07-06 07:53:09 +02:00
|
|
|
// approximately 58 instruction slots used (5 texture, 53 arithmetic)
|
2023-07-03 10:23:37 +02:00
|
|
|
|
|
|
|
// fxc.exe /Tps_2_0 shader.hlsl /Fhshader.h
|
|
|
|
/*
|
|
|
|
uniform sampler2D SurfaceTex;
|
|
|
|
|
|
|
|
float4 TextureSize : register(c0);
|
|
|
|
|
2023-07-07 02:29:51 +02:00
|
|
|
#define SourceSize float4(TextureSize.xy, 1.0 / TextureSize.xy)
|
|
|
|
|
2023-07-03 10:23:37 +02:00
|
|
|
float4 catmull_rom(float2 coord)
|
|
|
|
{
|
|
|
|
// The following code is licensed under the MIT license: https://gist.github.com/TheRealMJP/bc503b0b87b643d3505d41eab8b332ae
|
|
|
|
|
|
|
|
// Samples a texture with Catmull-Rom filtering, using 9 texture fetches instead of 16.
|
|
|
|
// See http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details
|
|
|
|
|
2023-07-06 07:53:09 +02:00
|
|
|
// Modified to use 5 texture fetches
|
|
|
|
|
2023-07-07 02:29:51 +02:00
|
|
|
float2 samplePos = coord * SourceSize.xy;
|
2023-07-03 10:23:37 +02:00
|
|
|
float2 texPos1 = floor(samplePos - 0.5f) + 0.5f;
|
|
|
|
|
|
|
|
float2 f = samplePos - texPos1;
|
|
|
|
|
|
|
|
float2 w0 = f * (-0.5f + f * (1.0f - 0.5f * f));
|
|
|
|
float2 w1 = 1.0f + f * f * (-2.5f + 1.5f * f);
|
|
|
|
float2 w2 = f * (0.5f + f * (2.0f - 1.5f * f));
|
|
|
|
float2 w3 = f * f * (-0.5f + 0.5f * f);
|
|
|
|
|
|
|
|
float2 w12 = w1 + w2;
|
|
|
|
float2 offset12 = w2 / (w1 + w2);
|
|
|
|
|
|
|
|
float2 texPos0 = texPos1 - 1;
|
|
|
|
float2 texPos3 = texPos1 + 2;
|
|
|
|
float2 texPos12 = texPos1 + offset12;
|
|
|
|
|
2023-07-07 02:29:51 +02:00
|
|
|
texPos0 *= SourceSize.zw;
|
|
|
|
texPos3 *= SourceSize.zw;
|
|
|
|
texPos12 *= SourceSize.zw;
|
2023-07-03 10:23:37 +02:00
|
|
|
|
2023-07-06 18:49:13 +02:00
|
|
|
float wtm = w12.x * w0.y;
|
|
|
|
float wml = w0.x * w12.y;
|
|
|
|
float wmm = w12.x * w12.y;
|
|
|
|
float wmr = w3.x * w12.y;
|
|
|
|
float wbm = w12.x * w3.y;
|
2023-07-03 10:23:37 +02:00
|
|
|
|
2023-07-06 18:49:13 +02:00
|
|
|
float3 result = 0.0f;
|
2023-07-03 10:23:37 +02:00
|
|
|
|
2023-07-06 18:49:13 +02:00
|
|
|
result += tex2D(SurfaceTex, float2(texPos12.x, texPos0.y)).rgb * wtm;
|
|
|
|
result += tex2D(SurfaceTex, float2(texPos0.x, texPos12.y)).rgb * wml;
|
|
|
|
result += tex2D(SurfaceTex, float2(texPos12.x, texPos12.y)).rgb * wmm;
|
|
|
|
result += tex2D(SurfaceTex, float2(texPos3.x, texPos12.y)).rgb * wmr;
|
|
|
|
result += tex2D(SurfaceTex, float2(texPos12.x, texPos3.y)).rgb * wbm;
|
2023-07-06 07:53:09 +02:00
|
|
|
|
2023-07-06 18:49:13 +02:00
|
|
|
return float4(result * (1./(wtm+wml+wmm+wmr+wbm)), 1.0);
|
2023-07-03 10:23:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
float4 main(float2 texCoords : TEXCOORD) : COLOR
|
|
|
|
{
|
|
|
|
return catmull_rom(texCoords);
|
|
|
|
}
|
|
|
|
|
|
|
|
*/
|
|
|
|
#endif
|
|
|
|
|
|
|
|
const BYTE D3D9_CATMULL_ROM_SHADER[] =
|
2023-07-06 07:53:09 +02:00
|
|
|
{
|
2023-07-06 18:49:13 +02:00
|
|
|
0, 2, 255, 255, 254, 255,
|
|
|
|
44, 0, 67, 84, 65, 66,
|
|
|
|
28, 0, 0, 0, 131, 0,
|
|
|
|
0, 0, 0, 2, 255, 255,
|
|
|
|
2, 0, 0, 0, 28, 0,
|
|
|
|
0, 0, 0, 1, 0, 0,
|
|
|
|
124, 0, 0, 0, 68, 0,
|
|
|
|
0, 0, 3, 0, 0, 0,
|
|
|
|
1, 0, 0, 0, 80, 0,
|
|
|
|
0, 0, 0, 0, 0, 0,
|
|
|
|
96, 0, 0, 0, 2, 0,
|
|
|
|
0, 0, 1, 0, 2, 0,
|
|
|
|
108, 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, 191, 0, 0,
|
|
|
|
0, 63, 0, 0, 128, 63,
|
|
|
|
0, 0, 32, 64, 81, 0,
|
|
|
|
0, 5, 2, 0, 15, 160,
|
|
|
|
0, 0, 192, 63, 0, 0,
|
|
|
|
32, 192, 0, 0, 0, 64,
|
|
|
|
0, 0, 0, 0, 31, 0,
|
|
|
|
0, 2, 0, 0, 0, 128,
|
|
|
|
0, 0, 3, 176, 31, 0,
|
|
|
|
0, 2, 0, 0, 0, 144,
|
|
|
|
0, 8, 15, 160, 1, 0,
|
|
|
|
0, 2, 0, 0, 8, 128,
|
|
|
|
1, 0, 0, 160, 4, 0,
|
|
|
|
0, 4, 0, 0, 3, 128,
|
|
|
|
0, 0, 228, 176, 0, 0,
|
|
|
|
228, 160, 0, 0, 255, 128,
|
|
|
|
19, 0, 0, 2, 0, 0,
|
|
|
|
12, 128, 0, 0, 27, 128,
|
|
|
|
2, 0, 0, 3, 0, 0,
|
|
|
|
3, 128, 0, 0, 27, 129,
|
|
|
|
0, 0, 228, 128, 2, 0,
|
|
|
|
0, 3, 0, 0, 12, 128,
|
|
|
|
0, 0, 27, 128, 1, 0,
|
|
|
|
0, 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,
|
|
|
|
2, 0, 3, 128, 0, 0,
|
|
|
|
27, 128, 1, 0, 228, 128,
|
|
|
|
1, 0, 0, 2, 3, 0,
|
|
|
|
1, 128, 2, 0, 0, 128,
|
|
|
|
2, 0, 0, 3, 0, 0,
|
|
|
|
12, 128, 0, 0, 27, 128,
|
|
|
|
1, 0, 85, 160, 2, 0,
|
|
|
|
0, 3, 0, 0, 3, 128,
|
|
|
|
0, 0, 228, 128, 1, 0,
|
|
|
|
255, 160, 5, 0, 0, 3,
|
|
|
|
0, 0, 3, 128, 1, 0,
|
|
|
|
228, 128, 0, 0, 228, 128,
|
|
|
|
4, 0, 0, 4, 1, 0,
|
|
|
|
12, 128, 0, 0, 27, 176,
|
|
|
|
0, 0, 27, 160, 0, 0,
|
|
|
|
228, 129, 4, 0, 0, 4,
|
|
|
|
2, 0, 12, 128, 1, 0,
|
|
|
|
228, 128, 2, 0, 0, 161,
|
|
|
|
2, 0, 170, 160, 4, 0,
|
|
|
|
0, 4, 2, 0, 12, 128,
|
|
|
|
1, 0, 228, 128, 2, 0,
|
|
|
|
228, 128, 1, 0, 85, 160,
|
|
|
|
5, 0, 0, 3, 3, 0,
|
|
|
|
12, 128, 1, 0, 228, 128,
|
|
|
|
2, 0, 228, 128, 4, 0,
|
|
|
|
0, 4, 4, 0, 3, 128,
|
|
|
|
1, 0, 27, 128, 2, 0,
|
|
|
|
0, 160, 2, 0, 85, 160,
|
|
|
|
5, 0, 0, 3, 4, 0,
|
|
|
|
12, 128, 1, 0, 228, 128,
|
|
|
|
1, 0, 228, 128, 4, 0,
|
|
|
|
0, 4, 4, 0, 3, 128,
|
|
|
|
4, 0, 27, 128, 4, 0,
|
|
|
|
228, 128, 1, 0, 170, 160,
|
|
|
|
4, 0, 0, 4, 2, 0,
|
|
|
|
12, 128, 1, 0, 228, 128,
|
|
|
|
2, 0, 228, 128, 4, 0,
|
|
|
|
27, 128, 6, 0, 0, 2,
|
|
|
|
4, 0, 1, 128, 2, 0,
|
|
|
|
255, 128, 6, 0, 0, 2,
|
|
|
|
4, 0, 2, 128, 2, 0,
|
|
|
|
170, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 12, 128, 3, 0,
|
|
|
|
228, 128, 4, 0, 27, 128,
|
|
|
|
0, 0, 228, 128, 5, 0,
|
|
|
|
0, 3, 1, 0, 3, 128,
|
|
|
|
1, 0, 228, 128, 0, 0,
|
|
|
|
27, 128, 1, 0, 0, 2,
|
|
|
|
3, 0, 2, 128, 1, 0,
|
|
|
|
85, 128, 1, 0, 0, 2,
|
|
|
|
4, 0, 2, 128, 3, 0,
|
|
|
|
85, 128, 1, 0, 0, 2,
|
|
|
|
2, 0, 1, 128, 1, 0,
|
|
|
|
0, 128, 1, 0, 0, 2,
|
|
|
|
5, 0, 1, 128, 2, 0,
|
|
|
|
0, 128, 1, 0, 0, 2,
|
|
|
|
4, 0, 1, 128, 0, 0,
|
|
|
|
0, 128, 1, 0, 0, 2,
|
|
|
|
5, 0, 2, 128, 0, 0,
|
|
|
|
85, 128, 66, 0, 0, 3,
|
|
|
|
0, 0, 15, 128, 3, 0,
|
|
|
|
228, 128, 0, 8, 228, 160,
|
|
|
|
66, 0, 0, 3, 3, 0,
|
|
|
|
15, 128, 1, 0, 228, 128,
|
|
|
|
0, 8, 228, 160, 66, 0,
|
|
|
|
0, 3, 6, 0, 15, 128,
|
|
|
|
2, 0, 228, 128, 0, 8,
|
|
|
|
228, 160, 66, 0, 0, 3,
|
|
|
|
5, 0, 15, 128, 5, 0,
|
|
|
|
228, 128, 0, 8, 228, 160,
|
|
|
|
66, 0, 0, 3, 7, 0,
|
|
|
|
15, 128, 4, 0, 228, 128,
|
|
|
|
0, 8, 228, 160, 4, 0,
|
|
|
|
0, 4, 1, 0, 3, 128,
|
|
|
|
1, 0, 27, 128, 1, 0,
|
|
|
|
85, 161, 1, 0, 170, 160,
|
|
|
|
4, 0, 0, 4, 1, 0,
|
|
|
|
3, 128, 1, 0, 27, 128,
|
|
|
|
1, 0, 228, 128, 1, 0,
|
|
|
|
0, 160, 5, 0, 0, 3,
|
|
|
|
1, 0, 3, 128, 1, 0,
|
|
|
|
228, 128, 1, 0, 27, 128,
|
|
|
|
4, 0, 0, 4, 1, 0,
|
|
|
|
12, 128, 1, 0, 228, 128,
|
|
|
|
1, 0, 85, 160, 1, 0,
|
|
|
|
0, 160, 5, 0, 0, 3,
|
|
|
|
1, 0, 12, 128, 1, 0,
|
|
|
|
228, 128, 4, 0, 228, 128,
|
|
|
|
5, 0, 0, 3, 0, 0,
|
|
|
|
8, 128, 2, 0, 170, 128,
|
|
|
|
1, 0, 0, 128, 5, 0,
|
|
|
|
0, 3, 0, 0, 7, 128,
|
|
|
|
0, 0, 255, 128, 0, 0,
|
|
|
|
228, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 8, 128, 2, 0,
|
|
|
|
255, 128, 1, 0, 85, 128,
|
|
|
|
0, 0, 255, 128, 5, 0,
|
|
|
|
0, 3, 3, 0, 8, 128,
|
|
|
|
1, 0, 85, 128, 2, 0,
|
|
|
|
255, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 8, 128, 2, 0,
|
|
|
|
255, 128, 2, 0, 170, 128,
|
|
|
|
0, 0, 255, 128, 4, 0,
|
|
|
|
0, 4, 0, 0, 8, 128,
|
|
|
|
1, 0, 255, 128, 2, 0,
|
|
|
|
170, 128, 0, 0, 255, 128,
|
|
|
|
4, 0, 0, 4, 0, 0,
|
|
|
|
8, 128, 2, 0, 255, 128,
|
|
|
|
1, 0, 170, 128, 0, 0,
|
|
|
|
255, 128, 6, 0, 0, 2,
|
|
|
|
0, 0, 8, 128, 0, 0,
|
|
|
|
255, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 7, 128, 6, 0,
|
|
|
|
228, 128, 3, 0, 255, 128,
|
|
|
|
0, 0, 228, 128, 5, 0,
|
|
|
|
0, 3, 3, 0, 8, 128,
|
|
|
|
2, 0, 170, 128, 2, 0,
|
|
|
|
255, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 7, 128, 3, 0,
|
|
|
|
228, 128, 3, 0, 255, 128,
|
|
|
|
0, 0, 228, 128, 5, 0,
|
|
|
|
0, 3, 5, 0, 8, 128,
|
|
|
|
2, 0, 170, 128, 1, 0,
|
|
|
|
255, 128, 5, 0, 0, 3,
|
|
|
|
7, 0, 8, 128, 1, 0,
|
|
|
|
170, 128, 2, 0, 255, 128,
|
|
|
|
4, 0, 0, 4, 0, 0,
|
|
|
|
7, 128, 7, 0, 228, 128,
|
|
|
|
5, 0, 255, 128, 0, 0,
|
|
|
|
228, 128, 4, 0, 0, 4,
|
|
|
|
0, 0, 7, 128, 5, 0,
|
|
|
|
228, 128, 7, 0, 255, 128,
|
|
|
|
0, 0, 228, 128, 5, 0,
|
|
|
|
0, 3, 0, 0, 7, 128,
|
|
|
|
0, 0, 255, 128, 0, 0,
|
|
|
|
228, 128, 1, 0, 0, 2,
|
|
|
|
0, 0, 8, 128, 1, 0,
|
|
|
|
170, 160, 1, 0, 0, 2,
|
|
|
|
0, 8, 15, 128, 0, 0,
|
|
|
|
228, 128, 255, 255, 0, 0
|
2023-07-06 07:53:09 +02:00
|
|
|
};
|
2023-07-03 10:23:37 +02:00
|
|
|
|
2023-07-06 18:49:13 +02:00
|
|
|
|
|
|
|
|
2021-07-21 14:52:44 +02:00
|
|
|
#endif
|