Previous 199869 Revisions Next

r45065 Sunday 21st February, 2016 at 02:03:25 UTC by Ryan Holtz
More JSON reader plumbing, nw
[bgfx/chains]test.json
[scripts/src/osd]modules.lua
[src/osd/modules/render/bgfx]chain.cpp* chain.h* chainreader.cpp* chainreader.h* parameter.cpp* parameter.h* paramreader.cpp* paramreader.h* slider.cpp* slider.h sliderreader.cpp* sliderreader.h

trunk/bgfx/chains/test.json
r253576r253577
22   "author": "Ryan Holtz"
33   "sliders": [
44      { "type": "bool",  "name": "adjustments", "text": "Enable Adjustments", "default": false },
5      { "type": "float", "name": "ratio_amount", "text": "Ratio Amount", "default": 0, "max": 1 },
5      { "type": "float", "name": "ratio_amount", "text": "Ratio Amount", "default": 0, "max": 1, "min": 0 },
66
7      { "type": "color", "name": "red_ratios", "text": "Red Amount",   "default": [ 1, 0, 0 ]},
8      { "type": "color", "name": "grn_ratios", "text": "Green Amount", "default": [ 0, 1, 0 ], "max": 1, "min": 0 },
9      { "type": "color", "name": "blu_ratios", "text": "Blue Amount",  "default": [ 0, 0, 1 ], "max": 1, "min": 0 },
10      { "type": "color", "name": "tint": "text": "Tint", "default": [ 1, 1, 1 ], "max": 1, "min": 0 }
11      { "type": "color", "name": "phosphor", "text": "Phosphor Amount",  "default": [ 0, 0, 0 ], "max": 1, "min": 0 },
12      { "type": "vec2",  "name": "shift", "text": "Frame Shift", "default": [ 0, 0 ], "max": 25, "min": -25 },
7      { "type": "color", "name": "red_ratios", "text": "Red Amount",   "default": [ 1, 0, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] },
8      { "type": "color", "name": "grn_ratios", "text": "Green Amount", "default": [ 0, 1, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] },
9      { "type": "color", "name": "blu_ratios", "text": "Blue Amount",  "default": [ 0, 0, 1 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] },
10      { "type": "color", "name": "tint": "text": "Tint", "default": [ 1, 1, 1 ], "max": [ 1, 1, 1 ], "min": [ 0, 0, 0 ] }
11      { "type": "color", "name": "phosphor", "text": "Phosphor Amount",  "default": [ 0, 0, 0 ], "max": [ 1, 1, 1 ], "min": [ 0, 0 ,0 ] },
12      { "type": "vec2",  "name": "shift", "text": "Frame Shift", "default": [ 0, 0 ], "max": [ 25, 25 ], "min": [ -25, -25 ] }
1313   ]
1414   "parameters": [
1515      { "name": "alternating", "type": "frame_mask", "period": 2 }
trunk/scripts/src/osd/modules.lua
r253576r253577
109109      MAME_DIR .. "src/osd/modules/render/bgfx/effect.cpp",
110110      MAME_DIR .. "src/osd/modules/render/bgfx/effectmanager.cpp",
111111      MAME_DIR .. "src/osd/modules/render/bgfx/effectreader.cpp",
112      MAME_DIR .. "src/osd/modules/render/bgfx/chain.cpp",
113      MAME_DIR .. "src/osd/modules/render/bgfx/chainreader.cpp",
112114      MAME_DIR .. "src/osd/modules/render/bgfx/chainentry.cpp",
113115      MAME_DIR .. "src/osd/modules/render/bgfx/chainentryreader.cpp",
114116      MAME_DIR .. "src/osd/modules/render/bgfx/inputpair.cpp",
115117      MAME_DIR .. "src/osd/modules/render/bgfx/shadermanager.cpp",
116118      MAME_DIR .. "src/osd/modules/render/bgfx/statereader.cpp",
119      MAME_DIR .. "src/osd/modules/render/bgfx/slider.cpp",
120      MAME_DIR .. "src/osd/modules/render/bgfx/sliderreader.cpp",
121      MAME_DIR .. "src/osd/modules/render/bgfx/parameter.cpp",
122      MAME_DIR .. "src/osd/modules/render/bgfx/paramreader.cpp",
117123      MAME_DIR .. "src/osd/modules/render/bgfx/target.cpp",
118124      MAME_DIR .. "src/osd/modules/render/bgfx/targetmanager.cpp",
119125      MAME_DIR .. "src/osd/modules/render/bgfx/texture.cpp",
trunk/src/osd/modules/render/bgfx/chain.cpp
r0r253577
1#include "slider.h"
2#include "parameter.h"
3#include "chainentry.h"
4
5#include "chain.h"
6
7bgfx_chain::bgfx_chain(std::string name, std::string author, std::vector<bgfx_slider*> sliders, std::vector<bgfx_parameter*> params, std::vector<bgfx_chain_entry*> entries)
8   : m_name(name)
9   , m_author(author)
10   , m_sliders(sliders)
11   , m_params(params)
12   , m_entries(entries)
13{
14}
15
16bgfx_chain::~bgfx_chain()
17{
18}
19
20void bgfx_chain::submit(render_primitive* prim, int view)
21{
22   //for (bgfx_chain_entry* entry : m_entries)
23   //{
24   //}
25}
trunk/src/osd/modules/render/bgfx/chain.h
r0r253577
1#pragma once
2
3#ifndef __DRAWBGFX_CHAIN__
4#define __DRAWBGFX_CHAIN__
5
6#include <string>
7#include <vector>
8
9class bgfx_slider;
10class bgfx_parameter;
11class bgfx_chain_entry;
12class render_primitive;
13
14class bgfx_chain
15{
16public:
17    bgfx_chain(std::string name, std::string author, std::vector<bgfx_slider*> sliders, std::vector<bgfx_parameter*> params, std::vector<bgfx_chain_entry*> entries);
18    ~bgfx_chain();
19
20    void submit(render_primitive* prim, int view);
21
22private:
23   std::string                  m_name;
24   std::string                  m_author;
25    std::vector<bgfx_slider*>      m_sliders;
26    std::vector<bgfx_parameter*>   m_params;
27    std::vector<bgfx_chain_entry*>   m_entries;
28};
29
30#endif // __DRAWBGFX_CHAIN__
No newline at end of file
trunk/src/osd/modules/render/bgfx/chainreader.cpp
r0r253577
1#include <string>
2#include <vector>
3
4#include "emu.h"
5
6#include "chain.h"
7#include "chainreader.h"
8#include "sliderreader.h"
9#include "paramreader.h"
10#include "chainentryreader.h"
11
12bgfx_chain* chain_reader::read_from_value(const Value& value, texture_manager& textures, target_manager& targets, effect_manager& effects)
13{
14    validate_parameters(value);
15
16   std::string name = value["name"].GetString();
17   std::string author = value["author"].GetString();
18
19   std::vector<bgfx_slider*> sliders;
20   if (value.HasMember("sliders"))
21   {
22      const Value& slider_array = value["sliders"];
23      for (UINT32 i = 0; i < slider_array.Size(); i++)
24      {
25         sliders.push_back(slider_reader::read_from_value(slider_array[i]));
26      }
27   }
28
29   std::vector<bgfx_parameter*> parameters;
30   if (value.HasMember("parameters"))
31   {
32      const Value& param_array = value["parameters"];
33      for (UINT32 i = 0; i < param_array.Size(); i++)
34      {
35         parameters.push_back(parameter_reader::read_from_value(param_array[i]));
36      }
37   }
38
39   std::vector<bgfx_chain_entry*> entries;
40   if (value.HasMember("passes"))
41   {
42      const Value& entry_array = value["passes"];
43      for (UINT32 i = 0; i < entry_array.Size(); i++)
44      {
45         entries.push_back(chain_entry_reader::read_from_value(entry_array[i], textures, targets, effects));
46      }
47   }
48
49   return new bgfx_chain(name, author, sliders, parameters, entries);
50}
51
52void chain_reader::validate_parameters(const Value& value)
53{
54   assert(value.HasMember("name"));
55   assert(value["name"].IsString());
56   assert(value.HasMember("author"));
57   assert(value["author"].IsString());
58   assert(value.HasMember("passes"));
59}
No newline at end of file
trunk/src/osd/modules/render/bgfx/chainreader.h
r0r253577
1#pragma once
2
3#ifndef __DRAWBGFX_CHAIN_READER__
4#define __DRAWBGFX_CHAIN_READER__
5
6#include "statereader.h"
7
8class bgfx_chain;
9class texture_manager;
10class target_manager;
11class effect_manager;
12
13class chain_reader : public state_reader
14{
15public:
16    static bgfx_chain* read_from_value(const Value& value, texture_manager& textures, target_manager& targets, effect_manager& effects);
17
18private:
19    static void validate_parameters(const Value& value);
20};
21
22#endif // __DRAWBGFX_CHAIN_READER__
No newline at end of file
trunk/src/osd/modules/render/bgfx/parameter.cpp
r0r253577
1#include "emu.h"
2
3#include "parameter.h"
4
5bgfx_parameter::bgfx_parameter(std::string name, parameter_type type, int period)
6   : m_name(name)
7   , m_type(type)
8   , m_period(period)
9   , m_frame(0)
10{
11}
12
13bgfx_parameter::~bgfx_parameter()
14{
15}
16
17void bgfx_parameter::frame()
18{
19   m_frame++;
20   if (m_frame == m_period)
21   {
22      m_frame = 0;
23   }
24}
25
26bool bgfx_parameter::active()
27{
28   return (m_frame % m_period == 0);
29}
trunk/src/osd/modules/render/bgfx/parameter.h
r0r253577
1#pragma once
2
3#ifndef __DRAWBGFX_PARAMETER__
4#define __DRAWBGFX_PARAMETER__
5
6#include <string>
7
8#include "emu.h"
9
10class bgfx_parameter
11{
12public:
13   enum parameter_type
14   {
15      PARAM_FRAME_MASK
16   };
17
18    bgfx_parameter(std::string name, parameter_type type, int period);
19    ~bgfx_parameter();
20
21   void frame();
22   bool active();
23
24private:
25   std::string m_name;
26   parameter_type m_type;
27   UINT32 m_period;
28   UINT32 m_frame;
29};
30
31#endif // __DRAWBGFX_PARAMETER__
No newline at end of file
trunk/src/osd/modules/render/bgfx/paramreader.cpp
r0r253577
1#include <string>
2
3#include "paramreader.h"
4
5#include "parameter.h"
6
7const parameter_reader::string_to_enum parameter_reader::TYPE_NAMES[parameter_reader::TYPE_COUNT] = {
8    { "frame_mask", uint64_t(bgfx_parameter::parameter_type::PARAM_FRAME_MASK) }
9};
10
11bgfx_parameter* parameter_reader::read_from_value(const Value& value)
12{
13    validate_parameters(value);
14
15   std::string name = value["name"].GetString();
16   bgfx_parameter::parameter_type type = bgfx_parameter::parameter_type(get_enum_from_value(value, "type", uint64_t(bgfx_parameter::parameter_type::PARAM_FRAME_MASK), TYPE_NAMES, TYPE_COUNT));
17   int period = int(value["period"].GetDouble());
18
19   return new bgfx_parameter(name, type, period);
20}
21
22void parameter_reader::validate_parameters(const Value& value)
23{
24   assert(value.HasMember("name"));
25   assert(value["name"].IsString());
26   assert(value.HasMember("type"));
27   assert(value["type"].IsString());
28   assert(value.HasMember("period"));
29   assert(value["period"].IsDouble());
30}
No newline at end of file
trunk/src/osd/modules/render/bgfx/paramreader.h
r0r253577
1#pragma once
2
3#ifndef __DRAWBGFX_PARAM_READER__
4#define __DRAWBGFX_PARAM_READER__
5
6#include "statereader.h"
7
8class bgfx_parameter;
9
10class parameter_reader : public state_reader
11{
12public:
13    static bgfx_parameter* read_from_value(const Value& value);
14
15private:
16    static void validate_parameters(const Value& value);
17
18    static const int TYPE_COUNT = 1;
19    static const string_to_enum TYPE_NAMES[TYPE_COUNT];
20};
21
22#endif // __DRAWBGFX_PARAM_READER__
No newline at end of file
trunk/src/osd/modules/render/bgfx/slider.cpp
r0r253577
1#include "emu.h"
2
3#include "slider.h"
4
5bgfx_slider::bgfx_slider(slider_type type, std::string name, std::string description, void *defaults, void *min, void *max)
6   : m_type(type)
7   , m_name(name)
8   , m_description(description)
9{
10   m_data = global_alloc_array_clear<char>(storage_size(type));
11   m_min = global_alloc_array_clear<char>(storage_size(type));
12   m_max = global_alloc_array_clear<char>(storage_size(type));
13   memcpy(m_data, defaults, size(type));
14   memcpy(m_min, min, size(type));
15   memcpy(m_max, max, size(type));
16}
17
18bgfx_slider::~bgfx_slider()
19{
20   global_free(m_data);
21   global_free(m_min);
22   global_free(m_max);
23}
24
25size_t bgfx_slider::storage_size(slider_type type)
26{
27   switch(type)
28   {
29      case SLIDER_INT:
30         return 1 * sizeof(int);
31      case SLIDER_BOOL:
32      case SLIDER_FLOAT:
33      case SLIDER_COLOR:
34      case SLIDER_VEC2:
35         return 4 * sizeof(float);
36      default:
37         return 0;
38   }
39}
40
41size_t bgfx_slider::size(slider_type type)
42{
43   switch(type)
44   {
45      case SLIDER_INT:
46         return sizeof(int);
47      case SLIDER_BOOL:
48      case SLIDER_FLOAT:
49         return sizeof(float);
50      case SLIDER_COLOR:
51         return sizeof(float) * 3;
52      case SLIDER_VEC2:
53         return sizeof(float) * 2;
54      default:
55         return 0;
56   }
57}
trunk/src/osd/modules/render/bgfx/slider.h
r253576r253577
1414class bgfx_slider
1515{
1616public:
17    bgfx_slider(slider_type type, std::string name, std::string description, void *defaults, void *min, void *max);
18    ~bgfx_slider();
19
2017   enum slider_type
2118   {
2219      SLIDER_BOOL,
r253576r253577
2623      SLIDER_VEC2
2724   };
2825
29    // Getters
30    bgfx_uniform* uniform(std::string name);
31    bgfx::ProgramHandle get_program() const { return m_program_handle; }
26    bgfx_slider(slider_type type, std::string name, std::string description, void *defaults, void *min, void *max);
27    ~bgfx_slider();
3228
29   static size_t size(slider_type type);
30   static size_t storage_size(slider_type type);
3331protected:
32
33   slider_type m_type;
3434   std::string m_name;
35   void *   m_data;
36   void *   m_min;
37   void *   m_max;
35   std::string m_description;
36   char*   m_data;
37   char*   m_min;
38   char*   m_max;
3839};
3940
4041#endif // __DRAWBGFX_SLIDER__
No newline at end of file
trunk/src/osd/modules/render/bgfx/sliderreader.cpp
r0r253577
1#include "emu.h"
2
3#include "sliderreader.h"
4
5#include "slider.h"
6
7const slider_reader::string_to_enum slider_reader::TYPE_NAMES[slider_reader::TYPE_COUNT] = {
8    { "bool",   uint64_t(bgfx_slider::slider_type::SLIDER_BOOL) },
9    { "float",  uint64_t(bgfx_slider::slider_type::SLIDER_FLOAT) },
10    { "int",    uint64_t(bgfx_slider::slider_type::SLIDER_INT) },
11    { "color",  uint64_t(bgfx_slider::slider_type::SLIDER_COLOR) },
12    { "vec2",   uint64_t(bgfx_slider::slider_type::SLIDER_VEC2) }
13};
14
15bgfx_slider* slider_reader::read_from_value(const Value& value)
16{
17    validate_parameters(value);
18
19   bgfx_slider::slider_type type = bgfx_slider::slider_type(get_enum_from_value(value, "type", uint64_t(bgfx_slider::slider_type::SLIDER_FLOAT), TYPE_NAMES, TYPE_COUNT));
20   std::string name = value["name"].GetString();
21   std::string description = value["text"].GetString();
22
23   float defaults[4];
24   float min[4];
25   float max[4];
26   get_values(value, "default", defaults);
27   get_values(value, "min", min);
28   get_values(value, "max", max);
29
30   return new bgfx_slider(type, name, description, defaults, min, max);
31}
32
33void slider_reader::get_values(const Value& value, std::string name, float* values)
34{
35   const char* name_str = name.c_str();
36   if (value.HasMember(name_str))
37   {
38      if (value[name_str].IsBool())
39      {
40         values[0] = value[name_str].GetBool() ? 1.0f : 0.0f;
41      }
42      else if (value[name_str].IsDouble())
43      {
44         values[0] = float(value[name_str].GetDouble());
45      }
46      else
47      {
48         const Value& value_array = value[name_str];
49         for (UINT32 i = 0; i < value_array.Size() && i < 4; i++)
50         {
51            values[i] = float(value_array[i].GetDouble());
52         }
53      }
54   }
55}
56
57void slider_reader::validate_parameters(const Value& value)
58{
59   assert(value.HasMember("type"));
60   assert(value["type"].IsString());
61   assert(value.HasMember("name"));
62   assert(value["name"].IsString());
63   assert(value.HasMember("text"));
64   assert(value["text"].IsString());
65   assert(value.HasMember("default"));
66}
No newline at end of file
trunk/src/osd/modules/render/bgfx/sliderreader.h
r253576r253577
66#include "statereader.h"
77
88class bgfx_slider;
9class shader_manager;
109
1110class slider_reader : public state_reader
1211{
r253576r253577
1413    static bgfx_slider* read_from_value(const Value& value);
1514
1615private:
16   static void get_values(const Value& value, std::string name, float* values);
1717    static void validate_parameters(const Value& value);
18
19    static const int TYPE_COUNT = 5;
20    static const string_to_enum TYPE_NAMES[TYPE_COUNT];
1821};
1922
2023#endif // __DRAWBGFX_SLIDER_READER__
No newline at end of file


Previous 199869 Revisions Next


© 1997-2024 The MAME Team