diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2016-08-20 06:38:41 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2016-08-20 06:38:41 +0000 |
| commit | 8077ddaf62bdbff2169973eca565a5752501587d (patch) | |
| tree | 0532180e74cf5215736fd4e053216e291326fbcb /RenderScript/src/TextureParser.cpp | |
| parent | One more update to android build configuration (diff) | |
| download | DiligentTools-8077ddaf62bdbff2169973eca565a5752501587d.tar.gz DiligentTools-8077ddaf62bdbff2169973eca565a5752501587d.zip | |
Updated to Diligent Engine 2.0
Diffstat (limited to 'RenderScript/src/TextureParser.cpp')
| -rw-r--r-- | RenderScript/src/TextureParser.cpp | 63 |
1 files changed, 61 insertions, 2 deletions
diff --git a/RenderScript/src/TextureParser.cpp b/RenderScript/src/TextureParser.cpp index 628c9a1..a7ac219 100644 --- a/RenderScript/src/TextureParser.cpp +++ b/RenderScript/src/TextureParser.cpp @@ -1,4 +1,4 @@ -/* Copyright 2015 Egor Yusov +/* Copyright 2015-2016 Egor Yusov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,12 +29,69 @@ namespace Diligent { const Char* TextureParser::TextureLibName = "Texture"; + template<> + class MemberBinder<DepthStencilClearValue> : public MemberBinderBase + { + public: + MemberBinder(size_t MemberOffset, int /*Dummy*/) : + MemberBinderBase(MemberOffset) + { + DEFINE_BINDER( m_Bindings, DepthStencilClearValue, Depth, Float32, Validator<Float32>("Depth clear value", 0.f, 1.f) ) + DEFINE_BINDER( m_Bindings, DepthStencilClearValue, Stencil, Uint8, Validator<Uint8>() ) + } + + virtual void GetValue(lua_State *L, const void* pBasePointer)override + { + const auto *pDSClearValue = &GetMemberByOffest<DepthStencilClearValue>( pBasePointer, m_MemberOffset ); + PushLuaTable( L, pDSClearValue, m_Bindings ); + } + + virtual void SetValue(lua_State *L, int Index, void* pBasePointer)override + { + auto *pDSClearValue = &GetMemberByOffest<DepthStencilClearValue>(pBasePointer, m_MemberOffset); + ParseLuaTable( L, Index, pDSClearValue, m_Bindings ); + } + + private: + BindingsMapType m_Bindings; + }; + + template<> + class MemberBinder<OptimizedClearValue> : public MemberBinderBase + { + public: + MemberBinder(size_t MemberOffset, int /*Dummy*/) : + MemberBinderBase(MemberOffset) + { + DEFINE_ENUM_BINDER( m_Bindings, OptimizedClearValue, Format, TEXTURE_FORMAT, m_TexFmtEnumMapping ); + DEFINE_BINDER( m_Bindings, OptimizedClearValue, Color, RGBALoader, 0 ) + DEFINE_BINDER( m_Bindings, OptimizedClearValue, DepthStencil, DepthStencilClearValue, 0 ) + } + + virtual void GetValue(lua_State *L, const void* pBasePointer)override + { + const auto *pClearValue = &GetMemberByOffest<OptimizedClearValue>( pBasePointer, m_MemberOffset ); + PushLuaTable( L, pClearValue, m_Bindings ); + } + + virtual void SetValue(lua_State *L, int Index, void* pBasePointer)override + { + auto *pClearValue = &GetMemberByOffest<OptimizedClearValue>(pBasePointer, m_MemberOffset); + ParseLuaTable( L, Index, pClearValue, m_Bindings ); + } + + private: + BindingsMapType m_Bindings; + TextureFormatEnumMapping m_TexFmtEnumMapping; + }; + + TextureParser::TextureParser( IRenderDevice *pRenderDevice, lua_State *L ) : EngineObjectParserCommon<ITexture>( pRenderDevice, L, TextureLibName ) { DEFINE_BUFFERED_STRING_BINDER( m_Bindings, STexDescWrapper, Name, NameBuffer ) - DEFINE_ENUM_BINDER( m_Bindings, STexDescWrapper, Type, TEXTURE_TYPE, m_TexTypeEnumMapping ); + DEFINE_ENUM_BINDER( m_Bindings, STexDescWrapper, Type, RESOURCE_DIMENSION, m_TexTypeEnumMapping ); DEFINE_BINDER( m_Bindings, STexDescWrapper, Width, Uint32, Validator<Uint32>( "Width", 1, 16384 ) ); DEFINE_BINDER( m_Bindings, STexDescWrapper, Height, Uint32, Validator<Uint32>( "Heihght", 1, 16384 ) ); @@ -64,6 +121,8 @@ namespace Diligent DEFINE_ENUM_ELEMENT_MAPPING( m_MiscFlagEnumMapping, MISC_TEXTURE_FLAG_GENERATE_MIPS ); DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, MiscFlags, Diligent::MISC_TEXTURE_FLAG, m_MiscFlagEnumMapping ); + + DEFINE_BINDER( m_Bindings, STexDescWrapper, ClearValue, OptimizedClearValue, 0 ); }; void TextureParser::CreateObj( lua_State *L ) |
