NNEDI3: fix wrong thread position calculation (#962)

Fixes #961
This commit is contained in:
hauuau 2024-07-05 23:28:27 +07:00 committed by Xu
commit b8fe39c9ef
10 changed files with 20 additions and 20 deletions

View file

@ -2055,7 +2055,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 34];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -4013,7 +4013,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 18];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -2913,7 +2913,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 41];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -5724,7 +5724,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 33];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -382,7 +382,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 34];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -721,7 +721,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 18];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -492,7 +492,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 41];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -942,7 +942,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 33];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -4010,7 +4010,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 34];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -7869,7 +7869,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 18];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -5680,7 +5680,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 41];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -11221,7 +11221,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 33];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -612,7 +612,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 34];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -1182,7 +1182,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 18];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -841,7 +841,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 41];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -1632,7 +1632,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 33];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -1086,7 +1086,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 34];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -2100,7 +2100,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 18];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;

View file

@ -1518,7 +1518,7 @@ void Pass1(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 41];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(1, 2);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;
@ -2993,7 +2993,7 @@ void Pass2(uint2 blockStart, uint3 threadId) {
ret[0] = nnedi3(samples);
ret0[0] = inp[local_pos + 33];
#if CURRENT_PASS == LAST_PASS
uint2 destPos = blockStart + threadId.xy * 2;
uint2 destPos = blockStart + threadId.xy * ivec2(2, 1);
uint2 outputSize = GetOutputSize();
if (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {
return;