|
| | OpenGl_ShaderManager (OpenGl_Context *theContext) |
| | Creates new empty shader manager.
|
| |
| | ~OpenGl_ShaderManager () override |
| | Releases resources of shader manager.
|
| |
| void | clear () |
| | Release all resources.
|
| |
| void | UpdateSRgbState () |
| | Fetch sRGB state from caps and invalidates programs, if necessary.
|
| |
| const gp_XYZ & | LocalOrigin () const |
| | Return local camera transformation.
|
| |
| void | SetLocalOrigin (const gp_XYZ &theOrigin) |
| | Setup local camera transformation for compensating float precision issues.
|
| |
| double | LocalClippingPlaneW (const Graphic3d_ClipPlane &thePlane) const |
| | Return clipping plane W equation value moved considering local camera transformation.
|
| |
| bool | Create (const occ::handle< Graphic3d_ShaderProgram > &theProxy, TCollection_AsciiString &theShareKey, occ::handle< OpenGl_ShaderProgram > &theProgram) |
| | Creates new shader program or re-use shared instance.
|
| |
| void | Unregister (TCollection_AsciiString &theShareKey, occ::handle< OpenGl_ShaderProgram > &theProgram) |
| | Unregisters specified shader program.
|
| |
| const NCollection_Sequence< occ::handle< OpenGl_ShaderProgram > > & | ShaderPrograms () const |
| | Returns list of registered shader programs.
|
| |
| bool | IsEmpty () const |
| | Returns true if no program objects are registered in the manager.
|
| |
| bool | BindFaceProgram (const occ::handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, bool theHasVertColor, bool theEnableEnvMap, const occ::handle< OpenGl_ShaderProgram > &theCustomProgram) |
| | Bind program for filled primitives rendering.
|
| |
| bool | BindFaceProgram (const occ::handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, Aspect_InteriorStyle theInteriorStyle, bool theHasVertColor, bool theEnableEnvMap, bool theEnableMeshEdges, const occ::handle< OpenGl_ShaderProgram > &theCustomProgram) |
| | Bind program for filled primitives rendering.
|
| |
| bool | BindLineProgram (const occ::handle< OpenGl_TextureSet > &theTextures, const Aspect_TypeOfLine theLineType, const Graphic3d_TypeOfShadingModel theShadingModel, const Graphic3d_AlphaMode theAlphaMode, const bool theHasVertColor, const occ::handle< OpenGl_ShaderProgram > &theCustomProgram) |
| | Bind program for line rendering.
|
| |
| bool | BindMarkerProgram (const occ::handle< OpenGl_TextureSet > &theTextures, Graphic3d_TypeOfShadingModel theShadingModel, Graphic3d_AlphaMode theAlphaMode, bool theHasVertColor, const occ::handle< OpenGl_ShaderProgram > &theCustomProgram) |
| | Bind program for point rendering.
|
| |
| bool | BindFontProgram (const occ::handle< OpenGl_ShaderProgram > &theCustomProgram) |
| | Bind program for rendering alpha-textured font.
|
| |
| bool | BindOutlineProgram () |
| | Bind program for outline rendering.
|
| |
| bool | BindFboBlitProgram (int theNbSamples, bool theIsFallback_sRGB) |
| | Bind program for FBO blit operation.
|
| |
| bool | BindOitCompositingProgram (bool theIsMSAAEnabled) |
| | Bind program for blended order-independent transparency buffers compositing.
|
| |
| bool | BindOitDepthPeelingBlendProgram (bool theIsMSAAEnabled) |
| | Bind program for Depth Peeling order-independent transparency back color blending.
|
| |
| bool | BindOitDepthPeelingFlushProgram (bool theIsMSAAEnabled) |
| | Bind program for Depth Peeling order-independent transparency flush.
|
| |
| bool | BindStereoProgram (Graphic3d_StereoMode theStereoMode) |
| | Bind program for rendering stereoscopic image.
|
| |
| bool | BindBoundBoxProgram () |
| | Bind program for rendering bounding box.
|
| |
| const occ::handle< OpenGl_VertexBuffer > & | BoundBoxVertBuffer () const |
| | Returns bounding box vertex buffer.
|
| |
| bool | BindPBREnvBakingProgram (int theIndex) |
| | Bind program for IBL maps generation in PBR pipeline.
|
| |
| const occ::handle< Graphic3d_ShaderProgram > & | GetBgCubeMapProgram () |
| | Generates shader program to render environment cubemap as background.
|
| |
| const occ::handle< Graphic3d_ShaderProgram > & | GetBgSkydomeProgram () |
| | Generates shader program to render skydome background.
|
| |
| const occ::handle< Graphic3d_ShaderProgram > & | GetColoredQuadProgram () |
| | Generates shader program to render correctly colored quad.
|
| |
| bool | BindGridProgram () |
| | Compile (once) and bind the GPU grid shader program. Returns FALSE if shader compilation fails or the GAPI is not supported.
|
| |
| const OpenGl_LightSourceState & | LightSourceState () const |
| | Returns current state of OCCT light sources.
|
| |
| void | UpdateLightSourceStateTo (const occ::handle< Graphic3d_LightSet > &theLights, int theSpecIBLMapLevels, const occ::handle< OpenGl_ShadowMapArray > &theShadowMaps) |
| | Updates state of OCCT light sources.
|
| |
| bool | SetCastShadows (const bool theToCast) |
| | Updates state of OCCT light sources to dynamically enable/disable shadowmap.
|
| |
| void | UpdateLightSourceState () |
| | Invalidate state of OCCT light sources.
|
| |
| void | PushLightSourceState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT light sources to specified program (only on state change). Note that light sources definition depends also on WorldViewState.
|
| |
| void | pushLightSourceState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT light sources to specified program.
|
| |
| const OpenGl_ProjectionState & | ProjectionState () const |
| | Returns current state of OCCT projection transform.
|
| |
| void | UpdateProjectionStateTo (const NCollection_Mat4< float > &theProjectionMatrix) |
| | Updates state of OCCT projection transform.
|
| |
| void | PushProjectionState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT projection transform to specified program (only on state change).
|
| |
| void | pushProjectionState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT projection transform to specified program.
|
| |
| const OpenGl_ModelWorldState & | ModelWorldState () const |
| | Returns current state of OCCT model-world transform.
|
| |
| void | UpdateModelWorldStateTo (const NCollection_Mat4< float > &theModelWorldMatrix) |
| | Updates state of OCCT model-world transform.
|
| |
| void | PushModelWorldState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT model-world transform to specified program (only on state change).
|
| |
| void | pushModelWorldState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT model-world transform to specified program.
|
| |
| const OpenGl_WorldViewState & | WorldViewState () const |
| | Returns current state of OCCT world-view transform.
|
| |
| void | UpdateWorldViewStateTo (const NCollection_Mat4< float > &theWorldViewMatrix) |
| | Updates state of OCCT world-view transform.
|
| |
| void | PushWorldViewState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT world-view transform to specified program (only on state change).
|
| |
| void | pushWorldViewState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT world-view transform to specified program.
|
| |
| void | UpdateClippingState () |
| | Updates state of OCCT clipping planes.
|
| |
| void | RevertClippingState () |
| | Reverts state of OCCT clipping planes.
|
| |
| void | PushClippingState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT clipping planes to specified program (only on state change).
|
| |
| void | pushClippingState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of OCCT clipping planes to specified program.
|
| |
| const OpenGl_MaterialState & | MaterialState () const |
| | Returns current state of material.
|
| |
| void | UpdateMaterialStateTo (const OpenGl_Material &theMat, const float theAlphaCutoff, const bool theToDistinguish, const bool theToMapTexture) |
| | Updates state of material.
|
| |
| void | UpdateMaterialState () |
| | Updates state of material.
|
| |
| void | PushMaterialState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of material to specified program (only on state change).
|
| |
| void | pushMaterialState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes current state of material to specified program.
|
| |
| void | PushInteriorState (const occ::handle< OpenGl_ShaderProgram > &theProgram, const occ::handle< Graphic3d_Aspects > &theAspect) const |
| | Setup interior style line edges variables.
|
| |
| const OpenGl_OitState & | OitState () const |
| | Returns state of OIT uniforms.
|
| |
| void | ResetOitState () |
| | Reset the state of OIT rendering pass (only on state change).
|
| |
| void | SetOitState (Graphic3d_RenderTransparentMethod theMode) |
| | Set the state of OIT rendering pass (only on state change).
|
| |
| void | SetWeighedOitState (float theDepthFactor) |
| | Set the state of weighed OIT rendering pass (only on state change).
|
| |
| void | PushOitState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes state of OIT uniforms to the specified program.
|
| |
| void | pushOitState (const occ::handle< OpenGl_ShaderProgram > &theProgram) const |
| | Pushes state of OIT uniforms to the specified program.
|
| |
| void | PushState (const occ::handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel=Graphic3d_TypeOfShadingModel_Unlit) const |
| | Pushes current state of OCCT graphics parameters to specified program.
|
| |
| void | SetContext (OpenGl_Context *theCtx) |
| | Overwrites context.
|
| |
| bool | IsSameContext (OpenGl_Context *theCtx) const |
| | Returns true when provided context is the same as used one by shader manager.
|
| |
| Graphic3d_TypeOfShadingModel | ChooseFaceShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const |
| | Choose Shading Model for filled primitives. Fallbacks to FACET model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.
|
| |
| Graphic3d_TypeOfShadingModel | ChooseLineShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const |
| | Choose Shading Model for line primitives. Fallbacks to UNLIT model if there are no normal attributes. Fallbacks to corresponding non-PBR models if PBR is unavailable.
|
| |
| Graphic3d_TypeOfShadingModel | ChooseMarkerShadingModel (Graphic3d_TypeOfShadingModel theCustomModel, bool theHasNodalNormals) const |
| | Choose Shading Model for Marker primitives.
|
| |
| Graphic3d_TypeOfShadingModel | ShadingModel () const |
| | Returns default Shading Model.
|
| |
| void | SetShadingModel (const Graphic3d_TypeOfShadingModel theModel) |
| | Sets shading model.
|
| |
| | Graphic3d_ShaderManager (Aspect_GraphicsLibrary theGapi) |
| | Creates new empty shader manager.
|
| |
| | ~Graphic3d_ShaderManager () override |
| | Releases resources of shader manager.
|
| |
| bool | IsGapiGreaterEqual (int theVerMajor, int theVerMinor) const |
| |
| int | GapiVersionMajor () const |
| | Return GAPI version major number.
|
| |
| int | GapiVersionMinor () const |
| | Return GAPI version minor number.
|
| |
| void | SetGapiVersion (int theVerMajor, int theVerMinor) |
| | Return GAPI version major number.
|
| |
| bool | UseRedAlpha () const |
| | Return TRUE if RED channel should be used instead of ALPHA for single-channel textures (e.g. GAPI supports only GL_RED textures and not GL_ALPHA).
|
| |
| void | SetUseRedAlpha (bool theUseRedAlpha) |
| | Set if RED channel should be used instead of ALPHA for single-channel textures.
|
| |
| bool | HasFlatShading () const |
| | Return flag indicating flat shading usage; TRUE by default.
|
| |
| bool | ToReverseDFdxSign () const |
| | Return flag indicating flat shading should reverse normal flag; FALSE by default.
|
| |
| void | SetFlatShading (bool theToUse, bool theToReverseSign) |
| | Set flag indicating flat shading usage.
|
| |
| bool | ToEmulateDepthClamp () const |
| | Return TRUE if depth clamping should be emulated by GLSL program; TRUE by default.
|
| |
| void | SetEmulateDepthClamp (bool theToEmulate) |
| | Set if depth clamping should be emulated by GLSL program.
|
| |
| bool | HasGlslExtension (Graphic3d_GlslExtension theExt) const |
| | Return TRUE if specified extension is available.
|
| |
| void | EnableGlslExtension (Graphic3d_GlslExtension theExt, bool theToEnable=true) |
| | Set if specified extension is available or not.
|
| |
Public Member Functions inherited from Standard_Transient |
| | Standard_Transient () |
| | Empty constructor.
|
| |
| | Standard_Transient (const Standard_Transient &) |
| | Copy constructor – does nothing.
|
| |
| Standard_Transient & | operator= (const Standard_Transient &) |
| | Assignment operator, needed to avoid copying reference counter.
|
| |
| virtual | ~Standard_Transient ()=default |
| | Destructor must be virtual.
|
| |
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| | Returns a type descriptor about this object.
|
| |
| bool | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| | Returns a true value if this is an instance of Type.
|
| |
| bool | IsInstance (const char *const theTypeName) const |
| | Returns a true value if this is an instance of TypeName.
|
| |
| bool | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| | Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| bool | IsKind (const char *const theTypeName) const |
| | Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| |
| Standard_Transient * | This () const |
| | Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
|
| |
| int | GetRefCount () const noexcept |
| | Get the reference counter of this object.
|
| |
| void | IncrementRefCounter () noexcept |
| | Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
|
| |
| int | DecrementRefCounter () noexcept |
| | Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
|
| |
| virtual void | Delete () const |
| | Memory deallocator for transient classes.
|
| |
|
| int | getClipPlaneBits () const |
| | Define clipping planes program bits.
|
| |
| int | getProgramBits (const occ::handle< OpenGl_TextureSet > &theTextures, Graphic3d_AlphaMode theAlphaMode, Aspect_InteriorStyle theInteriorStyle, bool theHasVertColor, bool theEnableEnvMap, bool theEnableMeshEdges) const |
| | Define program bits.
|
| |
| occ::handle< OpenGl_ShaderProgram > & | getStdProgram (Graphic3d_TypeOfShadingModel theShadingModel, int theBits) |
| | Prepare standard GLSL program.
|
| |
| bool | prepareStdProgramUnlit (occ::handle< OpenGl_ShaderProgram > &theProgram, int theBits, bool theIsOutline=false) |
| | Prepare standard GLSL program without lighting.
|
| |
| bool | prepareStdProgramLight (occ::handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel, int theBits) |
| | Prepare standard GLSL program with lighting.
|
| |
| bool | prepareStdProgramGouraud (occ::handle< OpenGl_ShaderProgram > &theProgram, const int theBits) |
| | Prepare standard GLSL program with per-vertex lighting.
|
| |
| bool | prepareStdProgramPhong (occ::handle< OpenGl_ShaderProgram > &theProgram, const int theBits, const bool theIsFlatNormal=false, const bool theIsPBR=false) |
| | Prepare standard GLSL program with per-pixel lighting.
|
| |
| bool | bindProgramWithState (const occ::handle< OpenGl_ShaderProgram > &theProgram, Graphic3d_TypeOfShadingModel theShadingModel) |
| | Bind specified program to current context and apply state.
|
| |
| void | switchLightPrograms () |
| | Set pointer myLightPrograms to active lighting programs set from myMapOfLightPrograms.
|
| |
| bool | prepareStdProgramBoundBox () |
| | Prepare standard GLSL program for bounding box.
|
| |
| bool | preparePBREnvBakingProgram (int theIndex) |
| | Prepare GLSL source for IBL generation used in PBR pipeline.
|
| |
| bool | IsPbrAllowed () const |
| | Checks whether one of PBR shading models is set as default model.
|
| |
| void | addClippingPlane (int &thePlaneId, const Graphic3d_ClipPlane &thePlane, const NCollection_Vec4< double > &theEq, const int theChainFwd) const |
| | Append clipping plane definition to temporary buffers.
|
| |
| TCollection_AsciiString | genLightKey (const occ::handle< Graphic3d_LightSet > &theLights, const bool theHasShadowMap) const |
| | Generate map key for light sources configuration.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramFont () const |
| | Prepare standard GLSL program for textured font.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramUnlit (int theBits, bool theIsOutline=false) const |
| | Prepare standard GLSL program without lighting.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramGouraud (const occ::handle< Graphic3d_LightSet > &theLights, int theBits) const |
| | Prepare standard GLSL program with per-vertex lighting.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramPhong (const occ::handle< Graphic3d_LightSet > &theLights, const int theBits, const bool theIsFlatNormal, const bool theIsPBR, const int theNbShadowMaps) const |
| | Prepare standard GLSL program with per-pixel lighting.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramBoundBox () const |
| | Prepare standard GLSL program for bounding box.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getBgCubeMapProgram () const |
| | Generates shader program to render environment cubemap as background.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getBgSkydomeProgram () const |
| | Generates shader program to render skydome background.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getColoredQuadProgram () const |
| | Generates shader program to render correctly colored quad.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getGridProgram () const |
| | Generates shader program to render a GPU grid on an arbitrary plane. Uses a screen-space triangle unprojected to world rays and ray-plane intersection driven by uniforms uPlaneOrigin / uPlaneX / uPlaneY / uPlaneN.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getPBREnvBakingProgram (int theIndex) const |
| | Prepare GLSL source for IBL generation used in PBR pipeline.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramFboBlit (int theNbSamples, bool theIsFallback_sRGB) const |
| | Prepare standard GLSL program for FBO blit operation.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramStereo (Graphic3d_StereoMode theStereoMode) const |
| | Prepare standard GLSL program for stereoscopic image.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramOitCompositing (bool theMsaa) const |
| | Prepare standard GLSL programs for OIT compositing operation.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramOitDepthPeelingBlend (bool theMsaa) const |
| | Prepare standard GLSL programs for OIT Depth Peeling blend operation.
|
| |
| occ::handle< Graphic3d_ShaderProgram > | getStdProgramOitDepthPeelingFlush (bool theMsaa) const |
| | Prepare standard GLSL programs for OIT Depth Peeling flush operation.
|
| |
| bool | hasGlslBitwiseOps () const |
| | Return TRUE if bitwise operations can be used in GLSL program.
|
| |
| int | defaultGlslVersion (const occ::handle< Graphic3d_ShaderProgram > &theProgram, const TCollection_AsciiString &theName, int theBits, bool theUsesDerivates=false) const |
| | Prepare GLSL version header.
|
| |
| void | defaultOitGlslVersion (const occ::handle< Graphic3d_ShaderProgram > &theProgram, const TCollection_AsciiString &theName, bool theMsaa) const |
| | Prepare GLSL version header for OIT composition programs.
|
| |
| TCollection_AsciiString | pointSpriteAlphaSrc (int theBits) const |
| | Prepare standard GLSL program for accessing point sprite alpha.
|
| |
| TCollection_AsciiString | pointSpriteShadingSrc (const TCollection_AsciiString &theBaseColorSrc, int theBits) const |
| | Prepare standard GLSL program for computing point sprite shading.
|
| |
| TCollection_AsciiString | stdComputeLighting (int &theNbLights, const occ::handle< Graphic3d_LightSet > &theLights, bool theHasVertColor, bool theIsPBR, bool theHasTexColor, int theNbShadowMaps) const |
| | Define computeLighting GLSL function depending on current lights configuration.
|
| |
List of shader programs.
This class is responsible for managing shader programs.