From: isk Date: Tue, 3 Nov 2015 14:08:08 +0000 (+0300) Subject: Fix Path Tracing trouble. X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=5e36e3b7112330ff234a0ccd9547ff8c80a6d13a;p=occt-copy.git Fix Path Tracing trouble. --- 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