TDME2 1.9.121
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DeferredLightingShaderFoliageImplementation.cpp
Go to the documentation of this file.
2
3#include <string>
4
5#include <tdme/tdme.h>
9
12
13using std::string;
14using std::to_string;
15
23
24bool DeferredLightingShaderFoliageImplementation::isSupported(Renderer* renderer) {
25 return renderer->isDeferredShadingAvailable() == true;
26}
27
29{
30}
31
33 return "defer_foliage";
34}
35
37{
38 auto shaderVersion = renderer->getShaderVersion();
39
40 // lighting
41 // fragment shader
44 "shader/" + shaderVersion + "/lighting/specular",
45 "defer_fragmentshader.frag",
46 "#define LIGHT_COUNT " + to_string(Engine::LIGHTS_MAX) + "\n#define HAVE_DEPTH_FOG"
47 );
48 if (fragmentShaderId == 0) return;
49
50 // vertex shader
53 "shader/" + shaderVersion + "/lighting/specular",
54 "render_vertexshader.vert",
55 "#define LIGHT_COUNT " + to_string(Engine::LIGHTS_MAX) + "\n#define HAVE_FOLIAGE\n#define HAVE_DEPTH_FOG",
56 FileSystem::getInstance()->getContentAsString(
57 "shader/" + shaderVersion + "/functions",
58 "create_rotation_matrix.inc.glsl"
59 ) +
60 "\n\n" +
61 FileSystem::getInstance()->getContentAsString(
62 "shader/" + shaderVersion + "/functions",
63 "create_translation_matrix.inc.glsl"
64 ) +
65 "\n\n" +
66 FileSystem::getInstance()->getContentAsString(
67 "shader/" + shaderVersion + "/functions",
68 "create_foliage_transform_matrix.inc.glsl"
69 )
70 );
71 if (vertexShaderId == 0) return;
72
73 // create, attach and link program
77
78 //
80
81 // uniforms
85}
86
88}
89
91 auto& shaderParameters = renderer->getShaderParameters(contextIdx);
92 if (uniformSpeed != -1) renderer->setProgramUniformFloat(contextIdx, uniformSpeed, shaderParameters.getShaderParameter("speed").getFloatValue());
93 if (uniformAmplitudeDefault != -1) renderer->setProgramUniformFloat(contextIdx, uniformAmplitudeDefault, shaderParameters.getShaderParameter("amplitudeDefault").getFloatValue());
94 if (uniformAmplitudeMax != -1) renderer->setProgramUniformFloat(contextIdx, uniformAmplitudeMax, shaderParameters.getShaderParameter("amplitudeMax").getFloatValue());
95}
static constexpr int LIGHTS_MAX
Definition: Engine.h:173
TDME2 engine entity shader parameters.
Shader parameter model class.
virtual void updateShaderParameters(Renderer *renderer, int contextIdx) override
Update shader parameters.
virtual int32_t loadShader(int32_t type, const string &pathName, const string &fileName, const string &definitions=string(), const string &functions=string())=0
Loads a shader.
virtual int32_t createProgram(int type)=0
Creates a shader program.
virtual void attachShaderToProgram(int32_t programId, int32_t shaderId)=0
Attaches a shader to a program.
virtual int32_t getProgramUniformLocation(int32_t programId, const string &name)=0
Returns location of given uniform variable.
const EntityShaderParameters & getShaderParameters(int contextIdx)
Get shader parameters.
Definition: Renderer.h:1194
virtual void setProgramUniformFloat(int contextIdx, int32_t uniformId, float value)=0
Set up a float uniform value.
File system singleton class.
Definition: FileSystem.h:14