summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/depthreader.cpp
blob: 1f2c3abbc9f99b7616d4b28a327eef4dd7f172e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#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;
}