TDME2  1.9.200
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
EngineVKRenderer.cpp
Go to the documentation of this file.
2 
3 #if defined(_MSC_VER)
4  // this suppresses a warning redefinition of APIENTRY macro
5  #define NOMINMAX
6  #include <windows.h>
7 #endif
8 #define GLFW_INCLUDE_NONE
9 #include <GLFW/glfw3.h>
10 
11 #include <string>
12 
13 #include <tdme/tdme.h>
18 #include <tdme/engine/Engine.h>
19 #include <tdme/engine/Version.h>
21 #include <tdme/utilities/Console.h>
22 
24 
25 using std::string;
26 
35 
36 EngineVKRenderer::EngineVKRenderer()
37 {
38 }
39 
41  if (tryIdx > 0 || glfwVulkanSupported() == false) return false;
42  glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
43  return true;
44 }
45 
47  return true;
48 }
49 
51 {
52  if (Engine::lightingShader != nullptr)
53  Engine::lightingShader->updateMatrices(contextIdx);
54 
55  if (Engine::particlesShader != nullptr)
56  Engine::particlesShader->updateMatrices(contextIdx);
57 
58  if (Engine::linesShader != nullptr)
59  Engine::linesShader->updateMatrices(contextIdx);
60 
61  if (Engine::currentEngine->shadowMapping != nullptr)
62  Engine::currentEngine->shadowMapping->updateMatrices(contextIdx);
63 }
64 
66 {
67  if (Engine::lightingShader != nullptr)
68  Engine::lightingShader->updateMatrices(contextIdx);
69 
70  if (Engine::particlesShader != nullptr)
71  Engine::particlesShader->updateMatrices(contextIdx);
72 
73  if (Engine::linesShader != nullptr)
74  Engine::linesShader->updateMatrices(contextIdx);
75 
76  if (Engine::currentEngine->shadowMapping != nullptr)
77  Engine::currentEngine->shadowMapping->updateMatrices(contextIdx);
78 }
79 
81 {
82  if (Engine::lightingShader != nullptr)
83  Engine::lightingShader->updateMatrices(contextIdx);
84 
85  if (Engine::particlesShader != nullptr)
86  Engine::particlesShader->updateMatrices(contextIdx);
87 
88  if (Engine::linesShader != nullptr)
89  Engine::linesShader->updateMatrices(contextIdx);
90 
91  if (Engine::currentEngine->shadowMapping != nullptr)
92  Engine::currentEngine->shadowMapping->updateMatrices(contextIdx);
93 }
94 
95 void EngineVKRenderer::onBindTexture(int contextIdx, int32_t textureId)
96 {
97  if (Engine::lightingShader != nullptr)
98  Engine::lightingShader->bindTexture(contextIdx, textureId);
99 
100  if (Engine::guiShader != nullptr)
101  Engine::guiShader->bindTexture(textureId);
102 
103  if (Engine::currentEngine->shadowMapping != nullptr)
104  Engine::currentEngine->shadowMapping->bindTexture(contextIdx, textureId);
105 }
106 
108 {
109  if (Engine::lightingShader != nullptr)
110  Engine::lightingShader->updateTextureMatrix(contextIdx);
111 
112  if (Engine::currentEngine->shadowMapping != nullptr)
113  Engine::currentEngine->shadowMapping->updateTextureMatrix(contextIdx);
114 
115  if (Engine::guiShader != nullptr)
116  Engine::guiShader->updateTextureMatrix();
117 }
118 
120 {
121  if (Engine::lightingShader != nullptr)
122  Engine::lightingShader->updateEffect(contextIdx);
123 
124  if (Engine::particlesShader != nullptr)
125  Engine::particlesShader->updateEffect(contextIdx);
126 
127  if (Engine::linesShader != nullptr)
128  Engine::linesShader->updateEffect(contextIdx);
129 
130  if (Engine::guiShader != nullptr)
131  Engine::guiShader->updateEffect();
132 
133 }
134 
135 void EngineVKRenderer::onUpdateLight(int contextIdx, int32_t lightId)
136 {
137  if (Engine::lightingShader != nullptr)
138  Engine::lightingShader->updateLight(contextIdx, lightId);
139 
140  if (Engine::currentEngine->shadowMapping != nullptr)
141  Engine::currentEngine->shadowMapping->updateLight(contextIdx, lightId);
142 }
143 
145 {
146  if (Engine::lightingShader != nullptr)
147  Engine::lightingShader->updateMaterial(contextIdx);
148 
149  if (Engine::currentEngine->shadowMapping != nullptr)
150  Engine::currentEngine->shadowMapping->updateMaterial(contextIdx);
151 }
152 
153 void EngineVKRenderer::onUpdateShader(int contextIdx) {
154  if (Engine::lightingShader != nullptr)
155  Engine::lightingShader->setShader(contextIdx, getShader(contextIdx));
156 
157  if (Engine::currentEngine->shadowMapping != nullptr)
158  Engine::currentEngine->shadowMapping->setShader(contextIdx, getShader(contextIdx));
159 }
160 
162  if (Engine::lightingShader != nullptr)
163  Engine::lightingShader->updateShaderParameters(contextIdx);
164 
165  if (Engine::currentEngine->shadowMapping != nullptr)
166  Engine::currentEngine->shadowMapping->updateShaderParameters(contextIdx);
167 }
168 
169 // end point for engine to create renderer
171 {
173  Console::println("EngineVKRenderer::createInstance(): Engine and renderer version do not match: '" + EngineVKRenderer::getRendererVersion() + "' != '" + Version::getVersion() + "'");
174  return nullptr;
175  }
176  Console::println("EngineVKRenderer::createInstance(): Creating EngineVKRenderer instance!");
177  return new EngineVKRenderer();
178 }
EngineVKRenderer * createInstance()
Engine main class.
Definition: Engine.h:131
static STATIC_DLL_IMPEXT Engine * currentEngine
Definition: Engine.h:201
static STATIC_DLL_IMPEXT unique_ptr< GUIShader > guiShader
Definition: Engine.h:220
static STATIC_DLL_IMPEXT unique_ptr< LinesShader > linesShader
Definition: Engine.h:218
static STATIC_DLL_IMPEXT unique_ptr< LightingShader > lightingShader
Definition: Engine.h:216
static STATIC_DLL_IMPEXT unique_ptr< ParticlesShader > particlesShader
Definition: Engine.h:217
unique_ptr< ShadowMapping > shadowMapping
Definition: Engine.h:301
Interface to lighting shader program.
Engine connector of VK renderer to other engine functionality.
void onUpdateCameraMatrix(int contextIdx) override
Update camera matrix event.
void onUpdateModelViewMatrix(int contextIdx) override
Update model view matrix event.
void onUpdateProjectionMatrix(int contextIdx) override
Update projection matrix event.
void onUpdateTextureMatrix(int contextIdx) override
Update texture matrix for active texture unit event.
void onBindTexture(int contextIdx, int32_t textureId) override
On bind texture event.
void onUpdateMaterial(int contextIdx) override
On update material.
bool prepareWindowSystemRendererContext(int tryIdx) override
Prepare window system renderer context.
void onUpdateEffect(int contextIdx) override
Update material.
bool initializeWindowSystemRendererContext(GLFWwindow *glfwWindow) override
Initialize window system renderer context.
void onUpdateLight(int contextIdx, int32_t lightId) override
Update light.
void onUpdateShaderParameters(int contextIdx) override
On update shader parameters.
void onUpdateShader(int contextIdx) override
On update shader.
const string & getShader(int contextIdx)
Get shader.
Definition: Renderer.h:1182
Console class.
Definition: Console.h:29
static string getVersion()
Definition: Version.cpp:11