rsx: Fix coordinate scaling for shadow access (#10668)

- For shadow2DProj the 3rd coordinate is actually the depth value, do not scale
This commit is contained in:
kd-11 2021-08-07 00:49:50 +03:00 committed by GitHub
parent 456b649b19
commit f745971cc8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 4 deletions

View file

@ -2010,11 +2010,18 @@ namespace rsx
if (is_unnormalized)
{
if (extended_dimension <= rsx::texture_dimension_extended::texture_dimension_2d)
switch (extended_dimension)
{
scale.width /= attributes.width;
scale.height /= attributes.height;
case rsx::texture_dimension_extended::texture_dimension_3d:
case rsx::texture_dimension_extended::texture_dimension_cubemap:
scale.depth /= attributes.depth;
[[ fallthrough ]];
case rsx::texture_dimension_extended::texture_dimension_2d:
scale.height /= attributes.height;
[[ fallthrough ]];
default:
scale.width /= attributes.width;
break;
}
}

View file

@ -881,7 +881,7 @@ namespace glsl
OS <<
"#define TEX2D_SHADOW(index, coord3) texture(TEX_NAME(index), vec3(COORD_SCALE2(index, coord3.xy), coord3.z))\n"
"#define TEX2D_SHADOWCUBE(index, coord4) texture(TEX_NAME(index), vec4(COORD_SCALE3(index, coord4.xyz), coord4.w))\n"
"#define TEX2D_SHADOWPROJ(index, coord4) textureProj(TEX_NAME(index), vec4(COORD_SCALE3(index, coord4.xyz), coord4.w))\n";
"#define TEX2D_SHADOWPROJ(index, coord4) textureProj(TEX_NAME(index), vec4(COORD_SCALE2(index, coord4.xy), coord4.zw))\n";
}
OS <<