From d6d73dd8e7f98f6591f93b7ecda08b34cce518ec Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Fri, 5 Apr 2019 08:52:31 -0700 Subject: Changes to comply with the updated API --- RenderScript/include/ShaderResourceBindingParser.h | 3 ++- RenderScript/include/ShaderVariableParser.h | 7 ++++-- RenderScript/src/ShaderResourceBindingParser.cpp | 20 ++++++++++++---- RenderScript/src/ShaderVariableParser.cpp | 27 +++++++++++++++++----- 4 files changed, 43 insertions(+), 14 deletions(-) (limited to 'RenderScript') diff --git a/RenderScript/include/ShaderResourceBindingParser.h b/RenderScript/include/ShaderResourceBindingParser.h index f5c8fe8..ac7bcd6 100644 --- a/RenderScript/include/ShaderResourceBindingParser.h +++ b/RenderScript/include/ShaderResourceBindingParser.h @@ -61,7 +61,8 @@ namespace Diligent ClassMethodCaller < ShaderResourceBindingParser > m_BindResourcesBinding; int GetVariable( lua_State *L ); - ClassMethodCaller < ShaderResourceBindingParser > m_GetVariableBinding; + ClassMethodCaller < ShaderResourceBindingParser > m_GetVariableByNameBinding; + ClassMethodCaller < ShaderResourceBindingParser > m_GetVariableByIndexBinding; int CreateShaderResourceBinding( lua_State *L ); ClassMethodCaller m_CreateShaderResourceBinding; diff --git a/RenderScript/include/ShaderVariableParser.h b/RenderScript/include/ShaderVariableParser.h index 6b97e89..4287018 100644 --- a/RenderScript/include/ShaderVariableParser.h +++ b/RenderScript/include/ShaderVariableParser.h @@ -61,7 +61,10 @@ namespace Diligent int Set( lua_State *L ); ClassMethodCaller < ShaderVariableParser > m_SetBinding; - ClassMethodCaller m_GetStaticShaderVariableBinding; - int GetStaticShaderVariable( lua_State *L ); + ClassMethodCaller m_GetStaticVariableByNameBinding; + int GetStaticVariableByName( lua_State *L ); + + ClassMethodCaller m_GetStaticVariableByIndexBinding; + int GetStaticVariableByIndex( lua_State *L ); }; } diff --git a/RenderScript/src/ShaderResourceBindingParser.cpp b/RenderScript/src/ShaderResourceBindingParser.cpp index 32c8176..ed24c0d 100644 --- a/RenderScript/src/ShaderResourceBindingParser.cpp +++ b/RenderScript/src/ShaderResourceBindingParser.cpp @@ -37,7 +37,8 @@ namespace Diligent m_ResMappingMetatableName(ResMappingMetatableName), m_ShaderVarMetatableRegistryName(ShaderVarMetatableRegistryName), m_BindResourcesBinding( this, L, m_MetatableRegistryName.c_str(), "BindResources", &ShaderResourceBindingParser::BindResources ), - m_GetVariableBinding( this, L, m_MetatableRegistryName.c_str(), "GetVariable", &ShaderResourceBindingParser::GetVariable ), + m_GetVariableByNameBinding( this, L, m_MetatableRegistryName.c_str(), "GetVariableByName", &ShaderResourceBindingParser::GetVariable ), + m_GetVariableByIndexBinding( this, L, m_MetatableRegistryName.c_str(), "GetVariableByIndex", &ShaderResourceBindingParser::GetVariable ), m_CreateShaderResourceBinding( this, L, PSOLibMetatableName.c_str(), "CreateShaderResourceBinding", &ShaderResourceBindingParser::CreateShaderResourceBinding ), m_InitializeStaticResourcesBinding( this, L, m_MetatableRegistryName.c_str(), "InitializeStaticResources", &ShaderResourceBindingParser::InitializeStaticResources ) { @@ -171,10 +172,19 @@ namespace Diligent ShaderTypeParser.SetValue(L, ArgStackInd, &ShaderType); ++ArgStackInd; - // Variable name should be the second argument - auto VarName = ReadValueFromLua( L, ArgStackInd ); - - auto pVar = pShaderResBinding->GetVariable(ShaderType, VarName.c_str()); + IShaderResourceVariable* pVar = nullptr; + if (lua_type(L,ArgStackInd) == LUA_TSTRING) + { + // Variable name should be the second argument + auto VarName = ReadValueFromLua( L, ArgStackInd ); + pVar = pShaderResBinding->GetVariableByName(ShaderType, VarName.c_str()); + } + else + { + // Variable name should be the second argument + auto VarIndex = ReadValueFromLua( L, ArgStackInd ); + pVar = pShaderResBinding->GetVariableByIndex(ShaderType, VarIndex); + } auto pNewShaderVarLuaObj = reinterpret_cast(lua_newuserdata( L, sizeof( IShaderResourceVariable* ) )); *pNewShaderVarLuaObj = pVar; diff --git a/RenderScript/src/ShaderVariableParser.cpp b/RenderScript/src/ShaderVariableParser.cpp index 0bfac71..e382650 100644 --- a/RenderScript/src/ShaderVariableParser.cpp +++ b/RenderScript/src/ShaderVariableParser.cpp @@ -39,7 +39,8 @@ namespace Diligent m_BufferViewLibMetatableName(BufferViewLibMetatableName), m_TexViewMetatableName(TexViewMetatableName), m_SetBinding( this, L, m_MetatableRegistryName.c_str(), "Set", &ShaderVariableParser::Set ), - m_GetStaticShaderVariableBinding( this, L, m_PSOLibMetatableName.c_str(), "GetStaticShaderVariable", &ShaderVariableParser::GetStaticShaderVariable ) + m_GetStaticVariableByNameBinding( this, L, m_PSOLibMetatableName.c_str(), "GetStaticVariableByName", &ShaderVariableParser::GetStaticVariableByName ), + m_GetStaticVariableByIndexBinding( this, L, m_PSOLibMetatableName.c_str(), "GetStaticVariableByIndex", &ShaderVariableParser::GetStaticVariableByIndex ) { }; @@ -60,10 +61,19 @@ namespace Diligent EnumMemberBinder ShaderTypeParser(0, "ShaderType", m_ShaderTypeEnumMapping); ShaderTypeParser.SetValue(L, 2, &ShaderType); - // Variable name should be the second argument - auto VarName = ReadValueFromLua( L, 3 ); - - auto pVar = pPSO->GetStaticShaderVariable(ShaderType, VarName.c_str() ); + IShaderResourceVariable *pVar = nullptr; + if (lua_type(L,3) == LUA_TSTRING) + { + // Variable name should be the second argument + auto VarName = ReadValueFromLua( L, 3 ); + pVar = pPSO->GetStaticVariableByName(ShaderType, VarName.c_str() ); + } + else + { + // Variable name should be the second argument + auto VarIndex = ReadValueFromLua( L, 3 ); + pVar = pPSO->GetStaticVariableByIndex(ShaderType, VarIndex ); + } auto pNewShaderVarLuaObj = reinterpret_cast(lua_newuserdata( L, sizeof( IShaderResourceVariable* ) )); *pNewShaderVarLuaObj = pVar; @@ -136,7 +146,12 @@ namespace Diligent return 0; } - int ShaderVariableParser::GetStaticShaderVariable( lua_State *L ) + int ShaderVariableParser::GetStaticVariableByName( lua_State *L ) + { + return LuaCreate(L); + } + + int ShaderVariableParser::GetStaticVariableByIndex( lua_State *L ) { return LuaCreate(L); } -- cgit v1.2.3