/* * Copyright 2011-2015 Branimir Karadzic. All rights reserved. * License: http://www.opensource.org/licenses/BSD-2-Clause */ #ifndef BGFX_DEFINES_H_HEADER_GUARD #define BGFX_DEFINES_H_HEADER_GUARD /// #define BGFX_STATE_RGB_WRITE UINT64_C(0x0000000000000001) //!< Enable RGB write. #define BGFX_STATE_ALPHA_WRITE UINT64_C(0x0000000000000002) //!< Enable alpha write. #define BGFX_STATE_DEPTH_WRITE UINT64_C(0x0000000000000004) //!< Enable depth write. #define BGFX_STATE_DEPTH_TEST_LESS UINT64_C(0x0000000000000010) //!< Enable depth test, less. #define BGFX_STATE_DEPTH_TEST_LEQUAL UINT64_C(0x0000000000000020) //!< Enable depth test, less equal. #define BGFX_STATE_DEPTH_TEST_EQUAL UINT64_C(0x0000000000000030) //!< #define BGFX_STATE_DEPTH_TEST_GEQUAL UINT64_C(0x0000000000000040) //!< #define BGFX_STATE_DEPTH_TEST_GREATER UINT64_C(0x0000000000000050) //!< #define BGFX_STATE_DEPTH_TEST_NOTEQUAL UINT64_C(0x0000000000000060) //!< #define BGFX_STATE_DEPTH_TEST_NEVER UINT64_C(0x0000000000000070) //!< #define BGFX_STATE_DEPTH_TEST_ALWAYS UINT64_C(0x0000000000000080) //!< #define BGFX_STATE_DEPTH_TEST_SHIFT 4 #define BGFX_STATE_DEPTH_TEST_MASK UINT64_C(0x00000000000000f0) //!< Depth test state bit mask. #define BGFX_STATE_BLEND_ZERO UINT64_C(0x0000000000001000) //!< #define BGFX_STATE_BLEND_ONE UINT64_C(0x0000000000002000) //!< #define BGFX_STATE_BLEND_SRC_COLOR UINT64_C(0x0000000000003000) //!< #define BGFX_STATE_BLEND_INV_SRC_COLOR UINT64_C(0x0000000000004000) //!< #define BGFX_STATE_BLEND_SRC_ALPHA UINT64_C(0x0000000000005000) //!< #define BGFX_STATE_BLEND_INV_SRC_ALPHA UINT64_C(0x0000000000006000) //!< #define BGFX_STATE_BLEND_DST_ALPHA UINT64_C(0x0000000000007000) //!< #define BGFX_STATE_BLEND_INV_DST_ALPHA UINT64_C(0x0000000000008000) //!< #define BGFX_STATE_BLEND_DST_COLOR UINT64_C(0x0000000000009000) //!< #define BGFX_STATE_BLEND_INV_DST_COLOR UINT64_C(0x000000000000a000) //!< #define BGFX_STATE_BLEND_SRC_ALPHA_SAT UINT64_C(0x000000000000b000) //!< #define BGFX_STATE_BLEND_FACTOR UINT64_C(0x000000000000c000) //!< #define BGFX_STATE_BLEND_INV_FACTOR UINT64_C(0x000000000000d000) //!< #define BGFX_STATE_BLEND_SHIFT 12 //!< Blend state bit shift. #define BGFX_STATE_BLEND_MASK UINT64_C(0x000000000ffff000) //!< Blend state bit mask. #define BGFX_STATE_BLEND_EQUATION_ADD UINT64_C(0x0000000000000000) //!< #define BGFX_STATE_BLEND_EQUATION_SUB UINT64_C(0x0000000010000000) //!< #define BGFX_STATE_BLEND_EQUATION_REVSUB UINT64_C(0x0000000020000000) //!< #define BGFX_STATE_BLEND_EQUATION_MIN UINT64_C(0x0000000030000000) //!< #define BGFX_STATE_BLEND_EQUATION_MAX UINT64_C(0x0000000040000000) //!< #define BGFX_STATE_BLEND_EQUATION_SHIFT 28 //!< Blend equation bit shift. #define BGFX_STATE_BLEND_EQUATION_MASK UINT64_C(0x00000003f0000000) //!< Blend equation bit mask. #define BGFX_STATE_BLEND_INDEPENDENT UINT64_C(0x0000000400000000) //!< Enable blend independent. #define BGFX_STATE_CULL_CW UINT64_C(0x0000001000000000) //!< Cull clockwise triangles. #define BGFX_STATE_CULL_CCW UINT64_C(0x0000002000000000) //!< Cull counter-clockwise triangles. #define BGFX_STATE_CULL_SHIFT 36 //!< Culling mode bit shift. #define BGFX_STATE_CULL_MASK UINT64_C(0x0000003000000000) //!< Culling mode bit mask. #define BGFX_STATE_ALPHA_REF_SHIFT 40 //!< #define BGFX_STATE_ALPHA_REF_MASK UINT64_C(0x0000ff0000000000) //!< #define BGFX_STATE_PT_TRISTRIP UINT64_C(0x0001000000000000) //!< Tristrip. #define BGFX_STATE_PT_LINES UINT64_C(0x0002000000000000) //!< Lines. #define BGFX_STATE_PT_LINESTRIP UINT64_C(0x0003000000000000) //!< Line strip. #define BGFX_STATE_PT_POINTS UINT64_C(0x0004000000000000) //!< Points. #define BGFX_STATE_PT_SHIFT 48 //!< Primitive type bit shift. #define BGFX_STATE_PT_MASK UINT64_C(0x0007000000000000) //!< Primitive type bit mask. #define BGFX_STATE_POINT_SIZE_SHIFT 52 //!< #define BGFX_STATE_POINT_SIZE_MASK UINT64_C(0x0ff0000000000000) //!< /// Enable MSAA write when writing into MSAA frame buffer. This flag is ignored when not writing into /// MSAA frame buffer. #define BGFX_STATE_MSAA UINT64_C(0x1000000000000000) //!< #define BGFX_STATE_RESERVED_MASK UINT64_C(0xe000000000000000) //!< #define BGFX_STATE_NONE UINT64_C(0x0000000000000000) //!< #define BGFX_STATE_MASK UINT64_C(0xffffffffffffffff) //!< /// Default state is write to RGB, alpha, and depth with depth test less enabled, with clockwise /// culling and MSAA (when writing into MSAA frame buffer, otherwise this flag is ignored). #define BGFX_STATE_DEFAULT (0 \ | BGFX_STATE_RGB_WRITE \ | BGFX_STATE_ALPHA_WRITE \ | BGFX_STATE_DEPTH_TEST_LESS \ | BGFX_STATE_DEPTH_WRITE \ | BGFX_STATE_CULL_CW \ | BGFX_STATE_MSAA \ ) #define BGFX_STATE_ALPHA_REF(_ref) ( ( (uint64_t)(_ref )<>BGFX_STATE_BLEND_SHIFT) \ | ( uint32_t( (_dst)>>BGFX_STATE_BLEND_SHIFT)<<4) ) \ ) #define BGFX_STATE_BLEND_FUNC_RT_xE(_src, _dst, _equation) (0 \ | BGFX_STATE_BLEND_FUNC_RT_x(_src, _dst) \ | ( uint32_t( (_equation)>>BGFX_STATE_BLEND_EQUATION_SHIFT)<<8) \ ) #define BGFX_STATE_BLEND_FUNC_RT_1(_src, _dst) (BGFX_STATE_BLEND_FUNC_RT_x(_src, _dst)<< 0) #define BGFX_STATE_BLEND_FUNC_RT_2(_src, _dst) (BGFX_STATE_BLEND_FUNC_RT_x(_src, _dst)<<11) #define BGFX_STATE_BLEND_FUNC_RT_3(_src, _dst) (BGFX_STATE_BLEND_FUNC_RT_x(_src, _dst)<<22) #define BGFX_STATE_BLEND_FUNC_RT_1E(_src, _dst, _equation) (BGFX_STATE_BLEND_FUNC_RT_xE(_src, _dst, _equation)<< 0) #define BGFX_STATE_BLEND_FUNC_RT_2E(_src, _dst, _equation) (BGFX_STATE_BLEND_FUNC_RT_xE(_src, _dst, _equation)<<11) #define BGFX_STATE_BLEND_FUNC_RT_3E(_src, _dst, _equation) (BGFX_STATE_BLEND_FUNC_RT_xE(_src, _dst, _equation)<<22) /// #define BGFX_STENCIL_FUNC_REF_SHIFT 0 //!< #define BGFX_STENCIL_FUNC_REF_MASK UINT32_C(0x000000ff) //!< #define BGFX_STENCIL_FUNC_RMASK_SHIFT 8 //!< #define BGFX_STENCIL_FUNC_RMASK_MASK UINT32_C(0x0000ff00) //!< #define BGFX_STENCIL_TEST_LESS UINT32_C(0x00010000) //!< Enable stencil test, less. #define BGFX_STENCIL_TEST_LEQUAL UINT32_C(0x00020000) //!< #define BGFX_STENCIL_TEST_EQUAL UINT32_C(0x00030000) //!< #define BGFX_STENCIL_TEST_GEQUAL UINT32_C(0x00040000) //!< #define BGFX_STENCIL_TEST_GREATER UINT32_C(0x00050000) //!< #define BGFX_STENCIL_TEST_NOTEQUAL UINT32_C(0x00060000) //!< #define BGFX_STENCIL_TEST_NEVER UINT32_C(0x00070000) //!< #define BGFX_STENCIL_TEST_ALWAYS UINT32_C(0x00080000) //!< #define BGFX_STENCIL_TEST_SHIFT 16 //!< #define BGFX_STENCIL_TEST_MASK UINT32_C(0x000f0000) //!< #define BGFX_STENCIL_OP_FAIL_S_ZERO UINT32_C(0x00000000) //!< #define BGFX_STENCIL_OP_FAIL_S_KEEP UINT32_C(0x00100000) //!< #define BGFX_STENCIL_OP_FAIL_S_REPLACE UINT32_C(0x00200000) //!< #define BGFX_STENCIL_OP_FAIL_S_INCR UINT32_C(0x00300000) //!< #define BGFX_STENCIL_OP_FAIL_S_INCRSAT UINT32_C(0x00400000) //!< #define BGFX_STENCIL_OP_FAIL_S_DECR UINT32_C(0x00500000) //!< #define BGFX_STENCIL_OP_FAIL_S_DECRSAT UINT32_C(0x00600000) //!< #define BGFX_STENCIL_OP_FAIL_S_INVERT UINT32_C(0x00700000) //!< #define BGFX_STENCIL_OP_FAIL_S_SHIFT 20 //!< #define BGFX_STENCIL_OP_FAIL_S_MASK UINT32_C(0x00f00000) //!< #define BGFX_STENCIL_OP_FAIL_Z_ZERO UINT32_C(0x00000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_KEEP UINT32_C(0x01000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_REPLACE UINT32_C(0x02000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_INCR UINT32_C(0x03000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_INCRSAT UINT32_C(0x04000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_DECR UINT32_C(0x05000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_DECRSAT UINT32_C(0x06000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_INVERT UINT32_C(0x07000000) //!< #define BGFX_STENCIL_OP_FAIL_Z_SHIFT 24 //!< #define BGFX_STENCIL_OP_FAIL_Z_MASK UINT32_C(0x0f000000) //!< #define BGFX_STENCIL_OP_PASS_Z_ZERO UINT32_C(0x00000000) //!< #define BGFX_STENCIL_OP_PASS_Z_KEEP UINT32_C(0x10000000) //!< #define BGFX_STENCIL_OP_PASS_Z_REPLACE UINT32_C(0x20000000) //!< #define BGFX_STENCIL_OP_PASS_Z_INCR UINT32_C(0x30000000) //!< #define BGFX_STENCIL_OP_PASS_Z_INCRSAT UINT32_C(0x40000000) //!< #define BGFX_STENCIL_OP_PASS_Z_DECR UINT32_C(0x50000000) //!< #define BGFX_STENCIL_OP_PASS_Z_DECRSAT UINT32_C(0x60000000) //!< #define BGFX_STENCIL_OP_PASS_Z_INVERT UINT32_C(0x70000000) //!< #define BGFX_STENCIL_OP_PASS_Z_SHIFT 28 //!< #define BGFX_STENCIL_OP_PASS_Z_MASK UINT32_C(0xf0000000) //!< #define BGFX_STENCIL_NONE UINT32_C(0x00000000) //!< #define BGFX_STENCIL_MASK UINT32_C(0xffffffff) //!< #define BGFX_STENCIL_DEFAULT UINT32_C(0x00000000) //!< /// Set stencil ref value. #define BGFX_STENCIL_FUNC_REF(_ref) ( (uint32_t(_ref)<