Skip to content
Snippets Groups Projects
Commit 931d44ef authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Merge branch '115-minor-indirect-dispatch-fixes' into 'develop'

Resolve "Minor Indirect Dispatch fixes"

Closes #115

See merge request !100
parents 77efcf3f 1db370da
No related branches found
No related tags found
1 merge request!100Resolve "Minor Indirect Dispatch fixes"
Pipeline #27468 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);
......
......@@ -21,7 +21,10 @@ void main(){
if(any(greaterThanEqual(coord, outImageRes)))
return;
vec2 motionVector = texelFetch(sampler2D(inMotion, textureSampler), coord / motionTileSize, 0).rg;
vec2 uv = (coord + 0.5) / vec2(outImageRes);
ivec2 inTextureRes = textureSize(sampler2D(inMotion, textureSampler), 0);
vec2 motionVector = texelFetch(sampler2D(inMotion, textureSampler), ivec2(uv * inTextureRes), 0).rg;
vec2 motionVectorNormalized = clamp(motionVector / range, -1, 1);
vec2 color = motionVectorNormalized * 0.5 + 0.5;
......
......@@ -28,7 +28,7 @@ App::App() :
VK_MAKE_VERSION(0, 0, 1),
{ vk::QueueFlagBits::eGraphics ,vk::QueueFlagBits::eCompute , vk::QueueFlagBits::eTransfer },
{ VK_KHR_SWAPCHAIN_EXTENSION_NAME })),
m_windowHandle(m_core.createWindow(m_applicationName, m_windowWidth, m_windowHeight, false)),
m_windowHandle(m_core.createWindow(m_applicationName, m_windowWidth, m_windowHeight, true)),
m_cameraManager(m_core.getWindow(m_windowHandle)){}
bool App::initialize() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment