diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs
index e0bca6f80..1b752f99d 100644
--- a/bindings/cs/bgfx.cs
+++ b/bindings/cs/bgfx.cs
@@ -248,6 +248,11 @@ public static partial class bgfx
///
None = 0x0000000000000000,
+ ///
+ /// Front counter-clockwise (default is clockwise).
+ ///
+ FrontCcw = 0x0000008000000000,
+
///
/// Enable blend independent.
///
diff --git a/bindings/d/types.d b/bindings/d/types.d
index 5fa57fcfe..fe718a50a 100644
--- a/bindings/d/types.d
+++ b/bindings/d/types.d
@@ -10,7 +10,7 @@ public import core.stdc.stdarg : va_list;
extern(C) @nogc nothrow:
-enum uint BGFX_API_VERSION = 100;
+enum uint BGFX_API_VERSION = 101;
alias bgfx_view_id_t = ushort;
@@ -100,6 +100,7 @@ enum ulong BGFX_STATE_MSAA = 0x0100000000000000; /// Enable MSAA rasterization.
enum ulong BGFX_STATE_LINEAA = 0x0200000000000000; /// Enable line AA rasterization.
enum ulong BGFX_STATE_CONSERVATIVE_RASTER = 0x0400000000000000; /// Enable conservative rasterization.
enum ulong BGFX_STATE_NONE = 0x0000000000000000; /// No state.
+enum ulong BGFX_STATE_FRONT_CCW = 0x0000008000000000; /// Front counter-clockwise (default is clockwise).
enum ulong BGFX_STATE_BLEND_INDEPENDENT = 0x0000000400000000; /// Enable blend independent.
enum ulong BGFX_STATE_BLEND_ALPHA_TO_COVERAGE = 0x0000000800000000; /// Enable alpha to coverage.
/**
diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h
index cf582e978..8303d8bfc 100644
--- a/include/bgfx/defines.h
+++ b/include/bgfx/defines.h
@@ -6,7 +6,7 @@
#ifndef BGFX_DEFINES_H_HEADER_GUARD
#define BGFX_DEFINES_H_HEADER_GUARD
-#define BGFX_API_VERSION UINT32_C(100)
+#define BGFX_API_VERSION UINT32_C(101)
/**
* Color RGB/alpha/depth write. When it's not specified write will be disabled.
@@ -90,9 +90,6 @@
#define BGFX_STATE_CULL_SHIFT 36 //!< Culling mode bit shift
#define BGFX_STATE_CULL_MASK UINT64_C(0x0000003000000000) //!< Culling mode bit mask
-/// Front winding direction. Will default to clockwise unless otherwise specified.
-#define BGFX_STATE_FRONT_CCW UINT64_C(0x0000008000000000) //!< Front counter-clockwise (default is clockwise).
-
/**
* Alpha reference value.
*
@@ -125,6 +122,7 @@
#define BGFX_STATE_LINEAA UINT64_C(0x0200000000000000) //!< Enable line AA rasterization.
#define BGFX_STATE_CONSERVATIVE_RASTER UINT64_C(0x0400000000000000) //!< Enable conservative rasterization.
#define BGFX_STATE_NONE UINT64_C(0x0000000000000000) //!< No state.
+#define BGFX_STATE_FRONT_CCW UINT64_C(0x0000008000000000) //!< Front counter-clockwise (default is clockwise).
#define BGFX_STATE_BLEND_INDEPENDENT UINT64_C(0x0000000400000000) //!< Enable blend independent.
#define BGFX_STATE_BLEND_ALPHA_TO_COVERAGE UINT64_C(0x0000000800000000) //!< Enable alpha to coverage.
/// Default state is write to RGB, alpha, and depth with depth test less enabled, with clockwise
diff --git a/scripts/bgfx.idl b/scripts/bgfx.idl
index e77767496..c83b7336d 100644
--- a/scripts/bgfx.idl
+++ b/scripts/bgfx.idl
@@ -1,7 +1,7 @@
-- vim: syntax=lua
-- bgfx interface
-version(100)
+version(101)
typedef "bool"
typedef "char"
@@ -79,22 +79,18 @@ flag.StateBlendEquation { bits = 64, shift = 28, range = 6, base = 0, desc = "Bl
--- Cull state. When `BGFX_STATE_CULL_*` is not specified culling will be disabled.
flag.StateCull { bits = 64, shift = 36, range = 2, base = 1, desc = "Culling mode" }
- .Cw --- Cull clockwise triangles.
- .Ccw --- Cull counter-clockwise triangles.
- ()
-
---- Font facing. When BGFX_STATE_FRONT_CCW is not specified, front facing is CW
-flag.StateFrontCCW { bits = 64, shift = 39, range = 1, base = 1, desc = "Front facing" }
+ .Cw --- Cull clockwise triangles.
+ .Ccw --- Cull counter-clockwise triangles.
()
--- Alpha reference value.
flag.StateAlphaRef { bits = 64, shift = 40, range = 8, desc = "Alpha reference", "helper" }
flag.StatePt { bits = 64, shift = 48, range = 3, base = 1, desc = "Primitive type" }
- .Tristrip --- Tristrip.
- .Lines --- Lines.
- .Linestrip --- Line strip.
- .Points --- Points.
+ .Tristrip --- Tristrip.
+ .Lines --- Lines.
+ .Linestrip --- Line strip.
+ .Points --- Points.
()
--- Point size value.
@@ -103,16 +99,16 @@ flag.StatePointSize { bits = 64, shift = 52, range = 4, desc = "Point size", "he
--- Enable MSAA write when writing into MSAA frame buffer.
--- This flag is ignored when not writing into MSAA frame buffer.
flag.State { bits = 64 , range = 64 , desc = "State" }
- .Msaa (57) --- Enable MSAA rasterization.
- .Lineaa (58) --- Enable line AA rasterization.
- .ConservativeRaster (59) --- Enable conservative rasterization.
- .None (0) --- No state.
- .BlendIndependent(35) --- Enable blend independent.
- .BlendAlphaToCoverage (36) --- Enable alpha to coverage.
+ .Msaa (57) --- Enable MSAA rasterization.
+ .Lineaa (58) --- Enable line AA rasterization.
+ .ConservativeRaster (59) --- Enable conservative rasterization.
+ .None (0) --- No state.
+ .FrontCcw(40) --- Front counter-clockwise (default is clockwise).
+ .BlendIndependent(35) --- Enable blend independent.
+ .BlendAlphaToCoverage (36) --- Enable alpha to coverage.
.Default { "WriteRgb", "WriteA", "WriteZ", "DepthTestLess", "CullCw", "Msaa" }
- --- 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).
-
+ --- 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).
--- Do not use!
flag.StateReserved { bits = 64, shift = 61, range = 3 }
diff --git a/src/bgfx.cpp b/src/bgfx.cpp
index 7d8734bea..7a8986c50 100644
--- a/src/bgfx.cpp
+++ b/src/bgfx.cpp
@@ -5153,35 +5153,37 @@ BX_STATIC_ASSERT(FLAGS_MASK_TEST(0
) );
BX_STATIC_ASSERT( (0
- | BGFX_STATE_WRITE_MASK
- | BGFX_STATE_DEPTH_TEST_MASK
- | BGFX_STATE_BLEND_MASK
+ | BGFX_STATE_ALPHA_REF_MASK
+ | BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
| BGFX_STATE_BLEND_EQUATION_MASK
| BGFX_STATE_BLEND_INDEPENDENT
- | BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
- | BGFX_STATE_CULL_MASK
- | BGFX_STATE_ALPHA_REF_MASK
- | BGFX_STATE_PT_MASK
- | BGFX_STATE_POINT_SIZE_MASK
- | BGFX_STATE_MSAA
- | BGFX_STATE_LINEAA
+ | BGFX_STATE_BLEND_MASK
| BGFX_STATE_CONSERVATIVE_RASTER
+ | BGFX_STATE_CULL_MASK
+ | BGFX_STATE_DEPTH_TEST_MASK
+ | BGFX_STATE_FRONT_CCW
+ | BGFX_STATE_LINEAA
+ | BGFX_STATE_MSAA
+ | BGFX_STATE_POINT_SIZE_MASK
+ | BGFX_STATE_PT_MASK
| BGFX_STATE_RESERVED_MASK
+ | BGFX_STATE_WRITE_MASK
) == (0
- ^ BGFX_STATE_WRITE_MASK
- ^ BGFX_STATE_DEPTH_TEST_MASK
- ^ BGFX_STATE_BLEND_MASK
+ ^ BGFX_STATE_ALPHA_REF_MASK
+ ^ BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
^ BGFX_STATE_BLEND_EQUATION_MASK
^ BGFX_STATE_BLEND_INDEPENDENT
- ^ BGFX_STATE_BLEND_ALPHA_TO_COVERAGE
- ^ BGFX_STATE_CULL_MASK
- ^ BGFX_STATE_ALPHA_REF_MASK
- ^ BGFX_STATE_PT_MASK
- ^ BGFX_STATE_POINT_SIZE_MASK
- ^ BGFX_STATE_MSAA
- ^ BGFX_STATE_LINEAA
+ ^ BGFX_STATE_BLEND_MASK
^ BGFX_STATE_CONSERVATIVE_RASTER
+ ^ BGFX_STATE_CULL_MASK
+ ^ BGFX_STATE_DEPTH_TEST_MASK
+ ^ BGFX_STATE_FRONT_CCW
+ ^ BGFX_STATE_LINEAA
+ ^ BGFX_STATE_MSAA
+ ^ BGFX_STATE_POINT_SIZE_MASK
+ ^ BGFX_STATE_PT_MASK
^ BGFX_STATE_RESERVED_MASK
+ ^ BGFX_STATE_WRITE_MASK
) );
BX_STATIC_ASSERT(FLAGS_MASK_TEST(BGFX_CAPS_TEXTURE_COMPARE_LEQUAL, BGFX_CAPS_TEXTURE_COMPARE_ALL) );