TDME2  1.9.200
ShadowMapRenderShaderBaseImplementation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <tdme/tdme.h>
4 #include <tdme/engine/fwd-tdme.h>
8 #include <tdme/math/fwd-tdme.h>
9 #include <tdme/math/Matrix4x4.h>
10 #include <tdme/math/Vector3.h>
11 
17 
18 /**
19  * Shadow mapping base shader to render shadow maps
20  * @author Andreas Drewke
21  */
23 {
24 protected:
25  Renderer* renderer { nullptr };
26  int32_t vertexShaderId { -1 };
27  int32_t renderGeometryShaderId { -1 };
28  int32_t fragmentShaderId { -1 };
29  int32_t programId { -1 };
31  int32_t uniformTextureUnit { -1 };
36  int32_t renderUniformCameraMatrix { -1 };
37  int32_t renderUniformMVMatrix { -1 };
38  int32_t renderUniformMVPMatrix { -1 };
39  int32_t renderUniformNormalMatrix { -1 };
41  int32_t uniformTextureMatrix { -1 };
42  int32_t uniformTextureAtlasSize { -1 };
44  int32_t uniformDiffuseTextureUnit { -1 };
55  int32_t renderUniformTime { -1 };
57  int lightId { -1 };
58 
59 public:
60  // forbid class copy
62 
63  /**
64  * Public constructor
65  * @param renderer renderer
66  */
68 
69  /**
70  * Destructor
71  */
73 
74  // overridden methods
75  virtual bool isInitialized() override;
76  virtual void initialize() override;
77  virtual void useProgram(Engine* engine, int contextIdx) override;
78  virtual void unUseProgram(int contextIdx) override;
79  virtual void updateMatrices(int contextIdx) override;
80  virtual void updateTextureMatrix(Renderer* renderer, int contextIdx) override;
81  virtual void updateMaterial(Renderer* renderer, int contextIdx) override;
82  virtual void updateLight(Renderer* renderer, int contextIdx, int32_t lightId) override;
83  virtual void updateShaderParameters(Renderer* renderer, int contextIdx) override = 0;
84  virtual void bindTexture(Renderer* renderer, int contextIdx, int32_t textureId) override;
85  virtual void setDepthBiasMVPMatrix(int contextIdx, const Matrix4x4& depthBiasMVPMatrix) override;
86  virtual void setRenderLightId(int32_t lightId) override;
87  virtual void unloadTextures() override;
88  virtual void loadTextures(const string& pathName) override;
89 
90 };
Engine main class.
Definition: Engine.h:131
virtual void updateLight(Renderer *renderer, int contextIdx, int32_t lightId) override
Update light.
virtual void updateTextureMatrix(Renderer *renderer, int contextIdx) override
Update texture matrix.
virtual void updateMaterial(Renderer *renderer, int contextIdx) override
Update material.
virtual void bindTexture(Renderer *renderer, int contextIdx, int32_t textureId) override
Bind texture.
virtual void unUseProgram(int contextIdx) override
Un use shadow map render shader program.
virtual void useProgram(Engine *engine, int contextIdx) override
Use shadow map render shader program.
virtual void updateShaderParameters(Renderer *renderer, int contextIdx) override=0
Update shader parameters.
virtual void setDepthBiasMVPMatrix(int contextIdx, const Matrix4x4 &depthBiasMVPMatrix) override
Set up program depth bias mvp matrix.
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Definition: Matrix4x4.h:23
Vector3 class representing vector3 mathematical structure and operations with x, y,...
Definition: Vector3.h:20
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6