Open CASCADE Technology
7.2.0
|
This class is responsible for managing shader programs. More...
#include <OpenGl_ShaderManager.hxx>
Data Structures | |
struct | OpenGl_ShaderLightParameters |
Packed properties of light source. More... | |
struct | OpenGl_ShaderLightType |
Packed light source type information. More... | |
class | OpenGl_ShaderProgramFFP |
Fake OpenGL program for tracking FFP state in the way consistent to programmable pipeline. More... | |
Public Member Functions | |
OpenGl_ShaderManager (OpenGl_Context *theContext) | |
Creates new empty shader manager. More... | |
virtual | ~OpenGl_ShaderManager () |
Releases resources of shader manager. More... | |
void | clear () |
Release all resources. More... | |
const gp_XYZ & | LocalOrigin () const |
Return local camera transformation. More... | |
void | SetLocalOrigin (const gp_XYZ &theOrigin) |
Setup local camera transformation for compensating float precision issues. More... | |
Standard_Boolean | Create (const Handle< Graphic3d_ShaderProgram > &theProxy, TCollection_AsciiString &theShareKey, Handle< OpenGl_ShaderProgram > &theProgram) |
Creates new shader program or re-use shared instance. More... | |
void | Unregister (TCollection_AsciiString &theShareKey, Handle< OpenGl_ShaderProgram > &theProgram) |
Unregisters specified shader program. More... | |
const OpenGl_ShaderProgramList & | ShaderPrograms () const |
Returns list of registered shader programs. More... | |
Standard_Boolean | IsEmpty () const |
Returns true if no program objects are registered in the manager. More... | |
Standard_Boolean | BindFaceProgram (const Handle< OpenGl_TextureSet > &theTextures, const Standard_Boolean theToLightOn, const Standard_Boolean theHasVertColor, const Standard_Boolean theEnableEnvMap, const Handle< OpenGl_ShaderProgram > &theCustomProgram) |
Bind program for filled primitives rendering. More... | |
Standard_Boolean | BindLineProgram (const Handle< OpenGl_TextureSet > &theTextures, const Standard_Boolean theStipple, const Standard_Boolean theToLightOn, const Standard_Boolean theHasVertColor, const Handle< OpenGl_ShaderProgram > &theCustomProgram) |
Bind program for line rendering. More... | |
Standard_Boolean | BindMarkerProgram (const Handle< OpenGl_TextureSet > &theTextures, const Standard_Boolean theToLightOn, const Standard_Boolean theHasVertColor, const Handle< OpenGl_ShaderProgram > &theCustomProgram) |
Bind program for point rendering. More... | |
Standard_Boolean | BindFontProgram (const Handle< OpenGl_ShaderProgram > &theCustomProgram) |
Bind program for rendering alpha-textured font. More... | |
Standard_Boolean | BindFboBlitProgram () |
Bind program for FBO blit operation. More... | |
Standard_Boolean | BindOitCompositingProgram (const Standard_Boolean theIsMSAAEnabled) |
Bind program for blended order-independent transparency buffers compositing. More... | |
Standard_Boolean | BindStereoProgram (const Graphic3d_StereoMode theStereoMode) |
Bind program for rendering stereoscopic image. More... | |
const OpenGl_LightSourceState & | LightSourceState () const |
Returns current state of OCCT light sources. More... | |
void | UpdateLightSourceStateTo (const OpenGl_ListOfLight *theLights) |
Updates state of OCCT light sources. More... | |
void | UpdateLightSourceState () |
Invalidate state of OCCT light sources. More... | |
void | PushLightSourceState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT light sources to specified program. More... | |
const OpenGl_ProjectionState & | ProjectionState () const |
Returns current state of OCCT projection transform. More... | |
void | UpdateProjectionStateTo (const OpenGl_Mat4 &theProjectionMatrix) |
Updates state of OCCT projection transform. More... | |
void | PushProjectionState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT projection transform to specified program. More... | |
const OpenGl_ModelWorldState & | ModelWorldState () const |
Returns current state of OCCT model-world transform. More... | |
void | UpdateModelWorldStateTo (const OpenGl_Mat4 &theModelWorldMatrix) |
Updates state of OCCT model-world transform. More... | |
void | PushModelWorldState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT model-world transform to specified program. More... | |
const OpenGl_WorldViewState & | WorldViewState () const |
Returns current state of OCCT world-view transform. More... | |
void | UpdateWorldViewStateTo (const OpenGl_Mat4 &theWorldViewMatrix) |
Updates state of OCCT world-view transform. More... | |
void | PushWorldViewState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT world-view transform to specified program. More... | |
void | UpdateClippingState () |
Updates state of OCCT clipping planes. More... | |
void | RevertClippingState () |
Reverts state of OCCT clipping planes. More... | |
void | PushClippingState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT clipping planes to specified program. More... | |
const OpenGl_MaterialState & | MaterialState () const |
Returns current state of material. More... | |
void | UpdateMaterialStateTo (const OpenGl_Material &theFrontMat, const OpenGl_Material &theBackMat, const bool theToDistinguish, const bool theToMapTexture) |
Updates state of material. More... | |
void | UpdateMaterialState () |
Updates state of material. More... | |
void | PushMaterialState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of material to specified program. More... | |
void | SetOitState (const bool theToEnableOitWrite, const float theDepthFactor) |
Set the state of OIT rendering pass. More... | |
void | PushOitState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes state of OIT uniforms to the specified program. More... | |
void | PushState (const Handle< OpenGl_ShaderProgram > &theProgram) const |
Pushes current state of OCCT graphics parameters to specified program. More... | |
void | SetContext (OpenGl_Context *theCtx) |
Overwrites context. More... | |
bool | IsSameContext (OpenGl_Context *theCtx) const |
Returns true when provided context is the same as used one by shader manager. More... | |
void | SetShadingModel (const Graphic3d_TypeOfShadingModel theModel) |
Sets shading model. More... | |
void | SetLastView (const OpenGl_View *theLastView) |
Sets last view manger used with. Helps to handle matrix states in multi-view configurations. More... | |
bool | IsSameView (const OpenGl_View *theView) const |
Returns true when provided view is the same as cached one. More... | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. More... | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. More... | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. More... | |
virtual | ~Standard_Transient () |
Destructor must be virtual. More... | |
virtual void | Delete () const |
Memory deallocator for transient classes. More... | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. More... | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. More... | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. More... | |
Standard_Boolean | 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. More... | |
Standard_Boolean | IsKind (const Standard_CString 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. More... | |
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. More... | |
Standard_Integer | GetRefCount () const |
Get the reference counter of this object. More... | |
void | IncrementRefCounter () const |
Increments the reference counter of this object. More... | |
Standard_Integer | DecrementRefCounter () const |
Decrements the reference counter of this object; returns the decremented value. More... | |
Protected Member Functions | |
Standard_Integer | getProgramBits (const Handle< OpenGl_TextureSet > &theTextures, const Standard_Boolean theHasVertColor, const Standard_Boolean theEnableEnvMap=Standard_False) |
Define program bits. More... | |
Handle< OpenGl_ShaderProgram > & | getStdProgram (const Standard_Boolean theToLightOn, const Standard_Integer theBits) |
Prepare standard GLSL program. More... | |
TCollection_AsciiString | pointSpriteAlphaSrc (const Standard_Integer theBits) |
Prepare standard GLSL program for accessing point sprite alpha. More... | |
TCollection_AsciiString | pointSpriteShadingSrc (const TCollection_AsciiString theBaseColorSrc, const Standard_Integer theBits) |
Prepare standard GLSL program for computing point sprite shading. More... | |
Standard_Boolean | prepareStdProgramFont () |
Prepare standard GLSL program for textured font. More... | |
Standard_Boolean | prepareStdProgramFboBlit () |
Prepare standard GLSL program for FBO blit operation. More... | |
Standard_Boolean | prepareStdProgramOitCompositing (const Standard_Boolean theMsaa) |
Prepare standard GLSL programs for OIT compositing operation. More... | |
Standard_Boolean | prepareStdProgramFlat (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits) |
Prepare standard GLSL program without lighting. More... | |
Standard_Boolean | prepareStdProgramLight (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits) |
Prepare standard GLSL program with lighting. More... | |
Standard_Boolean | prepareStdProgramGouraud (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits) |
Prepare standard GLSL program with per-vertex lighting. More... | |
Standard_Boolean | prepareStdProgramPhong (Handle< OpenGl_ShaderProgram > &theProgram, const Standard_Integer theBits) |
Prepare standard GLSL program with per-pixel lighting. More... | |
TCollection_AsciiString | stdComputeLighting (const Standard_Boolean theHasVertColor) |
Define computeLighting GLSL function depending on current lights configuration. More... | |
Standard_Boolean | bindProgramWithState (const Handle< OpenGl_ShaderProgram > &theProgram) |
Bind specified program to current context and apply state. More... | |
void | switchLightPrograms () |
Set pointer myLightPrograms to active lighting programs set from myMapOfLightPrograms. More... | |
Standard_Boolean | prepareStdProgramStereo (Handle< OpenGl_ShaderProgram > &theProgram, const Graphic3d_StereoMode theStereoMode) |
Prepare standard GLSL program for stereoscopic image. More... | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. More... | |
Static Public Member Functions inherited from Standard_Transient | |
static const char * | get_type_name () |
Returns a type descriptor about this object. More... | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. More... | |
This class is responsible for managing shader programs.
OpenGl_ShaderManager::OpenGl_ShaderManager | ( | OpenGl_Context * | theContext | ) |
Creates new empty shader manager.
|
virtual |
Releases resources of shader manager.
|
inline |
Bind program for filled primitives rendering.
|
inline |
Bind program for FBO blit operation.
|
inline |
Bind program for rendering alpha-textured font.
|
inline |
Bind program for line rendering.
|
inline |
Bind program for point rendering.
|
inline |
Bind program for blended order-independent transparency buffers compositing.
|
protected |
Bind specified program to current context and apply state.
|
inline |
Bind program for rendering stereoscopic image.
void OpenGl_ShaderManager::clear | ( | ) |
Release all resources.
Standard_Boolean OpenGl_ShaderManager::Create | ( | const Handle< Graphic3d_ShaderProgram > & | theProxy, |
TCollection_AsciiString & | theShareKey, | ||
Handle< OpenGl_ShaderProgram > & | theProgram | ||
) |
Creates new shader program or re-use shared instance.
theProxy | [IN] program definition |
theShareKey | [OUT] sharing key |
theProgram | [OUT] OpenGL program |
|
inlineprotected |
Define program bits.
|
inlineprotected |
Prepare standard GLSL program.
Standard_Boolean OpenGl_ShaderManager::IsEmpty | ( | ) | const |
Returns true if no program objects are registered in the manager.
|
inline |
Returns true when provided context is the same as used one by shader manager.
|
inline |
Returns true when provided view is the same as cached one.
|
inline |
Returns current state of OCCT light sources.
|
inline |
Return local camera transformation.
|
inline |
Returns current state of material.
|
inline |
Returns current state of OCCT model-world transform.
|
protected |
Prepare standard GLSL program for accessing point sprite alpha.
|
protected |
Prepare standard GLSL program for computing point sprite shading.
|
protected |
Prepare standard GLSL program for FBO blit operation.
|
protected |
Prepare standard GLSL program without lighting.
|
protected |
Prepare standard GLSL program for textured font.
|
protected |
Prepare standard GLSL program with per-vertex lighting.
|
inlineprotected |
Prepare standard GLSL program with lighting.
|
protected |
Prepare standard GLSL programs for OIT compositing operation.
|
protected |
Prepare standard GLSL program with per-pixel lighting.
|
protected |
Prepare standard GLSL program for stereoscopic image.
|
inline |
Returns current state of OCCT projection transform.
void OpenGl_ShaderManager::PushClippingState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT clipping planes to specified program.
void OpenGl_ShaderManager::PushLightSourceState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT light sources to specified program.
void OpenGl_ShaderManager::PushMaterialState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of material to specified program.
void OpenGl_ShaderManager::PushModelWorldState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT model-world transform to specified program.
void OpenGl_ShaderManager::PushOitState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes state of OIT uniforms to the specified program.
void OpenGl_ShaderManager::PushProjectionState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT projection transform to specified program.
void OpenGl_ShaderManager::PushState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT graphics parameters to specified program.
void OpenGl_ShaderManager::PushWorldViewState | ( | const Handle< OpenGl_ShaderProgram > & | theProgram | ) | const |
Pushes current state of OCCT world-view transform to specified program.
void OpenGl_ShaderManager::RevertClippingState | ( | ) |
Reverts state of OCCT clipping planes.
|
inline |
Overwrites context.
|
inline |
Sets last view manger used with. Helps to handle matrix states in multi-view configurations.
|
inline |
Setup local camera transformation for compensating float precision issues.
|
inline |
Set the state of OIT rendering pass.
theToEnableOitWrite | [in] flag indicating whether the special output should be written for OIT algorithm. |
theDepthFactor | [in] the scalar factor of depth influence to the fragment's coverage. |
void OpenGl_ShaderManager::SetShadingModel | ( | const Graphic3d_TypeOfShadingModel | theModel | ) |
Sets shading model.
const OpenGl_ShaderProgramList& OpenGl_ShaderManager::ShaderPrograms | ( | ) | const |
Returns list of registered shader programs.
|
protected |
Define computeLighting GLSL function depending on current lights configuration.
theHasVertColor | flag to use getVertColor() instead of Ambient and Diffuse components of active material |
|
protected |
Set pointer myLightPrograms to active lighting programs set from myMapOfLightPrograms.
void OpenGl_ShaderManager::Unregister | ( | TCollection_AsciiString & | theShareKey, |
Handle< OpenGl_ShaderProgram > & | theProgram | ||
) |
Unregisters specified shader program.
void OpenGl_ShaderManager::UpdateClippingState | ( | ) |
Updates state of OCCT clipping planes.
void OpenGl_ShaderManager::UpdateLightSourceState | ( | ) |
Invalidate state of OCCT light sources.
void OpenGl_ShaderManager::UpdateLightSourceStateTo | ( | const OpenGl_ListOfLight * | theLights | ) |
Updates state of OCCT light sources.
|
inline |
Updates state of material.
|
inline |
Updates state of material.
void OpenGl_ShaderManager::UpdateModelWorldStateTo | ( | const OpenGl_Mat4 & | theModelWorldMatrix | ) |
Updates state of OCCT model-world transform.
void OpenGl_ShaderManager::UpdateProjectionStateTo | ( | const OpenGl_Mat4 & | theProjectionMatrix | ) |
Updates state of OCCT projection transform.
void OpenGl_ShaderManager::UpdateWorldViewStateTo | ( | const OpenGl_Mat4 & | theWorldViewMatrix | ) |
Updates state of OCCT world-view transform.
|
inline |
Returns current state of OCCT world-view transform.
|
protected |
standard program for FBO blit emulation
|
protected |
State of OCCT clipping planes.
|
protected |
OpenGL context.
|
protected |
|
protected |
programs matrix without lighting
|
protected |
standard program for textured text
|
protected |
flag indicating that local camera transformation has been set
|
mutableprotected |
|
protected |
pointer to active lighting programs matrix
|
protected |
State of OCCT light sources.
|
mutableprotected |
|
protected |
local camera transformation
|
protected |
map of lighting programs depending on shading model and lights configuration
|
protected |
State of Front and Back materials.
|
protected |
State of OCCT model-world transformation.
|
protected |
standard program for OIT compositing (default and MSAA).
|
protected |
State of OIT uniforms.
|
protected |
The list of shader programs.
|
protected |
State of OCCT projection transformation.
|
protected |
lighting shading model
|
protected |
standard stereo programs
|
protected |
State of OCCT world-view transformation.