mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-08 14:17:06 +03:00
0029874: Visualization - capping plane transparency does not work
Interface OpenGl_RenderFilter and its implementations have been merged into OpenGl_Workspace. This limits flexibility of interface, but simplifies logic. - OpenGl_RenderFilter_FillModeOnly flag replaces OpenGl_CappingAlgoFilter; - OpenGl_RenderFilter_NonRaytraceableOnly flag replaces OpenGl_RaytraceFilter; - OpenGl_RenderFilter_OpaqueOnly flag replaces OpenGl_OpaqueFilter; - OpenGl_RenderFilter_TransparentOnly flag replaces OpenGl_TransparentFilter. OpenGl_CappingAlgo now: - avoids redundant Stencil clearing when Layer contains at least one transparent Element; - renders semitransparent capping plane within transparent elements pass. vclipplane command has been extended by new argument -transparency.
This commit is contained in:
@@ -1095,11 +1095,6 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
|
||||
const Standard_Integer aSizeY = theReadDrawFbo != NULL ? theReadDrawFbo->GetVPSizeY() : myWindow->Height();
|
||||
myOpenGlFBO ->InitLazy (aCtx, aSizeX, aSizeY, myFboColorFormat, myFboDepthFormat, 0);
|
||||
|
||||
if (myRaytraceFilter.IsNull())
|
||||
myRaytraceFilter = new OpenGl_RaytraceFilter;
|
||||
|
||||
myRaytraceFilter->SetPrevRenderFilter (myWorkspace->GetRenderFilter());
|
||||
|
||||
if (theReadDrawFbo != NULL)
|
||||
theReadDrawFbo->UnbindBuffer (aCtx);
|
||||
|
||||
@@ -1109,7 +1104,8 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
|
||||
// Render bottom OSD layer
|
||||
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Bottom, theReadDrawFbo, theOitAccumFbo);
|
||||
|
||||
myWorkspace->SetRenderFilter (myRaytraceFilter);
|
||||
const Standard_Integer aPrevFilter = myWorkspace->RenderFilter() & ~(Standard_Integer )(OpenGl_RenderFilter_NonRaytraceableOnly);
|
||||
myWorkspace->SetRenderFilter (aPrevFilter | OpenGl_RenderFilter_NonRaytraceableOnly);
|
||||
{
|
||||
if (theReadDrawFbo != NULL)
|
||||
{
|
||||
@@ -1123,7 +1119,7 @@ void OpenGl_View::renderStructs (Graphic3d_Camera::Projection theProjection,
|
||||
// Render non-polygonal elements in default layer
|
||||
myZLayers.Render (myWorkspace, theToDrawImmediate, OpenGl_LF_Default, theReadDrawFbo, theOitAccumFbo);
|
||||
}
|
||||
myWorkspace->SetRenderFilter (myRaytraceFilter->PrevRenderFilter());
|
||||
myWorkspace->SetRenderFilter (aPrevFilter);
|
||||
}
|
||||
|
||||
if (theReadDrawFbo != NULL)
|
||||
|
Reference in New Issue
Block a user