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=605444a27bd61eefb5400465fb0f307a8dd17f24;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 a32d792530..cae667498e 100644 --- a/src/OpenGl/OpenGl_View_Raytrace.cxx +++ b/src/OpenGl/OpenGl_View_Raytrace.cxx @@ -2419,8 +2419,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); @@ -2429,14 +2429,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 28f354b5dd..bb4a2936b4 100644 --- a/src/OpenGl/OpenGl_View_Redraw.cxx +++ b/src/OpenGl/OpenGl_View_Redraw.cxx @@ -475,7 +475,8 @@ void OpenGl_View::Redraw() if (myRenderParams.Method == Graphic3d_RM_RAYTRACING && myRenderParams.IsGlobalIlluminationEnabled) { - myAccumFrames++; + //myAccumFrames++; + myAccumFrames += myRenderParams.SamplesPerPixel ? myRenderParams.SamplesPerPixel : 1; } // bind default FBO