TDME2  1.9.200
PostProcessingShaderSSAOImplementation.cpp
Go to the documentation of this file.
1 #include <string>
2 
3 #include <tdme/tdme.h>
7 #include <tdme/engine/Engine.h>
8 
9 using std::string;
10 
15 
16 bool PostProcessingShaderSSAOImplementation::isSupported(Renderer* renderer) {
17  return renderer->getShaderVersion() == "gl3";
18 }
19 
21 {
22 }
23 
25 {
26  auto shaderVersion = renderer->getShaderVersion();
27 
28  // fragment shader
31  "shader/" + shaderVersion + "/postprocessing",
32  "ssao_fragmentshader.frag",
33  Engine::is4K() == true?"#define HAVE_4K":""
34  );
35  if (fragmentShaderId == 0) return;
36 
37  // vertex shader
40  "shader/" + shaderVersion + "/postprocessing",
41  "ssao_vertexshader.vert"
42  );
43  if (vertexShaderId == 0) return;
44 
45  // create, attach and link program
49 
50  //
52 
53  // register shader
54  if (initialized == false) return;
55 
56  //
58  Engine::ShaderType::SHADERTYPE_POSTPROCESSING,
59  "ssao",
60  {
61  { "strength", ShaderParameter(0.25f), ShaderParameter(0.0f), ShaderParameter(1.0f), ShaderParameter(0.05f) },
62  { "area", ShaderParameter(0.0075f), ShaderParameter(0.0f), ShaderParameter(1.0f), ShaderParameter(0.05f) },
63  { "falloff", ShaderParameter(0.1f), ShaderParameter(0.0f), ShaderParameter(1.0f), ShaderParameter(0.05f) },
64  { "radius", ShaderParameter(0.02f), ShaderParameter(0.0f), ShaderParameter(1.0f), ShaderParameter(0.05f) },
65  { "samples", ShaderParameter(8), ShaderParameter(1), ShaderParameter(16), ShaderParameter(1) }
66 
67  }
68  );
69 }
70 
72 }
Engine main class.
Definition: Engine.h:131
static void registerShader(ShaderType type, const string &shaderId, const vector< Shader::ParameterDefaults > &parameterDefaults={}, bool internal=false)
Register shader.
Definition: Engine.h:856
static bool is4K()
Definition: Engine.h:685
Shader parameter model class.
virtual void setShaderParameters(int contextIdx, Engine *engine) override
Set 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.