1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-19 13:40:49 +03:00

0024310: TKOpenGl - GLSL compatibility issues

Lights defintion clean up:
- remove duplicated enumeration TLightType (equals to Visual3d_TypeOfLightSource)
- remove unused fields from Graphic3d_CLight
- OpenGl_Light, reuse Graphic3d_CLight definition

Phong GLSL program:
- move out cumulative ambient light intencity from limited list of lights
- compatibility issues, replace array of structures (light sources, materials, clipping planes) with arrays of primitive types

New Draw Harness command vlight to alter light sources definition.

OpenGl_ShaderProgram::Initialize() - add missing Linker log
This commit is contained in:
kgv
2013-11-04 04:42:44 +04:00
committed by abv
parent e91d202a72
commit 1238134135
29 changed files with 1453 additions and 1757 deletions

View File

@@ -52,131 +52,21 @@ enum OpenGl_StateVariable
OpenGl_OCC_PROJECTION_MATRIX_INVERSE_TRANSPOSE,
// OpenGL clip planes state
OpenGl_OCC_CLIP_PLANE_0_EQUATION,
OpenGl_OCC_CLIP_PLANE_1_EQUATION,
OpenGl_OCC_CLIP_PLANE_2_EQUATION,
OpenGl_OCC_CLIP_PLANE_3_EQUATION,
OpenGl_OCC_CLIP_PLANE_4_EQUATION,
OpenGl_OCC_CLIP_PLANE_5_EQUATION,
OpenGl_OCC_CLIP_PLANE_6_EQUATION,
OpenGl_OCC_CLIP_PLANE_7_EQUATION,
OpenGl_OCC_CLIP_PLANE_0_SPACE,
OpenGl_OCC_CLIP_PLANE_1_SPACE,
OpenGl_OCC_CLIP_PLANE_2_SPACE,
OpenGl_OCC_CLIP_PLANE_3_SPACE,
OpenGl_OCC_CLIP_PLANE_4_SPACE,
OpenGl_OCC_CLIP_PLANE_5_SPACE,
OpenGl_OCC_CLIP_PLANE_6_SPACE,
OpenGl_OCC_CLIP_PLANE_7_SPACE,
OpenGl_OCC_LIGHT_SOURCE_COUNT,
OpenGl_OCC_CLIP_PLANE_EQUATIONS,
OpenGl_OCC_CLIP_PLANE_SPACES,
// OpenGL light state
OpenGl_OCC_LIGHT_SOURCE_0_TYPE,
OpenGl_OCC_LIGHT_SOURCE_1_TYPE,
OpenGl_OCC_LIGHT_SOURCE_2_TYPE,
OpenGl_OCC_LIGHT_SOURCE_3_TYPE,
OpenGl_OCC_LIGHT_SOURCE_4_TYPE,
OpenGl_OCC_LIGHT_SOURCE_5_TYPE,
OpenGl_OCC_LIGHT_SOURCE_6_TYPE,
OpenGl_OCC_LIGHT_SOURCE_7_TYPE,
OpenGl_OCC_LIGHT_SOURCE_0_HEAD,
OpenGl_OCC_LIGHT_SOURCE_1_HEAD,
OpenGl_OCC_LIGHT_SOURCE_2_HEAD,
OpenGl_OCC_LIGHT_SOURCE_3_HEAD,
OpenGl_OCC_LIGHT_SOURCE_4_HEAD,
OpenGl_OCC_LIGHT_SOURCE_5_HEAD,
OpenGl_OCC_LIGHT_SOURCE_6_HEAD,
OpenGl_OCC_LIGHT_SOURCE_7_HEAD,
OpenGl_OCC_LIGHT_SOURCE_0_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_1_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_2_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_3_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_4_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_5_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_6_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_7_AMBIENT,
OpenGl_OCC_LIGHT_SOURCE_0_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_1_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_2_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_3_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_4_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_5_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_6_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_7_DIFFUSE,
OpenGl_OCC_LIGHT_SOURCE_0_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_1_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_2_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_3_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_4_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_5_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_6_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_7_SPECULAR,
OpenGl_OCC_LIGHT_SOURCE_0_POSITION,
OpenGl_OCC_LIGHT_SOURCE_1_POSITION,
OpenGl_OCC_LIGHT_SOURCE_2_POSITION,
OpenGl_OCC_LIGHT_SOURCE_3_POSITION,
OpenGl_OCC_LIGHT_SOURCE_4_POSITION,
OpenGl_OCC_LIGHT_SOURCE_5_POSITION,
OpenGl_OCC_LIGHT_SOURCE_6_POSITION,
OpenGl_OCC_LIGHT_SOURCE_7_POSITION,
OpenGl_OCC_LIGHT_SOURCE_0_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_1_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_2_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_3_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_4_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_5_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_6_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_7_SPOT_CUTOFF,
OpenGl_OCC_LIGHT_SOURCE_0_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_1_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_2_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_3_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_4_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_5_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_6_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_7_SPOT_EXPONENT,
OpenGl_OCC_LIGHT_SOURCE_0_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_1_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_2_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_3_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_4_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_5_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_6_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_7_SPOT_DIRECTION,
OpenGl_OCC_LIGHT_SOURCE_0_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_1_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_2_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_3_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_4_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_5_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_6_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_7_CONST_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_0_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_1_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_2_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_3_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_4_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_5_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_6_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_7_LINEAR_ATTENUATION,
OpenGl_OCC_LIGHT_SOURCE_COUNT,
OpenGl_OCC_LIGHT_SOURCE_TYPES,
OpenGl_OCC_LIGHT_SOURCE_PARAMS,
OpenGl_OCC_LIGHT_AMBIENT,
// Material state
OpenGl_OCCT_ACTIVE_SAMPLER,
OpenGl_OCCT_TEXTURE_ENABLE,
OpenGl_OCCT_DISTINGUISH_MODE,
OpenGl_OCCT_FRONT_MATERIAL_AMBIENT,
OpenGl_OCCT_BACK_MATERIAL_AMBIENT,
OpenGl_OCCT_FRONT_MATERIAL_DIFFUSE,
OpenGl_OCCT_BACK_MATERIAL_DIFFUSE,
OpenGl_OCCT_FRONT_MATERIAL_SPECULAR,
OpenGl_OCCT_BACK_MATERIAL_SPECULAR,
OpenGl_OCCT_FRONT_MATERIAL_EMISSION,
OpenGl_OCCT_BACK_MATERIAL_EMISSION,
OpenGl_OCCT_FRONT_MATERIAL_SHININESS,
OpenGl_OCCT_BACK_MATERIAL_SHININESS,
OpenGl_OCCT_FRONT_MATERIAL_TRANSPARENCY,
OpenGl_OCCT_BACK_MATERIAL_TRANSPARENCY,
OpenGl_OCCT_FRONT_MATERIAL,
OpenGl_OCCT_BACK_MATERIAL,
// DON'T MODIFY THIS ITEM (insert new items before it)
OpenGl_OCCT_NUMBER_OF_STATE_VARIABLES
@@ -302,6 +192,12 @@ public:
//! Reverts to fixed-function graphics pipeline (FFP).
Standard_EXPORT static void Unbind (const Handle(OpenGl_Context)& theCtx);
//! @return true if current object was initialized
inline bool IsValid() const
{
return myProgramID != NO_PROGRAM;
}
private:
//! Returns index of last modification of variables of specified state type.