diff options
Diffstat (limited to 'src/osd/modules/render/bgfx/depthreader.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/depthreader.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/depthreader.cpp b/src/osd/modules/render/bgfx/depthreader.cpp new file mode 100644 index 00000000000..077137159fe --- /dev/null +++ b/src/osd/modules/render/bgfx/depthreader.cpp @@ -0,0 +1,36 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +//============================================================ +// +// depthreader.cpp - BGFX depth state JSON reader +// +//============================================================ + +#include <bgfx/bgfx.h> + +#include "depthreader.h" + +const depth_reader::string_to_enum depth_reader::FUNCTION_NAMES[depth_reader::FUNCTION_COUNT] = { + { "never", BGFX_STATE_DEPTH_TEST_NEVER }, + { "less", BGFX_STATE_DEPTH_TEST_LESS }, + { "equal", BGFX_STATE_DEPTH_TEST_EQUAL }, + { "lequal", BGFX_STATE_DEPTH_TEST_LEQUAL }, + { "greater", BGFX_STATE_DEPTH_TEST_GREATER }, + { "notequal", BGFX_STATE_DEPTH_TEST_NOTEQUAL }, + { "gequal", BGFX_STATE_DEPTH_TEST_GEQUAL }, + { "always", BGFX_STATE_DEPTH_TEST_ALWAYS } +}; + +uint64_t depth_reader::read_from_value(const Value& value) +{ + uint64_t write_enable = 0; + if (value.HasMember("writeEnable")) + { + assert(value["writeEnable"].IsBool()); + write_enable = value["writeEnable"].GetBool() ? BGFX_STATE_DEPTH_WRITE: 0; + } + + uint64_t function = get_enum_from_value(value, "function", BGFX_STATE_DEPTH_TEST_ALWAYS, FUNCTION_NAMES, FUNCTION_COUNT); + + return write_enable | function; +} |