summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/effectreader.cpp
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-04-14 17:22:08 +0200
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-04-14 17:22:24 +0200
commit99aa7eacd7a2bb7a3711f8ff3f918e8fbe1f2819 (patch)
treea681a4407878fcf7cc89973e6bb5bc09dcb22c3c /src/osd/modules/render/bgfx/effectreader.cpp
parent0ff1223fe85b054b3b8ef3a8e5ca6ad859154ed8 (diff)
bgfx: Add data-driven render target clearing [Ryan Holtz]
Diffstat (limited to 'src/osd/modules/render/bgfx/effectreader.cpp')
-rw-r--r--src/osd/modules/render/bgfx/effectreader.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/effectreader.cpp b/src/osd/modules/render/bgfx/effectreader.cpp
index f8e21974ead..f2a00cff562 100644
--- a/src/osd/modules/render/bgfx/effectreader.cpp
+++ b/src/osd/modules/render/bgfx/effectreader.cpp
@@ -19,6 +19,7 @@
#include "writereader.h"
#include "shadermanager.h"
#include "uniformreader.h"
+#include "uniform.h"
#include "effectreader.h"
@@ -52,6 +53,17 @@ bgfx_effect* effect_reader::read_from_value(const Value& value, std::string pref
std::string vertex_name(value["vertex"].GetString());
bgfx::ShaderHandle vertex_shader = shaders.shader(vertex_name);
+ if (vertex_shader.idx == 0xffff)
+ {
+ for (bgfx_uniform* uniform : uniforms)
+ {
+ if (uniform != nullptr)
+ {
+ delete uniform;
+ }
+ }
+ return nullptr;
+ }
std::string fragment_name("");
if (value.HasMember("fragment"))
@@ -63,6 +75,17 @@ bgfx_effect* effect_reader::read_from_value(const Value& value, std::string pref
fragment_name = value["pixel"].GetString();
}
bgfx::ShaderHandle fragment_shader = shaders.shader(fragment_name);
+ if (fragment_shader.idx == 0xffff)
+ {
+ for (bgfx_uniform* uniform : uniforms)
+ {
+ if (uniform != nullptr)
+ {
+ delete uniform;
+ }
+ }
+ return nullptr;
+ }
return new bgfx_effect(blend | depth | cull | write, vertex_shader, fragment_shader, uniforms);
}