summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/effectmanager.cpp
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-03-23 15:11:12 +0100
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-03-23 15:11:12 +0100
commit9f48ad4fbb303d9ac7ca50a8b6f9e68739227f49 (patch)
tree11a933b642d6b815089cdbce5569734d0a970c40 /src/osd/modules/render/bgfx/effectmanager.cpp
parent5fa870ccee2dfd5c803d3fc2533a379f2ea19b18 (diff)
Add screen-specific shader chain support, nw
Diffstat (limited to 'src/osd/modules/render/bgfx/effectmanager.cpp')
-rw-r--r--src/osd/modules/render/bgfx/effectmanager.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/osd/modules/render/bgfx/effectmanager.cpp b/src/osd/modules/render/bgfx/effectmanager.cpp
index 7522a88dc8c..a34b5c52d82 100644
--- a/src/osd/modules/render/bgfx/effectmanager.cpp
+++ b/src/osd/modules/render/bgfx/effectmanager.cpp
@@ -12,6 +12,7 @@
#include "emu.h"
#include <rapidjson/document.h>
+#include <rapidjson/error/en.h>
#include <bgfx/bgfxplatform.h>
#include <bgfx/bgfx.h>
@@ -52,7 +53,11 @@ bgfx_effect* effect_manager::load_effect(std::string name)
std::string path = std::string(m_options.bgfx_path()) + "/effects/" + name;
bx::CrtFileReader reader;
- bx::open(&reader, path.c_str());
+ if (!bx::open(&reader, path.c_str()))
+ {
+ printf("Unable to open effect file %s\n", path.c_str());
+ return nullptr;
+ }
int32_t size (bx::getSize(&reader));
@@ -63,9 +68,22 @@ bgfx_effect* effect_manager::load_effect(std::string name)
Document document;
document.Parse<0>(data);
- bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", m_shaders);
- m_effects[name] = effect;
+ if (document.HasParseError()) {
+ std::string error(GetParseError_En(document.GetParseError()));
+ printf("Unable to parse effect %s. Errors returned:\n", path.c_str());
+ printf("%s\n", error.c_str());
+ return nullptr;
+ }
+
+ bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", m_shaders);
+
+ if (effect == nullptr) {
+ printf("Unable to load effect %s\n", path.c_str());
+ return nullptr;
+ }
+
+ m_effects[name] = effect;
return effect;
}