@@ -985,7 +985,8 @@ void Renderer::render(nbl::ITimer* timer)
985
985
986
986
const auto currentViewProj = camera->getConcatenatedMatrix ();
987
987
// TODO: instead of rasterizing vis-buffer only once, subpixel jitter it to obtain AA
988
- if (!core::equals (prevViewProj,currentViewProj,core::ROUNDING_ERROR<core::matrix4SIMD>()*1000.0 ))
988
+ const auto thresh = core::ROUNDING_ERROR<core::matrix4SIMD>()*128 .f ;
989
+ if (!core::equals (prevViewProj,currentViewProj,thresh))
989
990
{
990
991
m_raytraceCommonData.framesDispatched = 0u ;
991
992
@@ -1002,6 +1003,11 @@ void Renderer::render(nbl::ITimer* timer)
1002
1003
m_driver->dispatch (m_cullWorkGroups, 1u , 1u );
1003
1004
COpenGLExtensionHandler::pGlMemoryBarrier (GL_COMMAND_BARRIER_BIT|GL_SHADER_STORAGE_BARRIER_BIT);
1004
1005
1006
+ m_driver->setRenderTarget (tmpTonemapBuffer);
1007
+ {
1008
+ uint32_t clearAccumulation[4 ] = { 0 ,0 ,0 ,0 };
1009
+ m_driver->clearColorBuffer (EFAP_COLOR_ATTACHMENT0, clearAccumulation);
1010
+ }
1005
1011
m_driver->setRenderTarget (m_visibilityBuffer);
1006
1012
{ // clear
1007
1013
m_driver->clearZBuffer ();
@@ -1095,7 +1101,7 @@ void Renderer::render(nbl::ITimer* timer)
1095
1101
m_driver->bindComputePipeline (m_resolvePipeline.get ());
1096
1102
m_driver->dispatch (m_resolveWorkGroups[0 ], m_resolveWorkGroups[1 ], 1 );
1097
1103
1098
- COpenGLExtensionHandler::pGlMemoryBarrier (GL_TEXTURE_FETCH_BARRIER_BIT
1104
+ COpenGLExtensionHandler::pGlMemoryBarrier (GL_TEXTURE_FETCH_BARRIER_BIT|GL_SHADER_IMAGE_ACCESS_BARRIER_BIT
1099
1105
#ifndef _NBL_BUILD_OPTIX_
1100
1106
|GL_FRAMEBUFFER_BARRIER_BIT|GL_TEXTURE_UPDATE_BARRIER_BIT
1101
1107
#else
0 commit comments