TDME2
1.9.200
src
tdme
engine
subsystems
postprocessing
PostProcessingShaderSSAOImplementation.cpp
Go to the documentation of this file.
1
#include <string>
2
3
#include <
tdme/tdme.h
>
4
#include <
tdme/engine/subsystems/postprocessing/PostProcessingShaderBaseImplementation.h
>
5
#include <
tdme/engine/subsystems/postprocessing/PostProcessingShaderSSAOImplementation.h
>
6
#include <
tdme/engine/subsystems/renderer/Renderer.h
>
7
#include <
tdme/engine/Engine.h
>
8
9
using
std::string;
10
11
using
tdme::engine::subsystems::postprocessing::PostProcessingShaderSSAOImplementation
;
12
using
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation
;
13
using
tdme::engine::subsystems::renderer::Renderer
;
14
using
tdme::engine::Engine
;
15
16
bool
PostProcessingShaderSSAOImplementation::isSupported(
Renderer
* renderer) {
17
return
renderer
->
getShaderVersion
() ==
"gl3"
;
18
}
19
20
PostProcessingShaderSSAOImplementation::PostProcessingShaderSSAOImplementation
(
Renderer
* renderer):
PostProcessingShaderBaseImplementation
(renderer)
21
{
22
}
23
24
void
PostProcessingShaderSSAOImplementation::initialize
()
25
{
26
auto
shaderVersion =
renderer
->
getShaderVersion
();
27
28
// fragment shader
29
fragmentShaderId
=
renderer
->
loadShader
(
30
renderer
->
SHADER_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
38
vertexShaderId
=
renderer
->
loadShader
(
39
renderer
->
SHADER_VERTEX_SHADER
,
40
"shader/"
+ shaderVersion +
"/postprocessing"
,
41
"ssao_vertexshader.vert"
42
);
43
if
(
vertexShaderId
== 0)
return
;
44
45
// create, attach and link program
46
programId
=
renderer
->
createProgram
(
renderer
->
PROGRAM_OBJECTS
);
47
renderer
->
attachShaderToProgram
(
programId
,
vertexShaderId
);
48
renderer
->
attachShaderToProgram
(
programId
,
fragmentShaderId
);
49
50
//
51
PostProcessingShaderBaseImplementation::initialize
();
52
53
// register shader
54
if
(
initialized
==
false
)
return
;
55
56
//
57
Engine::registerShader
(
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
71
void
PostProcessingShaderSSAOImplementation::setShaderParameters
(
int
contextIdx,
Engine
* engine) {
72
}
Engine.h
PostProcessingShaderBaseImplementation.h
PostProcessingShaderSSAOImplementation.h
Renderer.h
tdme::engine::Engine
Engine main class.
Definition:
Engine.h:131
tdme::engine::Engine::registerShader
static void registerShader(ShaderType type, const string &shaderId, const vector< Shader::ParameterDefaults > ¶meterDefaults={}, bool internal=false)
Register shader.
Definition:
Engine.h:856
tdme::engine::Engine::is4K
static bool is4K()
Definition:
Engine.h:685
tdme::engine::ShaderParameter
Shader parameter model class.
Definition:
ShaderParameter.h:26
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation
Post processing shader base implementation.
Definition:
PostProcessingShaderBaseImplementation.h:22
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::fragmentShaderId
int32_t fragmentShaderId
Definition:
PostProcessingShaderBaseImplementation.h:27
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::programId
int32_t programId
Definition:
PostProcessingShaderBaseImplementation.h:24
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::initialize
virtual void initialize() override
Initialize post processing shader.
Definition:
PostProcessingShaderBaseImplementation.cpp:24
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::vertexShaderId
int32_t vertexShaderId
Definition:
PostProcessingShaderBaseImplementation.h:26
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::initialized
bool initialized
Definition:
PostProcessingShaderBaseImplementation.h:37
tdme::engine::subsystems::postprocessing::PostProcessingShaderBaseImplementation::renderer
Renderer * renderer
Definition:
PostProcessingShaderBaseImplementation.h:38
tdme::engine::subsystems::postprocessing::PostProcessingShaderSSAOImplementation
Post processing shader SSAO rendering implementation.
Definition:
PostProcessingShaderSSAOImplementation.h:20
tdme::engine::subsystems::postprocessing::PostProcessingShaderSSAOImplementation::setShaderParameters
virtual void setShaderParameters(int contextIdx, Engine *engine) override
Set shader parameters.
Definition:
PostProcessingShaderSSAOImplementation.cpp:71
tdme::engine::subsystems::postprocessing::PostProcessingShaderSSAOImplementation::initialize
virtual void initialize() override
Initialize post processing shader.
Definition:
PostProcessingShaderSSAOImplementation.cpp:24
tdme::engine::subsystems::postprocessing::PostProcessingShaderSSAOImplementation::PostProcessingShaderSSAOImplementation
PostProcessingShaderSSAOImplementation(Renderer *renderer)
Public constructor.
Definition:
PostProcessingShaderSSAOImplementation.cpp:20
tdme::engine::subsystems::renderer::Renderer
Renderer interface.
Definition:
Renderer.h:46
tdme::engine::subsystems::renderer::Renderer::loadShader
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.
tdme::engine::subsystems::renderer::Renderer::SHADER_FRAGMENT_SHADER
int32_t SHADER_FRAGMENT_SHADER
Definition:
Renderer.h:155
tdme::engine::subsystems::renderer::Renderer::PROGRAM_OBJECTS
int32_t PROGRAM_OBJECTS
Definition:
Renderer.h:151
tdme::engine::subsystems::renderer::Renderer::SHADER_VERTEX_SHADER
int32_t SHADER_VERTEX_SHADER
Definition:
Renderer.h:156
tdme::engine::subsystems::renderer::Renderer::createProgram
virtual int32_t createProgram(int type)=0
Creates a shader program.
tdme::engine::subsystems::renderer::Renderer::attachShaderToProgram
virtual void attachShaderToProgram(int32_t programId, int32_t shaderId)=0
Attaches a shader to a program.
tdme::engine::subsystems::renderer::Renderer::getShaderVersion
virtual const string getShaderVersion()=0
tdme.h
Generated by
1.9.1