diff options
Diffstat (limited to 'src/osd/modules/render/bgfx/chainentryreader.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/chainentryreader.cpp | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/osd/modules/render/bgfx/chainentryreader.cpp b/src/osd/modules/render/bgfx/chainentryreader.cpp index ef9322782ee..4bb3b1737f2 100644 --- a/src/osd/modules/render/bgfx/chainentryreader.cpp +++ b/src/osd/modules/render/bgfx/chainentryreader.cpp @@ -16,9 +16,12 @@ #include "targetmanager.h" #include "effectmanager.h" #include "chainentry.h" +#include "entryuniform.h" +#include "slider.h" #include "inputpair.h" +#include "entryuniformreader.h" -bgfx_chain_entry* chain_entry_reader::read_from_value(const Value& value, texture_manager& textures, target_manager& targets, effect_manager& effects) +bgfx_chain_entry* chain_entry_reader::read_from_value(const Value& value, texture_manager& textures, target_manager& targets, effect_manager& effects, std::map<std::string, bgfx_slider*>& sliders) { validate_parameters(value); @@ -32,13 +35,29 @@ bgfx_chain_entry* chain_entry_reader::read_from_value(const Value& value, textur { std::string sampler = input_array[i]["sampler"].GetString(); std::string texture = input_array[i]["texture"].GetString(); - inputs.push_back(bgfx_input_pair(i, sampler, textures.texture(texture))); + inputs.push_back(bgfx_input_pair(i, sampler, texture)); } } - bgfx_target* output = targets.target(value["output"].GetString()); + std::vector<bgfx_entry_uniform*> uniforms; + if (value.HasMember("uniforms")) + { + const Value& uniform_array = value["uniforms"]; + for (UINT32 i = 0; i < uniform_array.Size(); i++) + { + uniforms.push_back(entry_uniform_reader::read_from_value(uniform_array[i], effect, sliders)); + } + } - return new bgfx_chain_entry(value["name"].GetString(), effect, inputs, output); + std::string output_name = value["output"].GetString(); + if (output_name != std::string("backbuffer")) + { + return new bgfx_chain_entry(value["name"].GetString(), effect, inputs, uniforms, targets.target(output_name)); + } + else + { + return new bgfx_chain_entry(value["name"].GetString(), effect, inputs, uniforms, nullptr); + } } void chain_entry_reader::validate_parameters(const Value& value) @@ -49,8 +68,8 @@ void chain_entry_reader::validate_parameters(const Value& value) { assert(value["name"].IsString()); } - assert(value.HasMember("shader")); - assert(value["shader"].IsString()); + assert(value.HasMember("effect")); + assert(value["effect"].IsString()); assert(value.HasMember("output")); assert(value["output"].IsString()); } |