mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
PixelShaderGen: Fix bounding box coordinates being offset by 1 pixel
This commit is contained in:
@ -481,23 +481,23 @@ void UpdateBoundingBox(float2 rawpos) {
|
|||||||
offset.y = -offset.y;
|
offset.y = -offset.y;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// The bounding box register is exclusive of the right coordinate, hence the +1.
|
// The rightmost shaded pixel is not included in the right bounding box register,
|
||||||
int2 min_pos = iround(rawpos * cefbscale + offset);
|
// such that width = right - left + 1. This has been verified on hardware.
|
||||||
int2 max_pos = min_pos + int2(1, 1);
|
int2 pos = iround(rawpos * cefbscale + offset);
|
||||||
|
|
||||||
#ifdef SUPPORTS_SUBGROUP_REDUCTION
|
#ifdef SUPPORTS_SUBGROUP_REDUCTION
|
||||||
if (CAN_USE_SUBGROUP_REDUCTION) {
|
if (CAN_USE_SUBGROUP_REDUCTION) {
|
||||||
min_pos = IS_HELPER_INVOCATION ? int2(2147483647, 2147483647) : min_pos;
|
int2 min_pos = IS_HELPER_INVOCATION ? int2(2147483647, 2147483647) : pos;
|
||||||
max_pos = IS_HELPER_INVOCATION ? int2(-2147483648, -2147483648) : max_pos;
|
int2 max_pos = IS_HELPER_INVOCATION ? int2(-2147483648, -2147483648) : pos;
|
||||||
SUBGROUP_MIN(min_pos);
|
SUBGROUP_MIN(min_pos);
|
||||||
SUBGROUP_MAX(max_pos);
|
SUBGROUP_MAX(max_pos);
|
||||||
if (IS_FIRST_ACTIVE_INVOCATION)
|
if (IS_FIRST_ACTIVE_INVOCATION)
|
||||||
UpdateBoundingBoxBuffer(min_pos, max_pos);
|
UpdateBoundingBoxBuffer(min_pos, max_pos);
|
||||||
} else {
|
} else {
|
||||||
UpdateBoundingBoxBuffer(min_pos, max_pos);
|
UpdateBoundingBoxBuffer(pos, pos);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
UpdateBoundingBoxBuffer(min_pos, max_pos);
|
UpdateBoundingBoxBuffer(pos, pos);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user