diff options
author | 2016-02-18 15:57:34 +0100 | |
---|---|---|
committer | 2016-02-21 03:03:23 +0100 | |
commit | 9a47a870df619656e9092f2f77622e84e640307a (patch) | |
tree | b8640bf79ffb55d0c9ed6fc27bbd4ce16a5e1a2e /src/osd/modules/render/bgfx/passreader.cpp | |
parent | dadf8e7d79696996ab3ef840fe99a588ede538fa (diff) |
First take on render API reorg, nw
Diffstat (limited to 'src/osd/modules/render/bgfx/passreader.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/passreader.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/passreader.cpp b/src/osd/modules/render/bgfx/passreader.cpp new file mode 100644 index 00000000000..723a3f1f3f3 --- /dev/null +++ b/src/osd/modules/render/bgfx/passreader.cpp @@ -0,0 +1,49 @@ +#include <string> + +#include "emu.h" + +#include "passreader.h" + +#include "texturemanager.h" +#include "targetmanager.h" +#include "effectmanager.h" +#include "pass.h" + +bgfx_pass* pass_reader::read_from_value(const Value& value, texture_manager& textures, target_manager& targets, effect_manager& effects) +{ + validate_parameters(value); + + bgfx_effect* effect = effects.effect(value["effect"].GetString()); + + std::vector<bgfx_texture*> inputs; + if (value.HasMember("input")) + { + const Value& input_array = value["input"]; + for (UINT32 i = 0; i < input_array.Size(); i++) + { + inputs.push_back(textures.texture(input_array[i].GetString())); + } + } + + bgfx_target* output = targets.target(value["output"].GetString()); + + return new bgfx_pass(value["name"].GetString(), effect, inputs, output); +} + +void pass_reader::validate_parameters(const Value& value) +{ + assert(value.HasMember("name")); + assert(value["name"].IsString()); + assert(value.HasMember("output")); + assert(value["output"].IsString()); + assert(value.HasMember("effect")); + assert(value["effect"].IsString()); + if (value.HasMember("input")) + { + const Value& input_array = value["input"]; + for (int i = 0; i < input_array.Size(); i++) + { + assert(uniform_array[i].IsString()); + } + } +}
\ No newline at end of file |