Skip to content
Snippets Groups Projects
Commit 1db370da authored by Alexander Gauggel's avatar Alexander Gauggel
Browse files

[#115] Fix border handling of velocity min/max computation

parent bec4ff3a
No related branches found
No related tags found
1 merge request!100Resolve "Minor Indirect Dispatch fixes"
Pipeline #27373 passed
......@@ -12,6 +12,7 @@ layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
void main(){
ivec2 outImageRes = imageSize(outMotionMax);
ivec2 inImageRes = textureSize(sampler2D(inMotion, textureSampler), 0);
ivec2 motionTileCoord = ivec2(gl_GlobalInvocationID.xy);
if(any(greaterThanEqual(motionTileCoord, outImageRes)))
......@@ -28,6 +29,14 @@ void main(){
for(int x = 0; x < motionTileSize; x++){
for(int y = 0; y < motionTileSize; y++){
ivec2 sampleCoord = motionBufferBaseCoord + ivec2(x, y);
bool sampleIsOutsideImage = false;
sampleIsOutsideImage = sampleIsOutsideImage || any(greaterThanEqual(sampleCoord, inImageRes));
sampleIsOutsideImage = sampleIsOutsideImage || any(lessThan(sampleCoord, ivec2(0)));
if(sampleIsOutsideImage)
continue;
vec2 motionSample = texelFetch(sampler2D(inMotion, textureSampler), sampleCoord, 0).rg;
float velocitySample = length(motionSample);
......
......@@ -12,6 +12,7 @@ layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
void main(){
ivec2 outImageRes = imageSize(outMotionMaxNeighbourhood);
ivec2 inImageRes = textureSize(sampler2D(inMotionMax, textureSampler), 0);
ivec2 motionTileCoord = ivec2(gl_GlobalInvocationID.xy);
if(any(greaterThanEqual(motionTileCoord, outImageRes)))
......@@ -27,6 +28,13 @@ void main(){
for(int y = -1; y <= 1; y++){
ivec2 sampleCoord = motionTileCoord + ivec2(x, y);
bool sampleIsOutsideImage = false;
sampleIsOutsideImage = sampleIsOutsideImage || any(greaterThanEqual(sampleCoord, inImageRes));
sampleIsOutsideImage = sampleIsOutsideImage || any(lessThan(sampleCoord, ivec2(0)));
if(sampleIsOutsideImage)
continue;
vec2 motionSampleMax = texelFetch(sampler2D(inMotionMax, textureSampler), sampleCoord, 0).rg;
float velocitySampleMax = length(motionSampleMax);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment