26 LightingShaderBaseImplementation::LightingShaderBaseImplementation(
Renderer* renderer)
189 array<float, 4> tmpColor4 {{ 0.0f, 0.0f, 0.0f, 0.0f }};
200 tmpColor4 = material.specular;
204 tmpColor4 = material.emission;
235 if (light.enabled == 0)
return;
Lighting shader implementation.
array< int32_t, Engine::LIGHTS_MAX > uniformLightSpotCosCutoff
virtual void loadTextures(const string &pathName) override
Load textures.
int32_t uniformTextureAtlasSize
virtual void updateLight(Renderer *renderer, int contextIdx, int32_t lightId) override
Update light to program.
int32_t uniformMaterialAmbient
virtual void updateTextureMatrix(Renderer *renderer, int contextIdx) override
Update texture matrix to program.
int32_t uniformMaterialSpecular
virtual void updateMaterial(Renderer *renderer, int contextIdx) override
Update material to program.
int32_t uniformNormalTextureAvailable
int32_t uniformEffectColorMul
int32_t uniformSpecularTextureUnit
int32_t uniformEnvironmentMappingTextureUnit
virtual void updateMatrices(Renderer *renderer, int contextIdx) override
Update matrices to program.
array< int32_t, Engine::LIGHTS_MAX > uniformLightSpotDirection
virtual void initialize() override
Initialize renderer.
int32_t uniformEffectColorAdd
int32_t uniformDiffuseTextureMaskedTransparencyThreshold
virtual bool isInitialized() override
array< int32_t, Engine::LIGHTS_MAX > uniformLightDiffuse
array< int32_t, Engine::LIGHTS_MAX > uniformLightAmbient
int32_t uniformProjectionMatrix
virtual void unloadTextures() override
Unload textures.
virtual void bindTexture(Renderer *renderer, int contextIdx, int32_t textureId) override
Bind texture.
int32_t uniformMaterialReflection
array< int32_t, Engine::LIGHTS_MAX > uniformLightConstantAttenuation
int32_t uniformEnvironmentMappingTextureAvailable
int32_t uniformMaterialEmission
virtual void updateEffect(Renderer *renderer, int contextIdx) override
Update effect to program.
int32_t uniformMaterialDiffuse
int32_t uniformCameraMatrix
virtual void unUseProgram(int contextIdx) override
Unuse lighting program.
int32_t uniformModelMatrix
virtual void useProgram(Engine *engine, int contextIdx) override
Use lighting program.
virtual void updateShaderParameters(Renderer *renderer, int contextIdx) override=0
Update shader parameters.
int32_t uniformSpecularTextureAvailable
int32_t uniformMaterialShininess
int32_t uniformCameraPosition
int32_t uniformDiffuseTextureUnit
int32_t uniformMaterialReflectionFragmentShader
array< int32_t, Engine::LIGHTS_MAX > uniformLightPosition
array< int32_t, Engine::LIGHTS_MAX > uniformLightEnabled
int32_t uniformDiffuseTextureMaskedTransparency
int32_t uniformNormalMatrix
int32_t uniformDiffuseTextureAvailable
array< int32_t, Engine::LIGHTS_MAX > uniformLightSpotExponent
int32_t uniformTextureAtlasPixelDimension
int32_t uniformTextureMatrix
array< int32_t, Engine::LIGHTS_MAX > uniformLightSpecular
int32_t uniformNormalTextureUnit
int32_t uniformEnvironmentMappingPosition
array< int32_t, Engine::LIGHTS_MAX > uniformLightQuadraticAttenuation
array< int32_t, Engine::LIGHTS_MAX > uniformLightRadius
array< int32_t, Engine::LIGHTS_MAX > uniformLightLinearAttenuation
virtual void setTextureUnit(int contextIdx, int32_t textureUnit)=0
Sets up texture unit.
array< float, 4 > & getEffectColorAdd(int contextIdx)
Get effect color add.
array< float, 3 > & getEnvironmentMappingCubeMapPosition(int contextIdx)
Get environment mapping cube map position.
Matrix3x3 & getTextureMatrix(int contextIdx)
Get texture matrix.
virtual void setProgramUniformFloatVec4(int contextIdx, int32_t uniformId, const array< float, 4 > &data)=0
Set up a float vec4 uniform value.
int32_t LIGHTING_SPECULAR
array< float, 4 > & getEffectColorMul(int contextIdx)
Get effect color mul.
virtual void setProgramUniformFloatVec2(int contextIdx, int32_t uniformId, const array< float, 2 > &data)=0
Set up a float vec2 uniform value.
virtual bool isUsingProgramAttributeLocation()=0
virtual int32_t getTextureUnit(int contextIdx)=0
Get texture unit.
virtual void setProgramAttributeLocation(int32_t programId, int32_t location, const string &name)=0
Bind attribute to a input location.
Matrix4x4 & getProjectionMatrix()
virtual void setProgramUniformInteger(int contextIdx, int32_t uniformId, int32_t value)=0
Set up a integer uniform value.
virtual bool linkProgram(int32_t programId)=0
Links attached shaders to a program.
virtual void bindTexture(int contextIdx, int32_t textureId)=0
Binds a texture with given id or unbinds when using ID_NONE.
virtual void setProgramUniformFloatMatrix3x3(int contextIdx, int32_t uniformId, const array< float, 9 > &value)=0
Set up a float matrix 3x3 uniform value.
Renderer_SpecularMaterial & getSpecularMaterial(int contextIdx)
Get specular material.
void setLighting(int contextIdx, int32_t lighting)
Set current lighting model.
virtual bool isInstancedRenderingAvailable()=0
Checks if instanced rendering is available.
virtual void setProgramUniformFloatMatrix4x4(int contextIdx, int32_t uniformId, const array< float, 16 > &value)=0
Set up a float matrix 4x4 uniform value.
virtual int32_t getProgramUniformLocation(int32_t programId, const string &name)=0
Returns location of given uniform variable.
Matrix4x4 & getModelViewMatrix()
virtual bool isNormalMappingAvailable()=0
virtual bool isSpecularMappingAvailable()=0
Matrix4x4 & getCameraMatrix()
virtual void useProgram(int contextIdx, int32_t programId)=0
Use shader program.
virtual void setProgramUniformFloatVec3(int contextIdx, int32_t uniformId, const array< float, 3 > &data)=0
Set up a float vec3 uniform value.
Vector3 & getCameraPosition()
virtual void setProgramUniformFloat(int contextIdx, int32_t uniformId, float value)=0
Set up a float uniform value.
Renderer_Light & getLight(int contextIdx, int32_t lightIdx)
Get light.
const array< float, 9 > & getArray() const
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Matrix4x4 & set(float r0c0, float r0c1, float r0c2, float r0c3, float r1c0, float r1c1, float r1c2, float r1c3, float r2c0, float r2c1, float r2c2, float r2c3, float r3c0, float r3c1, float r3c2, float r3c3)
Sets this matrix by its components.
Matrix4x4 & invert()
Inverts this matrix.
Matrix4x4 & transpose()
Transposes this matrix.
const array< float, 16 > & getArray() const
const array< float, 3 > & getArray() const
Lighting shader constants.
static constexpr int32_t SPECULAR_TEXTUREUNIT_SPECULAR
static constexpr int32_t SPECULAR_TEXTUREUNIT_DIFFUSE
static constexpr int32_t SPECULAR_TEXTUREUNIT_NORMAL
static constexpr int32_t SPECULAR_TEXTUREUNIT_ENVIRONMENT
array< float, 4 > ambient