TDME2  1.9.200
LightingShaderWaterImplementation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 
5 #include <tdme/tdme.h>
9 
12 
13 /**
14  * Lighting shader implementation
15  * @author Andreas Drewke
16  */
18 {
19 public:
20  static constexpr int WAVES_MAX { 4 };
21 
22  // forbid class copy
24 
25  /**
26  * Public constructor
27  * @param renderer renderer
28  */
30 
31  /**
32  * @return if supported by renderer
33  * @param renderer renderer
34  */
35  static bool isSupported(Renderer* renderer);
36 
37  // overridden methods
38  virtual const string getId() override;
39  virtual void initialize() override;
40  virtual void registerShader() override;
41  virtual void useProgram(Engine* engine, int contextIdx) override;
42  virtual void updateMatrices(Renderer* renderer, int contextIdx) override;
43  virtual void updateShaderParameters(Renderer* renderer, int contextIdx) override;
44 
45 protected:
46  int32_t uniformWaterHeight { -1 };
47  int32_t uniformTime { -1 };
48  int32_t uniformWaterWaves { -1 };
49  array<int32_t, WAVES_MAX> uniformWaterAmplitude;
50  array<int32_t, WAVES_MAX> uniformWaterWaveLength;
51  array<int32_t, WAVES_MAX> uniformWaterSpeed;
52  array<int32_t, WAVES_MAX> uniformWaterDirection;
53  int32_t uniformModelMatrix { -1 };
54  float time { 0.0f };
55  array<float, WAVES_MAX> angle;
56 };
Engine main class.
Definition: Engine.h:131
virtual void updateMatrices(Renderer *renderer, int contextIdx) override
Update matrices to program.
virtual void useProgram(Engine *engine, int contextIdx) override
Use lighting program.
virtual void updateShaderParameters(Renderer *renderer, int contextIdx) override
Update shader parameters.
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6