From e9793362a7f8fe7b9d384eb375139e3fceda7675 Mon Sep 17 00:00:00 2001 From: isk Date: Fri, 2 Oct 2015 14:33:21 +0300 Subject: [PATCH] Update rendering params. Add to the V3d_Viewer default rendering params. Initialize rendering params of new V3d_View by default rendering params. Graphic3d_CView::myRenderingParams is handle now. Add to the AIS_InteractiveContext methods DefaultRenderingParams() and SetDefaultResolution(). --- src/AIS/AIS_InteractiveContext.cxx | 23 +++++ src/AIS/AIS_InteractiveContext.hxx | 5 ++ src/Graphic3d/Graphic3d_CView.cxx | 1 + src/Graphic3d/Graphic3d_CView.hxx | 6 +- src/Graphic3d/Graphic3d_RenderingParams.hxx | 6 +- src/OpenGl/OpenGl_GraphicDriver.cxx | 2 +- src/OpenGl/OpenGl_Text.cxx | 4 +- src/OpenGl/OpenGl_View_Raytrace.cxx | 28 +++---- src/OpenGl/OpenGl_View_Redraw.cxx | 32 +++---- src/V3d/V3d_View.hxx | 4 +- src/V3d/V3d_View_5.cxx | 4 +- src/V3d/V3d_Viewer.cxx | 17 +++- src/V3d/V3d_Viewer.hxx | 4 + src/ViewerTest/ViewerTest_ViewerCommands.cxx | 88 ++++++++++---------- 14 files changed, 138 insertions(+), 86 deletions(-) diff --git a/src/AIS/AIS_InteractiveContext.cxx b/src/AIS/AIS_InteractiveContext.cxx index aa5f229309..1bca503e13 100644 --- a/src/AIS/AIS_InteractiveContext.cxx +++ b/src/AIS/AIS_InteractiveContext.cxx @@ -3014,3 +3014,26 @@ void AIS_InteractiveContext::FitSelected (const Handle(V3d_View)& theView, theView->FitAll (aBndSelected, theMargin, theToUpdate); } + +//======================================================================= +//function : SetResolution +//purpose : +//======================================================================= +void AIS_InteractiveContext::SetDefaultResolution (const unsigned int theResolution) +{ + for (myMainVwr->InitDefinedViews(); myMainVwr->MoreDefinedViews(); myMainVwr->NextDefinedViews()) + { + myMainVwr->DefinedView()->Redraw(); + } + + myMainVwr->DefaultRenderingParams()->Resolution = theResolution; +} + +//======================================================================= +//function : SetDefaultRenderingParams +//purpose : +//======================================================================= +const Handle(Graphic3d_RenderingParams)& AIS_InteractiveContext::DefaultRenderingParams() const +{ + return myMainVwr->DefaultRenderingParams(); +} diff --git a/src/AIS/AIS_InteractiveContext.hxx b/src/AIS/AIS_InteractiveContext.hxx index 9e7c60f55d..acd6325f3e 100644 --- a/src/AIS/AIS_InteractiveContext.hxx +++ b/src/AIS/AIS_InteractiveContext.hxx @@ -1560,6 +1560,11 @@ public: //! Redraws immediate structures in all views of the viewer given taking into account its visibility. Standard_EXPORT void RedrawImmediate (const Handle(V3d_Viewer)& theViewer); + //! Sets a new resolution for default rendering params. + Standard_EXPORT void SetDefaultResolution (const unsigned int theResolution); + + //! Returns default rendering params. + Standard_EXPORT const Handle(Graphic3d_RenderingParams)& DefaultRenderingParams() const; friend class AIS_LocalContext; diff --git a/src/Graphic3d/Graphic3d_CView.cxx b/src/Graphic3d/Graphic3d_CView.cxx index 5568201086..b760b918b0 100644 --- a/src/Graphic3d/Graphic3d_CView.cxx +++ b/src/Graphic3d/Graphic3d_CView.cxx @@ -28,6 +28,7 @@ Graphic3d_CView::Graphic3d_CView (const Handle(Graphic3d_StructureManager)& theM myVisualization (Graphic3d_TOV_WIREFRAME) { myId = myStructureManager->Identification (this); + myRenderParams = new Graphic3d_RenderingParams(); } //======================================================================= diff --git a/src/Graphic3d/Graphic3d_CView.hxx b/src/Graphic3d/Graphic3d_CView.hxx index ec55376985..084caf2f7d 100644 --- a/src/Graphic3d/Graphic3d_CView.hxx +++ b/src/Graphic3d/Graphic3d_CView.hxx @@ -396,10 +396,10 @@ public: Standard_EXPORT virtual void CopySettings (const Handle(Graphic3d_CView)& theOther); //! Returns current rendering parameters and effect settings. - const Graphic3d_RenderingParams& RenderingParams() const { return myRenderParams; } + const Handle(Graphic3d_RenderingParams)& RenderingParams() const { return myRenderParams; } //! Returns reference to current rendering parameters and effect settings. - Graphic3d_RenderingParams& ChangeRenderingParams() { return myRenderParams; } + Handle(Graphic3d_RenderingParams)& ChangeRenderingParams() { return myRenderParams; } //! Returns true if anti-aliasing is enabled for the view. virtual Standard_Boolean IsAntialiasingEnabled() const = 0; @@ -571,7 +571,7 @@ protected: protected: Standard_Integer myId; - Graphic3d_RenderingParams myRenderParams; + Handle(Graphic3d_RenderingParams) myRenderParams; Handle(Graphic3d_StructureManager) myStructureManager; Graphic3d_SequenceOfStructure myStructsToCompute; Graphic3d_SequenceOfStructure myStructsComputed; diff --git a/src/Graphic3d/Graphic3d_RenderingParams.hxx b/src/Graphic3d/Graphic3d_RenderingParams.hxx index b57421382f..665c9558b4 100644 --- a/src/Graphic3d/Graphic3d_RenderingParams.hxx +++ b/src/Graphic3d/Graphic3d_RenderingParams.hxx @@ -22,7 +22,7 @@ #include //! Helper class to store rendering parameters. -class Graphic3d_RenderingParams +class Graphic3d_RenderingParams : public Standard_Transient { public: //! Default pixels density. @@ -103,6 +103,10 @@ public: //!< Note that using difference resolution in different Views in same Viewer //!< will lead to performance regression (for example, text will be recreated every time). +public: + DEFINE_STANDARD_RTTI(Graphic3d_RenderingParams, Standard_Transient) }; +DEFINE_STANDARD_HANDLE(Graphic3d_RenderingParams, Standard_Transient) + #endif // _Graphic3d_RenderingParams_HeaderFile diff --git a/src/OpenGl/OpenGl_GraphicDriver.cxx b/src/OpenGl/OpenGl_GraphicDriver.cxx index 2e9c9594c0..f78419290f 100644 --- a/src/OpenGl/OpenGl_GraphicDriver.cxx +++ b/src/OpenGl/OpenGl_GraphicDriver.cxx @@ -507,7 +507,7 @@ void OpenGl_GraphicDriver::TextSize (const Handle(Graphic3d_CView)& theView, aTextAspect.SetAspect(aDefaultContextText); TCollection_ExtendedString anExtText = theText; NCollection_String aText = (Standard_Utf16Char* )anExtText.ToExtString(); - OpenGl_Text::StringSize(aCtx, aText, aTextAspect, aTextParam, theView->RenderingParams().Resolution, theWidth, theAscent, theDescent); + OpenGl_Text::StringSize(aCtx, aText, aTextAspect, aTextParam, theView->RenderingParams()->Resolution, theWidth, theAscent, theDescent); } //======================================================================= diff --git a/src/OpenGl/OpenGl_Text.cxx b/src/OpenGl/OpenGl_Text.cxx index 412b459854..27c4bd6227 100644 --- a/src/OpenGl/OpenGl_Text.cxx +++ b/src/OpenGl/OpenGl_Text.cxx @@ -428,7 +428,7 @@ void OpenGl_Text::Render (const Handle(OpenGl_Workspace)& theWorkspace) const *aTextAspect, *theWorkspace->HighlightColor, *theWorkspace->HighlightColor, - theWorkspace->View()->RenderingParams().Resolution); + theWorkspace->View()->RenderingParams()->Resolution); } else { @@ -437,7 +437,7 @@ void OpenGl_Text::Render (const Handle(OpenGl_Workspace)& theWorkspace) const *aTextAspect, aTextAspect->Color(), aTextAspect->SubtitleColor(), - theWorkspace->View()->RenderingParams().Resolution); + theWorkspace->View()->RenderingParams()->Resolution); } aCtx->BindProgram (NULL); diff --git a/src/OpenGl/OpenGl_View_Raytrace.cxx b/src/OpenGl/OpenGl_View_Raytrace.cxx index 653e2c263c..a6fc7d57f8 100644 --- a/src/OpenGl/OpenGl_View_Raytrace.cxx +++ b/src/OpenGl/OpenGl_View_Raytrace.cxx @@ -1266,9 +1266,9 @@ Standard_Boolean OpenGl_View::initRaytraceResources (const Handle(OpenGl_Context } } - if (myRenderParams.RaytracingDepth != myRaytraceParameters.NbBounces) + if (myRenderParams->RaytracingDepth != myRaytraceParameters.NbBounces) { - myRaytraceParameters.NbBounces = myRenderParams.RaytracingDepth; + myRaytraceParameters.NbBounces = myRenderParams->RaytracingDepth; aToRebuildShaders = Standard_True; } @@ -1278,15 +1278,15 @@ Standard_Boolean OpenGl_View::initRaytraceResources (const Handle(OpenGl_Context aToRebuildShaders = Standard_True; } - if (myRenderParams.IsTransparentShadowEnabled != myRaytraceParameters.TransparentShadows) + if (myRenderParams->IsTransparentShadowEnabled != myRaytraceParameters.TransparentShadows) { - myRaytraceParameters.TransparentShadows = myRenderParams.IsTransparentShadowEnabled; + myRaytraceParameters.TransparentShadows = myRenderParams->IsTransparentShadowEnabled; aToRebuildShaders = Standard_True; } - if (myRenderParams.IsGlobalIlluminationEnabled != myRaytraceParameters.GlobalIllumination) + if (myRenderParams->IsGlobalIlluminationEnabled != myRaytraceParameters.GlobalIllumination) { - myRaytraceParameters.GlobalIllumination = myRenderParams.IsGlobalIlluminationEnabled; + myRaytraceParameters.GlobalIllumination = myRenderParams->IsGlobalIlluminationEnabled; aToRebuildShaders = Standard_True; } @@ -1344,7 +1344,7 @@ Standard_Boolean OpenGl_View::initRaytraceResources (const Handle(OpenGl_Context return safeFailBack ("Ray-tracing requires EXT_framebuffer_blit extension", theGlContext); } - myRaytraceParameters.NbBounces = myRenderParams.RaytracingDepth; + myRaytraceParameters.NbBounces = myRenderParams->RaytracingDepth; TCollection_AsciiString aFolder = Graphic3d_ShaderProgram::ShadersFolder(); @@ -2238,14 +2238,14 @@ Standard_Boolean OpenGl_View::setUniformState (const OpenGl_Vec3* the // Set run-time rendering options theProgram->SetUniform (theGlContext, - myUniformLocations[theProgramId][OpenGl_RT_uShadowsEnabled], myRenderParams.IsShadowEnabled ? 1 : 0); + myUniformLocations[theProgramId][OpenGl_RT_uShadowsEnabled], myRenderParams->IsShadowEnabled ? 1 : 0); theProgram->SetUniform (theGlContext, - myUniformLocations[theProgramId][OpenGl_RT_uReflectEnabled], myRenderParams.IsReflectionEnabled ? 1 : 0); + myUniformLocations[theProgramId][OpenGl_RT_uReflectEnabled], myRenderParams->IsReflectionEnabled ? 1 : 0); - if (myRenderParams.IsGlobalIlluminationEnabled) + if (myRenderParams->IsGlobalIlluminationEnabled) { theProgram->SetUniform (theGlContext, - myUniformLocations[theProgramId][OpenGl_RT_uBlockedRngEnabled], myRenderParams.CoherentPathTracingMode ? 1 : 0); + myUniformLocations[theProgramId][OpenGl_RT_uBlockedRngEnabled], myRenderParams->CoherentPathTracingMode ? 1 : 0); } // Set array of 64-bit texture handles @@ -2279,7 +2279,7 @@ Standard_Boolean OpenGl_View::setUniformState (const OpenGl_Vec3* the } theProgram->SetUniform (theGlContext, - myUniformLocations[theProgramId][OpenGl_RT_uSphereMapForBack], myRenderParams.UseEnvironmentMapBackground ? 1 : 0); + myUniformLocations[theProgramId][OpenGl_RT_uSphereMapForBack], myRenderParams->UseEnvironmentMapBackground ? 1 : 0); return Standard_True; } @@ -2373,7 +2373,7 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer aRenderFramebuffer->BindBuffer (theGlContext); } - else if (myRenderParams.IsAntialiasingEnabled) // if 2-pass ray-tracing is used + else if (myRenderParams->IsAntialiasingEnabled) // if 2-pass ray-tracing is used { myRaytraceFBO1->BindBuffer (theGlContext); @@ -2429,7 +2429,7 @@ Standard_Boolean OpenGl_View::runRaytraceShaders (const Standard_Integer ++myAccumFrames; } - else if (myRenderParams.IsAntialiasingEnabled) + else if (myRenderParams->IsAntialiasingEnabled) { myRaytraceFBO1->ColorTexture()->Bind (theGlContext, GL_TEXTURE0 + OpenGl_RT_FsaaInputTexture); diff --git a/src/OpenGl/OpenGl_View_Redraw.cxx b/src/OpenGl/OpenGl_View_Redraw.cxx index b1c38324d7..dbf5e80587 100644 --- a/src/OpenGl/OpenGl_View_Redraw.cxx +++ b/src/OpenGl/OpenGl_View_Redraw.cxx @@ -251,7 +251,7 @@ void OpenGl_View::DrawBackground (const Handle(OpenGl_Workspace)& theWorkspace) //======================================================================= void OpenGl_View::Redraw() { - if (myRenderParams.Method == Graphic3d_RM_RAYTRACING + if (myRenderParams->Method == Graphic3d_RM_RAYTRACING && !myCaps->vboDisable && !myCaps->keepArrayData) { @@ -271,7 +271,7 @@ void OpenGl_View::Redraw() myWindow->SetSwapInterval(); ++myFrameCounter; - const Graphic3d_StereoMode aStereoMode = myRenderParams.StereoMode; + const Graphic3d_StereoMode aStereoMode = myRenderParams->StereoMode; Graphic3d_Camera::Projection aProjectType = myCamera->ProjectionType(); Handle(OpenGl_Context) aCtx = myWorkspace->GetGlContext(); @@ -501,7 +501,7 @@ void OpenGl_View::RedrawImmediate() return; } - const Graphic3d_StereoMode aStereoMode = myRenderParams.StereoMode; + const Graphic3d_StereoMode aStereoMode = myRenderParams->StereoMode; Graphic3d_Camera::Projection aProjectType = myCamera->ProjectionType(); OpenGl_FrameBuffer* aFrameBuffer = (OpenGl_FrameBuffer* )myFBO; @@ -1029,7 +1029,7 @@ void OpenGl_View::renderStructs (OpenGl_FrameBuffer* theReadDrawFbo, } Standard_Boolean toRenderGL = theToDrawImmediate || - myRenderParams.Method != Graphic3d_RM_RAYTRACING || + myRenderParams->Method != Graphic3d_RM_RAYTRACING || myRaytraceInitStatus == OpenGl_RT_FAIL || aCtx->IsFeedback(); @@ -1290,7 +1290,7 @@ void OpenGl_View::renderScene (OpenGl_FrameBuffer* theReadDrawFbo, case Graphic3d_TOD_ENVIRONMENT: myWorkspace->NamedStatus |= OPENGL_NS_FORBIDSETTEX; - if (myRenderParams.Method != Graphic3d_RM_RAYTRACING) + if (myRenderParams->Method != Graphic3d_RM_RAYTRACING) { myWorkspace->EnableTexture (myTextureEnv); } @@ -1310,7 +1310,7 @@ void OpenGl_View::renderScene (OpenGl_FrameBuffer* theReadDrawFbo, if (myWorkspace->NamedStatus & OPENGL_NS_2NDPASSNEED) { myWorkspace->NamedStatus |= OPENGL_NS_2NDPASSDO; - if (myRenderParams.Method != Graphic3d_RM_RAYTRACING) + if (myRenderParams->Method != Graphic3d_RM_RAYTRACING) { myWorkspace->EnableTexture (myTextureEnv); } @@ -1580,18 +1580,18 @@ void OpenGl_View::drawStereoPair() myWindow->PlatformWindow()->Position (aGeom.left, aGeom.top, aGeom.right, aGeom.bottom); - Standard_Boolean toReverse = myRenderParams.ToReverseStereo; + Standard_Boolean toReverse = myRenderParams->ToReverseStereo; const Standard_Boolean isOddY = (aGeom.top + aGeom.dy()) % 2 == 1; const Standard_Boolean isOddX = aGeom.left % 2 == 1; if (isOddY - && (myRenderParams.StereoMode == Graphic3d_StereoMode_RowInterlaced - || myRenderParams.StereoMode == Graphic3d_StereoMode_ChessBoard)) + && (myRenderParams->StereoMode == Graphic3d_StereoMode_RowInterlaced + || myRenderParams->StereoMode == Graphic3d_StereoMode_ChessBoard)) { toReverse = !toReverse; } if (isOddX - && (myRenderParams.StereoMode == Graphic3d_StereoMode_ColumnInterlaced - || myRenderParams.StereoMode == Graphic3d_StereoMode_ChessBoard)) + && (myRenderParams->StereoMode == Graphic3d_StereoMode_ColumnInterlaced + || myRenderParams->StereoMode == Graphic3d_StereoMode_ChessBoard)) { toReverse = !toReverse; } @@ -1611,14 +1611,14 @@ void OpenGl_View::drawStereoPair() const Handle(OpenGl_ShaderManager)& aManager = aCtx->ShaderManager(); if (aVerts->IsValid() - && aManager->BindStereoProgram (myRenderParams.StereoMode)) + && aManager->BindStereoProgram (myRenderParams->StereoMode)) { - if (myRenderParams.StereoMode == Graphic3d_StereoMode_Anaglyph) + if (myRenderParams->StereoMode == Graphic3d_StereoMode_Anaglyph) { OpenGl_Mat4 aFilterL, aFilterR; aFilterL.SetDiagonal (Graphic3d_Vec4 (0.0f, 0.0f, 0.0f, 0.0f)); aFilterR.SetDiagonal (Graphic3d_Vec4 (0.0f, 0.0f, 0.0f, 0.0f)); - switch (myRenderParams.AnaglyphFilter) + switch (myRenderParams->AnaglyphFilter) { case Graphic3d_RenderingParams::Anaglyph_RedCyan_Simple: { @@ -1667,8 +1667,8 @@ void OpenGl_View::drawStereoPair() } case Graphic3d_RenderingParams::Anaglyph_UserDefined: { - aFilterL = myRenderParams.AnaglyphLeft; - aFilterR = myRenderParams.AnaglyphRight; + aFilterL = myRenderParams->AnaglyphLeft; + aFilterR = myRenderParams->AnaglyphRight; break; } } diff --git a/src/V3d/V3d_View.hxx b/src/V3d/V3d_View.hxx index 53f71e58f0..a51cae3f2d 100644 --- a/src/V3d/V3d_View.hxx +++ b/src/V3d/V3d_View.hxx @@ -976,10 +976,10 @@ public: Standard_EXPORT const Handle(Graphic3d_Camera)& Camera() const; //! Returns current rendering parameters and effect settings. - Standard_EXPORT const Graphic3d_RenderingParams& RenderingParams() const; + Standard_EXPORT const Handle(Graphic3d_RenderingParams)& RenderingParams() const; //! Returns reference to current rendering parameters and effect settings. - Standard_EXPORT Graphic3d_RenderingParams& ChangeRenderingParams(); + Standard_EXPORT Handle(Graphic3d_RenderingParams)& ChangeRenderingParams(); //! @return flag value of objects culling mechanism Standard_EXPORT Standard_Boolean IsCullingEnabled() const; diff --git a/src/V3d/V3d_View_5.cxx b/src/V3d/V3d_View_5.cxx index 43379e54e2..e2363c66ab 100644 --- a/src/V3d/V3d_View_5.cxx +++ b/src/V3d/V3d_View_5.cxx @@ -65,7 +65,7 @@ Standard_Boolean V3d_View::IsGLLightEnabled() const //function : RenderingParams //purpose : //============================================================================= -const Graphic3d_RenderingParams& V3d_View::RenderingParams() const +const Handle(Graphic3d_RenderingParams)& V3d_View::RenderingParams() const { return myView->RenderingParams(); } @@ -74,7 +74,7 @@ const Graphic3d_RenderingParams& V3d_View::RenderingParams() const //function : ChangeRenderingParams //purpose : //============================================================================= -Graphic3d_RenderingParams& V3d_View::ChangeRenderingParams() +Handle(Graphic3d_RenderingParams)& V3d_View::ChangeRenderingParams() { return myView->ChangeRenderingParams(); } diff --git a/src/V3d/V3d_Viewer.cxx b/src/V3d/V3d_Viewer.cxx index 497ad06a34..4adbe6c55b 100644 --- a/src/V3d/V3d_Viewer.cxx +++ b/src/V3d/V3d_Viewer.cxx @@ -86,6 +86,9 @@ myZLayerGenId (1, IntegerLast()) myRGrid = new V3d_RectangularGrid (this, Color1, Color2); myCGrid = new V3d_CircularGrid (this, Color1, Color2); myGridType = Aspect_GT_Rectangular; + + // Create the default rendering params. + myDefaultRenderingParams = new Graphic3d_RenderingParams(); } // ======================================================================== @@ -94,7 +97,10 @@ myZLayerGenId (1, IntegerLast()) // ======================================================================== Handle(V3d_View) V3d_Viewer::CreateView () { - return new V3d_View(this, MyDefaultTypeOfView); + Handle(V3d_View) aNewView = new V3d_View(this, MyDefaultTypeOfView); + aNewView->ChangeRenderingParams() = myDefaultRenderingParams; + + return aNewView; } // ======================================================================== @@ -534,3 +540,12 @@ void V3d_Viewer::IncrCount() { myNextCount++; } + +//======================================================================= +//function : DefaultRenderingParams +//purpose : +//======================================================================= +Handle(Graphic3d_RenderingParams)& V3d_Viewer::DefaultRenderingParams() +{ + return myDefaultRenderingParams; +} diff --git a/src/V3d/V3d_Viewer.hxx b/src/V3d/V3d_Viewer.hxx index 29fcb98fab..656588facf 100644 --- a/src/V3d/V3d_Viewer.hxx +++ b/src/V3d/V3d_Viewer.hxx @@ -439,6 +439,8 @@ public: Standard_EXPORT Standard_CString Domain() const; + Standard_EXPORT Handle(Graphic3d_RenderingParams)& DefaultRenderingParams(); + friend class V3d_View; friend class V3d_Light; @@ -505,6 +507,8 @@ private: Graphic3d_Vertex myGridEchoLastVert; TColStd_MapOfInteger myLayerIds; Aspect_GenId myZLayerGenId; + + Handle(Graphic3d_RenderingParams) myDefaultRenderingParams; }; #endif // _V3d_Viewer_HeaderFile diff --git a/src/ViewerTest/ViewerTest_ViewerCommands.cxx b/src/ViewerTest/ViewerTest_ViewerCommands.cxx index a16b936087..1ab07ac1ad 100644 --- a/src/ViewerTest/ViewerTest_ViewerCommands.cxx +++ b/src/ViewerTest/ViewerTest_ViewerCommands.cxx @@ -1986,7 +1986,7 @@ static LRESULT WINAPI ViewerWindowProc( HWND hwnd, case WM_MOVE: case WM_MOVING: case WM_SIZING: - switch (aView->RenderingParams().StereoMode) + switch (aView->RenderingParams()->StereoMode) { case Graphic3d_StereoMode_RowInterlaced: case Graphic3d_StereoMode_ColumnInterlaced: @@ -5097,9 +5097,9 @@ static int VFps (Draw_Interpretor& theDI, << "CPU: " << (1000.0 * aCpuAver) << " msec\n"; // compute additional statistics in ray-tracing mode - Graphic3d_RenderingParams& aParams = aView->ChangeRenderingParams(); + Handle(Graphic3d_RenderingParams) aParams = aView->ChangeRenderingParams(); - if (aParams.Method == Graphic3d_RM_RAYTRACING) + if (aParams->Method == Graphic3d_RM_RAYTRACING) { Standard_Integer aSizeX; Standard_Integer aSizeY; @@ -5107,7 +5107,7 @@ static int VFps (Draw_Interpretor& theDI, aView->Window()->Size (aSizeX, aSizeY); // 1 shadow ray and 1 secondary ray pew each bounce - const Standard_Real aMRays = aSizeX * aSizeY * aFpsAver * aParams.RaytracingDepth * 2 / 1.0e6f; + const Standard_Real aMRays = aSizeX * aSizeY * aFpsAver * aParams->RaytracingDepth * 2 / 1.0e6f; theDI << "MRays/sec (upper bound): " << aMRays << "\n"; } @@ -7338,12 +7338,12 @@ static int VStereo (Draw_Interpretor& theDI, return 0; } - Handle(Graphic3d_Camera) aCamera; - Graphic3d_RenderingParams* aParams = NULL; - Graphic3d_StereoMode aMode = Graphic3d_StereoMode_QuadBuffer; + Handle(Graphic3d_Camera) aCamera; + Handle(Graphic3d_RenderingParams) aParams = NULL; + Graphic3d_StereoMode aMode = Graphic3d_StereoMode_QuadBuffer; if (!aView.IsNull()) { - aParams = &aView->ChangeRenderingParams(); + aParams = aView->ChangeRenderingParams(); aMode = aParams->StereoMode; aCamera = aView->Camera(); } @@ -8118,14 +8118,14 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, return 1; } - Graphic3d_RenderingParams& aParams = aView->ChangeRenderingParams(); + Handle(Graphic3d_RenderingParams) aParams = aView->ChangeRenderingParams(); TCollection_AsciiString aCmdName (theArgVec[0]); aCmdName.LowerCase(); if (aCmdName == "vraytrace") { if (theArgNb == 1) { - theDI << (aParams.Method == Graphic3d_RM_RAYTRACING ? "on" : "off") << " "; + theDI << (aParams->Method == Graphic3d_RM_RAYTRACING ? "on" : "off") << " "; return 0; } else if (theArgNb == 2) @@ -8135,14 +8135,14 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, if (aValue == "on" || aValue == "1") { - aParams.Method = Graphic3d_RM_RAYTRACING; + aParams->Method = Graphic3d_RM_RAYTRACING; aView->Redraw(); return 0; } else if (aValue == "off" || aValue == "0") { - aParams.Method = Graphic3d_RM_RASTERIZATION; + aParams->Method = Graphic3d_RM_RASTERIZATION; aView->Redraw(); return 0; } @@ -8162,19 +8162,19 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, if (theArgNb < 2) { theDI << "renderMode: "; - switch (aParams.Method) + switch (aParams->Method) { case Graphic3d_RM_RASTERIZATION: theDI << "rasterization "; break; case Graphic3d_RM_RAYTRACING: theDI << "raytrace "; break; } theDI << "\n"; - theDI << "fsaa: " << (aParams.IsAntialiasingEnabled ? "on" : "off") << "\n"; - theDI << "shadows: " << (aParams.IsShadowEnabled ? "on" : "off") << "\n"; - theDI << "reflections: " << (aParams.IsReflectionEnabled ? "on" : "off") << "\n"; - theDI << "rayDepth: " << aParams.RaytracingDepth << "\n"; - theDI << "gleam: " << (aParams.IsTransparentShadowEnabled ? "on" : "off") << "\n"; - theDI << "GI: " << (aParams.IsGlobalIlluminationEnabled ? "on" : "off") << "\n"; - theDI << "blocked RNG: " << (aParams.CoherentPathTracingMode ? "on" : "off") << "\n"; + theDI << "fsaa: " << (aParams->IsAntialiasingEnabled ? "on" : "off") << "\n"; + theDI << "shadows: " << (aParams->IsShadowEnabled ? "on" : "off") << "\n"; + theDI << "reflections: " << (aParams->IsReflectionEnabled ? "on" : "off") << "\n"; + theDI << "rayDepth: " << aParams->RaytracingDepth << "\n"; + theDI << "gleam: " << (aParams->IsTransparentShadowEnabled ? "on" : "off") << "\n"; + theDI << "GI: " << (aParams->IsGlobalIlluminationEnabled ? "on" : "off") << "\n"; + theDI << "blocked RNG: " << (aParams->CoherentPathTracingMode ? "on" : "off") << "\n"; theDI << "shadingModel: "; switch (aView->ShadingModel()) { @@ -8210,7 +8210,7 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { if (toPrint) { - switch (aParams.Method) + switch (aParams->Method) { case Graphic3d_RM_RASTERIZATION: theDI << "rasterization "; break; case Graphic3d_RM_RAYTRACING: theDI << "ray-tracing "; break; @@ -8228,11 +8228,11 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { if (toPrint) { - theDI << (aParams.Method == Graphic3d_RM_RAYTRACING ? "true" : "false") << " "; + theDI << (aParams->Method == Graphic3d_RM_RAYTRACING ? "true" : "false") << " "; continue; } - aParams.Method = Graphic3d_RM_RAYTRACING; + aParams->Method = Graphic3d_RM_RAYTRACING; } else if (aFlag == "-rast" || aFlag == "-raster" @@ -8240,18 +8240,18 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { if (toPrint) { - theDI << (aParams.Method == Graphic3d_RM_RASTERIZATION ? "true" : "false") << " "; + theDI << (aParams->Method == Graphic3d_RM_RASTERIZATION ? "true" : "false") << " "; continue; } - aParams.Method = Graphic3d_RM_RASTERIZATION; + aParams->Method = Graphic3d_RM_RASTERIZATION; } else if (aFlag == "-raydepth" || aFlag == "-ray_depth") { if (toPrint) { - theDI << aParams.RaytracingDepth << " "; + theDI << aParams->RaytracingDepth << " "; continue; } else if (++anArgIter >= theArgNb) @@ -8263,14 +8263,14 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, const Standard_Integer aDepth = Draw::Atoi (theArgVec[anArgIter]); // We allow RaytracingDepth be more than 10 in case of GI enabled - if (aDepth < 1 || (aDepth > 10 && !aParams.IsGlobalIlluminationEnabled)) + if (aDepth < 1 || (aDepth > 10 && !aParams->IsGlobalIlluminationEnabled)) { std::cerr << "Error: invalid ray-tracing depth " << aDepth << ". Should be within range [1; 10]\n"; return 1; } else { - aParams.RaytracingDepth = aDepth; + aParams->RaytracingDepth = aDepth; } } else if (aFlag == "-shad" @@ -8278,7 +8278,7 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { if (toPrint) { - theDI << (aParams.IsShadowEnabled ? "on" : "off") << " "; + theDI << (aParams->IsShadowEnabled ? "on" : "off") << " "; continue; } @@ -8288,14 +8288,14 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.IsShadowEnabled = toEnable; + aParams->IsShadowEnabled = toEnable; } else if (aFlag == "-refl" || aFlag == "-reflections") { if (toPrint) { - theDI << (aParams.IsReflectionEnabled ? "on" : "off") << " "; + theDI << (aParams->IsReflectionEnabled ? "on" : "off") << " "; continue; } @@ -8305,13 +8305,13 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.IsReflectionEnabled = toEnable; + aParams->IsReflectionEnabled = toEnable; } else if (aFlag == "-fsaa") { if (toPrint) { - theDI << (aParams.IsAntialiasingEnabled ? "on" : "off") << " "; + theDI << (aParams->IsAntialiasingEnabled ? "on" : "off") << " "; continue; } @@ -8321,13 +8321,13 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.IsAntialiasingEnabled = toEnable; + aParams->IsAntialiasingEnabled = toEnable; } else if (aFlag == "-gleam") { if (toPrint) { - theDI << (aParams.IsTransparentShadowEnabled ? "on" : "off") << " "; + theDI << (aParams->IsTransparentShadowEnabled ? "on" : "off") << " "; continue; } @@ -8337,13 +8337,13 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.IsTransparentShadowEnabled = toEnable; + aParams->IsTransparentShadowEnabled = toEnable; } else if (aFlag == "-gi") { if (toPrint) { - theDI << (aParams.IsGlobalIlluminationEnabled ? "on" : "off") << " "; + theDI << (aParams->IsGlobalIlluminationEnabled ? "on" : "off") << " "; continue; } @@ -8353,10 +8353,10 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.IsGlobalIlluminationEnabled = toEnable; + aParams->IsGlobalIlluminationEnabled = toEnable; if (!toEnable) { - aParams.RaytracingDepth = Min (aParams.RaytracingDepth, 10); + aParams->RaytracingDepth = Min (aParams->RaytracingDepth, 10); } } else if (aFlag == "-blockedrng" @@ -8364,7 +8364,7 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { if (toPrint) { - theDI << (aParams.CoherentPathTracingMode ? "on" : "off") << " "; + theDI << (aParams->CoherentPathTracingMode ? "on" : "off") << " "; continue; } @@ -8374,13 +8374,13 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.CoherentPathTracingMode = toEnable; + aParams->CoherentPathTracingMode = toEnable; } else if (aFlag == "-env") { if (toPrint) { - theDI << (aParams.UseEnvironmentMapBackground ? "on" : "off") << " "; + theDI << (aParams->UseEnvironmentMapBackground ? "on" : "off") << " "; continue; } @@ -8390,7 +8390,7 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, { --anArgIter; } - aParams.UseEnvironmentMapBackground = toEnable; + aParams->UseEnvironmentMapBackground = toEnable; } else if (aFlag == "-shademodel" || aFlag == "-shadingmodel" @@ -8455,7 +8455,7 @@ static Standard_Integer VRenderParams (Draw_Interpretor& theDI, TCollection_AsciiString aResolution (theArgVec[anArgIter]); if (aResolution.IsIntegerValue()) { - aView->ChangeRenderingParams().Resolution = static_cast (Draw::Atoi (aResolution.ToCString())); + aView->ChangeRenderingParams()->Resolution = static_cast (Draw::Atoi (aResolution.ToCString())); } else { -- 2.39.5