TDME2  1.9.200
DeferredLightingShaderTreeImplementation.cpp
Go to the documentation of this file.
2 
3 #include <string>
4 
5 #include <tdme/tdme.h>
11 
12 using std::string;
13 using std::to_string;
14 
22 
23 bool DeferredLightingShaderTreeImplementation::isSupported(Renderer* renderer) {
24  return renderer->isDeferredShadingAvailable() == true;
25 }
26 
28 {
29 }
30 
32  return "defer_tree";
33 }
34 
36 {
37  auto shaderVersion = renderer->getShaderVersion();
38 
39  // lighting
40  // vertex shader
43  "shader/" + shaderVersion + "/lighting/specular",
44  "render_vertexshader.vert",
45  "#define LIGHT_COUNT " + to_string(Engine::LIGHTS_MAX) + "\n#define HAVE_TREE\n#define HAVE_DEPTH_FOG",
46  FileSystem::getInstance()->getContentAsString(
47  "shader/" + shaderVersion + "/functions",
48  "create_rotation_matrix.inc.glsl"
49  ) +
50  "\n\n" +
51  FileSystem::getInstance()->getContentAsString(
52  "shader/" + shaderVersion + "/functions",
53  "create_translation_matrix.inc.glsl"
54  ) +
55  "\n\n" +
56  FileSystem::getInstance()->getContentAsString(
57  "shader/" + shaderVersion + "/functions",
58  "create_tree_transform_matrix.inc.glsl"
59  )
60  );
61  if (vertexShaderId == 0) return;
62 
63  // fragment shader
66  "shader/" + shaderVersion + "/lighting/specular",
67  "defer_fragmentshader.frag",
68  "#define LIGHT_COUNT " + to_string(Engine::LIGHTS_MAX) + "\n#define HAVE_DEPTH_FOG"
69  );
70  if (fragmentShaderId == 0) return;
71 
72  // create, attach and link program
76 
77  //
79 
80  //
81  if (initialized == false) return;
82 
83  // uniforms
85 }
86 
88 }
89 
91  const auto& shaderParameters = renderer->getShaderParameters(contextIdx);
92  if (uniformSpeed != -1) renderer->setProgramUniformFloat(contextIdx, uniformSpeed, shaderParameters.getShaderParameter("speed").getFloatValue());
93 }
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.
const EntityShaderParameters & getShaderParameters(int contextIdx)
Get shader parameters.
Definition: Renderer.h:1209
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.
virtual void setProgramUniformFloat(int contextIdx, int32_t uniformId, float value)=0
Set up a float uniform value.
File system singleton class.
Definition: FileSystem.h:17