Front facing (#1904)
* Added BGFX_STATE_FRONT_CCW to defines.h and implemented initial usage only in renderer_d3d11.cpp. * set front facing for d3d12, gl metal and vulkan * front facing method Metal * tabs * removed tab idl updated
This commit is contained in:
parent
8ab1286a92
commit
6a883a33fd
@ -90,6 +90,9 @@
|
|||||||
#define BGFX_STATE_CULL_SHIFT 36 //!< Culling mode bit shift
|
#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_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.
|
* Alpha reference value.
|
||||||
*
|
*
|
||||||
|
@ -83,6 +83,10 @@ flag.StateCull { bits = 64, shift = 36, range = 2, base = 1, desc = "Culling mod
|
|||||||
.Ccw --- Cull counter-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" }
|
||||||
|
()
|
||||||
|
|
||||||
--- Alpha reference value.
|
--- Alpha reference value.
|
||||||
flag.StateAlphaRef { bits = 64, shift = 40, range = 8, desc = "Alpha reference", "helper" }
|
flag.StateAlphaRef { bits = 64, shift = 40, range = 8, desc = "Alpha reference", "helper" }
|
||||||
|
|
||||||
|
@ -2846,6 +2846,7 @@ namespace bgfx { namespace d3d11
|
|||||||
| BGFX_STATE_MSAA
|
| BGFX_STATE_MSAA
|
||||||
| BGFX_STATE_LINEAA
|
| BGFX_STATE_LINEAA
|
||||||
| BGFX_STATE_CONSERVATIVE_RASTER
|
| BGFX_STATE_CONSERVATIVE_RASTER
|
||||||
|
| BGFX_STATE_FRONT_CCW
|
||||||
;
|
;
|
||||||
_state |= _wireframe ? BGFX_STATE_PT_LINES : BGFX_STATE_NONE;
|
_state |= _wireframe ? BGFX_STATE_PT_LINES : BGFX_STATE_NONE;
|
||||||
_state |= _scissor ? BGFX_STATE_RESERVED_MASK : 0;
|
_state |= _scissor ? BGFX_STATE_RESERVED_MASK : 0;
|
||||||
@ -2862,7 +2863,7 @@ namespace bgfx { namespace d3d11
|
|||||||
D3D11_RASTERIZER_DESC2 desc;
|
D3D11_RASTERIZER_DESC2 desc;
|
||||||
desc.FillMode = _wireframe ? D3D11_FILL_WIREFRAME : D3D11_FILL_SOLID;
|
desc.FillMode = _wireframe ? D3D11_FILL_WIREFRAME : D3D11_FILL_SOLID;
|
||||||
desc.CullMode = s_cullMode[cull];
|
desc.CullMode = s_cullMode[cull];
|
||||||
desc.FrontCounterClockwise = false;
|
desc.FrontCounterClockwise = !!(_state&BGFX_STATE_FRONT_CCW);
|
||||||
desc.DepthBias = 0;
|
desc.DepthBias = 0;
|
||||||
desc.DepthBiasClamp = 0.0f;
|
desc.DepthBiasClamp = 0.0f;
|
||||||
desc.SlopeScaledDepthBias = 0.0f;
|
desc.SlopeScaledDepthBias = 0.0f;
|
||||||
|
@ -2557,8 +2557,8 @@ namespace bgfx { namespace d3d12
|
|||||||
? D3D12_FILL_MODE_WIREFRAME
|
? D3D12_FILL_MODE_WIREFRAME
|
||||||
: D3D12_FILL_MODE_SOLID
|
: D3D12_FILL_MODE_SOLID
|
||||||
;
|
;
|
||||||
_desc.CullMode = s_cullMode[cull];
|
_desc.CullMode = s_cullMode[cull];
|
||||||
_desc.FrontCounterClockwise = false;
|
_desc.FrontCounterClockwise = !!(_state&BGFX_STATE_FRONT_CCW);;
|
||||||
_desc.DepthBias = 0;
|
_desc.DepthBias = 0;
|
||||||
_desc.DepthBiasClamp = 0.0f;
|
_desc.DepthBiasClamp = 0.0f;
|
||||||
_desc.SlopeScaledDepthBias = 0.0f;
|
_desc.SlopeScaledDepthBias = 0.0f;
|
||||||
|
@ -6892,8 +6892,14 @@ BX_TRACE("%d, %d, %d, %s", _array, _srgb, _mipAutogen, getName(_format) );
|
|||||||
| BGFX_STATE_MSAA
|
| BGFX_STATE_MSAA
|
||||||
| BGFX_STATE_LINEAA
|
| BGFX_STATE_LINEAA
|
||||||
| BGFX_STATE_CONSERVATIVE_RASTER
|
| BGFX_STATE_CONSERVATIVE_RASTER
|
||||||
|
| BGFX_STATE_FRONT_CCW
|
||||||
) & changedFlags)
|
) & changedFlags)
|
||||||
{
|
{
|
||||||
|
if (BGFX_STATE_FRONT_CCW & changedFlags)
|
||||||
|
{
|
||||||
|
GL_CHECK(glFrontFace((BGFX_STATE_FRONT_CCW & newFlags) ? GL_CCW : GL_CW) );
|
||||||
|
}
|
||||||
|
|
||||||
if (BGFX_STATE_CULL_MASK & changedFlags)
|
if (BGFX_STATE_CULL_MASK & changedFlags)
|
||||||
{
|
{
|
||||||
if (BGFX_STATE_CULL_CCW & newFlags)
|
if (BGFX_STATE_CULL_CCW & newFlags)
|
||||||
|
@ -426,6 +426,11 @@ namespace bgfx { namespace mtl
|
|||||||
[m_obj setBlendColorRed:_red green:_green blue:_blue alpha:_alpha];
|
[m_obj setBlendColorRed:_red green:_green blue:_blue alpha:_alpha];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setFrontFacing(MTLWinding _frontFacing)
|
||||||
|
{
|
||||||
|
[m_obj setFrontFacing:_frontFacing];
|
||||||
|
}
|
||||||
|
|
||||||
void setCullMode(MTLCullMode _cullMode)
|
void setCullMode(MTLCullMode _cullMode)
|
||||||
{
|
{
|
||||||
[m_obj setCullMode:_cullMode];
|
[m_obj setCullMode:_cullMode];
|
||||||
|
@ -4227,8 +4227,14 @@ namespace bgfx { namespace mtl
|
|||||||
| BGFX_STATE_CULL_MASK
|
| BGFX_STATE_CULL_MASK
|
||||||
| BGFX_STATE_ALPHA_REF_MASK
|
| BGFX_STATE_ALPHA_REF_MASK
|
||||||
| BGFX_STATE_PT_MASK
|
| BGFX_STATE_PT_MASK
|
||||||
|
| BGFX_STATE_FRONT_CCW
|
||||||
) & changedFlags)
|
) & changedFlags)
|
||||||
{
|
{
|
||||||
|
if (BGFX_STATE_FRONT_CCW & changedFlags)
|
||||||
|
{
|
||||||
|
rce.setFrontFacing((newFlags&BGFX_STATE_FRONT_CCW) ? MTLWindingCounterClockwise : MTLWindingClockwise);
|
||||||
|
}
|
||||||
|
|
||||||
if (BGFX_STATE_CULL_MASK & changedFlags)
|
if (BGFX_STATE_CULL_MASK & changedFlags)
|
||||||
{
|
{
|
||||||
const uint64_t pt = newFlags&BGFX_STATE_CULL_MASK;
|
const uint64_t pt = newFlags&BGFX_STATE_CULL_MASK;
|
||||||
|
@ -3074,7 +3074,7 @@ VK_IMPORT_DEVICE
|
|||||||
: VK_POLYGON_MODE_FILL
|
: VK_POLYGON_MODE_FILL
|
||||||
;
|
;
|
||||||
_desc.cullMode = s_cullMode[cull];
|
_desc.cullMode = s_cullMode[cull];
|
||||||
_desc.frontFace = VK_FRONT_FACE_CLOCKWISE;
|
_desc.frontFace = (_state&BGFX_STATE_FRONT_CCW) ? VK_FRONT_FACE_COUNTER_CLOCKWISE : VK_FRONT_FACE_CLOCKWISE;
|
||||||
_desc.depthBiasEnable = VK_FALSE;
|
_desc.depthBiasEnable = VK_FALSE;
|
||||||
_desc.depthBiasConstantFactor = 0.0f;
|
_desc.depthBiasConstantFactor = 0.0f;
|
||||||
_desc.depthBiasClamp = 0.0f;
|
_desc.depthBiasClamp = 0.0f;
|
||||||
|
Loading…
Reference in New Issue
Block a user