diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-12-04 05:05:58 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-12-04 05:05:58 +0000 |
| commit | 30e8825f6f1fefa29673d525b928990721f39d55 (patch) | |
| tree | 29c4e3a31356d2eb48de58e5831256d5bf36b6c8 /RenderScript/src | |
| parent | Updated lua bindings for SetVertexBuffers and SetIndexBuffer plus other updat... (diff) | |
| download | DiligentTools-30e8825f6f1fefa29673d525b928990721f39d55.tar.gz DiligentTools-30e8825f6f1fefa29673d525b928990721f39d55.zip | |
Updated bindings for ClearDepthStencil and ClearRenderTarget
Diffstat (limited to 'RenderScript/src')
| -rw-r--r-- | RenderScript/src/DeviceContextFuncBindings.cpp | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/RenderScript/src/DeviceContextFuncBindings.cpp b/RenderScript/src/DeviceContextFuncBindings.cpp index 6f265b5..99ad18d 100644 --- a/RenderScript/src/DeviceContextFuncBindings.cpp +++ b/RenderScript/src/DeviceContextFuncBindings.cpp @@ -46,17 +46,9 @@ namespace Diligent m_ShaderResBindingMetatableName( pSRBParser->GetMetatableName() ), m_PSOMetatableName(pPSOParser->GetMetatableName()) { - DEFINE_ENUM_ELEMENT_MAPPING( m_SetRenderTargetsFlagsEnumMapping, SET_RENDER_TARGETS_FLAG_NONE ); - DEFINE_ENUM_ELEMENT_MAPPING( m_SetRenderTargetsFlagsEnumMapping, SET_RENDER_TARGETS_FLAG_TRANSITION_COLOR ); - DEFINE_ENUM_ELEMENT_MAPPING( m_SetRenderTargetsFlagsEnumMapping, SET_RENDER_TARGETS_FLAG_TRANSITION_DEPTH ); - DEFINE_ENUM_ELEMENT_MAPPING( m_SetRenderTargetsFlagsEnumMapping, SET_RENDER_TARGETS_FLAG_TRANSITION_ALL ); - DEFINE_ENUM_ELEMENT_MAPPING( m_SetRenderTargetsFlagsEnumMapping, SET_RENDER_TARGETS_FLAG_VERIFY_STATES ); - DEFINE_ENUM_ELEMENT_MAPPING( m_ClearDepthStencilFlagsEnumMapping, CLEAR_DEPTH_FLAG_NONE ); DEFINE_ENUM_ELEMENT_MAPPING( m_ClearDepthStencilFlagsEnumMapping, CLEAR_DEPTH_FLAG ); DEFINE_ENUM_ELEMENT_MAPPING( m_ClearDepthStencilFlagsEnumMapping, CLEAR_STENCIL_FLAG ); - DEFINE_ENUM_ELEMENT_MAPPING( m_ClearDepthStencilFlagsEnumMapping, CLEAR_DEPTH_STENCIL_TRANSITION_STATE_FLAG ); - DEFINE_ENUM_ELEMENT_MAPPING( m_ClearDepthStencilFlagsEnumMapping, CLEAR_DEPTH_STENCIL_VERIFY_STATE_FLAG ); }; int DeviceContextFuncBindings::SetRenderTargets( lua_State *L ) @@ -65,7 +57,7 @@ namespace Diligent ITextureView *pRTVs[MaxRenderTargets] = {}; ITextureView *pDSV = nullptr; Uint32 NumRTs = 0; - SET_RENDER_TARGETS_FLAGS Flags = SET_RENDER_TARGETS_FLAG_NONE; + RESOURCE_STATE_TRANSITION_MODE TransitionMode = RESOURCE_STATE_TRANSITION_MODE_TRANSITION; for( int CurrArg = 1; CurrArg <= NumArgs; ++CurrArg ) { if( lua_type( L, CurrArg ) == LUA_TUSERDATA ) @@ -97,13 +89,13 @@ namespace Diligent } else { - FlagsLoader<SET_RENDER_TARGETS_FLAGS> RTFlagsLoader(0, "SetRenderTargetsFlags", m_SetRenderTargetsFlagsEnumMapping); - RTFlagsLoader.SetValue( L, CurrArg, &Flags ); + EnumMemberBinder<RESOURCE_STATE_TRANSITION_MODE> StateTransitionModeLoader(0, "StateTransitionMode", m_StateTransitionModeMapping); + StateTransitionModeLoader.SetValue( L, CurrArg, &TransitionMode ); } } auto *pContext = EngineObjectParserBase::LoadDeviceContextFromRegistry( L ); - pContext->SetRenderTargets( NumRTs, pRTVs, pDSV, Flags ); + pContext->SetRenderTargets( NumRTs, pRTVs, pDSV, TransitionMode ); // Return no values to Lua return 0; @@ -173,22 +165,30 @@ namespace Diligent ++CurrArg; } - if( CurrArg <= NumArgs ) + if( CurrArg <= NumArgs && (ClearFlags == CLEAR_DEPTH_FLAG_NONE || (ClearFlags & CLEAR_DEPTH_FLAG)!=0) ) { fDepth = ReadValueFromLua<Float32>( L, CurrArg ); ClearFlags |= CLEAR_DEPTH_FLAG; ++CurrArg; } - if( CurrArg <= NumArgs ) + if( CurrArg <= NumArgs && lua_isnumber( L, CurrArg ) ) { Stencil = ReadValueFromLua<Uint8>( L, CurrArg ); ClearFlags |= CLEAR_STENCIL_FLAG; ++CurrArg; } + RESOURCE_STATE_TRANSITION_MODE StateTransitionMode = RESOURCE_STATE_TRANSITION_MODE_NONE; + if( CurrArg <= NumArgs && lua_type( L, CurrArg ) == LUA_TSTRING ) + { + EnumMemberBinder<RESOURCE_STATE_TRANSITION_MODE> StateTransitionModeLoader(0, "StateTransitionMode", m_StateTransitionModeMapping); + StateTransitionModeLoader.SetValue( L, CurrArg, &StateTransitionMode ); + ++CurrArg; + } + auto *pContext = EngineObjectParserBase::LoadDeviceContextFromRegistry( L ); - pContext->ClearDepthStencil( pView, ClearFlags, fDepth, Stencil ); + pContext->ClearDepthStencil( pView, ClearFlags, fDepth, Stencil, StateTransitionMode ); return 0; } |
