From 5e36e3b7112330ff234a0ccd9547ff8c80a6d13a Mon Sep 17 00:00:00 2001 From: isk Date: Tue, 3 Nov 2015 17:08:08 +0300 Subject: [PATCH] Fix Path Tracing trouble. --- src/OpenGl/OpenGl_View_Raytrace.cxx | 8 ++++---- src/OpenGl/OpenGl_View_Redraw.cxx | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/OpenGl/OpenGl_View_Raytrace.cxx b/src/OpenGl/OpenGl_View_Raytrace.cxx index a9ea769aba..79d4a180f9 100644 --- a/src/OpenGl/OpenGl_View_Raytrace.cxx +++ b/src/OpenGl/OpenGl_View_Raytrace.cxx @@ -2442,8 +2442,8 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer { for (int aPassIndex = 0; aPassIndex < aSamplesPerPixel; ++aPassIndex) { - aRenderFramebuffer = myAccumFrames % 2 ? myRaytraceFBO1[aFBOIdx] : myRaytraceFBO2[aFBOIdx]; - anAccumFramebuffer = myAccumFrames % 2 ? myRaytraceFBO2[aFBOIdx] : myRaytraceFBO1[aFBOIdx]; + aRenderFramebuffer = (myAccumFrames + aPassIndex) % 2 ? myRaytraceFBO1[aFBOIdx] : myRaytraceFBO2[aFBOIdx]; + anAccumFramebuffer = (myAccumFrames + aPassIndex) % 2 ? myRaytraceFBO2[aFBOIdx] : myRaytraceFBO1[aFBOIdx]; aRenderFramebuffer->BindBuffer (theGlContext); @@ -2452,14 +2452,14 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer // Set frame accumulation weight myRaytraceProgram->SetUniform (theGlContext, - myUniformLocations[0][OpenGl_RT_uSampleWeight], 1.f / (myAccumFrames + 1)); + myUniformLocations[0][OpenGl_RT_uSampleWeight], 1.f / (myAccumFrames + aPassIndex + 1)); // Set random number generator seed myRaytraceProgram->SetUniform (theGlContext, myUniformLocations[0][OpenGl_RT_uFrameRndSeed], static_cast (myRNG.NextInt() >> 2)); theGlContext->core20fwd->glDrawArrays (GL_TRIANGLES, 0, 6); - ++myAccumFrames; + //++myAccumFrames; glFinish(); } } diff --git a/src/OpenGl/OpenGl_View_Redraw.cxx b/src/OpenGl/OpenGl_View_Redraw.cxx index 5fb382dc9d..309490d40e 100644 --- a/src/OpenGl/OpenGl_View_Redraw.cxx +++ b/src/OpenGl/OpenGl_View_Redraw.cxx @@ -463,7 +463,8 @@ void OpenGl_View::Redraw() if (myRenderParams.Method == Graphic3d_RM_RAYTRACING && myRenderParams.IsGlobalIlluminationEnabled) { - myAccumFrames++; + //myAccumFrames++; + myAccumFrames += myRenderParams.SamplesPerPixel ? myRenderParams.SamplesPerPixel : 1; } // bind default FBO -- 2.39.5