|
|
@@ -1,12 +1,11 @@
|
|
|
/*
|
|
|
- * bilinear low res scaling, samples 9 pixels of a larger image to scale to a
|
|
|
+ * bilinear low res scaling, samples 8 pixels of a larger image to scale to a
|
|
|
* low resolution image below half size
|
|
|
*/
|
|
|
|
|
|
uniform float4x4 ViewProj;
|
|
|
uniform texture2d image;
|
|
|
uniform float4x4 color_matrix;
|
|
|
-uniform float2 base_dimension_i;
|
|
|
|
|
|
sampler_state textureSampler {
|
|
|
Filter = Linear;
|
|
|
@@ -34,19 +33,24 @@ float4 pixel(float2 uv)
|
|
|
|
|
|
float4 DrawLowresBilinear(VertData v_in)
|
|
|
{
|
|
|
- float2 stepxy = base_dimension_i;
|
|
|
- float4 out_color;
|
|
|
+ float2 uv = v_in.uv;
|
|
|
+ float2 stepxy = float2(ddx(uv.x), ddy(uv.y));
|
|
|
+ float2 stepxy1 = stepxy * 0.0625;
|
|
|
+ float2 stepxy3 = stepxy * 0.1875;
|
|
|
+ float2 stepxy5 = stepxy * 0.3125;
|
|
|
+ float2 stepxy7 = stepxy * 0.4375;
|
|
|
|
|
|
- out_color = pixel(v_in.uv);
|
|
|
- out_color += pixel(v_in.uv + float2(-stepxy.x, -stepxy.y));
|
|
|
- out_color += pixel(v_in.uv + float2(-stepxy.x, 0.0));
|
|
|
- out_color += pixel(v_in.uv + float2(-stepxy.x, stepxy.y));
|
|
|
- out_color += pixel(v_in.uv + float2( 0.0, -stepxy.y));
|
|
|
- out_color += pixel(v_in.uv + float2( 0.0, stepxy.y));
|
|
|
- out_color += pixel(v_in.uv + float2( stepxy.x, -stepxy.y));
|
|
|
- out_color += pixel(v_in.uv + float2( stepxy.x, 0.0));
|
|
|
- out_color += pixel(v_in.uv + float2( stepxy.x, stepxy.y));
|
|
|
- return out_color / float4(9.0, 9.0, 9.0, 9.0);
|
|
|
+ // Simulate Direct3D 8-sample pattern
|
|
|
+ float4 out_color;
|
|
|
+ out_color = pixel(uv + float2( stepxy1.x, -stepxy3.y));
|
|
|
+ out_color += pixel(uv + float2(-stepxy1.x, stepxy3.y));
|
|
|
+ out_color += pixel(uv + float2( stepxy5.x, stepxy1.y));
|
|
|
+ out_color += pixel(uv + float2(-stepxy3.x, -stepxy5.y));
|
|
|
+ out_color += pixel(uv + float2(-stepxy5.x, stepxy5.y));
|
|
|
+ out_color += pixel(uv + float2(-stepxy7.x, -stepxy1.y));
|
|
|
+ out_color += pixel(uv + float2( stepxy3.x, stepxy7.y));
|
|
|
+ out_color += pixel(uv + float2( stepxy7.x, -stepxy7.y));
|
|
|
+ return out_color * 0.125;
|
|
|
}
|
|
|
|
|
|
float4 PSDrawLowresBilinearRGBA(VertData v_in) : TARGET
|