mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-26 10:19:45 +03:00
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
38 lines
2.2 KiB
GLSL
38 lines
2.2 KiB
GLSL
// This file includes implementation of common functions and properties accessors
|
|
|
|
// arrays of light sources
|
|
uniform ivec2 occLightSourcesTypes[THE_MAX_LIGHTS]; //!< packed light sources types
|
|
uniform vec4 occLightSources[THE_MAX_LIGHTS * 4]; //!< packed light sources parameters
|
|
|
|
// light source properties accessors
|
|
int occLight_Type (in int theId) { return occLightSourcesTypes[theId].x; }
|
|
int occLight_IsHeadlight (in int theId) { return occLightSourcesTypes[theId].y; }
|
|
vec4 occLight_Diffuse (in int theId) { return occLightSources[theId * 4 + 0]; }
|
|
vec4 occLight_Specular (in int theId) { return occLightSources[theId * 4 + 0]; }
|
|
vec4 occLight_Position (in int theId) { return occLightSources[theId * 4 + 1]; }
|
|
vec4 occLight_SpotDirection (in int theId) { return occLightSources[theId * 4 + 2]; }
|
|
float occLight_ConstAttenuation (in int theId) { return occLightSources[theId * 4 + 3].x; }
|
|
float occLight_LinearAttenuation (in int theId) { return occLightSources[theId * 4 + 3].y; }
|
|
float occLight_SpotCutOff (in int theId) { return occLightSources[theId * 4 + 3].z; }
|
|
float occLight_SpotExponent (in int theId) { return occLightSources[theId * 4 + 3].w; }
|
|
|
|
// material state
|
|
uniform vec4 occFrontMaterial[5];
|
|
uniform vec4 occBackMaterial[5];
|
|
|
|
// front material properties accessors
|
|
vec4 occFrontMaterial_Emission(void) { return occFrontMaterial[0]; }
|
|
vec4 occFrontMaterial_Ambient(void) { return occFrontMaterial[1]; }
|
|
vec4 occFrontMaterial_Diffuse(void) { return occFrontMaterial[2]; }
|
|
vec4 occFrontMaterial_Specular(void) { return occFrontMaterial[3]; }
|
|
float occFrontMaterial_Shininess(void) { return occFrontMaterial[4].x; }
|
|
float occFrontMaterial_Transparency(void) { return occFrontMaterial[4].y; }
|
|
|
|
// back material properties accessors
|
|
vec4 occBackMaterial_Emission(void) { return occBackMaterial[0]; }
|
|
vec4 occBackMaterial_Ambient(void) { return occBackMaterial[1]; }
|
|
vec4 occBackMaterial_Diffuse(void) { return occBackMaterial[2]; }
|
|
vec4 occBackMaterial_Specular(void) { return occBackMaterial[3]; }
|
|
float occBackMaterial_Shininess(void) { return occBackMaterial[4].x; }
|
|
float occBackMaterial_Transparency(void) { return occBackMaterial[4].y; }
|