diff --git a/DirectXTK/DirectXTK_Desktop_2015.vcxproj b/DirectXTK/DirectXTK_Desktop_2015.vcxproj index c574a75c..0551988d 100644 --- a/DirectXTK/DirectXTK_Desktop_2015.vcxproj +++ b/DirectXTK/DirectXTK_Desktop_2015.vcxproj @@ -80,6 +80,7 @@ + Create Create @@ -488,7 +489,6 @@ Document - {E0B52AE7-E160-4D32-BF3F-910B785E5A8E} Win32Proj diff --git a/DirectXTK/DirectXTK_Desktop_2015.vcxproj.filters b/DirectXTK/DirectXTK_Desktop_2015.vcxproj.filters index f4953c2b..079ce0b9 100644 --- a/DirectXTK/DirectXTK_Desktop_2015.vcxproj.filters +++ b/DirectXTK/DirectXTK_Desktop_2015.vcxproj.filters @@ -236,6 +236,9 @@ Src + + Src + diff --git a/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj b/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj index ab4c9875..a40b7e26 100644 --- a/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj +++ b/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj @@ -92,6 +92,7 @@ + Create Create @@ -500,7 +501,6 @@ Document - {E0B52AE7-E160-4D32-BF3F-910B785E5A8E} Win32Proj diff --git a/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj.filters b/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj.filters index 9bc7377a..ff1a28f6 100644 --- a/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj.filters +++ b/DirectXTK/DirectXTK_Desktop_2015_Win10.vcxproj.filters @@ -275,6 +275,9 @@ Src + + Src + diff --git a/DirectXTK/DirectXTK_Desktop_2017.vcxproj b/DirectXTK/DirectXTK_Desktop_2017.vcxproj index 8b3aa328..e315e1db 100644 --- a/DirectXTK/DirectXTK_Desktop_2017.vcxproj +++ b/DirectXTK/DirectXTK_Desktop_2017.vcxproj @@ -80,6 +80,7 @@ + Create Create @@ -488,7 +489,6 @@ Document - {E0B52AE7-E160-4D32-BF3F-910B785E5A8E} Win32Proj diff --git a/DirectXTK/DirectXTK_Desktop_2017.vcxproj.filters b/DirectXTK/DirectXTK_Desktop_2017.vcxproj.filters index c72bbd1e..86649427 100644 --- a/DirectXTK/DirectXTK_Desktop_2017.vcxproj.filters +++ b/DirectXTK/DirectXTK_Desktop_2017.vcxproj.filters @@ -236,6 +236,9 @@ Src + + Src + diff --git a/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj b/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj index 3e65f429..0133cae0 100644 --- a/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj +++ b/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj @@ -92,6 +92,7 @@ + Create Create @@ -500,7 +501,6 @@ Document - {E0B52AE7-E160-4D32-BF3F-910B785E5A8E} Win32Proj diff --git a/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj.filters b/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj.filters index 704d81c7..bec2a446 100644 --- a/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj.filters +++ b/DirectXTK/DirectXTK_Desktop_2017_Win10.vcxproj.filters @@ -275,6 +275,9 @@ Src + + Src + diff --git a/DirectXTK/Inc/Effects.h b/DirectXTK/Inc/Effects.h index fd680c43..c7d945b2 100644 --- a/DirectXTK/Inc/Effects.h +++ b/DirectXTK/Inc/Effects.h @@ -763,6 +763,7 @@ namespace DirectX const wchar_t* diffuseTexture; const wchar_t* specularTexture; const wchar_t* normalTexture; + const wchar_t* emissiveTexture; EffectInfo() noexcept : name(nullptr), @@ -779,7 +780,8 @@ namespace DirectX emissiveColor(0, 0, 0), diffuseTexture(nullptr), specularTexture(nullptr), - normalTexture(nullptr) + normalTexture(nullptr), + emissiveTexture(nullptr) {} }; @@ -830,6 +832,43 @@ namespace DirectX }; + // Factory for Physically Based Rendering (PBR) + class PBREffectFactory : public IEffectFactory + { + public: + explicit PBREffectFactory(_In_ ID3D11Device* device); + PBREffectFactory(PBREffectFactory&& moveFrom) noexcept; + PBREffectFactory& operator= (PBREffectFactory&& moveFrom) noexcept; + + PBREffectFactory(PBREffectFactory const&) = delete; + PBREffectFactory& operator= (PBREffectFactory const&) = delete; + + virtual ~PBREffectFactory() override; + + // IEffectFactory methods. + virtual std::shared_ptr __cdecl CreateEffect(_In_ const EffectInfo& info, _In_opt_ ID3D11DeviceContext* deviceContext) override; + virtual void __cdecl CreateTexture(_In_z_ const wchar_t* name, _In_opt_ ID3D11DeviceContext* deviceContext, _Outptr_ ID3D11ShaderResourceView** textureView) override; + + // Settings. + void __cdecl ReleaseCache(); + + void __cdecl SetSharing(bool enabled); + + void __cdecl EnableForceSRGB(bool forceSRGB); + + void __cdecl SetDirectory(_In_opt_z_ const wchar_t* path); + + // Properties. + ID3D11Device* GetDevice() const; + + private: + // Private implementation. + class Impl; + + std::shared_ptr pImpl; + }; + + // Factory for sharing Visual Studio Shader Designer (DGSL) shaders and texture resources class DGSLEffectFactory : public IEffectFactory { @@ -850,7 +889,7 @@ namespace DirectX // DGSL methods. struct DGSLEffectInfo : public EffectInfo { - static const int BaseTextureOffset = 3; + static const int BaseTextureOffset = 4; const wchar_t* textures[DGSLEffect::MaxTextures - BaseTextureOffset]; const wchar_t* pixelShader; diff --git a/DirectXTK/Inc/SpriteFont.h b/DirectXTK/Inc/SpriteFont.h index e08e7a96..f35132b8 100644 --- a/DirectXTK/Inc/SpriteFont.h +++ b/DirectXTK/Inc/SpriteFont.h @@ -31,6 +31,7 @@ namespace DirectX virtual ~SpriteFont(); + // Wide-character / UTF-16LE void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ wchar_t const* text, XMFLOAT2 const& position, FXMVECTOR color = Colors::White, float rotation = 0, XMFLOAT2 const& origin = Float2Zero, float scale = 1, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ wchar_t const* text, XMFLOAT2 const& position, FXMVECTOR color, float rotation, XMFLOAT2 const& origin, XMFLOAT2 const& scale, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ wchar_t const* text, FXMVECTOR position, FXMVECTOR color = Colors::White, float rotation = 0, FXMVECTOR origin = g_XMZero, float scale = 1, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; @@ -41,6 +42,17 @@ namespace DirectX RECT __cdecl MeasureDrawBounds(_In_z_ wchar_t const* text, XMFLOAT2 const& position) const; RECT XM_CALLCONV MeasureDrawBounds(_In_z_ wchar_t const* text, FXMVECTOR position) const; + // UTF-8 + void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, XMFLOAT2 const& position, FXMVECTOR color = Colors::White, float rotation = 0, XMFLOAT2 const& origin = Float2Zero, float scale = 1, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; + void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, XMFLOAT2 const& position, FXMVECTOR color, float rotation, XMFLOAT2 const& origin, XMFLOAT2 const& scale, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; + void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, FXMVECTOR position, FXMVECTOR color = Colors::White, float rotation = 0, FXMVECTOR origin = g_XMZero, float scale = 1, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; + void XM_CALLCONV DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, FXMVECTOR position, FXMVECTOR color, float rotation, FXMVECTOR origin, GXMVECTOR scale, SpriteEffects effects = SpriteEffects_None, float layerDepth = 0) const; + + XMVECTOR XM_CALLCONV MeasureString(_In_z_ char const* text) const; + + RECT __cdecl MeasureDrawBounds(_In_z_ char const* text, XMFLOAT2 const& position) const; + RECT XM_CALLCONV MeasureDrawBounds(_In_z_ char const* text, FXMVECTOR position) const; + // Spacing properties float __cdecl GetLineSpacing() const; void __cdecl SetLineSpacing(float spacing); diff --git a/DirectXTK/Readme.txt b/DirectXTK/Readme.txt index 323445c8..82335c97 100644 --- a/DirectXTK/Readme.txt +++ b/DirectXTK/Readme.txt @@ -4,7 +4,7 @@ DirectXTK - the DirectX Tool Kit for DirectX 11 Copyright (c) Microsoft Corporation. All rights reserved. -November 16, 2018 +February 7, 2019 This package contains the "DirectX Tool Kit", a collection of helper classes for writing Direct3D 11 C++ code for Universal Windows Platform (UWP) apps for @@ -113,6 +113,12 @@ RELEASE NOTES RELEASE HISTORY --------------- +February 7, 2019 + Model now supports loading SDKMESH v2 models + PBREffectFactory added to support PBR materials + PBREffect and NormalMapEffect shaders updated to support BC5_UNORM compressed normal maps + SpriteFont: DrawString overloads for UTF-8 chars in addition to UTF-16LE wide chars + November 16, 2018 VS 2017 updated for Windows 10 October 2018 Update SDK (17763) ARM64 platform configurations added to UWP projects diff --git a/DirectXTK/Src/DGSLEffectFactory.cpp b/DirectXTK/Src/DGSLEffectFactory.cpp index 9094fda5..2b50b628 100644 --- a/DirectXTK/Src/DGSLEffectFactory.cpp +++ b/DirectXTK/Src/DGSLEffectFactory.cpp @@ -310,6 +310,16 @@ std::shared_ptr DGSLEffectFactory::Impl::CreateDGSLEffect(DGSLEffectFac effect->SetTextureEnabled(true); } + if (info.emissiveTexture && *info.emissiveTexture) + { + ComPtr srv; + + factory->CreateTexture(info.emissiveTexture, deviceContext, srv.GetAddressOf()); + + effect->SetTexture(3, srv.Get()); + effect->SetTextureEnabled(true); + } + for (size_t j = 0; j < _countof(info.textures); ++j) { if (info.textures[j] && *info.textures[j]) diff --git a/DirectXTK/Src/EffectFactory.cpp b/DirectXTK/Src/EffectFactory.cpp index 1865d98e..52c1571c 100644 --- a/DirectXTK/Src/EffectFactory.cpp +++ b/DirectXTK/Src/EffectFactory.cpp @@ -168,8 +168,17 @@ std::shared_ptr EffectFactory::Impl::CreateEffect(IEffectFactory* facto effect->SetTexture(srv.Get()); } - if (info.specularTexture && *info.specularTexture) + if (info.emissiveTexture && *info.emissiveTexture) + { + ComPtr srv; + + factory->CreateTexture(info.emissiveTexture, deviceContext, srv.GetAddressOf()); + + effect->SetTexture2(srv.Get()); + } + else if (info.specularTexture && *info.specularTexture) { + // If there's no emissive texture specified, use the specular texture as the second texture ComPtr srv; factory->CreateTexture(info.specularTexture, deviceContext, srv.GetAddressOf()); diff --git a/DirectXTK/Src/ModelLoadCMO.cpp b/DirectXTK/Src/ModelLoadCMO.cpp index 2122a0ff..82ec421a 100644 --- a/DirectXTK/Src/ModelLoadCMO.cpp +++ b/DirectXTK/Src/ModelLoadCMO.cpp @@ -797,6 +797,7 @@ std::unique_ptr DirectX::Model::CreateFromCMO(ID3D11Device* d3dDevice, co info.diffuseTexture = m.texture[0].empty() ? nullptr : m.texture[0].c_str(); info.specularTexture = m.texture[1].empty() ? nullptr : m.texture[1].c_str(); info.normalTexture = m.texture[2].empty() ? nullptr : m.texture[2].c_str(); + info.emissiveTexture = m.texture[3].empty() ? nullptr : m.texture[3].c_str(); info.pixelShader = m.pixelShader.c_str(); const int offset = DGSLEffectFactory::DGSLEffectInfo::BaseTextureOffset; diff --git a/DirectXTK/Src/ModelLoadSDKMESH.cpp b/DirectXTK/Src/ModelLoadSDKMESH.cpp index c2422ace..14e2613c 100644 --- a/DirectXTK/Src/ModelLoadSDKMESH.cpp +++ b/DirectXTK/Src/ModelLoadSDKMESH.cpp @@ -122,6 +122,44 @@ namespace m.alpha = (info.alpha < 1.f); } + void LoadMaterial(const DXUT::SDKMESH_MATERIAL_V2& mh, + unsigned int flags, + IEffectFactory& fxFactory, + MaterialRecordSDKMESH& m) + { + wchar_t matName[DXUT::MAX_MATERIAL_NAME] = {}; + MultiByteToWideChar(CP_UTF8, 0, mh.Name, -1, matName, DXUT::MAX_MATERIAL_NAME); + + wchar_t albetoTexture[DXUT::MAX_TEXTURE_NAME] = {}; + MultiByteToWideChar(CP_UTF8, 0, mh.AlbetoTexture, -1, albetoTexture, DXUT::MAX_TEXTURE_NAME); + + wchar_t normalName[DXUT::MAX_TEXTURE_NAME] = {}; + MultiByteToWideChar(CP_UTF8, 0, mh.NormalTexture, -1, normalName, DXUT::MAX_TEXTURE_NAME); + + wchar_t rmaName[DXUT::MAX_TEXTURE_NAME] = {}; + MultiByteToWideChar(CP_UTF8, 0, mh.RMATexture, -1, rmaName, DXUT::MAX_TEXTURE_NAME); + + wchar_t emissiveName[DXUT::MAX_TEXTURE_NAME] = {}; + MultiByteToWideChar(CP_UTF8, 0, mh.EmissiveTexture, -1, emissiveName, DXUT::MAX_TEXTURE_NAME); + + EffectFactory::EffectInfo info; + info.name = matName; + info.perVertexColor = false; + info.enableSkinning = false; + info.enableDualTexture = false; + info.enableNormalMaps = true; + info.biasedVertexNormals = (flags & BIASED_VERTEX_NORMALS) != 0; + info.alpha = (!mh.Alpha) ? 1.f : mh.Alpha; + + info.diffuseTexture = albetoTexture; + info.specularTexture = rmaName; + info.normalTexture = normalName; + info.emissiveTexture = emissiveName; + + m.effect = fxFactory.CreateEffect(info, nullptr); + m.alpha = (info.alpha < 1.f); + } + //-------------------------------------------------------------------------------------- // Direct3D 9 Vertex Declaration to Direct3D 11 Input Layout mapping @@ -355,7 +393,7 @@ std::unique_ptr DirectX::Model::CreateFromSDKMESH(ID3D11Device* d3dDevice if (dataSize < header->HeaderSize) throw std::exception("End of file"); - if (header->Version != DXUT::SDKMESH_FILE_VERSION) + if (header->Version != DXUT::SDKMESH_FILE_VERSION && header->Version != DXUT::SDKMESH_FILE_VERSION_V2) throw std::exception("Not a supported SDKMESH version"); if (header->IsBigEndian) @@ -405,7 +443,17 @@ std::unique_ptr DirectX::Model::CreateFromSDKMESH(ID3D11Device* d3dDevice if (dataSize < header->MaterialDataOffset || (dataSize < (header->MaterialDataOffset + uint64_t(header->NumMaterials) * sizeof(DXUT::SDKMESH_MATERIAL)))) throw std::exception("End of file"); - auto materialArray = reinterpret_cast(meshData + header->MaterialDataOffset); + + const DXUT::SDKMESH_MATERIAL* materialArray = nullptr; + const DXUT::SDKMESH_MATERIAL_V2* materialArray_v2 = nullptr; + if (header->Version == DXUT::SDKMESH_FILE_VERSION_V2) + { + materialArray_v2 = reinterpret_cast(meshData + header->MaterialDataOffset); + } + else + { + materialArray = reinterpret_cast(meshData + header->MaterialDataOffset); + } // Buffer data uint64_t bufferDataOffset = header->HeaderSize + header->NonBufferDataSize; @@ -598,11 +646,23 @@ std::unique_ptr DirectX::Model::CreateFromSDKMESH(ID3D11Device* d3dDevice if (!mat.effect) { size_t vi = mh.VertexBuffers[0]; - LoadMaterial( - materialArray[subset.MaterialID], - materialFlags[vi], - fxFactory, - mat); + + if (materialArray_v2) + { + LoadMaterial( + materialArray_v2[subset.MaterialID], + materialFlags[vi], + fxFactory, + mat); + } + else + { + LoadMaterial( + materialArray[subset.MaterialID], + materialFlags[vi], + fxFactory, + mat); + } } ComPtr il; diff --git a/DirectXTK/Src/PBREffectFactory.cpp b/DirectXTK/Src/PBREffectFactory.cpp new file mode 100644 index 00000000..15ad9a3c --- /dev/null +++ b/DirectXTK/Src/PBREffectFactory.cpp @@ -0,0 +1,298 @@ +//-------------------------------------------------------------------------------------- +// File: PBREffectFactory.cpp +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// http://go.microsoft.com/fwlink/?LinkId=248929 +//-------------------------------------------------------------------------------------- + +#include "pch.h" +#include "Effects.h" +#include "DemandCreate.h" +#include "SharedResourcePool.h" + +#include "DDSTextureLoader.h" +#include "WICTextureLoader.h" + +using namespace DirectX; +using Microsoft::WRL::ComPtr; + +// Internal PBREffectFactory implementation class. Only one of these helpers is allocated +// per D3D device, even if there are multiple public facing PBREffectFactory instances. +class PBREffectFactory::Impl +{ +public: + Impl(_In_ ID3D11Device* device) + : mPath{}, + mDevice(device), + mSharing(true), + mForceSRGB(false) + {} + + std::shared_ptr CreateEffect(_In_ IEffectFactory* factory, _In_ const IEffectFactory::EffectInfo& info, _In_opt_ ID3D11DeviceContext* deviceContext); + void CreateTexture(_In_z_ const wchar_t* texture, _In_opt_ ID3D11DeviceContext* deviceContext, _Outptr_ ID3D11ShaderResourceView** textureView); + + void ReleaseCache(); + void SetSharing(bool enabled) { mSharing = enabled; } + void EnableForceSRGB(bool forceSRGB) { mForceSRGB = forceSRGB; } + + static SharedResourcePool instancePool; + + wchar_t mPath[MAX_PATH]; + + ComPtr mDevice; + +private: + typedef std::map< std::wstring, std::shared_ptr > EffectCache; + typedef std::map< std::wstring, ComPtr > TextureCache; + + EffectCache mEffectCache; + TextureCache mTextureCache; + + bool mSharing; + bool mForceSRGB; + + std::mutex mutex; +}; + + +// Global instance pool. +SharedResourcePool PBREffectFactory::Impl::instancePool; + + +_Use_decl_annotations_ +std::shared_ptr PBREffectFactory::Impl::CreateEffect(IEffectFactory* factory, const IEffectFactory::EffectInfo& info, ID3D11DeviceContext* deviceContext) +{ + if (mSharing && info.name && *info.name) + { + auto it = mEffectCache.find(info.name); + if (mSharing && it != mEffectCache.end()) + { + return it->second; + } + } + + auto effect = std::make_shared(mDevice.Get()); + + // We don't use EnableDefaultLighting generally for PBR as it uses Image-Based Lighting instead. + + effect->SetAlpha(info.alpha); + + ComPtr albetoSrv; + if (info.diffuseTexture && *info.diffuseTexture) + { + factory->CreateTexture(info.diffuseTexture, deviceContext, albetoSrv.GetAddressOf()); + } + + ComPtr normalSrv; + if (info.normalTexture && *info.normalTexture) + { + factory->CreateTexture(info.normalTexture, deviceContext, normalSrv.GetAddressOf()); + } + + ComPtr rmaSrv; + if (info.specularTexture && *info.specularTexture) + { + // We use the specular texture for the roughness/metalness/ambient-occlusion texture + factory->CreateTexture(info.specularTexture, deviceContext, rmaSrv.GetAddressOf()); + } + + effect->SetSurfaceTextures(albetoSrv.Get(), normalSrv.Get(), rmaSrv.Get()); + + if (info.emissiveTexture && *info.emissiveTexture) + { + ComPtr srv; + factory->CreateTexture(info.emissiveTexture, deviceContext, srv.GetAddressOf()); + + effect->SetEmissiveTexture(srv.Get()); + } + + if (info.biasedVertexNormals) + { + effect->SetBiasedVertexNormals(true); + } + + if (mSharing && info.name && *info.name) + { + std::lock_guard lock(mutex); + EffectCache::value_type v(info.name, effect); + mEffectCache.insert(v); + } + + return effect; +} + +_Use_decl_annotations_ +void PBREffectFactory::Impl::CreateTexture(const wchar_t* name, ID3D11DeviceContext* deviceContext, ID3D11ShaderResourceView** textureView) +{ + if (!name || !textureView) + throw std::exception("invalid arguments"); + +#if defined(_XBOX_ONE) && defined(_TITLE) + UNREFERENCED_PARAMETER(deviceContext); +#endif + + auto it = mTextureCache.find(name); + + if (mSharing && it != mTextureCache.end()) + { + ID3D11ShaderResourceView* srv = it->second.Get(); + srv->AddRef(); + *textureView = srv; + } + else + { + wchar_t fullName[MAX_PATH] = {}; + wcscpy_s(fullName, mPath); + wcscat_s(fullName, name); + + WIN32_FILE_ATTRIBUTE_DATA fileAttr = {}; + if (!GetFileAttributesExW(fullName, GetFileExInfoStandard, &fileAttr)) + { + // Try Current Working Directory (CWD) + wcscpy_s(fullName, name); + if (!GetFileAttributesExW(fullName, GetFileExInfoStandard, &fileAttr)) + { + DebugTrace("ERROR: PBREffectFactory could not find texture file '%ls'\n", name); + throw std::exception("CreateTexture"); + } + } + + wchar_t ext[_MAX_EXT]; + _wsplitpath_s(name, nullptr, 0, nullptr, 0, nullptr, 0, ext, _MAX_EXT); + + if (_wcsicmp(ext, L".dds") == 0) + { + HRESULT hr = CreateDDSTextureFromFileEx( + mDevice.Get(), fullName, 0, + D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0, + mForceSRGB, nullptr, textureView); + if (FAILED(hr)) + { + DebugTrace("ERROR: CreateDDSTextureFromFile failed (%08X) for '%ls'\n", hr, fullName); + throw std::exception("CreateDDSTextureFromFile"); + } + } + #if !defined(_XBOX_ONE) || !defined(_TITLE) + else if (deviceContext) + { + std::lock_guard lock(mutex); + HRESULT hr = CreateWICTextureFromFileEx( + mDevice.Get(), deviceContext, fullName, 0, + D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0, + mForceSRGB ? WIC_LOADER_FORCE_SRGB : WIC_LOADER_DEFAULT, nullptr, textureView); + if (FAILED(hr)) + { + DebugTrace("ERROR: CreateWICTextureFromFile failed (%08X) for '%ls'\n", hr, fullName); + throw std::exception("CreateWICTextureFromFile"); + } + } + #endif + else + { + HRESULT hr = CreateWICTextureFromFileEx( + mDevice.Get(), fullName, 0, + D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0, 0, + mForceSRGB ? WIC_LOADER_FORCE_SRGB : WIC_LOADER_DEFAULT, nullptr, textureView); + if (FAILED(hr)) + { + DebugTrace("ERROR: CreateWICTextureFromFile failed (%08X) for '%ls'\n", hr, fullName); + throw std::exception("CreateWICTextureFromFile"); + } + } + + if (mSharing && *name && it == mTextureCache.end()) + { + std::lock_guard lock(mutex); + TextureCache::value_type v(name, *textureView); + mTextureCache.insert(v); + } + } +} + +void PBREffectFactory::Impl::ReleaseCache() +{ + std::lock_guard lock(mutex); + mEffectCache.clear(); + mTextureCache.clear(); +} + + + +//-------------------------------------------------------------------------------------- +// PBREffectFactory +//-------------------------------------------------------------------------------------- + +PBREffectFactory::PBREffectFactory(_In_ ID3D11Device* device) + : pImpl(Impl::instancePool.DemandCreate(device)) +{ +} + +PBREffectFactory::~PBREffectFactory() +{ +} + + +PBREffectFactory::PBREffectFactory(PBREffectFactory&& moveFrom) noexcept + : pImpl(std::move(moveFrom.pImpl)) +{ +} + +PBREffectFactory& PBREffectFactory::operator= (PBREffectFactory&& moveFrom) noexcept +{ + pImpl = std::move(moveFrom.pImpl); + return *this; +} + +_Use_decl_annotations_ +std::shared_ptr PBREffectFactory::CreateEffect(const EffectInfo& info, ID3D11DeviceContext* deviceContext) +{ + return pImpl->CreateEffect(this, info, deviceContext); +} + +_Use_decl_annotations_ +void PBREffectFactory::CreateTexture(const wchar_t* name, ID3D11DeviceContext* deviceContext, ID3D11ShaderResourceView** textureView) +{ + return pImpl->CreateTexture(name, deviceContext, textureView); +} + +void PBREffectFactory::ReleaseCache() +{ + pImpl->ReleaseCache(); +} + +void PBREffectFactory::SetSharing(bool enabled) +{ + pImpl->SetSharing(enabled); +} + +void PBREffectFactory::EnableForceSRGB(bool forceSRGB) +{ + pImpl->EnableForceSRGB(forceSRGB); +} + +void PBREffectFactory::SetDirectory(_In_opt_z_ const wchar_t* path) +{ + if (path && *path != 0) + { + wcscpy_s(pImpl->mPath, path); + size_t len = wcsnlen(pImpl->mPath, MAX_PATH); + if (len > 0 && len < (MAX_PATH - 1)) + { + // Ensure it has a trailing slash + if (pImpl->mPath[len - 1] != L'\\') + { + pImpl->mPath[len] = L'\\'; + pImpl->mPath[len + 1] = 0; + } + } + } + else + *pImpl->mPath = 0; +} + +ID3D11Device* PBREffectFactory::GetDevice() const +{ + return pImpl->mDevice.Get(); +} diff --git a/DirectXTK/Src/SDKMesh.h b/DirectXTK/Src/SDKMesh.h index a6b5d78d..796e0615 100644 --- a/DirectXTK/Src/SDKMesh.h +++ b/DirectXTK/Src/SDKMesh.h @@ -106,6 +106,8 @@ namespace DXUT // Hard Defines for the various structures //-------------------------------------------------------------------------------------- const uint32_t SDKMESH_FILE_VERSION = 101; + const uint32_t SDKMESH_FILE_VERSION_V2 = 200; + const uint32_t MAX_VERTEX_ELEMENTS = 32; const uint32_t MAX_VERTEX_STREAMS = 16; const uint32_t MAX_FRAME_NAME = 100; @@ -189,10 +191,7 @@ namespace DXUT uint64_t SizeBytes; uint64_t StrideBytes; D3DVERTEXELEMENT9 Decl[MAX_VERTEX_ELEMENTS]; - union - { - uint64_t DataOffset; - }; + uint64_t DataOffset; }; struct SDKMESH_INDEX_BUFFER_HEADER @@ -200,10 +199,7 @@ namespace DXUT uint64_t NumIndices; uint64_t SizeBytes; uint32_t IndexType; - union - { - uint64_t DataOffset; - }; + uint64_t DataOffset; }; struct SDKMESH_MESH @@ -270,31 +266,34 @@ namespace DXUT DirectX::XMFLOAT4 Emissive; float Power; - union - { - uint64_t Force64_1; //Force the union to 64bits - }; - union - { - uint64_t Force64_2; //Force the union to 64bits - }; - union - { - uint64_t Force64_3; //Force the union to 64bits - }; + uint64_t Force64_1; + uint64_t Force64_2; + uint64_t Force64_3; + uint64_t Force64_4; + uint64_t Force64_5; + uint64_t Force64_6; + }; - union - { - uint64_t Force64_4; //Force the union to 64bits - }; - union - { - uint64_t Force64_5; //Force the union to 64bits - }; - union - { - uint64_t Force64_6; //Force the union to 64bits - }; + struct SDKMESH_MATERIAL_V2 + { + char Name[MAX_MATERIAL_NAME]; + + // PBR materials + char RMATexture[MAX_TEXTURE_NAME]; + char AlbetoTexture[MAX_TEXTURE_NAME]; + char NormalTexture[MAX_TEXTURE_NAME]; + char EmissiveTexture[MAX_TEXTURE_NAME]; + + float Alpha; + + char Reserved[60]; + + uint64_t Force64_1; + uint64_t Force64_2; + uint64_t Force64_3; + uint64_t Force64_4; + uint64_t Force64_5; + uint64_t Force64_6; }; struct SDKANIMATION_FILE_HEADER @@ -319,11 +318,7 @@ namespace DXUT struct SDKANIMATION_FRAME_DATA { char FrameName[MAX_FRAME_NAME]; - union - { - uint64_t DataOffset; - SDKANIMATION_DATA* pAnimationData; - }; + uint64_t DataOffset; }; #pragma pack(pop) @@ -338,6 +333,7 @@ static_assert( sizeof(DXUT::SDKMESH_MESH) == 224, "SDK Mesh structure size incor static_assert( sizeof(DXUT::SDKMESH_SUBSET) == 144, "SDK Mesh structure size incorrect" ); static_assert( sizeof(DXUT::SDKMESH_FRAME) == 184, "SDK Mesh structure size incorrect" ); static_assert( sizeof(DXUT::SDKMESH_MATERIAL) == 1256, "SDK Mesh structure size incorrect" ); +static_assert( sizeof(DXUT::SDKMESH_MATERIAL_V2) == sizeof(DXUT::SDKMESH_MATERIAL), "SDK Mesh structure size incorrect" ); static_assert( sizeof(DXUT::SDKANIMATION_FILE_HEADER) == 40, "SDK Mesh structure size incorrect" ); static_assert( sizeof(DXUT::SDKANIMATION_DATA) == 40, "SDK Mesh structure size incorrect" ); static_assert( sizeof(DXUT::SDKANIMATION_FRAME_DATA) == 112, "SDK Mesh structure size incorrect" ); diff --git a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTx.inc b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTx.inc index b6ed8cef..3a5ade32 100644 --- a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTx.inc +++ b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTx.inc @@ -52,10 +52,13 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r2.xyzw, v0.xyxx, t2.xyzw, s0 -mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) mul r0.xyz, r0.xyzx, r2.yyyy mad r0.xyz, r2.xxxx, r1.xyzx, r0.xyzx -mad r0.xyz, r2.zzzz, v2.xyzx, r0.xyzx +dp2 r0.w, r2.xyxx, r2.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w +mad r0.xyz, r0.wwww, v2.xyzx, r0.xyzx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx @@ -112,11 +115,11 @@ ret const BYTE NormalMapEffect_PSNormalPixelLightingTx[] = { - 68, 88, 66, 67, 29, 193, - 205, 58, 29, 58, 113, 152, - 35, 87, 207, 214, 163, 17, - 142, 121, 1, 0, 0, 0, - 168, 10, 0, 0, 3, 0, + 68, 88, 66, 67, 125, 9, + 143, 123, 193, 191, 171, 56, + 222, 200, 84, 36, 96, 49, + 11, 177, 1, 0, 0, 0, + 248, 10, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -150,8 +153,8 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTx[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 192, 9, 0, 0, 64, 0, - 0, 0, 112, 2, 0, 0, + 16, 10, 0, 0, 64, 0, + 0, 0, 132, 2, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 14, 0, 0, 0, 90, 0, @@ -276,16 +279,16 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTx[] = 0, 0, 70, 126, 16, 0, 2, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 15, 114, 0, + 50, 0, 0, 15, 50, 0, 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 70, 0, 16, 0, 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 64, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, - 128, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, @@ -296,275 +299,288 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTx[] = 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 0, 0, 0, 0, 166, 10, - 16, 0, 2, 0, 0, 0, - 70, 18, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 15, 0, 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 68, 0, 0, 5, + 0, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 0, 0, 0, 0, 246, 15, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 75, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 18, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 9, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 18, 16, 128, - 65, 0, 0, 0, 1, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 12, 0, - 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 68, 0, 0, 5, 130, 0, + 0, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, + 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 16, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 18, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 1, 0, + 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 2, 0, 0, 0, 246, 15, + 0, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 2, 0, - 0, 0, 16, 0, 0, 7, - 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 2, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 11, 114, 0, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 0, - 0, 0, 0, 0, 70, 130, - 32, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 4, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 0, 0, 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 3, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 16, 0, 0, 7, - 34, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 70, 2, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 68, 0, + 3, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 1, 0, 0, 0, + 16, 0, 3, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 16, 0, - 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, + 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 52, 0, 0, 10, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 18, 0, + 0, 0, 0, 0, 52, 0, + 0, 10, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 34, 0, - 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 66, 0, - 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 0, 0, 16, 0, 0, 9, + 18, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 9, + 34, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 9, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 29, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 29, 0, 0, 10, 114, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, - 0, 10, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 1, 0, 0, 10, 114, 0, 16, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 128, 63, 0, 0, 128, 63, + 70, 2, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 47, 0, 0, 5, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 47, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 25, 0, 0, 5, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 56, 0, 0, 8, 114, 0, + 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 143, 32, 0, - 0, 0, 0, 0, 2, 0, - 0, 0, 25, 0, 0, 5, - 114, 0, 16, 0, 1, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 2, 0, - 0, 0, 86, 5, 16, 0, - 1, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 50, 0, - 0, 10, 178, 0, 16, 0, - 1, 0, 0, 0, 6, 0, + 0, 8, 114, 0, 16, 0, + 2, 0, 0, 0, 86, 5, 16, 0, 1, 0, 0, 0, - 70, 136, 32, 0, 0, 0, - 0, 0, 9, 0, 0, 0, - 70, 8, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 10, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 1, 0, 0, 0, + 6, 0, 16, 0, 1, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, 114, 0, 16, 0, 1, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 70, 3, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 8, 114, 0, + 2, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 2, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 2, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 70, 126, - 16, 0, 1, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 14, 16, 0, 2, 0, - 0, 0, 70, 30, 16, 0, - 3, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 242, 0, 16, 0, 2, 0, + 0, 0, 70, 14, 16, 0, + 2, 0, 0, 0, 70, 30, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, - 246, 15, 16, 0, 2, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 3, 0, - 0, 0, 86, 5, 16, 0, - 0, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 50, 0, - 0, 10, 178, 0, 16, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 136, 32, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 70, 8, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, - 70, 136, 32, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 70, 8, 16, 0, 3, 0, - 0, 0, 50, 0, 0, 10, + 70, 130, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 11, 114, 0, 16, 0, 0, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 70, 3, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 11, 114, 0, - 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 1, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 70, 2, + 1, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 246, 15, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 114, 32, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 13, 0, - 0, 0, 246, 15, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 50, 0, - 0, 9, 114, 32, 16, 0, - 0, 0, 0, 0, 246, 31, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 246, 31, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 54, 0, - 0, 5, 130, 32, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 2, 0, 0, 0, - 62, 0, 0, 1 + 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 54, 0, 0, 5, 130, 32, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 62, 0, 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFog.inc b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFog.inc index cae9a06a..7b578209 100644 --- a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFog.inc +++ b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFog.inc @@ -52,10 +52,13 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r2.xyzw, v0.xyxx, t2.xyzw, s0 -mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) mul r0.xyz, r0.xyzx, r2.yyyy mad r0.xyz, r2.xxxx, r1.xyzx, r0.xyzx -mad r0.xyz, r2.zzzz, v2.xyzx, r0.xyzx +dp2 r0.w, r2.xyxx, r2.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w +mad r0.xyz, r0.wwww, v2.xyzx, r0.xyzx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx @@ -110,11 +113,11 @@ ret const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFog[] = { - 68, 88, 66, 67, 79, 36, - 195, 101, 123, 61, 68, 103, - 241, 44, 0, 159, 98, 156, - 129, 201, 1, 0, 0, 0, - 88, 10, 0, 0, 3, 0, + 68, 88, 66, 67, 109, 179, + 3, 31, 41, 29, 24, 198, + 35, 199, 197, 228, 22, 35, + 101, 90, 1, 0, 0, 0, + 168, 10, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -148,8 +151,8 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFog[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 112, 9, 0, 0, 64, 0, - 0, 0, 92, 2, 0, 0, + 192, 9, 0, 0, 64, 0, + 0, 0, 112, 2, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 90, 0, @@ -274,16 +277,16 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFog[] = 0, 0, 70, 126, 16, 0, 2, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 15, 114, 0, + 50, 0, 0, 15, 50, 0, 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 70, 0, 16, 0, 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 64, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, - 128, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, @@ -294,262 +297,275 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFog[] = 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 0, 0, 0, 0, 166, 10, - 16, 0, 2, 0, 0, 0, - 70, 18, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 16, 0, + 0, 0, 0, 0, 15, 0, 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 68, 0, 0, 5, + 0, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 8, 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 0, 0, 0, 0, 246, 15, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 75, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 0, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 18, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 9, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 18, 16, 128, - 65, 0, 0, 0, 1, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 12, 0, - 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 68, 0, 0, 5, 130, 0, + 0, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, + 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 16, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 18, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 12, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 1, 0, + 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 2, 0, 0, 0, 246, 15, + 0, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 2, 0, - 0, 0, 16, 0, 0, 7, - 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 2, 0, 0, 0, + 246, 15, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 11, 114, 0, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 0, - 0, 0, 0, 0, 70, 130, - 32, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 4, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 0, 0, 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 3, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 16, 0, 0, 7, - 34, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 70, 2, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 68, 0, + 3, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 1, 0, 0, 0, + 16, 0, 3, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 16, 0, - 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, + 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 52, 0, 0, 10, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 18, 0, + 0, 0, 0, 0, 52, 0, + 0, 10, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 34, 0, - 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 9, 66, 0, - 16, 0, 2, 0, 0, 0, - 70, 130, 32, 128, 65, 0, + 0, 0, 16, 0, 0, 9, + 18, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 9, + 34, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 9, + 66, 0, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 29, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 29, 0, 0, 10, 114, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, - 0, 10, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 1, 0, 0, 10, 114, 0, 16, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 128, 63, 0, 0, 128, 63, + 70, 2, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 47, 0, 0, 5, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 47, 0, + 1, 0, 0, 0, 246, 143, + 32, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 25, 0, 0, 5, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 56, 0, 0, 8, 114, 0, + 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 143, 32, 0, - 0, 0, 0, 0, 2, 0, - 0, 0, 25, 0, 0, 5, - 114, 0, 16, 0, 1, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 2, 0, - 0, 0, 86, 5, 16, 0, - 1, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 50, 0, - 0, 10, 178, 0, 16, 0, - 1, 0, 0, 0, 6, 0, + 0, 8, 114, 0, 16, 0, + 2, 0, 0, 0, 86, 5, 16, 0, 1, 0, 0, 0, - 70, 136, 32, 0, 0, 0, - 0, 0, 9, 0, 0, 0, - 70, 8, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 10, + 70, 130, 32, 0, 0, 0, + 0, 0, 10, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 1, 0, 0, 0, + 6, 0, 16, 0, 1, 0, + 0, 0, 70, 136, 32, 0, + 0, 0, 0, 0, 9, 0, + 0, 0, 70, 8, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 1, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 11, 0, 0, 0, + 70, 3, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, 114, 0, 16, 0, 1, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 70, 3, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 8, 114, 0, + 2, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 1, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 2, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 69, 0, 0, 9, 242, 0, 16, 0, 2, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, 70, 126, - 16, 0, 1, 0, 0, 0, + 16, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 14, 16, 0, 2, 0, - 0, 0, 70, 30, 16, 0, - 3, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 242, 0, 16, 0, 2, 0, + 0, 0, 70, 14, 16, 0, + 2, 0, 0, 0, 70, 30, + 16, 0, 3, 0, 0, 0, + 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, - 246, 15, 16, 0, 2, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 3, 0, - 0, 0, 86, 5, 16, 0, - 0, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 50, 0, - 0, 10, 178, 0, 16, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 3, 0, 0, 0, 86, 5, + 16, 0, 0, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 7, 0, 0, 0, + 50, 0, 0, 10, 178, 0, + 16, 0, 0, 0, 0, 0, + 6, 0, 16, 0, 0, 0, + 0, 0, 70, 136, 32, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 70, 8, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 166, 10, 16, 0, 0, 0, 0, 0, - 70, 136, 32, 0, 0, 0, - 0, 0, 6, 0, 0, 0, - 70, 8, 16, 0, 3, 0, - 0, 0, 50, 0, 0, 10, + 70, 130, 32, 0, 0, 0, + 0, 0, 8, 0, 0, 0, + 70, 3, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 11, 114, 0, 16, 0, 0, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 70, 3, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 11, 114, 0, - 16, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 32, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 1, 0, - 0, 0, 50, 0, 0, 9, - 114, 32, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 54, 0, 0, 5, - 130, 32, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 2, 0, 0, 0, 62, 0, - 0, 1 + 1, 0, 0, 0, 54, 0, + 0, 5, 130, 32, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 62, 0, 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFogSpec.inc b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFogSpec.inc index 3610fd47..3ef074e3 100644 --- a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFogSpec.inc +++ b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoFogSpec.inc @@ -51,10 +51,13 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r2.xyzw, v0.xyxx, t2.xyzw, s0 -mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) mul r0.xyz, r0.xyzx, r2.yyyy mad r0.xyz, r2.xxxx, r1.xyzx, r0.xyzx -mad r0.xyz, r2.zzzz, v2.xyzx, r0.xyzx +dp2 r0.w, r2.xyxx, r2.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w +mad r0.xyz, r0.wwww, v2.xyzx, r0.xyzx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx @@ -107,11 +110,11 @@ ret const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFogSpec[] = { - 68, 88, 66, 67, 187, 208, - 43, 190, 15, 153, 255, 101, - 99, 233, 48, 180, 159, 117, - 110, 90, 1, 0, 0, 0, - 8, 10, 0, 0, 3, 0, + 68, 88, 66, 67, 197, 173, + 93, 240, 193, 154, 136, 52, + 93, 125, 239, 128, 151, 178, + 10, 221, 1, 0, 0, 0, + 88, 10, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -145,8 +148,8 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFogSpec[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 32, 9, 0, 0, 64, 0, - 0, 0, 72, 2, 0, 0, + 112, 9, 0, 0, 64, 0, + 0, 0, 92, 2, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 13, 0, 0, 0, 90, 0, @@ -269,15 +272,15 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFogSpec[] = 16, 0, 2, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 50, 0, 0, 15, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, + 50, 0, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, - 0, 0, 128, 191, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, @@ -289,250 +292,264 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoFogSpec[] = 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 0, 0, 0, 0, - 166, 10, 16, 0, 2, 0, - 0, 0, 70, 18, 16, 0, - 2, 0, 0, 0, 70, 2, + 15, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 16, 0, 0, 7, 130, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 75, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 0, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 18, + 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 0, 0, - 0, 9, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 18, - 16, 128, 65, 0, 0, 0, - 1, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 0, 0, + 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 11, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, + 70, 18, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 16, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 68, 0, + 1, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, - 1, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 114, 0, 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 1, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 16, 0, - 0, 7, 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 3, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 130, 32, 128, 65, 0, - 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 50, 0, 0, 11, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 3, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, - 16, 0, 3, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 16, 0, - 0, 7, 34, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 16, 0, 0, 7, 66, 0, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 52, 0, - 0, 10, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 52, 0, 0, 10, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 18, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 34, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 66, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 29, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 18, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 34, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 66, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 29, 0, 0, 10, + 0, 0, 1, 0, 0, 10, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 1, 0, 0, 10, 114, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 2, 64, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, - 128, 63, 0, 0, 128, 63, - 0, 0, 0, 0, 56, 0, + 128, 63, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 47, 0, 0, 5, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, + 16, 0, 1, 0, 0, 0, + 246, 143, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 25, 0, 0, 5, 114, 0, + 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 0, 0, + 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 47, 0, 0, 5, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 143, + 56, 0, 0, 8, 114, 0, + 16, 0, 2, 0, 0, 0, + 86, 5, 16, 0, 1, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 10, 0, + 0, 0, 50, 0, 0, 10, + 178, 0, 16, 0, 1, 0, + 0, 0, 6, 0, 16, 0, + 1, 0, 0, 0, 70, 136, 32, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 25, 0, - 0, 5, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 9, 0, 0, 0, 70, 8, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 10, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 11, 0, + 0, 0, 70, 3, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 114, 0, 16, 0, - 2, 0, 0, 0, 86, 5, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, 0, 0, - 0, 0, 10, 0, 0, 0, - 50, 0, 0, 10, 178, 0, - 16, 0, 1, 0, 0, 0, - 6, 0, 16, 0, 1, 0, - 0, 0, 70, 136, 32, 0, - 0, 0, 0, 0, 9, 0, - 0, 0, 70, 8, 16, 0, - 2, 0, 0, 0, 50, 0, - 0, 10, 114, 0, 16, 0, - 1, 0, 0, 0, 166, 10, + 0, 0, 2, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 14, 16, 0, 2, 0, + 0, 0, 70, 30, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 11, 0, 0, 0, - 70, 3, 16, 0, 1, 0, + 246, 15, 16, 0, 2, 0, 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 130, + 114, 0, 16, 0, 3, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 16, + 7, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 0, 0, 0, 0, 6, 0, 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 0, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 14, - 16, 0, 2, 0, 0, 0, - 70, 30, 16, 0, 3, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, - 16, 0, 2, 0, 0, 0, - 56, 0, 0, 8, 114, 0, - 16, 0, 3, 0, 0, 0, - 86, 5, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 7, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 70, 8, 16, 0, 3, 0, 0, 0, 50, 0, 0, 10, - 178, 0, 16, 0, 0, 0, - 0, 0, 6, 0, 16, 0, - 0, 0, 0, 0, 70, 136, + 114, 0, 16, 0, 0, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 70, 8, - 16, 0, 3, 0, 0, 0, - 50, 0, 0, 10, 114, 0, + 8, 0, 0, 0, 70, 3, 16, 0, 0, 0, 0, 0, - 166, 10, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 8, 0, - 0, 0, 70, 3, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 11, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 50, 0, 0, 11, 114, 0, 16, 0, 0, 0, 0, 0, - 70, 130, 32, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, 0, 0, 0, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 50, 0, 0, 9, 114, 32, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 114, 32, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 54, 0, 0, 5, 130, 32, + 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 2, 0, - 0, 0, 62, 0, 0, 1 + 70, 2, 16, 0, 1, 0, + 0, 0, 54, 0, 0, 5, + 130, 32, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 62, 0, + 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoSpec.inc b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoSpec.inc index 85ff83ef..b61ce504 100644 --- a/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoSpec.inc +++ b/DirectXTK/Src/Shaders/Compiled/NormalMapEffect_PSNormalPixelLightingTxNoSpec.inc @@ -51,10 +51,13 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r2.xyzw, v0.xyxx, t2.xyzw, s0 -mad r2.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) mul r0.xyz, r0.xyzx, r2.yyyy mad r0.xyz, r2.xxxx, r1.xyzx, r0.xyzx -mad r0.xyz, r2.zzzz, v2.xyzx, r0.xyzx +dp2 r0.w, r2.xyxx, r2.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w +mad r0.xyz, r0.wwww, v2.xyzx, r0.xyzx dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx @@ -109,11 +112,11 @@ ret const BYTE NormalMapEffect_PSNormalPixelLightingTxNoSpec[] = { - 68, 88, 66, 67, 208, 21, - 231, 161, 200, 180, 76, 46, - 135, 243, 231, 217, 182, 54, - 43, 236, 1, 0, 0, 0, - 88, 10, 0, 0, 3, 0, + 68, 88, 66, 67, 125, 131, + 101, 159, 54, 152, 239, 47, + 185, 228, 130, 208, 161, 246, + 27, 14, 1, 0, 0, 0, + 168, 10, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -147,8 +150,8 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoSpec[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 112, 9, 0, 0, 64, 0, - 0, 0, 92, 2, 0, 0, + 192, 9, 0, 0, 64, 0, + 0, 0, 112, 2, 0, 0, 89, 0, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 14, 0, 0, 0, 90, 0, @@ -271,15 +274,15 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoSpec[] = 16, 0, 2, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 50, 0, 0, 15, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, + 50, 0, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, 2, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, - 0, 0, 128, 191, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, @@ -291,264 +294,277 @@ const BYTE NormalMapEffect_PSNormalPixelLightingTxNoSpec[] = 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 9, 114, 0, + 15, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 166, 10, 16, 0, 2, 0, - 0, 0, 70, 18, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 7, 130, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 70, 0, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 8, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 75, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 0, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 18, + 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 0, 0, - 0, 9, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 18, - 16, 128, 65, 0, 0, 0, - 1, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 0, 0, + 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 11, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, + 70, 18, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 70, 130, 32, 0, 0, 0, + 0, 0, 12, 0, 0, 0, 16, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 68, 0, + 1, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, - 1, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 114, 0, 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 1, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 16, 0, - 0, 7, 18, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 3, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 16, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 130, 32, 128, 65, 0, - 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 50, 0, + 0, 0, 0, 0, 50, 0, 0, 11, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 3, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 130, 32, 128, 65, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, - 16, 0, 3, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 16, 0, - 0, 7, 34, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 16, 0, 0, 7, 66, 0, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 52, 0, - 0, 10, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 0, 0, + 16, 0, 0, 0, 0, 0, + 52, 0, 0, 10, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 18, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 34, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 4, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 9, - 66, 0, 16, 0, 2, 0, - 0, 0, 70, 130, 32, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 29, 0, 0, 10, - 114, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 18, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 34, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 4, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 16, 0, + 0, 9, 66, 0, 16, 0, + 2, 0, 0, 0, 70, 130, + 32, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 29, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 10, 114, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 2, 64, 0, 0, - 0, 0, 128, 63, 0, 0, - 128, 63, 0, 0, 128, 63, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 7, + 0, 0, 1, 0, 0, 10, 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 47, 0, 0, 5, 114, 0, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 143, - 32, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 25, 0, - 0, 5, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 47, 0, 0, 5, + 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 114, 0, 16, 0, - 2, 0, 0, 0, 86, 5, - 16, 0, 1, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 10, 0, 0, 0, - 50, 0, 0, 10, 178, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 6, 0, 16, 0, 1, 0, - 0, 0, 70, 136, 32, 0, - 0, 0, 0, 0, 9, 0, - 0, 0, 70, 8, 16, 0, - 2, 0, 0, 0, 50, 0, - 0, 10, 114, 0, 16, 0, - 1, 0, 0, 0, 166, 10, + 246, 143, 32, 0, 0, 0, + 0, 0, 2, 0, 0, 0, + 25, 0, 0, 5, 114, 0, 16, 0, 1, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 11, 0, 0, 0, - 70, 3, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 130, - 32, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 16, - 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 0, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 14, - 16, 0, 2, 0, 0, 0, - 70, 30, 16, 0, 3, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, - 16, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, 56, 0, 0, 8, 114, 0, - 16, 0, 3, 0, 0, 0, - 86, 5, 16, 0, 0, 0, + 16, 0, 2, 0, 0, 0, + 86, 5, 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 50, 0, 0, 10, - 178, 0, 16, 0, 0, 0, + 178, 0, 16, 0, 1, 0, 0, 0, 6, 0, 16, 0, - 0, 0, 0, 0, 70, 136, + 1, 0, 0, 0, 70, 136, 32, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 70, 8, - 16, 0, 3, 0, 0, 0, + 9, 0, 0, 0, 70, 8, + 16, 0, 2, 0, 0, 0, 50, 0, 0, 10, 114, 0, - 16, 0, 0, 0, 0, 0, - 166, 10, 16, 0, 0, 0, + 16, 0, 1, 0, 0, 0, + 166, 10, 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, - 0, 0, 0, 0, 8, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 70, 3, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 11, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, 70, 130, 32, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 50, 0, 0, 9, 114, 0, + 0, 0, 2, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 50, 0, 0, 11, 114, 0, + 56, 0, 0, 7, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 14, 16, 0, 2, 0, + 0, 0, 70, 30, 16, 0, + 3, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 70, 130, 32, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 246, 15, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 8, + 114, 0, 16, 0, 3, 0, + 0, 0, 86, 5, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 50, 0, + 0, 10, 178, 0, 16, 0, + 0, 0, 0, 0, 6, 0, + 16, 0, 0, 0, 0, 0, + 70, 136, 32, 0, 0, 0, + 0, 0, 6, 0, 0, 0, + 70, 8, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 0, 0, + 0, 0, 166, 10, 16, 0, + 0, 0, 0, 0, 70, 130, + 32, 0, 0, 0, 0, 0, + 8, 0, 0, 0, 70, 3, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 11, 114, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 9, - 114, 32, 16, 0, 0, 0, - 0, 0, 246, 31, 16, 0, - 1, 0, 0, 0, 70, 2, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 130, 32, 0, + 0, 0, 0, 0, 13, 0, + 0, 0, 246, 15, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 114, 32, 16, 0, + 0, 0, 0, 0, 246, 31, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 54, 0, 0, 5, - 130, 32, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 2, 0, 0, 0, 62, 0, - 0, 1 + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 130, 32, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 62, 0, 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTextured.inc b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTextured.inc index f9b852f0..ab9eb5ba 100644 --- a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTextured.inc +++ b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTextured.inc @@ -38,30 +38,33 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r1.xyzw, v0.xyxx, t1.xyzw, s0 -mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r0.w, r1.xyxx, r1.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w deriv_rtx r2.xyz, v1.yzxy deriv_rty r3.xyz, v1.zxyz -deriv_rtx r4.xy, v0.xyxx -deriv_rty r4.zw, v0.xxxy +deriv_rtx r1.zw, v0.xxxy +deriv_rty r4.xy, v0.xyxx mul r5.xyz, r2.xyzx, r3.yzxy mad r5.xyz, r2.zxyz, r3.zxyz, -r5.xyzx mul r6.xyz, r3.xyzx, r5.zxyz mad r3.xyz, r3.zxyz, r5.xyzx, -r6.xyzx mul r6.xyz, r2.xyzx, r5.xyzx mad r2.xyz, r5.zxyz, r2.yzxy, -r6.xyzx -mul r5.xyz, r2.xyzx, r4.zzzz -mad r5.xyz, r4.xxxx, r3.xyzx, r5.xyzx -dp3 r0.w, r5.xyzx, r5.xyzx -rsq r0.w, r0.w -mul r5.xyz, r0.wwww, r5.xyzx -mul r2.xyz, r2.xyzx, r4.wwww -mad r2.xyz, r4.yyyy, r3.xyzx, r2.xyzx -dp3 r0.w, r2.xyzx, r2.xyzx -rsq r0.w, r0.w -mul r2.xyz, r0.wwww, r2.xyzx -mul r2.xyz, r1.yyyy, r2.xyzx -mad r1.xyw, r1.xxxx, r5.xyxz, r2.xyxz -mad r1.xyz, r1.zzzz, v2.xyzx, r1.xywx +mul r4.xzw, r2.xxyz, r4.xxxx +mad r4.xzw, r1.zzzz, r3.xxyz, r4.xxzw +dp3 r1.z, r4.xzwx, r4.xzwx +rsq r1.z, r1.z +mul r4.xzw, r1.zzzz, r4.xxzw +mul r2.xyz, r2.xyzx, r4.yyyy +mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx +dp3 r1.z, r2.xyzx, r2.xyzx +rsq r1.z, r1.z +mul r2.xyz, r1.zzzz, r2.xyzx +mul r1.yzw, r1.yyyy, r2.xxyz +mad r1.xyz, r1.xxxx, r4.xzwx, r1.yzwy +mad r1.xyz, r0.wwww, v2.xyzx, r1.xyzx dp3 r0.w, r1.xyzx, r1.xyzx rsq r0.w, r0.w mul r1.xyz, r0.wwww, r1.xyzx @@ -143,11 +146,11 @@ ret const BYTE PBREffect_PSTextured[] = { - 68, 88, 66, 67, 149, 134, - 121, 82, 42, 199, 26, 223, - 64, 149, 100, 83, 119, 27, - 200, 94, 1, 0, 0, 0, - 52, 14, 0, 0, 3, 0, + 68, 88, 66, 67, 214, 112, + 166, 9, 9, 120, 79, 239, + 228, 15, 192, 79, 163, 110, + 234, 57, 1, 0, 0, 0, + 132, 14, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -181,8 +184,8 @@ const BYTE PBREffect_PSTextured[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 76, 13, 0, 0, 64, 0, - 0, 0, 83, 3, 0, 0, + 156, 13, 0, 0, 64, 0, + 0, 0, 103, 3, 0, 0, 89, 8, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 24, 0, 0, 0, 90, 0, @@ -237,326 +240,400 @@ const BYTE PBREffect_PSTextured[] = 0, 0, 70, 126, 16, 0, 1, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, - 50, 0, 0, 15, 114, 0, + 50, 0, 0, 15, 50, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 70, 0, 16, 0, 1, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 64, + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, - 128, 191, 0, 0, 0, 0, - 11, 0, 0, 5, 114, 0, - 16, 0, 2, 0, 0, 0, - 150, 20, 16, 0, 1, 0, - 0, 0, 12, 0, 0, 5, - 114, 0, 16, 0, 3, 0, - 0, 0, 38, 25, 16, 0, - 1, 0, 0, 0, 11, 0, - 0, 5, 50, 0, 16, 0, - 4, 0, 0, 0, 70, 16, + 0, 0, 0, 0, 0, 0, + 15, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 12, 0, 0, 5, 194, 0, - 16, 0, 4, 0, 0, 0, - 6, 20, 16, 0, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 5, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 150, 4, - 16, 0, 3, 0, 0, 0, - 50, 0, 0, 10, 114, 0, - 16, 0, 5, 0, 0, 0, - 38, 9, 16, 0, 2, 0, - 0, 0, 38, 9, 16, 0, - 3, 0, 0, 0, 70, 2, + 70, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 8, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 128, 65, 0, 0, 0, - 5, 0, 0, 0, 56, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 75, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 11, 0, 0, 5, + 114, 0, 16, 0, 2, 0, + 0, 0, 150, 20, 16, 0, + 1, 0, 0, 0, 12, 0, + 0, 5, 114, 0, 16, 0, + 3, 0, 0, 0, 38, 25, + 16, 0, 1, 0, 0, 0, + 11, 0, 0, 5, 194, 0, + 16, 0, 1, 0, 0, 0, + 6, 20, 16, 0, 0, 0, + 0, 0, 12, 0, 0, 5, + 50, 0, 16, 0, 4, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, - 6, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, - 38, 9, 16, 0, 5, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 150, 4, 16, 0, 3, 0, 0, 0, 50, 0, 0, 10, - 114, 0, 16, 0, 3, 0, + 114, 0, 16, 0, 5, 0, 0, 0, 38, 9, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, + 2, 0, 0, 0, 38, 9, + 16, 0, 3, 0, 0, 0, 70, 2, 16, 128, 65, 0, - 0, 0, 6, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 6, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 38, 9, 16, 0, 5, 0, 0, 0, 50, 0, 0, 10, 114, 0, 16, 0, - 2, 0, 0, 0, 38, 9, - 16, 0, 5, 0, 0, 0, - 150, 4, 16, 0, 2, 0, + 3, 0, 0, 0, 38, 9, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 5, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 5, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 166, 10, - 16, 0, 4, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 5, 0, 0, 0, - 6, 0, 16, 0, 4, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 5, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, + 50, 0, 0, 10, 114, 0, + 16, 0, 2, 0, 0, 0, + 38, 9, 16, 0, 5, 0, + 0, 0, 150, 4, 16, 0, 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 6, 0, 0, 0, 56, 0, + 0, 7, 210, 0, 16, 0, + 4, 0, 0, 0, 6, 9, 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 4, 0, + 6, 0, 16, 0, 4, 0, 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 2, 0, - 0, 0, 86, 5, 16, 0, - 4, 0, 0, 0, 70, 2, + 210, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 9, 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 6, 14, 16, 0, 4, 0, 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 66, 0, 16, 0, 1, 0, + 0, 0, 134, 3, 16, 0, + 4, 0, 0, 0, 134, 3, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 66, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 2, 0, - 0, 0, 246, 15, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, + 210, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 1, 0, 0, 0, 6, 14, + 16, 0, 4, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, 0, 0, - 86, 5, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 50, 0, - 0, 9, 178, 0, 16, 0, - 1, 0, 0, 0, 6, 0, - 16, 0, 1, 0, 0, 0, - 70, 8, 16, 0, 5, 0, - 0, 0, 70, 8, 16, 0, - 2, 0, 0, 0, 50, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 86, 5, 16, 0, + 4, 0, 0, 0, 50, 0, 0, 9, 114, 0, 16, 0, - 1, 0, 0, 0, 166, 10, - 16, 0, 1, 0, 0, 0, - 70, 18, 16, 0, 2, 0, - 0, 0, 70, 3, 16, 0, - 1, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 2, 0, 0, 0, 246, 15, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 70, 2, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 246, 15, + 2, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, + 226, 0, 16, 0, 1, 0, + 0, 0, 86, 5, 16, 0, + 1, 0, 0, 0, 6, 9, + 16, 0, 2, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 1, 0, 0, 0, + 6, 0, 16, 0, 1, 0, + 0, 0, 134, 3, 16, 0, + 4, 0, 0, 0, 150, 7, + 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, + 0, 0, 70, 18, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, - 0, 0, 69, 0, 0, 9, - 242, 0, 16, 0, 2, 0, - 0, 0, 70, 16, 16, 0, - 0, 0, 0, 0, 70, 126, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 0, 96, 16, 0, 0, 0, - 0, 0, 69, 0, 0, 9, - 242, 0, 16, 0, 3, 0, - 0, 0, 70, 16, 16, 0, - 0, 0, 0, 0, 70, 126, - 16, 0, 2, 0, 0, 0, - 0, 96, 16, 0, 0, 0, - 0, 0, 16, 32, 0, 7, - 130, 0, 16, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, + 1, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 2, 0, 0, 0, 70, 16, 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 130, 0, + 70, 126, 16, 0, 0, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 3, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 2, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 16, 32, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 26, 0, 16, 0, 3, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 130, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 50, 0, - 0, 10, 114, 0, 16, 0, - 4, 0, 0, 0, 166, 10, + 3, 0, 0, 0, 26, 0, 16, 0, 3, 0, 0, 0, - 70, 2, 16, 128, 65, 0, - 0, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 4, 0, - 0, 0, 6, 0, 16, 0, - 3, 0, 0, 0, 70, 2, + 50, 0, 0, 10, 114, 0, 16, 0, 4, 0, 0, 0, - 0, 0, 0, 10, 114, 0, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 2, 64, 0, 0, - 10, 215, 35, 189, 10, 215, - 35, 189, 10, 215, 35, 189, - 0, 0, 0, 0, 50, 0, - 0, 12, 114, 0, 16, 0, - 2, 0, 0, 0, 166, 10, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 2, 64, 0, 0, - 10, 215, 35, 61, 10, 215, - 35, 61, 10, 215, 35, 61, - 0, 0, 0, 0, 56, 0, + 166, 10, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, - 5, 0, 0, 0, 6, 0, + 4, 0, 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 0, 0, 0, 7, - 66, 0, 16, 0, 3, 0, - 0, 0, 26, 0, 16, 0, + 70, 2, 16, 0, 4, 0, + 0, 0, 0, 0, 0, 10, + 114, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 2, 64, + 0, 0, 10, 215, 35, 189, + 10, 215, 35, 189, 10, 215, + 35, 189, 0, 0, 0, 0, + 50, 0, 0, 12, 114, 0, + 16, 0, 2, 0, 0, 0, + 166, 10, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 2, 64, + 0, 0, 10, 215, 35, 61, + 10, 215, 35, 61, 10, 215, + 35, 61, 0, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 5, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 0, 0, + 0, 7, 66, 0, 16, 0, 3, 0, 0, 0, 26, 0, 16, 0, 3, 0, 0, 0, - 0, 0, 0, 8, 130, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 130, 0, 16, 0, + 3, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 128, 65, 0, - 0, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 56, 0, 0, 7, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 130, 0, + 3, 0, 0, 0, 58, 0, 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 3, 0, + 56, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 3, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 3, 0, - 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 3, 0, - 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 50, 0, 0, 9, 130, 0, + 3, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 191, - 50, 0, 0, 13, 114, 0, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 128, 65, 0, - 0, 0, 2, 0, 0, 0, - 6, 0, 16, 0, 3, 0, - 0, 0, 2, 64, 0, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 191, 50, 0, 0, 13, + 114, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, - 128, 63, 0, 0, 128, 63, - 0, 0, 0, 0, 56, 0, - 0, 7, 18, 0, 16, 0, - 3, 0, 0, 0, 58, 0, + 128, 63, 0, 0, 0, 0, + 56, 0, 0, 7, 18, 0, 16, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 62, 54, 0, 0, 8, - 114, 0, 16, 0, 6, 0, - 0, 0, 2, 64, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 62, 54, 0, + 0, 8, 114, 0, 16, 0, + 6, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, - 0, 5, 130, 0, 16, 0, - 4, 0, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, - 48, 0, 0, 1, 33, 0, - 0, 7, 130, 0, 16, 0, - 5, 0, 0, 0, 58, 0, + 54, 0, 0, 5, 130, 0, 16, 0, 4, 0, 0, 0, - 1, 64, 0, 0, 3, 0, - 0, 0, 3, 0, 4, 3, - 58, 0, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 15, - 130, 0, 16, 0, 5, 0, + 1, 64, 0, 0, 0, 0, + 0, 0, 48, 0, 0, 1, + 33, 0, 0, 7, 130, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 3, 0, 0, 0, 3, 0, + 4, 3, 58, 0, 16, 0, + 5, 0, 0, 0, 16, 0, + 0, 15, 130, 0, 16, 0, + 5, 0, 0, 0, 70, 130, + 32, 134, 65, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 70, 130, + 32, 134, 65, 0, 0, 0, + 0, 0, 0, 0, 16, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 5, 0, 0, 0, + 56, 0, 0, 11, 114, 0, + 16, 0, 7, 0, 0, 0, + 246, 15, 16, 0, 5, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, + 0, 0, 50, 0, 0, 13, + 114, 0, 16, 0, 8, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 5, 0, - 0, 0, 58, 0, 16, 0, - 5, 0, 0, 0, 56, 0, - 0, 11, 114, 0, 16, 0, - 7, 0, 0, 0, 246, 15, + 0, 0, 246, 15, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 16, 0, 0, 7, 130, 0, 16, 0, 5, 0, 0, 0, - 70, 130, 32, 134, 65, 0, - 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 58, 0, - 16, 0, 4, 0, 0, 0, - 50, 0, 0, 13, 114, 0, + 70, 2, 16, 0, 8, 0, + 0, 0, 70, 2, 16, 0, + 8, 0, 0, 0, 68, 0, + 0, 5, 130, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 5, 0, 0, 0, + 56, 0, 0, 7, 114, 0, 16, 0, 8, 0, 0, 0, - 70, 130, 32, 134, 65, 0, - 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 58, 0, - 16, 0, 4, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 16, 0, + 8, 0, 0, 0, 16, 32, 0, 7, 130, 0, 16, 0, 5, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 5, 0, - 0, 0, 58, 0, 16, 0, - 5, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 8, 0, 0, 0, 246, 15, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 8, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 7, 0, 0, 0, 16, 32, 0, 7, - 130, 0, 16, 0, 5, 0, + 130, 0, 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, + 7, 0, 0, 0, 70, 2, + 16, 0, 8, 0, 0, 0, + 16, 32, 0, 7, 18, 0, 16, 0, 7, 0, 0, 0, - 16, 32, 0, 7, 130, 0, - 16, 0, 6, 0, 0, 0, - 70, 2, 16, 0, 7, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 16, 32, + 8, 0, 0, 0, 56, 0, + 0, 7, 34, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 6, 0, + 0, 0, 50, 0, 0, 9, + 66, 0, 16, 0, 7, 0, + 0, 0, 26, 0, 16, 0, + 7, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 0, 191, 0, 0, 0, 8, + 130, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 5, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 8, 0, + 8, 0, 0, 0, 58, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 7, 0, 0, 0, 56, 0, 0, 7, - 34, 0, 16, 0, 7, 0, + 18, 0, 16, 0, 8, 0, + 0, 0, 10, 0, 16, 0, + 8, 0, 0, 0, 10, 0, + 16, 0, 8, 0, 0, 0, + 56, 0, 0, 7, 130, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 8, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, + 7, 0, 0, 0, 42, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 66, 0, 16, 0, + 7, 0, 0, 0, 42, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 7, 0, 0, 0, + 10, 0, 16, 0, 7, 0, + 0, 0, 50, 0, 0, 9, + 18, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 82, 0, 16, 0, 7, 0, + 0, 0, 6, 2, 16, 0, + 7, 0, 0, 0, 6, 3, + 16, 0, 7, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 7, 0, 0, 0, + 10, 0, 16, 0, 7, 0, + 0, 0, 1, 64, 0, 0, + 219, 15, 73, 64, 52, 0, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 189, 55, + 134, 53, 14, 0, 0, 7, + 18, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 0, - 6, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, - 50, 0, 0, 9, 66, 0, + 3, 0, 0, 0, 10, 0, 16, 0, 7, 0, 0, 0, - 26, 0, 16, 0, 7, 0, - 0, 0, 42, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 0, 191, 0, 0, 0, 8, 130, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 128, 65, 0, - 0, 0, 5, 0, 0, 0, + 0, 0, 6, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 8, 0, @@ -573,180 +650,120 @@ const BYTE PBREffect_PSTextured[] = 16, 0, 7, 0, 0, 0, 10, 0, 16, 0, 8, 0, 0, 0, 50, 0, 0, 9, - 130, 0, 16, 0, 7, 0, - 0, 0, 42, 0, 16, 0, - 7, 0, 0, 0, 58, 0, - 16, 0, 7, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 50, 0, 0, 9, - 66, 0, 16, 0, 7, 0, - 0, 0, 42, 0, 16, 0, - 7, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 56, 0, 0, 7, - 18, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 50, 0, 0, 9, 18, 0, + 114, 0, 16, 0, 8, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 246, 15, 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 10, + 130, 0, 16, 0, 6, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 6, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 56, 0, 0, 7, 82, 0, - 16, 0, 7, 0, 0, 0, - 6, 2, 16, 0, 7, 0, - 0, 0, 6, 3, 16, 0, - 7, 0, 0, 0, 56, 0, - 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 1, 64, 0, 0, 219, 15, - 73, 64, 52, 0, 0, 7, - 18, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 1, 64, - 0, 0, 189, 55, 134, 53, - 14, 0, 0, 7, 18, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 0, 0, - 0, 8, 130, 0, 16, 0, - 7, 0, 0, 0, 58, 0, - 16, 128, 65, 0, 0, 0, 6, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, - 56, 0, 0, 7, 18, 0, - 16, 0, 8, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 7, 0, 0, 0, 56, 0, - 0, 7, 18, 0, 16, 0, - 8, 0, 0, 0, 10, 0, - 16, 0, 8, 0, 0, 0, - 10, 0, 16, 0, 8, 0, - 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 7, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 6, 0, 0, 0, + 10, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 8, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 8, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 246, 15, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 50, 0, 0, 10, 130, 0, + 6, 0, 0, 0, 26, 0, + 16, 0, 7, 0, 0, 0, + 14, 0, 0, 10, 130, 0, 16, 0, 6, 0, 0, 0, - 58, 0, 16, 128, 65, 0, - 0, 0, 6, 0, 0, 0, - 58, 0, 16, 0, 6, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 50, 0, - 0, 9, 130, 0, 16, 0, - 6, 0, 0, 0, 10, 0, - 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 6, 0, - 0, 0, 26, 0, 16, 0, - 7, 0, 0, 0, 14, 0, - 0, 10, 130, 0, 16, 0, - 6, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 128, 63, - 0, 0, 128, 63, 0, 0, + 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, - 58, 0, 16, 0, 6, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 58, 0, 16, 0, + 6, 0, 0, 0, 56, 0, + 0, 7, 178, 0, 16, 0, + 7, 0, 0, 0, 6, 0, + 16, 0, 7, 0, 0, 0, + 70, 8, 16, 0, 8, 0, 0, 0, 56, 0, 0, 7, 178, 0, 16, 0, 7, 0, - 0, 0, 6, 0, 16, 0, - 7, 0, 0, 0, 70, 8, - 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 178, 0, - 16, 0, 7, 0, 0, 0, - 246, 15, 16, 0, 6, 0, - 0, 0, 70, 12, 16, 0, - 7, 0, 0, 0, 56, 0, - 0, 10, 114, 0, 16, 0, - 8, 0, 0, 0, 246, 15, - 16, 0, 5, 0, 0, 0, - 70, 130, 32, 6, 0, 0, - 0, 0, 19, 0, 0, 0, - 58, 0, 16, 0, 4, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 4, 0, 0, 0, 166, 10, - 16, 0, 7, 0, 0, 0, - 70, 3, 16, 0, 7, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 6, 0, - 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 70, 2, + 0, 0, 246, 15, 16, 0, + 6, 0, 0, 0, 70, 12, 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 6, 0, - 0, 0, 30, 0, 0, 7, - 130, 0, 16, 0, 4, 0, + 56, 0, 0, 10, 114, 0, + 16, 0, 8, 0, 0, 0, + 246, 15, 16, 0, 5, 0, + 0, 0, 70, 130, 32, 6, + 0, 0, 0, 0, 19, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 1, 64, - 0, 0, 1, 0, 0, 0, - 22, 0, 0, 1, 69, 0, - 0, 9, 242, 0, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 70, 126, 16, 0, 5, 0, - 0, 0, 0, 96, 16, 0, - 1, 0, 0, 0, 50, 0, + 4, 0, 0, 0, 50, 0, 0, 9, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, + 7, 0, 0, 0, 70, 2, 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 7, 0, + 0, 0, 70, 3, 16, 0, + 7, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 8, 0, 0, 0, 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 6, 0, 0, 0, 43, 0, - 0, 6, 130, 0, 16, 0, - 0, 0, 0, 0, 42, 128, - 32, 0, 0, 0, 0, 0, - 23, 0, 0, 0, 56, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 3, 0, - 0, 0, 16, 0, 0, 8, - 130, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 30, 0, 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 58, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 1, 0, + 0, 0, 22, 0, 0, 1, + 69, 0, 0, 9, 242, 0, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 70, 126, 16, 0, + 5, 0, 0, 0, 0, 96, 16, 0, 1, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 50, 0, 0, 11, - 114, 0, 16, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 4, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 246, 15, - 16, 128, 65, 0, 0, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 6, 0, 0, 0, + 43, 0, 0, 6, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 128, 32, 0, 0, 0, + 0, 0, 23, 0, 0, 0, + 56, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 16, 0, + 0, 8, 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 72, 0, - 0, 11, 242, 0, 16, 0, 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 11, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 246, 15, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 72, 0, 0, 11, 242, 0, 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 4, 0, - 0, 0, 0, 96, 16, 0, - 1, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 50, 0, 0, 9, 114, 32, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 4, 0, 0, 0, 0, 96, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 114, 32, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 56, 0, 0, 8, 130, 32, + 5, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 2, 0, - 0, 0, 58, 128, 32, 0, - 0, 0, 0, 0, 22, 0, - 0, 0, 62, 0, 0, 1 + 70, 2, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 8, + 130, 32, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 62, 0, + 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissive.inc b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissive.inc index a5edc8eb..15c1b7da 100644 --- a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissive.inc +++ b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissive.inc @@ -39,30 +39,33 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r1.xyzw, v0.xyxx, t1.xyzw, s0 -mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r0.w, r1.xyxx, r1.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w deriv_rtx r2.xyz, v1.yzxy deriv_rty r3.xyz, v1.zxyz -deriv_rtx r4.xy, v0.xyxx -deriv_rty r4.zw, v0.xxxy +deriv_rtx r1.zw, v0.xxxy +deriv_rty r4.xy, v0.xyxx mul r5.xyz, r2.xyzx, r3.yzxy mad r5.xyz, r2.zxyz, r3.zxyz, -r5.xyzx mul r6.xyz, r3.xyzx, r5.zxyz mad r3.xyz, r3.zxyz, r5.xyzx, -r6.xyzx mul r6.xyz, r2.xyzx, r5.xyzx mad r2.xyz, r5.zxyz, r2.yzxy, -r6.xyzx -mul r5.xyz, r2.xyzx, r4.zzzz -mad r5.xyz, r4.xxxx, r3.xyzx, r5.xyzx -dp3 r0.w, r5.xyzx, r5.xyzx -rsq r0.w, r0.w -mul r5.xyz, r0.wwww, r5.xyzx -mul r2.xyz, r2.xyzx, r4.wwww -mad r2.xyz, r4.yyyy, r3.xyzx, r2.xyzx -dp3 r0.w, r2.xyzx, r2.xyzx -rsq r0.w, r0.w -mul r2.xyz, r0.wwww, r2.xyzx -mul r2.xyz, r1.yyyy, r2.xyzx -mad r1.xyw, r1.xxxx, r5.xyxz, r2.xyxz -mad r1.xyz, r1.zzzz, v2.xyzx, r1.xywx +mul r4.xzw, r2.xxyz, r4.xxxx +mad r4.xzw, r1.zzzz, r3.xxyz, r4.xxzw +dp3 r1.z, r4.xzwx, r4.xzwx +rsq r1.z, r1.z +mul r4.xzw, r1.zzzz, r4.xxzw +mul r2.xyz, r2.xyzx, r4.yyyy +mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx +dp3 r1.z, r2.xyzx, r2.xyzx +rsq r1.z, r1.z +mul r2.xyz, r1.zzzz, r2.xyzx +mul r1.yzw, r1.yyyy, r2.xxyz +mad r1.xyz, r1.xxxx, r4.xzwx, r1.yzwy +mad r1.xyz, r0.wwww, v2.xyzx, r1.xyzx dp3 r0.w, r1.xyzx, r1.xyzx rsq r0.w, r0.w mul r1.xyz, r0.wwww, r1.xyzx @@ -146,11 +149,11 @@ ret const BYTE PBREffect_PSTexturedEmissive[] = { - 68, 88, 66, 67, 90, 190, - 25, 60, 207, 223, 29, 30, - 98, 230, 106, 14, 79, 138, - 150, 130, 1, 0, 0, 0, - 132, 14, 0, 0, 3, 0, + 68, 88, 66, 67, 41, 176, + 106, 148, 164, 117, 121, 218, + 64, 145, 253, 183, 190, 12, + 170, 5, 1, 0, 0, 0, + 212, 14, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 172, 0, 0, 0, 224, 0, 0, 0, 73, 83, 71, 78, @@ -184,8 +187,8 @@ const BYTE PBREffect_PSTexturedEmissive[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 156, 13, 0, 0, 64, 0, - 0, 0, 103, 3, 0, 0, + 236, 13, 0, 0, 64, 0, + 0, 0, 123, 3, 0, 0, 89, 8, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 24, 0, 0, 0, 90, 0, @@ -243,326 +246,400 @@ const BYTE PBREffect_PSTexturedEmissive[] = 70, 126, 16, 0, 1, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 50, 0, - 0, 15, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 0, 15, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, 16, 0, 1, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, - 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, - 128, 191, 0, 0, 128, 191, - 0, 0, 0, 0, 11, 0, - 0, 5, 114, 0, 16, 0, - 2, 0, 0, 0, 150, 20, + 128, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 0, 16, 0, 1, 0, 0, 0, - 12, 0, 0, 5, 114, 0, - 16, 0, 3, 0, 0, 0, - 38, 25, 16, 0, 1, 0, - 0, 0, 11, 0, 0, 5, - 50, 0, 16, 0, 4, 0, - 0, 0, 70, 16, 16, 0, - 0, 0, 0, 0, 12, 0, - 0, 5, 194, 0, 16, 0, - 4, 0, 0, 0, 6, 20, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 75, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 150, 4, 16, 0, - 3, 0, 0, 0, 50, 0, - 0, 10, 114, 0, 16, 0, - 5, 0, 0, 0, 38, 9, + 11, 0, 0, 5, 114, 0, 16, 0, 2, 0, 0, 0, - 38, 9, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 5, 0, + 150, 20, 16, 0, 1, 0, + 0, 0, 12, 0, 0, 5, + 114, 0, 16, 0, 3, 0, + 0, 0, 38, 25, 16, 0, + 1, 0, 0, 0, 11, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 20, + 16, 0, 0, 0, 0, 0, + 12, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 16, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 6, 0, + 114, 0, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 38, 9, - 16, 0, 5, 0, 0, 0, - 50, 0, 0, 10, 114, 0, + 2, 0, 0, 0, 150, 4, 16, 0, 3, 0, 0, 0, - 38, 9, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 70, 2, + 50, 0, 0, 10, 114, 0, + 16, 0, 5, 0, 0, 0, + 38, 9, 16, 0, 2, 0, + 0, 0, 38, 9, 16, 0, + 3, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, - 6, 0, 0, 0, 56, 0, + 5, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 16, 0, 3, 0, 0, 0, + 38, 9, 16, 0, 5, 0, 0, 0, 50, 0, 0, 10, - 114, 0, 16, 0, 2, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 38, 9, 16, 0, - 5, 0, 0, 0, 150, 4, - 16, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 5, 0, 0, 0, + 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, 2, 0, - 0, 0, 166, 10, 16, 0, - 4, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 5, 0, 0, 0, 6, 0, - 16, 0, 4, 0, 0, 0, - 70, 2, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 5, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 2, 0, 0, 0, 38, 9, 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 5, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 5, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 150, 4, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 246, 15, + 210, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 0, + 2, 0, 0, 0, 6, 0, 16, 0, 4, 0, 0, 0, - 50, 0, 0, 9, 114, 0, + 50, 0, 0, 9, 210, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 9, 16, 0, + 3, 0, 0, 0, 6, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 134, 3, 16, 0, 4, 0, + 0, 0, 134, 3, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 210, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 14, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 86, 5, 16, 0, 4, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 2, 0, 0, 0, 86, 5, + 68, 0, 0, 5, 66, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 9, - 178, 0, 16, 0, 1, 0, - 0, 0, 6, 0, 16, 0, - 1, 0, 0, 0, 70, 8, - 16, 0, 5, 0, 0, 0, - 70, 8, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 1, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 2, 0, 0, 0, 166, 10, 16, 0, - 1, 0, 0, 0, 70, 18, - 16, 0, 2, 0, 0, 0, - 70, 3, 16, 0, 1, 0, - 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 226, 0, + 16, 0, 1, 0, 0, 0, + 86, 5, 16, 0, 1, 0, + 0, 0, 6, 9, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 6, 0, 16, 0, 1, 0, 0, 0, - 68, 0, 0, 5, 130, 0, + 134, 3, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 0, + 70, 18, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 3, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 2, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 16, 32, 0, 7, 130, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 2, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 2, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 16, 32, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 3, 0, - 0, 0, 50, 0, 0, 10, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 4, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 56, 0, 0, 7, 114, 0, 16, 0, 4, 0, 0, 0, - 6, 0, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 4, 0, 0, 0, 0, 0, - 0, 10, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, + 0, 0, 0, 10, 114, 0, 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 10, 215, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 10, 215, 35, 189, 10, 215, 35, 189, 10, 215, 35, 189, - 10, 215, 35, 189, 0, 0, - 0, 0, 50, 0, 0, 12, - 114, 0, 16, 0, 2, 0, - 0, 0, 166, 10, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 10, 215, + 0, 0, 0, 0, 50, 0, + 0, 12, 114, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 10, 215, 35, 61, 10, 215, 35, 61, 10, 215, 35, 61, - 10, 215, 35, 61, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 5, 0, - 0, 0, 6, 0, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 0, 0, 0, 7, 66, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 5, 0, 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, - 26, 0, 16, 0, 3, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 66, 0, 16, 0, 3, 0, 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 0, 0, - 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 58, 0, - 16, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, + 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, + 3, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 3, 0, 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 3, 0, 0, 0, - 56, 0, 0, 7, 130, 0, - 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 1, 0, + 130, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 50, 0, - 0, 9, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 191, 50, 0, - 0, 13, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 2, 0, 0, 0, 6, 0, - 16, 0, 3, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 128, 63, 0, 0, 128, 63, - 0, 0, 128, 63, 0, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 62, - 54, 0, 0, 8, 114, 0, - 16, 0, 6, 0, 0, 0, - 2, 64, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 191, + 50, 0, 0, 13, 114, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 62, 54, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 5, - 130, 0, 16, 0, 4, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 0, 48, 0, - 0, 1, 33, 0, 0, 7, + 0, 0, 0, 0, 54, 0, + 0, 5, 130, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 0, + 48, 0, 0, 1, 33, 0, + 0, 7, 130, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 3, 0, 4, 3, + 58, 0, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 15, + 130, 0, 16, 0, 5, 0, + 0, 0, 70, 130, 32, 134, + 65, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 70, 130, 32, 134, + 65, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, 130, 0, 16, 0, 5, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 3, 0, 4, 3, 58, 0, - 16, 0, 5, 0, 0, 0, - 16, 0, 0, 15, 130, 0, + 5, 0, 0, 0, 56, 0, + 0, 11, 114, 0, 16, 0, + 7, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, + 50, 0, 0, 13, 114, 0, + 16, 0, 8, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 5, 0, 0, 0, - 58, 0, 16, 0, 5, 0, - 0, 0, 56, 0, 0, 11, - 114, 0, 16, 0, 7, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 130, - 32, 134, 65, 0, 0, 0, - 0, 0, 0, 0, 16, 0, - 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 50, 0, - 0, 13, 114, 0, 16, 0, - 8, 0, 0, 0, 70, 130, - 32, 134, 65, 0, 0, 0, + 246, 15, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 8, 0, 0, 0, + 70, 2, 16, 0, 8, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 5, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 246, 15, + 5, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 8, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 7, + 70, 2, 16, 0, 8, 0, + 0, 0, 16, 32, 0, 7, 130, 0, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 5, 0, 0, 0, - 58, 0, 16, 0, 5, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 8, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, 16, 32, 0, 7, 130, 0, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 7, 0, 0, 0, 16, 32, + 8, 0, 0, 0, 16, 32, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 8, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 6, 0, 0, 0, 58, 0, + 16, 0, 6, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 7, 0, 0, 0, + 26, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 191, + 0, 0, 0, 8, 130, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 18, 0, 16, 0, 8, 0, + 0, 0, 58, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 7, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 8, 0, 0, 0, + 10, 0, 16, 0, 8, 0, + 0, 0, 10, 0, 16, 0, + 8, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, - 6, 0, 0, 0, 70, 2, + 7, 0, 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 16, 32, 0, 7, + 10, 0, 16, 0, 8, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 34, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 10, 0, 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 6, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 7, 0, 0, 0, + 10, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 0, - 6, 0, 0, 0, 50, 0, - 0, 9, 66, 0, 16, 0, - 7, 0, 0, 0, 26, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 82, 0, 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 191, 0, 0, + 6, 2, 16, 0, 7, 0, + 0, 0, 6, 3, 16, 0, + 7, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 219, 15, + 73, 64, 52, 0, 0, 7, + 18, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 189, 55, 134, 53, + 14, 0, 0, 7, 18, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 0, 0, 0, 8, 130, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 128, 65, 0, 0, 0, - 5, 0, 0, 0, 1, 64, + 6, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 8, 0, 0, 0, @@ -578,192 +655,131 @@ const BYTE PBREffect_PSTexturedEmissive[] = 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, 10, 0, 16, 0, 8, 0, 0, 0, - 50, 0, 0, 9, 130, 0, - 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 7, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 50, 0, 0, 9, 66, 0, - 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 56, 0, 0, 7, 18, 0, - 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 50, 0, - 0, 9, 18, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, - 0, 7, 82, 0, 16, 0, - 7, 0, 0, 0, 6, 2, - 16, 0, 7, 0, 0, 0, - 6, 3, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 1, 64, - 0, 0, 219, 15, 73, 64, - 52, 0, 0, 7, 18, 0, - 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 8, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 6, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 6, 0, 0, 0, 1, 64, 0, 0, - 189, 55, 134, 53, 14, 0, - 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 58, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 6, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 7, 0, - 0, 0, 0, 0, 0, 8, - 130, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 128, - 65, 0, 0, 0, 6, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, - 0, 7, 18, 0, 16, 0, - 8, 0, 0, 0, 58, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 8, 0, - 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 10, 0, - 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 130, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 8, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 50, 0, + 58, 0, 16, 0, 6, 0, + 0, 0, 26, 0, 16, 0, + 7, 0, 0, 0, 14, 0, 0, 10, 130, 0, 16, 0, - 6, 0, 0, 0, 58, 0, - 16, 128, 65, 0, 0, 0, - 6, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 50, 0, 0, 9, - 130, 0, 16, 0, 6, 0, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, - 26, 0, 16, 0, 7, 0, - 0, 0, 14, 0, 0, 10, - 130, 0, 16, 0, 6, 0, - 0, 0, 2, 64, 0, 0, + 6, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, - 0, 0, 128, 63, 58, 0, - 16, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 6, 0, + 0, 0, 56, 0, 0, 7, + 178, 0, 16, 0, 7, 0, + 0, 0, 6, 0, 16, 0, + 7, 0, 0, 0, 70, 8, + 16, 0, 8, 0, 0, 0, 56, 0, 0, 7, 178, 0, 16, 0, 7, 0, 0, 0, - 6, 0, 16, 0, 7, 0, - 0, 0, 70, 8, 16, 0, - 8, 0, 0, 0, 56, 0, - 0, 7, 178, 0, 16, 0, - 7, 0, 0, 0, 246, 15, - 16, 0, 6, 0, 0, 0, - 70, 12, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 10, - 114, 0, 16, 0, 8, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 130, - 32, 6, 0, 0, 0, 0, - 19, 0, 0, 0, 58, 0, - 16, 0, 4, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 4, 0, - 0, 0, 166, 10, 16, 0, - 7, 0, 0, 0, 70, 3, - 16, 0, 7, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 6, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 70, 2, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 6, 0, 0, 0, - 30, 0, 0, 7, 130, 0, - 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 6, 0, + 0, 0, 70, 12, 16, 0, + 7, 0, 0, 0, 56, 0, + 0, 10, 114, 0, 16, 0, + 8, 0, 0, 0, 246, 15, + 16, 0, 5, 0, 0, 0, + 70, 130, 32, 6, 0, 0, + 0, 0, 19, 0, 0, 0, 58, 0, 16, 0, 4, 0, - 0, 0, 1, 64, 0, 0, - 1, 0, 0, 0, 22, 0, - 0, 1, 69, 0, 0, 9, - 242, 0, 16, 0, 7, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 126, - 16, 0, 5, 0, 0, 0, - 0, 96, 16, 0, 1, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 70, 3, 16, 0, 7, 0, 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 2, 0, + 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, - 4, 0, 0, 0, 70, 2, + 8, 0, 0, 0, 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, 6, 0, - 0, 0, 43, 0, 0, 6, - 130, 0, 16, 0, 0, 0, - 0, 0, 42, 128, 32, 0, - 0, 0, 0, 0, 23, 0, - 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 3, 0, 0, 0, - 16, 0, 0, 8, 130, 0, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 128, 65, 0, - 0, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 0, 0, 0, 7, - 130, 0, 16, 0, 1, 0, + 0, 0, 30, 0, 0, 7, + 130, 0, 16, 0, 4, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 58, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 1, 0, 0, 0, + 22, 0, 0, 1, 69, 0, + 0, 9, 242, 0, 16, 0, + 7, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 50, 0, 0, 11, 114, 0, + 70, 126, 16, 0, 5, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 43, 0, + 0, 6, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 56, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 128, - 65, 0, 0, 0, 1, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 8, + 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 0, 0, - 0, 0, 72, 0, 0, 11, - 242, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 126, - 16, 0, 4, 0, 0, 0, - 0, 96, 16, 0, 1, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 1, 0, 0, 0, 70, 16, + 1, 0, 0, 0, 246, 15, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 11, 242, 0, 16, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 3, 0, + 70, 126, 16, 0, 4, 0, 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 0, 0, - 0, 7, 114, 32, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 1, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 3, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 56, 0, 0, 8, - 130, 32, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 2, 0, 0, 0, 58, 128, - 32, 0, 0, 0, 0, 0, - 22, 0, 0, 0, 62, 0, - 0, 1 + 0, 0, 0, 7, 114, 32, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 8, 130, 32, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 2, 0, 0, 0, + 58, 128, 32, 0, 0, 0, + 0, 0, 22, 0, 0, 0, + 62, 0, 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissiveVelocity.inc b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissiveVelocity.inc index 21b8e40c..c0b5be6a 100644 --- a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissiveVelocity.inc +++ b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedEmissiveVelocity.inc @@ -45,30 +45,33 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r1.xyzw, v0.xyxx, t1.xyzw, s0 -mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r0.w, r1.xyxx, r1.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w deriv_rtx r2.xyz, v1.yzxy deriv_rty r3.xyz, v1.zxyz -deriv_rtx r4.xy, v0.xyxx -deriv_rty r4.zw, v0.xxxy +deriv_rtx r1.zw, v0.xxxy +deriv_rty r4.xy, v0.xyxx mul r5.xyz, r2.xyzx, r3.yzxy mad r5.xyz, r2.zxyz, r3.zxyz, -r5.xyzx mul r6.xyz, r3.xyzx, r5.zxyz mad r3.xyz, r3.zxyz, r5.xyzx, -r6.xyzx mul r6.xyz, r2.xyzx, r5.xyzx mad r2.xyz, r5.zxyz, r2.yzxy, -r6.xyzx -mul r5.xyz, r2.xyzx, r4.zzzz -mad r5.xyz, r4.xxxx, r3.xyzx, r5.xyzx -dp3 r0.w, r5.xyzx, r5.xyzx -rsq r0.w, r0.w -mul r5.xyz, r0.wwww, r5.xyzx -mul r2.xyz, r2.xyzx, r4.wwww -mad r2.xyz, r4.yyyy, r3.xyzx, r2.xyzx -dp3 r0.w, r2.xyzx, r2.xyzx -rsq r0.w, r0.w -mul r2.xyz, r0.wwww, r2.xyzx -mul r2.xyz, r1.yyyy, r2.xyzx -mad r1.xyw, r1.xxxx, r5.xyxz, r2.xyxz -mad r1.xyz, r1.zzzz, v2.xyzx, r1.xywx +mul r4.xzw, r2.xxyz, r4.xxxx +mad r4.xzw, r1.zzzz, r3.xxyz, r4.xxzw +dp3 r1.z, r4.xzwx, r4.xzwx +rsq r1.z, r1.z +mul r4.xzw, r1.zzzz, r4.xxzw +mul r2.xyz, r2.xyzx, r4.yyyy +mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx +dp3 r1.z, r2.xyzx, r2.xyzx +rsq r1.z, r1.z +mul r2.xyz, r1.zzzz, r2.xyzx +mul r1.yzw, r1.yyyy, r2.xxyz +mad r1.xyz, r1.xxxx, r4.xzwx, r1.yzwy +mad r1.xyz, r0.wwww, v2.xyzx, r1.xyzx dp3 r0.w, r1.xyzx, r1.xyzx rsq r0.w, r0.w mul r1.xyz, r0.wwww, r1.xyzx @@ -251,11 +254,11 @@ ret const BYTE PBREffect_PSTexturedEmissiveVelocity[] = { - 68, 88, 66, 67, 34, 25, - 241, 204, 120, 0, 184, 197, - 96, 34, 166, 238, 224, 73, - 13, 66, 1, 0, 0, 0, - 244, 26, 0, 0, 3, 0, + 68, 88, 66, 67, 81, 188, + 246, 31, 93, 178, 131, 12, + 19, 224, 200, 255, 39, 233, + 205, 110, 1, 0, 0, 0, + 68, 27, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 232, 0, 0, 0, 52, 1, 0, 0, 73, 83, 71, 78, @@ -303,8 +306,8 @@ const BYTE PBREffect_PSTexturedEmissiveVelocity[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 184, 25, 0, 0, 64, 0, - 0, 0, 110, 6, 0, 0, + 8, 26, 0, 0, 64, 0, + 0, 0, 130, 6, 0, 0, 89, 8, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 25, 0, 0, 0, 90, 0, @@ -369,1036 +372,1050 @@ const BYTE PBREffect_PSTexturedEmissiveVelocity[] = 16, 0, 1, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 50, 0, 0, 15, - 114, 0, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, 1, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, - 0, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, - 0, 0, 128, 191, 0, 0, - 0, 0, 11, 0, 0, 5, - 114, 0, 16, 0, 2, 0, - 0, 0, 150, 20, 16, 0, - 1, 0, 0, 0, 12, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 70, 0, + 16, 0, 1, 0, 0, 0, + 0, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 75, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 11, 0, 0, 5, 114, 0, 16, 0, - 3, 0, 0, 0, 38, 25, + 2, 0, 0, 0, 150, 20, 16, 0, 1, 0, 0, 0, - 11, 0, 0, 5, 50, 0, - 16, 0, 4, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 12, 0, 0, 5, - 194, 0, 16, 0, 4, 0, - 0, 0, 6, 20, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 150, 4, 16, 0, 3, 0, - 0, 0, 50, 0, 0, 10, - 114, 0, 16, 0, 5, 0, - 0, 0, 38, 9, 16, 0, - 2, 0, 0, 0, 38, 9, + 12, 0, 0, 5, 114, 0, 16, 0, 3, 0, 0, 0, - 70, 2, 16, 128, 65, 0, - 0, 0, 5, 0, 0, 0, + 38, 25, 16, 0, 1, 0, + 0, 0, 11, 0, 0, 5, + 194, 0, 16, 0, 1, 0, + 0, 0, 6, 20, 16, 0, + 0, 0, 0, 0, 12, 0, + 0, 5, 50, 0, 16, 0, + 4, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 6, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 38, 9, 16, 0, - 5, 0, 0, 0, 50, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 150, 4, 16, 0, + 3, 0, 0, 0, 50, 0, 0, 10, 114, 0, 16, 0, - 3, 0, 0, 0, 38, 9, - 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 5, 0, 0, 0, 38, 9, + 16, 0, 2, 0, 0, 0, + 38, 9, 16, 0, 3, 0, 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 6, 0, + 65, 0, 0, 0, 5, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 70, 2, + 3, 0, 0, 0, 38, 9, 16, 0, 5, 0, 0, 0, 50, 0, 0, 10, 114, 0, - 16, 0, 2, 0, 0, 0, - 38, 9, 16, 0, 5, 0, - 0, 0, 150, 4, 16, 0, - 2, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, + 38, 9, 16, 0, 3, 0, + 0, 0, 70, 2, 16, 0, + 5, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, - 5, 0, 0, 0, 70, 2, + 6, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 166, 10, 16, 0, 4, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 5, 0, - 0, 0, 6, 0, 16, 0, - 4, 0, 0, 0, 70, 2, - 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 5, 0, - 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 5, 0, - 0, 0, 246, 15, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 2, 0, + 0, 0, 38, 9, 16, 0, + 5, 0, 0, 0, 150, 4, 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 246, 15, 16, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 6, 0, 0, 0, + 56, 0, 0, 7, 210, 0, + 16, 0, 4, 0, 0, 0, + 6, 9, 16, 0, 2, 0, + 0, 0, 6, 0, 16, 0, 4, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 2, 0, 0, 0, 86, 5, + 0, 9, 210, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 9, 16, 0, 3, 0, + 0, 0, 6, 14, 16, 0, + 4, 0, 0, 0, 16, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 134, 3, 16, 0, 4, 0, 0, 0, - 70, 2, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 134, 3, 16, 0, 4, 0, 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 2, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 56, 0, + 0, 7, 210, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 1, 0, 0, 0, + 6, 14, 16, 0, 4, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 2, 0, - 0, 0, 86, 5, 16, 0, - 1, 0, 0, 0, 70, 2, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 86, 5, + 16, 0, 4, 0, 0, 0, + 50, 0, 0, 9, 114, 0, 16, 0, 2, 0, 0, 0, - 50, 0, 0, 9, 178, 0, - 16, 0, 1, 0, 0, 0, - 6, 0, 16, 0, 1, 0, - 0, 0, 70, 8, 16, 0, - 5, 0, 0, 0, 70, 8, + 246, 15, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 3, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 50, 0, 0, 9, 114, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 114, 0, + 16, 0, 2, 0, 0, 0, 166, 10, 16, 0, 1, 0, - 0, 0, 70, 18, 16, 0, - 2, 0, 0, 0, 70, 3, + 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 56, 0, + 0, 7, 226, 0, 16, 0, + 1, 0, 0, 0, 86, 5, 16, 0, 1, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, + 6, 9, 16, 0, 2, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 1, 0, + 0, 0, 6, 0, 16, 0, + 1, 0, 0, 0, 134, 3, + 16, 0, 4, 0, 0, 0, + 150, 7, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, + 0, 0, 0, 0, 70, 18, + 16, 0, 2, 0, 0, 0, 70, 2, 16, 0, 1, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 1, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 2, 0, 0, 0, 70, 16, - 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 0, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 69, 0, - 0, 9, 242, 0, 16, 0, - 3, 0, 0, 0, 70, 16, + 68, 0, 0, 5, 130, 0, 16, 0, 0, 0, 0, 0, - 70, 126, 16, 0, 2, 0, - 0, 0, 0, 96, 16, 0, - 0, 0, 0, 0, 16, 32, - 0, 7, 130, 0, 16, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 1, 0, - 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 26, 0, + 69, 0, 0, 9, 242, 0, + 16, 0, 2, 0, 0, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 0, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 69, 0, 0, 9, 242, 0, 16, 0, 3, 0, 0, 0, - 50, 0, 0, 10, 114, 0, - 16, 0, 4, 0, 0, 0, - 166, 10, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 2, 0, + 70, 16, 16, 0, 0, 0, + 0, 0, 70, 126, 16, 0, + 2, 0, 0, 0, 0, 96, + 16, 0, 0, 0, 0, 0, + 16, 32, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 4, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 26, 0, 16, 0, 3, 0, 0, 0, - 70, 2, 16, 0, 4, 0, - 0, 0, 0, 0, 0, 10, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 10, 215, 35, 189, - 10, 215, 35, 189, 10, 215, - 35, 189, 0, 0, 0, 0, - 50, 0, 0, 12, 114, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 50, 0, 0, 10, + 114, 0, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 166, 10, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 10, 215, 35, 61, - 10, 215, 35, 61, 10, 215, - 35, 61, 0, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 5, 0, 0, 0, + 16, 0, 4, 0, 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 0, 0, - 0, 7, 66, 0, 16, 0, - 3, 0, 0, 0, 26, 0, + 4, 0, 0, 0, 0, 0, + 0, 10, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 2, 64, 0, 0, 10, 215, + 35, 189, 10, 215, 35, 189, + 10, 215, 35, 189, 0, 0, + 0, 0, 50, 0, 0, 12, + 114, 0, 16, 0, 2, 0, + 0, 0, 166, 10, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 2, 64, 0, 0, 10, 215, + 35, 61, 10, 215, 35, 61, + 10, 215, 35, 61, 0, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 5, 0, + 0, 0, 6, 0, 16, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 0, 0, 0, 7, 66, 0, 16, 0, 3, 0, 0, 0, 26, 0, 16, 0, 3, 0, - 0, 0, 0, 0, 0, 8, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 128, - 65, 0, 0, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 0, 0, + 0, 8, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 130, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, 3, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 3, 0, 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 3, 0, + 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 3, 0, 0, 0, 56, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 56, 0, - 0, 7, 130, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, + 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, 1, 0, - 0, 0, 50, 0, 0, 9, - 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 191, 50, 0, 0, 13, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 2, 0, - 0, 0, 6, 0, 16, 0, - 3, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 128, 63, - 0, 0, 128, 63, 0, 0, - 128, 63, 0, 0, 0, 0, - 56, 0, 0, 7, 18, 0, - 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 3, 0, + 58, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, - 0, 0, 128, 62, 54, 0, - 0, 8, 114, 0, 16, 0, - 6, 0, 0, 0, 2, 64, + 0, 0, 128, 191, 50, 0, + 0, 13, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 6, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 0, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 62, + 54, 0, 0, 8, 114, 0, + 16, 0, 6, 0, 0, 0, + 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 130, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 0, 48, 0, + 0, 1, 33, 0, 0, 7, + 130, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 3, 0, 0, 0, + 3, 0, 4, 3, 58, 0, + 16, 0, 5, 0, 0, 0, + 16, 0, 0, 15, 130, 0, + 16, 0, 5, 0, 0, 0, + 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 5, 130, 0, + 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 1, - 33, 0, 0, 7, 130, 0, - 16, 0, 5, 0, 0, 0, - 58, 0, 16, 0, 4, 0, - 0, 0, 1, 64, 0, 0, - 3, 0, 0, 0, 3, 0, - 4, 3, 58, 0, 16, 0, - 5, 0, 0, 0, 16, 0, - 0, 15, 130, 0, 16, 0, + 70, 130, 32, 134, 65, 0, + 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 5, 0, + 0, 0, 56, 0, 0, 11, + 114, 0, 16, 0, 7, 0, + 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 70, 130, + 4, 0, 0, 0, 50, 0, + 0, 13, 114, 0, 16, 0, + 8, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 5, 0, 0, 0, 58, 0, + 4, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, - 56, 0, 0, 11, 114, 0, - 16, 0, 7, 0, 0, 0, - 246, 15, 16, 0, 5, 0, - 0, 0, 70, 130, 32, 134, - 65, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, - 58, 0, 16, 0, 4, 0, - 0, 0, 50, 0, 0, 13, + 70, 2, 16, 0, 0, 0, + 0, 0, 16, 0, 0, 7, + 130, 0, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, + 8, 0, 0, 0, 70, 2, + 16, 0, 8, 0, 0, 0, + 68, 0, 0, 5, 130, 0, + 16, 0, 5, 0, 0, 0, + 58, 0, 16, 0, 5, 0, + 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 8, 0, - 0, 0, 70, 130, 32, 134, - 65, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 0, 0, - 58, 0, 16, 0, 4, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 5, 0, 0, 0, 58, 0, - 16, 0, 5, 0, 0, 0, - 56, 0, 0, 7, 114, 0, 16, 0, 8, 0, 0, 0, - 246, 15, 16, 0, 5, 0, + 16, 32, 0, 7, 130, 0, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 16, 32, + 7, 0, 0, 0, 16, 32, 0, 7, 130, 0, 16, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 7, 0, + 6, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 8, 0, 0, 0, 16, 32, 0, 7, - 130, 0, 16, 0, 6, 0, + 18, 0, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 7, 0, 0, 0, 70, 2, + 1, 0, 0, 0, 70, 2, 16, 0, 8, 0, 0, 0, - 16, 32, 0, 7, 18, 0, + 56, 0, 0, 7, 34, 0, 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 56, 0, - 0, 7, 34, 0, 16, 0, - 7, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, 58, 0, 16, 0, 6, 0, - 0, 0, 50, 0, 0, 9, - 66, 0, 16, 0, 7, 0, - 0, 0, 26, 0, 16, 0, - 7, 0, 0, 0, 42, 0, - 16, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 0, 191, 0, 0, 0, 8, - 130, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 128, - 65, 0, 0, 0, 5, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, - 0, 7, 18, 0, 16, 0, - 8, 0, 0, 0, 58, 0, + 0, 0, 58, 0, 16, 0, + 6, 0, 0, 0, 50, 0, + 0, 9, 66, 0, 16, 0, + 7, 0, 0, 0, 26, 0, 16, 0, 7, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 0, 191, 0, 0, + 0, 8, 130, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 5, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 18, 0, + 16, 0, 8, 0, 0, 0, 58, 0, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 8, 0, - 0, 0, 10, 0, 16, 0, + 0, 0, 58, 0, 16, 0, + 7, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, 8, 0, 0, 0, 10, 0, 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 130, 0, + 10, 0, 16, 0, 8, 0, + 0, 0, 56, 0, 0, 7, + 130, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 8, 0, 0, 0, + 50, 0, 0, 9, 130, 0, 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 50, 0, - 0, 9, 130, 0, 16, 0, - 7, 0, 0, 0, 42, 0, + 42, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 50, 0, 0, 9, 66, 0, 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 50, 0, - 0, 9, 66, 0, 16, 0, - 7, 0, 0, 0, 42, 0, + 42, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 18, 0, 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 10, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 50, 0, + 0, 9, 18, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, - 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 10, 0, + 0, 7, 82, 0, 16, 0, + 7, 0, 0, 0, 6, 2, 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, - 0, 0, 50, 0, 0, 9, + 6, 3, 16, 0, 7, 0, + 0, 0, 56, 0, 0, 7, 18, 0, 16, 0, 7, 0, 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 56, 0, 0, 7, - 82, 0, 16, 0, 7, 0, - 0, 0, 6, 2, 16, 0, - 7, 0, 0, 0, 6, 3, - 16, 0, 7, 0, 0, 0, - 56, 0, 0, 7, 18, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 219, 15, 73, 64, + 52, 0, 0, 7, 18, 0, 16, 0, 7, 0, 0, 0, 10, 0, 16, 0, 7, 0, 0, 0, 1, 64, 0, 0, - 219, 15, 73, 64, 52, 0, + 189, 55, 134, 53, 14, 0, 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 1, 64, 0, 0, 189, 55, - 134, 53, 14, 0, 0, 7, - 18, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 0, 0, 0, 8, 130, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 128, 65, 0, - 0, 0, 6, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 56, 0, 0, 7, - 18, 0, 16, 0, 8, 0, - 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 10, 0, 16, 0, 7, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 6, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 56, 0, + 0, 7, 18, 0, 16, 0, + 8, 0, 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, - 56, 0, 0, 7, 18, 0, - 16, 0, 8, 0, 0, 0, - 10, 0, 16, 0, 8, 0, + 58, 0, 16, 0, 7, 0, + 0, 0, 56, 0, 0, 7, + 18, 0, 16, 0, 8, 0, 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 56, 0, - 0, 7, 130, 0, 16, 0, - 7, 0, 0, 0, 58, 0, + 8, 0, 0, 0, 10, 0, + 16, 0, 8, 0, 0, 0, + 56, 0, 0, 7, 130, 0, 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 8, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 8, 0, + 58, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 8, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 8, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 246, 15, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 246, 15, - 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 5, 0, - 0, 0, 50, 0, 0, 10, - 130, 0, 16, 0, 6, 0, - 0, 0, 58, 0, 16, 128, - 65, 0, 0, 0, 6, 0, - 0, 0, 58, 0, 16, 0, - 6, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 50, 0, 0, 9, 130, 0, + 5, 0, 0, 0, 50, 0, + 0, 10, 130, 0, 16, 0, + 6, 0, 0, 0, 58, 0, + 16, 128, 65, 0, 0, 0, + 6, 0, 0, 0, 58, 0, 16, 0, 6, 0, 0, 0, - 10, 0, 16, 0, 3, 0, - 0, 0, 58, 0, 16, 0, - 6, 0, 0, 0, 26, 0, - 16, 0, 7, 0, 0, 0, - 14, 0, 0, 10, 130, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 130, 0, 16, 0, 6, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 58, 0, 16, 0, 6, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 128, 63, 0, 0, 128, 63, + 26, 0, 16, 0, 7, 0, + 0, 0, 14, 0, 0, 10, + 130, 0, 16, 0, 6, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 128, 63, 0, 0, - 128, 63, 58, 0, 16, 0, - 6, 0, 0, 0, 56, 0, - 0, 7, 178, 0, 16, 0, - 7, 0, 0, 0, 6, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 128, 63, 58, 0, + 16, 0, 6, 0, 0, 0, + 56, 0, 0, 7, 178, 0, 16, 0, 7, 0, 0, 0, - 70, 8, 16, 0, 8, 0, - 0, 0, 56, 0, 0, 7, - 178, 0, 16, 0, 7, 0, + 6, 0, 16, 0, 7, 0, + 0, 0, 70, 8, 16, 0, + 8, 0, 0, 0, 56, 0, + 0, 7, 178, 0, 16, 0, + 7, 0, 0, 0, 246, 15, + 16, 0, 6, 0, 0, 0, + 70, 12, 16, 0, 7, 0, + 0, 0, 56, 0, 0, 10, + 114, 0, 16, 0, 8, 0, 0, 0, 246, 15, 16, 0, - 6, 0, 0, 0, 70, 12, - 16, 0, 7, 0, 0, 0, - 56, 0, 0, 10, 114, 0, - 16, 0, 8, 0, 0, 0, - 246, 15, 16, 0, 5, 0, - 0, 0, 70, 130, 32, 6, - 0, 0, 0, 0, 19, 0, - 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 4, 0, 0, 0, - 166, 10, 16, 0, 7, 0, - 0, 0, 70, 3, 16, 0, - 7, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 6, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 70, 2, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 6, 0, 0, 0, 30, 0, - 0, 7, 130, 0, 16, 0, - 4, 0, 0, 0, 58, 0, + 5, 0, 0, 0, 70, 130, + 32, 6, 0, 0, 0, 0, + 19, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, - 1, 64, 0, 0, 1, 0, - 0, 0, 22, 0, 0, 1, - 69, 0, 0, 9, 242, 0, - 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 70, 126, 16, 0, - 5, 0, 0, 0, 0, 96, - 16, 0, 1, 0, 0, 0, 50, 0, 0, 9, 114, 0, - 16, 0, 2, 0, 0, 0, + 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, 4, 0, + 0, 0, 166, 10, 16, 0, + 7, 0, 0, 0, 70, 3, + 16, 0, 7, 0, 0, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 8, 0, 0, 0, 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, 6, 0, 0, 0, - 43, 0, 0, 6, 130, 0, - 16, 0, 0, 0, 0, 0, - 42, 128, 32, 0, 0, 0, - 0, 0, 23, 0, 0, 0, - 56, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 16, 0, - 0, 8, 130, 0, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 0, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 58, 0, 16, 0, 1, 0, + 30, 0, 0, 7, 130, 0, + 16, 0, 4, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 1, 64, 0, 0, + 1, 0, 0, 0, 22, 0, + 0, 1, 69, 0, 0, 9, + 242, 0, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 70, 126, + 16, 0, 5, 0, 0, 0, + 0, 96, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 4, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, + 70, 2, 16, 0, 6, 0, + 0, 0, 43, 0, 0, 6, + 130, 0, 16, 0, 0, 0, + 0, 0, 42, 128, 32, 0, + 0, 0, 0, 0, 23, 0, + 0, 0, 56, 0, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 50, 0, - 0, 11, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 0, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 16, 0, 0, 8, 130, 0, 16, 0, 1, 0, 0, 0, - 246, 15, 16, 128, 65, 0, - 0, 0, 1, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 0, 0, 0, 0, - 72, 0, 0, 11, 242, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 4, 0, 0, 0, 0, 96, + 70, 2, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 70, 2, + 50, 0, 0, 11, 114, 0, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 69, 0, 0, 9, - 242, 0, 16, 0, 1, 0, - 0, 0, 70, 16, 16, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 246, 15, 16, 128, + 65, 0, 0, 0, 1, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 11, + 242, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 70, 126, - 16, 0, 3, 0, 0, 0, - 0, 96, 16, 0, 0, 0, - 0, 0, 0, 0, 0, 7, - 114, 32, 16, 0, 0, 0, + 16, 0, 4, 0, 0, 0, + 0, 96, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 70, 2, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, + 2, 0, 0, 0, 69, 0, + 0, 9, 242, 0, 16, 0, + 1, 0, 0, 0, 70, 16, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 3, 0, + 0, 0, 0, 96, 16, 0, + 0, 0, 0, 0, 0, 0, + 0, 7, 114, 32, 16, 0, 0, 0, 0, 0, 70, 2, - 16, 0, 1, 0, 0, 0, - 56, 0, 0, 8, 130, 32, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 2, 0, - 0, 0, 58, 128, 32, 0, - 0, 0, 0, 0, 22, 0, - 0, 0, 14, 0, 0, 7, - 114, 0, 16, 0, 0, 0, - 0, 0, 70, 18, 16, 0, - 5, 0, 0, 0, 246, 31, + 70, 2, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 8, + 130, 32, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 58, 128, + 32, 0, 0, 0, 0, 0, + 22, 0, 0, 0, 14, 0, + 0, 7, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 18, 16, 0, 5, 0, 0, 0, - 50, 0, 0, 15, 50, 0, - 16, 0, 1, 0, 0, 0, - 70, 0, 16, 0, 0, 0, - 0, 0, 2, 64, 0, 0, - 0, 0, 0, 63, 0, 0, - 0, 191, 0, 0, 0, 0, + 246, 31, 16, 0, 5, 0, + 0, 0, 50, 0, 0, 15, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, + 0, 0, 0, 191, 0, 0, + 0, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 0, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 8, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 1, 0, - 0, 0, 58, 128, 32, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 56, 0, 0, 8, - 34, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 1, 0, 0, 0, 10, 128, + 18, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 58, 128, 32, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, - 0, 8, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, - 16, 0, 0, 0, 0, 0, - 70, 18, 16, 128, 65, 0, - 0, 0, 4, 0, 0, 0, - 85, 0, 0, 7, 114, 0, + 23, 0, 0, 0, 56, 0, + 0, 8, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, 16, 0, 1, 0, 0, 0, + 10, 128, 32, 0, 0, 0, + 0, 0, 24, 0, 0, 0, + 0, 0, 0, 8, 114, 0, + 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 31, 0, 0, 0, 56, 0, - 0, 10, 114, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 0, 0, 70, 18, 16, 128, + 65, 0, 0, 0, 4, 0, + 0, 0, 85, 0, 0, 7, + 114, 0, 16, 0, 1, 0, + 0, 0, 70, 2, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 31, 0, 0, 0, + 56, 0, 0, 10, 114, 0, 16, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 0, 56, 0, 0, 0, 56, - 0, 0, 0, 60, 0, 0, - 0, 0, 51, 0, 0, 11, - 114, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 128, - 129, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, + 0, 0, 0, 56, 0, 0, + 0, 56, 0, 0, 0, 60, + 0, 0, 0, 0, 51, 0, + 0, 11, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, + 16, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 224, 255, 59, 0, 224, 255, 59, 0, 224, - 255, 59, 0, 224, 255, 59, - 0, 0, 0, 0, 1, 0, - 0, 10, 242, 0, 16, 0, - 2, 0, 0, 0, 6, 4, - 16, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 255, 255, - 127, 0, 255, 255, 255, 127, - 0, 0, 128, 127, 255, 255, - 127, 0, 30, 0, 0, 10, - 50, 0, 16, 0, 3, 0, - 0, 0, 198, 0, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 128, 0, - 0, 0, 128, 0, 0, 0, + 255, 59, 0, 0, 0, 0, + 1, 0, 0, 10, 242, 0, + 16, 0, 2, 0, 0, 0, + 6, 4, 16, 0, 0, 0, + 0, 0, 2, 64, 0, 0, + 255, 255, 127, 0, 255, 255, + 255, 127, 0, 0, 128, 127, + 255, 255, 127, 0, 30, 0, + 0, 10, 50, 0, 16, 0, + 3, 0, 0, 0, 198, 0, + 16, 0, 2, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, - 85, 0, 0, 7, 18, 0, + 0, 0, 85, 0, 0, 7, + 18, 0, 16, 0, 4, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 23, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 4, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 23, 0, 0, 0, 85, 0, - 0, 7, 34, 0, 16, 0, - 4, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 85, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 16, 0, + 1, 64, 0, 0, 13, 0, 0, 0, 85, 0, 0, 7, - 130, 0, 16, 0, 0, 0, + 130, 0, 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 85, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 3, 0, 0, 0, 1, 0, - 0, 10, 194, 0, 16, 0, - 3, 0, 0, 0, 6, 4, - 16, 0, 4, 0, 0, 0, - 2, 64, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 10, 194, 0, + 16, 0, 3, 0, 0, 0, + 6, 4, 16, 0, 4, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 0, 0, 0, 0, 128, - 0, 0, 30, 0, 0, 8, - 66, 0, 16, 0, 3, 0, - 0, 0, 42, 0, 16, 128, - 65, 0, 0, 0, 3, 0, - 0, 0, 1, 64, 0, 0, - 113, 0, 0, 0, 85, 0, - 0, 7, 18, 0, 16, 0, - 3, 0, 0, 0, 10, 0, + 0, 0, 255, 0, 0, 0, + 0, 128, 0, 0, 30, 0, + 0, 8, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, + 16, 128, 65, 0, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 113, 0, 0, 0, + 85, 0, 0, 7, 18, 0, 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 34, 0, 0, 7, - 66, 0, 16, 0, 3, 0, + 10, 0, 16, 0, 3, 0, 0, 0, 42, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 24, 0, 0, 0, - 1, 0, 0, 7, 18, 0, + 3, 0, 0, 0, 34, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 42, 0, 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 85, 0, - 0, 7, 18, 0, 16, 0, + 1, 64, 0, 0, 24, 0, + 0, 0, 1, 0, 0, 7, + 18, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, 3, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 13, 0, - 0, 0, 30, 0, 0, 7, - 66, 0, 16, 0, 3, 0, - 0, 0, 26, 0, 16, 0, - 2, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 0, 200, - 85, 0, 0, 7, 66, 0, + 85, 0, 0, 7, 18, 0, 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 3, 0, + 10, 0, 16, 0, 3, 0, 0, 0, 1, 64, 0, 0, - 13, 0, 0, 0, 79, 0, - 0, 7, 18, 0, 16, 0, - 4, 0, 0, 0, 26, 0, + 13, 0, 0, 0, 30, 0, + 0, 7, 66, 0, 16, 0, + 3, 0, 0, 0, 26, 0, 16, 0, 2, 0, 0, 0, 1, 64, 0, 0, 0, 0, - 128, 56, 55, 0, 0, 9, - 18, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, - 4, 0, 0, 0, 10, 0, - 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 79, 0, 0, 7, - 34, 0, 16, 0, 2, 0, - 0, 0, 1, 64, 0, 0, - 0, 224, 255, 71, 26, 0, - 16, 0, 2, 0, 0, 0, - 55, 0, 0, 9, 34, 0, - 16, 0, 2, 0, 0, 0, + 0, 200, 85, 0, 0, 7, + 66, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 13, 0, 0, 0, + 79, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, 26, 0, 16, 0, 2, 0, 0, 0, 1, 64, 0, 0, - 255, 123, 0, 0, 10, 0, - 16, 0, 3, 0, 0, 0, - 60, 0, 0, 7, 130, 0, + 0, 0, 128, 56, 55, 0, + 0, 9, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 79, 0, + 0, 7, 34, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 0, 224, 255, 71, + 26, 0, 16, 0, 2, 0, + 0, 0, 55, 0, 0, 9, + 34, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 255, 123, 0, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 60, 0, 0, 7, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 60, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 10, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 60, 0, + 0, 0, 0, 0, 1, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 1, 0, 0, 7, + 1, 64, 0, 0, 255, 3, + 0, 0, 30, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 255, 3, 0, 0, - 30, 0, 0, 7, 18, 0, + 0, 0, 0, 124, 0, 0, + 55, 0, 0, 9, 18, 0, 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, + 10, 0, 16, 0, 2, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 124, 0, 0, + 32, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, 0, 0, 1, 64, 0, 0, - 0, 124, 0, 0, 55, 0, + 0, 0, 128, 127, 55, 0, 0, 9, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 0, 124, 0, 0, 32, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 42, 0, - 16, 0, 2, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 127, 55, 0, 0, 9, - 18, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, + 0, 0, 26, 0, 16, 0, + 2, 0, 0, 0, 1, 0, + 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 2, 0, - 0, 0, 1, 0, 0, 7, + 1, 64, 0, 0, 255, 127, + 0, 0, 30, 0, 0, 7, 18, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 255, 127, 0, 0, + 0, 0, 58, 0, 16, 0, + 3, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, 30, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 30, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 8, 0, 0, 0, 85, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 8, 0, - 0, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 4, 0, 0, 0, - 41, 0, 0, 7, 50, 0, - 16, 0, 1, 0, 0, 0, - 70, 0, 16, 0, 1, 0, + 1, 64, 0, 0, 4, 0, + 0, 0, 41, 0, 0, 7, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 9, 0, 0, 0, + 41, 0, 0, 7, 130, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, - 9, 0, 0, 0, 41, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 42, 0, - 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 11, 0, - 0, 0, 60, 0, 0, 7, - 18, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, + 11, 0, 0, 0, 60, 0, + 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, - 16, 0, 1, 0, 0, 0, - 85, 0, 0, 7, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 85, 0, 0, 7, + 18, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 23, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 23, 0, 0, 0, 85, 0, - 0, 7, 34, 0, 16, 0, - 2, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 85, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 16, 0, + 1, 64, 0, 0, 13, 0, 0, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 1, 0, + 66, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 85, 0, 0, 7, 66, 0, - 16, 0, 1, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 3, 0, 0, 0, 1, 0, - 0, 10, 50, 0, 16, 0, - 2, 0, 0, 0, 70, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 10, 50, 0, 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 255, 0, - 0, 0, 0, 128, 0, 0, + 70, 0, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 255, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 8, - 130, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 128, - 65, 0, 0, 0, 2, 0, - 0, 0, 1, 64, 0, 0, - 113, 0, 0, 0, 85, 0, - 0, 7, 18, 0, 16, 0, - 2, 0, 0, 0, 26, 0, - 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 34, 0, 0, 7, - 130, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 30, 0, + 0, 8, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, + 2, 0, 0, 0, 1, 64, + 0, 0, 113, 0, 0, 0, + 85, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 24, 0, 0, 0, - 1, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 0, - 2, 0, 0, 0, 85, 0, + 1, 0, 0, 0, 34, 0, 0, 7, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 13, 0, - 0, 0, 1, 0, 0, 10, - 242, 0, 16, 0, 3, 0, - 0, 0, 86, 10, 16, 0, - 0, 0, 0, 0, 2, 64, - 0, 0, 255, 255, 255, 127, - 0, 0, 128, 127, 255, 255, - 127, 0, 255, 255, 255, 127, - 30, 0, 0, 10, 82, 0, + 1, 64, 0, 0, 24, 0, + 0, 0, 1, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, 16, 0, 2, 0, 0, 0, - 6, 3, 16, 0, 3, 0, - 0, 0, 2, 64, 0, 0, - 0, 0, 0, 200, 0, 0, + 85, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 13, 0, 0, 0, 1, 0, + 0, 10, 242, 0, 16, 0, + 3, 0, 0, 0, 86, 10, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 255, 255, + 255, 127, 0, 0, 128, 127, + 255, 255, 127, 0, 255, 255, + 255, 127, 30, 0, 0, 10, + 82, 0, 16, 0, 2, 0, + 0, 0, 6, 3, 16, 0, + 3, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 200, - 0, 0, 0, 0, 85, 0, - 0, 7, 82, 0, 16, 0, - 2, 0, 0, 0, 6, 2, + 0, 0, 0, 0, 0, 0, + 0, 200, 0, 0, 0, 0, + 85, 0, 0, 7, 82, 0, 16, 0, 2, 0, 0, 0, - 1, 64, 0, 0, 13, 0, + 6, 2, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 13, 0, 0, 0, 79, 0, + 0, 10, 50, 0, 16, 0, + 4, 0, 0, 0, 198, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 0, + 128, 56, 0, 0, 128, 56, + 0, 0, 0, 0, 0, 0, + 0, 0, 55, 0, 0, 9, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 4, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 2, 0, 0, 0, 79, 0, 0, 10, - 50, 0, 16, 0, 4, 0, - 0, 0, 198, 0, 16, 0, - 3, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 128, 56, - 0, 0, 128, 56, 0, 0, + 146, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 224, 255, 71, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 224, 255, 71, 6, 12, + 16, 0, 3, 0, 0, 0, 55, 0, 0, 9, 130, 0, 16, 0, 1, 0, 0, 0, - 10, 0, 16, 0, 4, 0, - 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 10, 0, - 16, 0, 2, 0, 0, 0, - 79, 0, 0, 10, 146, 0, - 16, 0, 3, 0, 0, 0, - 2, 64, 0, 0, 0, 224, - 255, 71, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 224, - 255, 71, 6, 12, 16, 0, - 3, 0, 0, 0, 55, 0, - 0, 9, 130, 0, 16, 0, - 1, 0, 0, 0, 10, 0, - 16, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 255, 123, - 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 60, 0, - 0, 7, 18, 0, 16, 0, - 1, 0, 0, 0, 10, 0, + 10, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 255, 123, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, - 42, 0, 16, 0, 1, 0, - 0, 0, 60, 0, 0, 7, - 34, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 10, 0, + 60, 0, 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, - 1, 0, 0, 7, 34, 0, - 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 255, 3, 0, 0, 30, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 60, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 124, - 0, 0, 55, 0, 0, 9, - 34, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 2, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 124, - 0, 0, 32, 0, 0, 7, - 18, 0, 16, 0, 1, 0, - 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 127, - 55, 0, 0, 9, 34, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, + 0, 0, 1, 0, 0, 7, + 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 1, 0, 0, 7, 34, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 255, 3, 0, 0, + 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 255, 127, 0, 0, 30, 0, - 0, 7, 34, 0, 16, 0, - 0, 0, 0, 0, 26, 0, + 0, 124, 0, 0, 55, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 2, 0, 0, 0, 26, 0, 16, 0, 0, 0, - 0, 0, 30, 0, 0, 7, + 0, 0, 1, 64, 0, 0, + 0, 124, 0, 0, 32, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 127, 55, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 1, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 8, 0, 0, 0, - 85, 0, 0, 7, 34, 0, + 0, 0, 255, 127, 0, 0, + 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 4, 0, 0, 0, 60, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, - 16, 0, 1, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 41, 0, 0, 7, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 8, 0, + 0, 0, 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 10, 0, 0, 0, - 60, 0, 0, 7, 18, 0, + 0, 0, 4, 0, 0, 0, + 60, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 30, 0, + 26, 0, 16, 0, 1, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 41, 0, 0, 7, 34, 0, 16, 0, - 0, 0, 0, 0, 42, 0, - 16, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 1, 0, - 0, 0, 42, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 23, 0, 0, 0, - 85, 0, 0, 7, 34, 0, - 16, 0, 1, 0, 0, 0, - 42, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 10, 0, + 0, 0, 60, 0, 0, 7, + 18, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 30, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 3, 0, 0, 0, 1, 64, 0, 0, - 16, 0, 0, 0, 85, 0, - 0, 7, 66, 0, 16, 0, + 0, 0, 128, 0, 85, 0, + 0, 7, 18, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 13, 0, + 1, 64, 0, 0, 23, 0, 0, 0, 85, 0, 0, 7, - 130, 0, 16, 0, 1, 0, + 34, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 1, 0, 0, 10, 50, 0, + 0, 0, 16, 0, 0, 0, + 85, 0, 0, 7, 66, 0, 16, 0, 1, 0, 0, 0, - 70, 0, 16, 0, 1, 0, - 0, 0, 2, 64, 0, 0, - 255, 0, 0, 0, 0, 128, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 30, 0, - 0, 8, 18, 0, 16, 0, - 1, 0, 0, 0, 10, 0, - 16, 128, 65, 0, 0, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 113, 0, 0, 0, - 85, 0, 0, 7, 34, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 13, 0, 0, 0, 85, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 34, 0, - 0, 7, 18, 0, 16, 0, - 1, 0, 0, 0, 10, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 1, 0, 0, 10, + 50, 0, 16, 0, 1, 0, + 0, 0, 70, 0, 16, 0, + 1, 0, 0, 0, 2, 64, + 0, 0, 255, 0, 0, 0, + 0, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 30, 0, 0, 8, 18, 0, 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 24, 0, - 0, 0, 1, 0, 0, 7, + 10, 0, 16, 128, 65, 0, + 0, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 113, 0, + 0, 0, 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, - 85, 0, 0, 7, 34, 0, - 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, + 34, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, - 13, 0, 0, 0, 1, 0, - 0, 7, 18, 0, 16, 0, - 1, 0, 0, 0, 42, 0, + 24, 0, 0, 0, 1, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 127, 55, 0, 0, 9, + 10, 0, 16, 0, 1, 0, + 0, 0, 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 4, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 42, 0, 16, 0, 2, 0, - 0, 0, 55, 0, 0, 9, - 34, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 255, 123, 0, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 13, 0, 0, 0, + 1, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 127, 55, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 4, 0, 0, 0, 26, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 2, 0, 0, 0, 55, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 255, 123, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 60, 0, + 0, 7, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, 0, 0, 60, 0, 0, 7, - 66, 0, 16, 0, 1, 0, + 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, - 1, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0, - 60, 0, 0, 7, 66, 0, + 1, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, - 0, 0, 42, 0, 16, 0, - 1, 0, 0, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 255, 3, 0, 0, 30, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 255, 3, - 0, 0, 30, 0, 0, 7, + 1, 64, 0, 0, 0, 124, + 0, 0, 55, 0, 0, 9, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 124, 0, 0, - 55, 0, 0, 9, 66, 0, + 3, 0, 0, 0, 42, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 124, + 0, 0, 32, 0, 0, 7, + 18, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 127, + 55, 0, 0, 9, 34, 0, 16, 0, 0, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 42, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 124, 0, 0, - 32, 0, 0, 7, 18, 0, - 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 0, 0, 128, 127, 55, 0, - 0, 9, 34, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 1, 0, 0, 0, - 42, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 1, 0, + 255, 127, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 255, 127, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 0, 0, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 30, 0, 0, 7, 34, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 2, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 2, 0, 0, 0, 85, 0, + 2, 0, 0, 0, 60, 0, 0, 7, 34, 0, 16, 0, - 0, 0, 0, 0, 26, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 2, 0, - 0, 0, 60, 0, 0, 7, + 26, 0, 16, 0, 0, 0, + 0, 0, 41, 0, 0, 7, 34, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 41, 0, 0, 7, 34, 0, - 16, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 20, 0, 0, 0, + 60, 0, 0, 7, 18, 32, + 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 20, 0, 0, 0, 60, 0, - 0, 7, 18, 32, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 62, 0, 0, 1 + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 62, 0, + 0, 1 }; diff --git a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedVelocity.inc b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedVelocity.inc index 48b39ee8..e40ba454 100644 --- a/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedVelocity.inc +++ b/DirectXTK/Src/Shaders/Compiled/PBREffect_PSTexturedVelocity.inc @@ -44,30 +44,33 @@ dp3 r0.w, r0.xyzx, r0.xyzx rsq r0.w, r0.w mul r0.xyz, r0.wwww, r0.xyzx sample r1.xyzw, v0.xyxx, t1.xyzw, s0 -mad r1.xyz, r1.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000) +mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000) +dp2 r0.w, r1.xyxx, r1.xyxx +add r0.w, -r0.w, l(1.000000) +sqrt r0.w, r0.w deriv_rtx r2.xyz, v1.yzxy deriv_rty r3.xyz, v1.zxyz -deriv_rtx r4.xy, v0.xyxx -deriv_rty r4.zw, v0.xxxy +deriv_rtx r1.zw, v0.xxxy +deriv_rty r4.xy, v0.xyxx mul r5.xyz, r2.xyzx, r3.yzxy mad r5.xyz, r2.zxyz, r3.zxyz, -r5.xyzx mul r6.xyz, r3.xyzx, r5.zxyz mad r3.xyz, r3.zxyz, r5.xyzx, -r6.xyzx mul r6.xyz, r2.xyzx, r5.xyzx mad r2.xyz, r5.zxyz, r2.yzxy, -r6.xyzx -mul r5.xyz, r2.xyzx, r4.zzzz -mad r5.xyz, r4.xxxx, r3.xyzx, r5.xyzx -dp3 r0.w, r5.xyzx, r5.xyzx -rsq r0.w, r0.w -mul r5.xyz, r0.wwww, r5.xyzx -mul r2.xyz, r2.xyzx, r4.wwww -mad r2.xyz, r4.yyyy, r3.xyzx, r2.xyzx -dp3 r0.w, r2.xyzx, r2.xyzx -rsq r0.w, r0.w -mul r2.xyz, r0.wwww, r2.xyzx -mul r2.xyz, r1.yyyy, r2.xyzx -mad r1.xyw, r1.xxxx, r5.xyxz, r2.xyxz -mad r1.xyz, r1.zzzz, v2.xyzx, r1.xywx +mul r4.xzw, r2.xxyz, r4.xxxx +mad r4.xzw, r1.zzzz, r3.xxyz, r4.xxzw +dp3 r1.z, r4.xzwx, r4.xzwx +rsq r1.z, r1.z +mul r4.xzw, r1.zzzz, r4.xxzw +mul r2.xyz, r2.xyzx, r4.yyyy +mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx +dp3 r1.z, r2.xyzx, r2.xyzx +rsq r1.z, r1.z +mul r2.xyz, r1.zzzz, r2.xyzx +mul r1.yzw, r1.yyyy, r2.xxyz +mad r1.xyz, r1.xxxx, r4.xzwx, r1.yzwy +mad r1.xyz, r0.wwww, v2.xyzx, r1.xyzx dp3 r0.w, r1.xyzx, r1.xyzx rsq r0.w, r0.w mul r1.xyz, r0.wwww, r1.xyzx @@ -248,11 +251,11 @@ ret const BYTE PBREffect_PSTexturedVelocity[] = { - 68, 88, 66, 67, 149, 67, - 22, 57, 126, 10, 15, 199, - 73, 8, 201, 220, 26, 234, - 11, 229, 1, 0, 0, 0, - 164, 26, 0, 0, 3, 0, + 68, 88, 66, 67, 133, 199, + 204, 225, 220, 220, 233, 187, + 36, 136, 113, 55, 98, 170, + 28, 163, 1, 0, 0, 0, + 244, 26, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 232, 0, 0, 0, 52, 1, 0, 0, 73, 83, 71, 78, @@ -300,8 +303,8 @@ const BYTE PBREffect_PSTexturedVelocity[] = 0, 0, 83, 86, 95, 84, 97, 114, 103, 101, 116, 0, 171, 171, 83, 72, 68, 82, - 104, 25, 0, 0, 64, 0, - 0, 0, 90, 6, 0, 0, + 184, 25, 0, 0, 64, 0, + 0, 0, 110, 6, 0, 0, 89, 8, 0, 4, 70, 142, 32, 0, 0, 0, 0, 0, 25, 0, 0, 0, 90, 0, @@ -363,326 +366,400 @@ const BYTE PBREffect_PSTexturedVelocity[] = 70, 126, 16, 0, 1, 0, 0, 0, 0, 96, 16, 0, 0, 0, 0, 0, 50, 0, - 0, 15, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 0, 15, 50, 0, 16, 0, + 1, 0, 0, 0, 70, 0, 16, 0, 1, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 64, - 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 128, 191, 0, 0, - 128, 191, 0, 0, 128, 191, - 0, 0, 0, 0, 11, 0, - 0, 5, 114, 0, 16, 0, - 2, 0, 0, 0, 150, 20, + 128, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 70, 0, 16, 0, 1, 0, 0, 0, - 12, 0, 0, 5, 114, 0, - 16, 0, 3, 0, 0, 0, - 38, 25, 16, 0, 1, 0, - 0, 0, 11, 0, 0, 5, - 50, 0, 16, 0, 4, 0, - 0, 0, 70, 16, 16, 0, - 0, 0, 0, 0, 12, 0, - 0, 5, 194, 0, 16, 0, - 4, 0, 0, 0, 6, 20, + 70, 0, 16, 0, 1, 0, + 0, 0, 0, 0, 0, 8, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 128, + 65, 0, 0, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 0, 128, 63, 75, 0, + 0, 5, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 150, 4, 16, 0, - 3, 0, 0, 0, 50, 0, - 0, 10, 114, 0, 16, 0, - 5, 0, 0, 0, 38, 9, + 11, 0, 0, 5, 114, 0, 16, 0, 2, 0, 0, 0, - 38, 9, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 128, - 65, 0, 0, 0, 5, 0, + 150, 20, 16, 0, 1, 0, + 0, 0, 12, 0, 0, 5, + 114, 0, 16, 0, 3, 0, + 0, 0, 38, 25, 16, 0, + 1, 0, 0, 0, 11, 0, + 0, 5, 194, 0, 16, 0, + 1, 0, 0, 0, 6, 20, + 16, 0, 0, 0, 0, 0, + 12, 0, 0, 5, 50, 0, + 16, 0, 4, 0, 0, 0, + 70, 16, 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 6, 0, + 114, 0, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 38, 9, - 16, 0, 5, 0, 0, 0, - 50, 0, 0, 10, 114, 0, + 2, 0, 0, 0, 150, 4, 16, 0, 3, 0, 0, 0, - 38, 9, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 70, 2, + 50, 0, 0, 10, 114, 0, + 16, 0, 5, 0, 0, 0, + 38, 9, 16, 0, 2, 0, + 0, 0, 38, 9, 16, 0, + 3, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, - 6, 0, 0, 0, 56, 0, + 5, 0, 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 16, 0, 3, 0, 0, 0, + 38, 9, 16, 0, 5, 0, 0, 0, 50, 0, 0, 10, - 114, 0, 16, 0, 2, 0, + 114, 0, 16, 0, 3, 0, 0, 0, 38, 9, 16, 0, - 5, 0, 0, 0, 150, 4, - 16, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, 114, 0, - 16, 0, 5, 0, 0, 0, + 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, 2, 0, - 0, 0, 166, 10, 16, 0, - 4, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 5, 0, 0, 0, 6, 0, - 16, 0, 4, 0, 0, 0, - 70, 2, 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 16, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 70, 2, + 5, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 2, 0, 0, 0, 38, 9, 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 5, 0, - 0, 0, 68, 0, 0, 5, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 5, 0, 0, 0, 246, 15, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 5, 0, + 150, 4, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 65, 0, 0, 0, 6, 0, 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 2, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 246, 15, + 210, 0, 16, 0, 4, 0, + 0, 0, 6, 9, 16, 0, + 2, 0, 0, 0, 6, 0, 16, 0, 4, 0, 0, 0, - 50, 0, 0, 9, 114, 0, + 50, 0, 0, 9, 210, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 9, 16, 0, + 3, 0, 0, 0, 6, 14, + 16, 0, 4, 0, 0, 0, + 16, 0, 0, 7, 66, 0, + 16, 0, 1, 0, 0, 0, + 134, 3, 16, 0, 4, 0, + 0, 0, 134, 3, 16, 0, + 4, 0, 0, 0, 68, 0, + 0, 5, 66, 0, 16, 0, + 1, 0, 0, 0, 42, 0, + 16, 0, 1, 0, 0, 0, + 56, 0, 0, 7, 210, 0, + 16, 0, 4, 0, 0, 0, + 166, 10, 16, 0, 1, 0, + 0, 0, 6, 14, 16, 0, + 4, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, 86, 5, 16, 0, 4, 0, - 0, 0, 70, 2, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 16, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 3, 0, 0, 0, 70, 2, 16, 0, 2, 0, + 0, 0, 16, 0, 0, 7, + 66, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 68, 0, - 0, 5, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 56, 0, 0, 7, 114, 0, + 2, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 56, 0, - 0, 7, 114, 0, 16, 0, - 2, 0, 0, 0, 86, 5, + 68, 0, 0, 5, 66, 0, 16, 0, 1, 0, 0, 0, - 70, 2, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 9, - 178, 0, 16, 0, 1, 0, - 0, 0, 6, 0, 16, 0, - 1, 0, 0, 0, 70, 8, - 16, 0, 5, 0, 0, 0, - 70, 8, 16, 0, 2, 0, - 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 1, 0, + 42, 0, 16, 0, 1, 0, + 0, 0, 56, 0, 0, 7, + 114, 0, 16, 0, 2, 0, 0, 0, 166, 10, 16, 0, - 1, 0, 0, 0, 70, 18, - 16, 0, 2, 0, 0, 0, - 70, 3, 16, 0, 1, 0, - 0, 0, 16, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, 70, 2, + 16, 0, 2, 0, 0, 0, + 56, 0, 0, 7, 226, 0, 16, 0, 1, 0, 0, 0, - 68, 0, 0, 5, 130, 0, + 86, 5, 16, 0, 1, 0, + 0, 0, 6, 9, 16, 0, + 2, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 6, 0, + 16, 0, 1, 0, 0, 0, + 134, 3, 16, 0, 4, 0, + 0, 0, 150, 7, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 0, + 70, 18, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 2, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 0, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 69, 0, 0, 9, 242, 0, - 16, 0, 3, 0, 0, 0, - 70, 16, 16, 0, 0, 0, - 0, 0, 70, 126, 16, 0, - 2, 0, 0, 0, 0, 96, - 16, 0, 0, 0, 0, 0, - 16, 32, 0, 7, 130, 0, + 70, 2, 16, 0, 1, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 1, 0, 0, 0, 246, 15, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, 1, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 2, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 0, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 69, 0, 0, 9, + 242, 0, 16, 0, 3, 0, + 0, 0, 70, 16, 16, 0, + 0, 0, 0, 0, 70, 126, + 16, 0, 2, 0, 0, 0, + 0, 96, 16, 0, 0, 0, + 0, 0, 16, 32, 0, 7, + 130, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 56, 0, - 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 0, 0, 0, 0, + 56, 0, 0, 7, 130, 0, + 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 3, 0, - 0, 0, 50, 0, 0, 10, + 0, 0, 26, 0, 16, 0, + 3, 0, 0, 0, 50, 0, + 0, 10, 114, 0, 16, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 56, 0, 0, 7, 114, 0, 16, 0, 4, 0, - 0, 0, 166, 10, 16, 0, + 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 2, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 56, 0, 0, 7, 114, 0, 16, 0, 4, 0, 0, 0, - 6, 0, 16, 0, 3, 0, - 0, 0, 70, 2, 16, 0, - 4, 0, 0, 0, 0, 0, - 0, 10, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, + 0, 0, 0, 10, 114, 0, 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 10, 215, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 10, 215, 35, 189, 10, 215, 35, 189, 10, 215, 35, 189, - 10, 215, 35, 189, 0, 0, - 0, 0, 50, 0, 0, 12, - 114, 0, 16, 0, 2, 0, - 0, 0, 166, 10, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 2, 64, 0, 0, 10, 215, + 0, 0, 0, 0, 50, 0, + 0, 12, 114, 0, 16, 0, + 2, 0, 0, 0, 166, 10, + 16, 0, 3, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 2, 64, 0, 0, + 10, 215, 35, 61, 10, 215, 35, 61, 10, 215, 35, 61, - 10, 215, 35, 61, 0, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 5, 0, - 0, 0, 6, 0, 16, 0, - 3, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 0, 0, 0, 7, 66, 0, + 0, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 5, 0, 0, 0, 6, 0, 16, 0, 3, 0, 0, 0, - 26, 0, 16, 0, 3, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 0, 0, 0, 7, + 66, 0, 16, 0, 3, 0, 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 0, 0, - 0, 8, 130, 0, 16, 0, + 3, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 0, 0, 0, 8, 130, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 130, 0, 16, 0, 3, 0, + 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 58, 0, - 16, 128, 65, 0, 0, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, + 16, 0, 0, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 56, 0, + 3, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, 3, 0, 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 3, 0, 0, 0, - 56, 0, 0, 7, 130, 0, - 16, 0, 3, 0, 0, 0, - 58, 0, 16, 0, 1, 0, + 130, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 50, 0, - 0, 9, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, + 50, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 191, 50, 0, - 0, 13, 114, 0, 16, 0, - 2, 0, 0, 0, 70, 2, - 16, 128, 65, 0, 0, 0, - 2, 0, 0, 0, 6, 0, - 16, 0, 3, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 128, 63, 0, 0, 128, 63, - 0, 0, 128, 63, 0, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 3, 0, 0, 0, 58, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 62, - 54, 0, 0, 8, 114, 0, - 16, 0, 6, 0, 0, 0, - 2, 64, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 191, + 50, 0, 0, 13, 114, 0, + 16, 0, 2, 0, 0, 0, + 70, 2, 16, 128, 65, 0, + 0, 0, 2, 0, 0, 0, + 6, 0, 16, 0, 3, 0, + 0, 0, 2, 64, 0, 0, + 0, 0, 128, 63, 0, 0, + 128, 63, 0, 0, 128, 63, + 0, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 58, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 62, 54, 0, 0, 8, + 114, 0, 16, 0, 6, 0, + 0, 0, 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 5, - 130, 0, 16, 0, 4, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 0, 48, 0, - 0, 1, 33, 0, 0, 7, - 130, 0, 16, 0, 5, 0, - 0, 0, 58, 0, 16, 0, + 0, 0, 0, 0, 54, 0, + 0, 5, 130, 0, 16, 0, 4, 0, 0, 0, 1, 64, - 0, 0, 3, 0, 0, 0, - 3, 0, 4, 3, 58, 0, - 16, 0, 5, 0, 0, 0, - 16, 0, 0, 15, 130, 0, - 16, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 48, 0, 0, 1, 33, 0, + 0, 7, 130, 0, 16, 0, + 5, 0, 0, 0, 58, 0, + 16, 0, 4, 0, 0, 0, + 1, 64, 0, 0, 3, 0, + 0, 0, 3, 0, 4, 3, + 58, 0, 16, 0, 5, 0, + 0, 0, 16, 0, 0, 15, + 130, 0, 16, 0, 5, 0, + 0, 0, 70, 130, 32, 134, + 65, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 70, 130, 32, 134, + 65, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 4, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 5, 0, + 0, 0, 58, 0, 16, 0, + 5, 0, 0, 0, 56, 0, + 0, 11, 114, 0, 16, 0, + 7, 0, 0, 0, 246, 15, + 16, 0, 5, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, + 50, 0, 0, 13, 114, 0, + 16, 0, 8, 0, 0, 0, 70, 130, 32, 134, 65, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 58, 0, 16, 0, 4, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 5, 0, 0, 0, - 58, 0, 16, 0, 5, 0, - 0, 0, 56, 0, 0, 11, - 114, 0, 16, 0, 7, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 130, - 32, 134, 65, 0, 0, 0, - 0, 0, 0, 0, 16, 0, - 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 50, 0, - 0, 13, 114, 0, 16, 0, - 8, 0, 0, 0, 70, 130, - 32, 134, 65, 0, 0, 0, + 246, 15, 16, 0, 5, 0, + 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, 16, 0, + 0, 7, 130, 0, 16, 0, + 5, 0, 0, 0, 70, 2, + 16, 0, 8, 0, 0, 0, + 70, 2, 16, 0, 8, 0, + 0, 0, 68, 0, 0, 5, + 130, 0, 16, 0, 5, 0, 0, 0, 58, 0, 16, 0, - 4, 0, 0, 0, 246, 15, + 5, 0, 0, 0, 56, 0, + 0, 7, 114, 0, 16, 0, + 8, 0, 0, 0, 246, 15, 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, - 0, 0, 16, 0, 0, 7, + 70, 2, 16, 0, 8, 0, + 0, 0, 16, 32, 0, 7, 130, 0, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 8, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 68, 0, 0, 5, 130, 0, - 16, 0, 5, 0, 0, 0, - 58, 0, 16, 0, 5, 0, - 0, 0, 56, 0, 0, 7, - 114, 0, 16, 0, 8, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 0, 7, 0, 0, 0, 16, 32, 0, 7, 130, 0, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 1, 0, + 16, 0, 6, 0, 0, 0, + 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 7, 0, 0, 0, 16, 32, + 8, 0, 0, 0, 16, 32, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 8, 0, + 0, 0, 56, 0, 0, 7, + 34, 0, 16, 0, 7, 0, + 0, 0, 58, 0, 16, 0, + 6, 0, 0, 0, 58, 0, + 16, 0, 6, 0, 0, 0, + 50, 0, 0, 9, 66, 0, + 16, 0, 7, 0, 0, 0, + 26, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 0, 191, + 0, 0, 0, 8, 130, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 5, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, + 18, 0, 16, 0, 8, 0, + 0, 0, 58, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 7, 0, 0, 0, + 56, 0, 0, 7, 18, 0, + 16, 0, 8, 0, 0, 0, + 10, 0, 16, 0, 8, 0, + 0, 0, 10, 0, 16, 0, + 8, 0, 0, 0, 56, 0, 0, 7, 130, 0, 16, 0, - 6, 0, 0, 0, 70, 2, + 7, 0, 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 16, 32, 0, 7, + 10, 0, 16, 0, 8, 0, + 0, 0, 50, 0, 0, 9, + 130, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 50, 0, 0, 9, + 66, 0, 16, 0, 7, 0, + 0, 0, 42, 0, 16, 0, + 7, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 2, - 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 34, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 10, 0, 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 6, 0, + 50, 0, 0, 9, 18, 0, + 16, 0, 7, 0, 0, 0, + 10, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 0, - 6, 0, 0, 0, 50, 0, - 0, 9, 66, 0, 16, 0, - 7, 0, 0, 0, 26, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 63, + 56, 0, 0, 7, 82, 0, 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 3, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 191, 0, 0, + 6, 2, 16, 0, 7, 0, + 0, 0, 6, 3, 16, 0, + 7, 0, 0, 0, 56, 0, + 0, 7, 18, 0, 16, 0, + 7, 0, 0, 0, 10, 0, + 16, 0, 7, 0, 0, 0, + 1, 64, 0, 0, 219, 15, + 73, 64, 52, 0, 0, 7, + 18, 0, 16, 0, 7, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 1, 64, + 0, 0, 189, 55, 134, 53, + 14, 0, 0, 7, 18, 0, + 16, 0, 7, 0, 0, 0, + 58, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 7, 0, 0, 0, 0, 0, 0, 8, 130, 0, 16, 0, 7, 0, 0, 0, 58, 0, 16, 128, 65, 0, 0, 0, - 5, 0, 0, 0, 1, 64, + 6, 0, 0, 0, 1, 64, 0, 0, 0, 0, 128, 63, 56, 0, 0, 7, 18, 0, 16, 0, 8, 0, 0, 0, @@ -698,691 +775,630 @@ const BYTE PBREffect_PSTexturedVelocity[] = 0, 0, 58, 0, 16, 0, 7, 0, 0, 0, 10, 0, 16, 0, 8, 0, 0, 0, - 50, 0, 0, 9, 130, 0, - 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 7, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 50, 0, 0, 9, 66, 0, - 16, 0, 7, 0, 0, 0, - 42, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 63, - 56, 0, 0, 7, 18, 0, - 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 50, 0, - 0, 9, 18, 0, 16, 0, - 7, 0, 0, 0, 10, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, - 0, 7, 82, 0, 16, 0, - 7, 0, 0, 0, 6, 2, - 16, 0, 7, 0, 0, 0, - 6, 3, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 7, 0, 0, 0, 1, 64, - 0, 0, 219, 15, 73, 64, - 52, 0, 0, 7, 18, 0, - 16, 0, 7, 0, 0, 0, - 10, 0, 16, 0, 7, 0, + 50, 0, 0, 9, 114, 0, + 16, 0, 8, 0, 0, 0, + 70, 2, 16, 0, 2, 0, + 0, 0, 246, 15, 16, 0, + 7, 0, 0, 0, 70, 2, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 10, 130, 0, + 16, 0, 6, 0, 0, 0, + 58, 0, 16, 128, 65, 0, + 0, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 6, 0, 0, 0, 1, 64, 0, 0, - 189, 55, 134, 53, 14, 0, - 0, 7, 18, 0, 16, 0, - 7, 0, 0, 0, 58, 0, + 0, 0, 128, 63, 50, 0, + 0, 9, 130, 0, 16, 0, + 6, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 7, 0, - 0, 0, 0, 0, 0, 8, - 130, 0, 16, 0, 7, 0, - 0, 0, 58, 0, 16, 128, - 65, 0, 0, 0, 6, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 63, 56, 0, - 0, 7, 18, 0, 16, 0, - 8, 0, 0, 0, 58, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 7, - 18, 0, 16, 0, 8, 0, - 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 10, 0, - 16, 0, 8, 0, 0, 0, - 56, 0, 0, 7, 130, 0, - 16, 0, 7, 0, 0, 0, - 58, 0, 16, 0, 7, 0, - 0, 0, 10, 0, 16, 0, - 8, 0, 0, 0, 50, 0, - 0, 9, 114, 0, 16, 0, - 8, 0, 0, 0, 70, 2, - 16, 0, 2, 0, 0, 0, - 246, 15, 16, 0, 7, 0, - 0, 0, 70, 2, 16, 0, - 5, 0, 0, 0, 50, 0, + 58, 0, 16, 0, 6, 0, + 0, 0, 26, 0, 16, 0, + 7, 0, 0, 0, 14, 0, 0, 10, 130, 0, 16, 0, - 6, 0, 0, 0, 58, 0, - 16, 128, 65, 0, 0, 0, - 6, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 63, 50, 0, 0, 9, - 130, 0, 16, 0, 6, 0, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 6, 0, 0, 0, - 26, 0, 16, 0, 7, 0, - 0, 0, 14, 0, 0, 10, - 130, 0, 16, 0, 6, 0, - 0, 0, 2, 64, 0, 0, + 6, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, - 0, 0, 128, 63, 58, 0, - 16, 0, 6, 0, 0, 0, + 58, 0, 16, 0, 6, 0, + 0, 0, 56, 0, 0, 7, + 178, 0, 16, 0, 7, 0, + 0, 0, 6, 0, 16, 0, + 7, 0, 0, 0, 70, 8, + 16, 0, 8, 0, 0, 0, 56, 0, 0, 7, 178, 0, 16, 0, 7, 0, 0, 0, - 6, 0, 16, 0, 7, 0, - 0, 0, 70, 8, 16, 0, - 8, 0, 0, 0, 56, 0, - 0, 7, 178, 0, 16, 0, - 7, 0, 0, 0, 246, 15, - 16, 0, 6, 0, 0, 0, - 70, 12, 16, 0, 7, 0, - 0, 0, 56, 0, 0, 10, - 114, 0, 16, 0, 8, 0, - 0, 0, 246, 15, 16, 0, - 5, 0, 0, 0, 70, 130, - 32, 6, 0, 0, 0, 0, - 19, 0, 0, 0, 58, 0, - 16, 0, 4, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 7, 0, 0, 0, - 70, 2, 16, 0, 4, 0, - 0, 0, 166, 10, 16, 0, - 7, 0, 0, 0, 70, 3, - 16, 0, 7, 0, 0, 0, - 50, 0, 0, 9, 114, 0, - 16, 0, 6, 0, 0, 0, - 70, 2, 16, 0, 8, 0, - 0, 0, 70, 2, 16, 0, - 7, 0, 0, 0, 70, 2, - 16, 0, 6, 0, 0, 0, - 30, 0, 0, 7, 130, 0, - 16, 0, 4, 0, 0, 0, + 246, 15, 16, 0, 6, 0, + 0, 0, 70, 12, 16, 0, + 7, 0, 0, 0, 56, 0, + 0, 10, 114, 0, 16, 0, + 8, 0, 0, 0, 246, 15, + 16, 0, 5, 0, 0, 0, + 70, 130, 32, 6, 0, 0, + 0, 0, 19, 0, 0, 0, 58, 0, 16, 0, 4, 0, - 0, 0, 1, 64, 0, 0, - 1, 0, 0, 0, 22, 0, - 0, 1, 69, 0, 0, 9, - 242, 0, 16, 0, 7, 0, + 0, 0, 50, 0, 0, 9, + 114, 0, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, - 1, 0, 0, 0, 70, 126, - 16, 0, 5, 0, 0, 0, - 0, 96, 16, 0, 1, 0, + 4, 0, 0, 0, 166, 10, + 16, 0, 7, 0, 0, 0, + 70, 3, 16, 0, 7, 0, 0, 0, 50, 0, 0, 9, - 114, 0, 16, 0, 2, 0, + 114, 0, 16, 0, 6, 0, 0, 0, 70, 2, 16, 0, - 4, 0, 0, 0, 70, 2, + 8, 0, 0, 0, 70, 2, 16, 0, 7, 0, 0, 0, 70, 2, 16, 0, 6, 0, - 0, 0, 43, 0, 0, 6, - 130, 0, 16, 0, 0, 0, - 0, 0, 42, 128, 32, 0, - 0, 0, 0, 0, 23, 0, - 0, 0, 56, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 3, 0, 0, 0, - 16, 0, 0, 8, 130, 0, - 16, 0, 1, 0, 0, 0, - 70, 2, 16, 128, 65, 0, - 0, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 0, 0, 0, 7, - 130, 0, 16, 0, 1, 0, + 0, 0, 30, 0, 0, 7, + 130, 0, 16, 0, 4, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 58, 0, + 4, 0, 0, 0, 1, 64, + 0, 0, 1, 0, 0, 0, + 22, 0, 0, 1, 69, 0, + 0, 9, 242, 0, 16, 0, + 7, 0, 0, 0, 70, 2, 16, 0, 1, 0, 0, 0, - 50, 0, 0, 11, 114, 0, + 70, 126, 16, 0, 5, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 50, 0, + 0, 9, 114, 0, 16, 0, + 2, 0, 0, 0, 70, 2, + 16, 0, 4, 0, 0, 0, + 70, 2, 16, 0, 7, 0, + 0, 0, 70, 2, 16, 0, + 6, 0, 0, 0, 43, 0, + 0, 6, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 128, + 32, 0, 0, 0, 0, 0, + 23, 0, 0, 0, 56, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, - 70, 2, 16, 0, 1, 0, - 0, 0, 246, 15, 16, 128, - 65, 0, 0, 0, 1, 0, + 26, 0, 16, 0, 3, 0, + 0, 0, 16, 0, 0, 8, + 130, 0, 16, 0, 1, 0, 0, 0, 70, 2, 16, 128, 65, 0, 0, 0, 0, 0, - 0, 0, 72, 0, 0, 11, - 242, 0, 16, 0, 0, 0, 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 126, - 16, 0, 4, 0, 0, 0, - 0, 96, 16, 0, 1, 0, - 0, 0, 58, 0, 16, 0, - 0, 0, 0, 0, 50, 0, - 0, 9, 114, 32, 16, 0, + 1, 0, 0, 0, 0, 0, + 0, 7, 130, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 50, 0, 0, 11, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 2, 16, 0, + 1, 0, 0, 0, 246, 15, + 16, 128, 65, 0, 0, 0, + 1, 0, 0, 0, 70, 2, + 16, 128, 65, 0, 0, 0, + 0, 0, 0, 0, 72, 0, + 0, 11, 242, 0, 16, 0, 0, 0, 0, 0, 70, 2, - 16, 0, 5, 0, 0, 0, - 70, 2, 16, 0, 0, 0, + 16, 0, 0, 0, 0, 0, + 70, 126, 16, 0, 4, 0, + 0, 0, 0, 96, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 0, 0, 0, 0, + 50, 0, 0, 9, 114, 32, + 16, 0, 0, 0, 0, 0, + 70, 2, 16, 0, 5, 0, 0, 0, 70, 2, 16, 0, - 2, 0, 0, 0, 56, 0, - 0, 8, 130, 32, 16, 0, - 0, 0, 0, 0, 58, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 2, 0, 0, 0, - 58, 128, 32, 0, 0, 0, - 0, 0, 22, 0, 0, 0, - 14, 0, 0, 7, 114, 0, + 56, 0, 0, 8, 130, 32, 16, 0, 0, 0, 0, 0, - 70, 18, 16, 0, 5, 0, - 0, 0, 246, 31, 16, 0, - 5, 0, 0, 0, 50, 0, - 0, 15, 50, 0, 16, 0, - 1, 0, 0, 0, 70, 0, - 16, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 0, 63, 0, 0, 0, 191, - 0, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 2, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 22, 0, + 0, 0, 14, 0, 0, 7, + 114, 0, 16, 0, 0, 0, + 0, 0, 70, 18, 16, 0, + 5, 0, 0, 0, 246, 31, + 16, 0, 5, 0, 0, 0, + 50, 0, 0, 15, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 0, 0, 0, 0, 2, 64, 0, 0, 0, 0, 0, 63, 0, 0, - 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, - 0, 8, 18, 0, 16, 0, - 0, 0, 0, 0, 10, 0, - 16, 0, 1, 0, 0, 0, - 58, 128, 32, 0, 0, 0, - 0, 0, 23, 0, 0, 0, - 56, 0, 0, 8, 34, 0, + 0, 191, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 0, + 56, 0, 0, 8, 18, 0, + 16, 0, 0, 0, 0, 0, + 10, 0, 16, 0, 1, 0, + 0, 0, 58, 128, 32, 0, + 0, 0, 0, 0, 23, 0, + 0, 0, 56, 0, 0, 8, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 1, 0, 0, 0, 10, 128, + 32, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, + 0, 8, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 1, 0, - 0, 0, 10, 128, 32, 0, - 0, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 0, 8, - 114, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 70, 18, - 16, 128, 65, 0, 0, 0, - 4, 0, 0, 0, 85, 0, - 0, 7, 114, 0, 16, 0, - 1, 0, 0, 0, 70, 2, + 70, 18, 16, 128, 65, 0, + 0, 0, 4, 0, 0, 0, + 85, 0, 0, 7, 114, 0, + 16, 0, 1, 0, 0, 0, + 70, 2, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 31, 0, 0, 0, 56, 0, + 0, 10, 114, 0, 16, 0, + 0, 0, 0, 0, 70, 2, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 31, 0, - 0, 0, 56, 0, 0, 10, + 2, 64, 0, 0, 0, 0, + 0, 56, 0, 0, 0, 56, + 0, 0, 0, 60, 0, 0, + 0, 0, 51, 0, 0, 11, 114, 0, 16, 0, 0, 0, - 0, 0, 70, 2, 16, 0, - 0, 0, 0, 0, 2, 64, - 0, 0, 0, 0, 0, 56, - 0, 0, 0, 56, 0, 0, - 0, 60, 0, 0, 0, 0, - 51, 0, 0, 11, 114, 0, - 16, 0, 0, 0, 0, 0, - 70, 2, 16, 128, 129, 0, - 0, 0, 0, 0, 0, 0, - 2, 64, 0, 0, 0, 224, - 255, 59, 0, 224, 255, 59, - 0, 224, 255, 59, 0, 0, - 0, 0, 1, 0, 0, 10, - 242, 0, 16, 0, 2, 0, - 0, 0, 6, 4, 16, 0, - 0, 0, 0, 0, 2, 64, - 0, 0, 255, 255, 127, 0, - 255, 255, 255, 127, 0, 0, - 128, 127, 255, 255, 127, 0, - 30, 0, 0, 10, 50, 0, - 16, 0, 3, 0, 0, 0, - 198, 0, 16, 0, 2, 0, + 0, 0, 70, 2, 16, 128, + 129, 0, 0, 0, 0, 0, 0, 0, 2, 64, 0, 0, + 0, 224, 255, 59, 0, 224, + 255, 59, 0, 224, 255, 59, + 0, 0, 0, 0, 1, 0, + 0, 10, 242, 0, 16, 0, + 2, 0, 0, 0, 6, 4, + 16, 0, 0, 0, 0, 0, + 2, 64, 0, 0, 255, 255, + 127, 0, 255, 255, 255, 127, + 0, 0, 128, 127, 255, 255, + 127, 0, 30, 0, 0, 10, + 50, 0, 16, 0, 3, 0, + 0, 0, 198, 0, 16, 0, + 2, 0, 0, 0, 2, 64, + 0, 0, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, - 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 0, - 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 0, 0, + 85, 0, 0, 7, 18, 0, + 16, 0, 4, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 23, 0, 0, 0, 85, 0, + 0, 7, 34, 0, 16, 0, 4, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 23, 0, + 1, 64, 0, 0, 16, 0, 0, 0, 85, 0, 0, 7, - 34, 0, 16, 0, 4, 0, + 130, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 16, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 85, 0, 0, 7, 130, 0, - 16, 0, 0, 0, 0, 0, + 16, 0, 1, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 13, 0, 0, 0, 85, 0, - 0, 7, 130, 0, 16, 0, - 1, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 10, - 194, 0, 16, 0, 3, 0, - 0, 0, 6, 4, 16, 0, - 4, 0, 0, 0, 2, 64, + 3, 0, 0, 0, 1, 0, + 0, 10, 194, 0, 16, 0, + 3, 0, 0, 0, 6, 4, + 16, 0, 4, 0, 0, 0, + 2, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 255, 0, - 0, 0, 0, 128, 0, 0, - 30, 0, 0, 8, 66, 0, - 16, 0, 3, 0, 0, 0, - 42, 0, 16, 128, 65, 0, - 0, 0, 3, 0, 0, 0, - 1, 64, 0, 0, 113, 0, - 0, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 42, 0, - 16, 0, 3, 0, 0, 0, - 34, 0, 0, 7, 66, 0, - 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 3, 0, + 255, 0, 0, 0, 0, 128, + 0, 0, 30, 0, 0, 8, + 66, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 128, + 65, 0, 0, 0, 3, 0, 0, 0, 1, 64, 0, 0, - 24, 0, 0, 0, 1, 0, + 113, 0, 0, 0, 85, 0, 0, 7, 18, 0, 16, 0, - 3, 0, 0, 0, 42, 0, + 3, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 3, 0, - 0, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 3, 0, - 0, 0, 10, 0, 16, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 34, 0, 0, 7, + 66, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, 3, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 30, 0, 0, 7, 66, 0, + 0, 0, 24, 0, 0, 0, + 1, 0, 0, 7, 18, 0, 16, 0, 3, 0, 0, 0, - 26, 0, 16, 0, 2, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 0, 200, 85, 0, - 0, 7, 66, 0, 16, 0, - 3, 0, 0, 0, 42, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 10, 0, 16, 0, + 3, 0, 0, 0, 85, 0, + 0, 7, 18, 0, 16, 0, + 3, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, 1, 64, 0, 0, 13, 0, - 0, 0, 79, 0, 0, 7, - 18, 0, 16, 0, 4, 0, + 0, 0, 30, 0, 0, 7, + 66, 0, 16, 0, 3, 0, 0, 0, 26, 0, 16, 0, 2, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 56, - 55, 0, 0, 9, 18, 0, + 0, 0, 0, 0, 0, 200, + 85, 0, 0, 7, 66, 0, 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 4, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 1, 64, 0, 0, + 13, 0, 0, 0, 79, 0, + 0, 7, 18, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 56, 55, 0, 0, 9, + 18, 0, 16, 0, 3, 0, 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 42, 0, + 4, 0, 0, 0, 10, 0, 16, 0, 3, 0, 0, 0, - 79, 0, 0, 7, 34, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 79, 0, 0, 7, + 34, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 0, 224, 255, 71, 26, 0, 16, 0, 2, 0, 0, 0, - 1, 64, 0, 0, 0, 224, - 255, 71, 26, 0, 16, 0, - 2, 0, 0, 0, 55, 0, - 0, 9, 34, 0, 16, 0, - 2, 0, 0, 0, 26, 0, + 55, 0, 0, 9, 34, 0, 16, 0, 2, 0, 0, 0, - 1, 64, 0, 0, 255, 123, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 60, 0, - 0, 7, 130, 0, 16, 0, - 0, 0, 0, 0, 58, 0, + 26, 0, 16, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 255, 123, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 60, 0, 0, 7, 130, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 60, 0, 0, 7, + 58, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 60, 0, + 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 58, 0, 16, 0, 0, 0, + 0, 0, 1, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 0, 0, 0, 0, - 1, 0, 0, 7, 18, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 255, 3, 0, 0, + 30, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 255, 3, 0, 0, 30, 0, - 0, 7, 18, 0, 16, 0, + 0, 124, 0, 0, 55, 0, + 0, 9, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 2, 0, 0, 0, + 10, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 0, 124, 0, 0, 32, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 127, 55, 0, 0, 9, + 18, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 124, - 0, 0, 55, 0, 0, 9, + 26, 0, 16, 0, 2, 0, + 0, 0, 1, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, - 2, 0, 0, 0, 10, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 0, 124, - 0, 0, 32, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 42, 0, 16, 0, - 2, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 127, - 55, 0, 0, 9, 18, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 255, 127, 0, 0, + 30, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, + 58, 0, 16, 0, 3, 0, 0, 0, 10, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 2, 0, 0, 0, - 1, 0, 0, 7, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 255, 127, 0, 0, 30, 0, + 0, 0, 0, 0, 30, 0, 0, 7, 18, 0, 16, 0, - 0, 0, 0, 0, 58, 0, - 16, 0, 3, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 30, 0, 0, 7, + 0, 0, 0, 0, 10, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 8, 0, + 0, 0, 85, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 8, 0, 0, 0, - 85, 0, 0, 7, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, + 0, 0, 4, 0, 0, 0, + 41, 0, 0, 7, 50, 0, + 16, 0, 1, 0, 0, 0, + 70, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, - 4, 0, 0, 0, 41, 0, - 0, 7, 50, 0, 16, 0, - 1, 0, 0, 0, 70, 0, + 9, 0, 0, 0, 41, 0, + 0, 7, 130, 0, 16, 0, + 0, 0, 0, 0, 42, 0, 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 9, 0, - 0, 0, 41, 0, 0, 7, - 130, 0, 16, 0, 0, 0, - 0, 0, 42, 0, 16, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 11, 0, 0, 0, - 60, 0, 0, 7, 18, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, + 1, 64, 0, 0, 11, 0, + 0, 0, 60, 0, 0, 7, + 18, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 85, 0, - 0, 7, 18, 0, 16, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 85, 0, 0, 7, 18, 0, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 23, 0, 0, 0, 85, 0, + 0, 7, 34, 0, 16, 0, 2, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 23, 0, + 1, 64, 0, 0, 16, 0, 0, 0, 85, 0, 0, 7, - 34, 0, 16, 0, 2, 0, + 18, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 16, 0, 0, 0, - 85, 0, 0, 7, 18, 0, + 0, 0, 13, 0, 0, 0, + 85, 0, 0, 7, 66, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 13, 0, 0, 0, 85, 0, - 0, 7, 66, 0, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 3, 0, - 0, 0, 1, 0, 0, 10, - 50, 0, 16, 0, 2, 0, - 0, 0, 70, 0, 16, 0, - 2, 0, 0, 0, 2, 64, - 0, 0, 255, 0, 0, 0, - 0, 128, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 10, 50, 0, 16, 0, + 2, 0, 0, 0, 70, 0, + 16, 0, 2, 0, 0, 0, + 2, 64, 0, 0, 255, 0, + 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 8, 130, 0, - 16, 0, 1, 0, 0, 0, - 10, 0, 16, 128, 65, 0, - 0, 0, 2, 0, 0, 0, - 1, 64, 0, 0, 113, 0, - 0, 0, 85, 0, 0, 7, - 18, 0, 16, 0, 2, 0, - 0, 0, 26, 0, 16, 0, - 3, 0, 0, 0, 58, 0, - 16, 0, 1, 0, 0, 0, - 34, 0, 0, 7, 130, 0, + 0, 0, 30, 0, 0, 8, + 130, 0, 16, 0, 1, 0, + 0, 0, 10, 0, 16, 128, + 65, 0, 0, 0, 2, 0, + 0, 0, 1, 64, 0, 0, + 113, 0, 0, 0, 85, 0, + 0, 7, 18, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 3, 0, 0, 0, + 58, 0, 16, 0, 1, 0, + 0, 0, 34, 0, 0, 7, + 130, 0, 16, 0, 1, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 1, 64, + 0, 0, 24, 0, 0, 0, + 1, 0, 0, 7, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 24, 0, 0, 0, 1, 0, + 0, 0, 10, 0, 16, 0, + 2, 0, 0, 0, 85, 0, 0, 7, 130, 0, 16, 0, 1, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, - 10, 0, 16, 0, 2, 0, - 0, 0, 85, 0, 0, 7, - 130, 0, 16, 0, 1, 0, - 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 1, 0, 0, 10, 242, 0, - 16, 0, 3, 0, 0, 0, - 86, 10, 16, 0, 0, 0, + 1, 64, 0, 0, 13, 0, + 0, 0, 1, 0, 0, 10, + 242, 0, 16, 0, 3, 0, + 0, 0, 86, 10, 16, 0, + 0, 0, 0, 0, 2, 64, + 0, 0, 255, 255, 255, 127, + 0, 0, 128, 127, 255, 255, + 127, 0, 255, 255, 255, 127, + 30, 0, 0, 10, 82, 0, + 16, 0, 2, 0, 0, 0, + 6, 3, 16, 0, 3, 0, 0, 0, 2, 64, 0, 0, - 255, 255, 255, 127, 0, 0, - 128, 127, 255, 255, 127, 0, - 255, 255, 255, 127, 30, 0, - 0, 10, 82, 0, 16, 0, - 2, 0, 0, 0, 6, 3, - 16, 0, 3, 0, 0, 0, - 2, 64, 0, 0, 0, 0, - 0, 200, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, - 0, 0, 85, 0, 0, 7, - 82, 0, 16, 0, 2, 0, - 0, 0, 6, 2, 16, 0, - 2, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 79, 0, 0, 10, 50, 0, - 16, 0, 4, 0, 0, 0, - 198, 0, 16, 0, 3, 0, - 0, 0, 2, 64, 0, 0, - 0, 0, 128, 56, 0, 0, - 128, 56, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, - 0, 9, 130, 0, 16, 0, - 1, 0, 0, 0, 10, 0, - 16, 0, 4, 0, 0, 0, - 58, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 0, - 2, 0, 0, 0, 79, 0, - 0, 10, 146, 0, 16, 0, + 0, 0, 0, 0, 0, 200, + 0, 0, 0, 0, 85, 0, + 0, 7, 82, 0, 16, 0, + 2, 0, 0, 0, 6, 2, + 16, 0, 2, 0, 0, 0, + 1, 64, 0, 0, 13, 0, + 0, 0, 79, 0, 0, 10, + 50, 0, 16, 0, 4, 0, + 0, 0, 198, 0, 16, 0, 3, 0, 0, 0, 2, 64, - 0, 0, 0, 224, 255, 71, + 0, 0, 0, 0, 128, 56, + 0, 0, 128, 56, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 224, 255, 71, - 6, 12, 16, 0, 3, 0, - 0, 0, 55, 0, 0, 9, - 130, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 255, 123, 0, 0, - 58, 0, 16, 0, 1, 0, + 55, 0, 0, 9, 130, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 4, 0, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 2, 0, 0, 0, + 79, 0, 0, 10, 146, 0, + 16, 0, 3, 0, 0, 0, + 2, 64, 0, 0, 0, 224, + 255, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 224, + 255, 71, 6, 12, 16, 0, + 3, 0, 0, 0, 55, 0, + 0, 9, 130, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 255, 123, + 0, 0, 58, 0, 16, 0, + 1, 0, 0, 0, 60, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 42, 0, 16, 0, 1, 0, 0, 0, 60, 0, 0, 7, - 18, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 42, 0, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, - 60, 0, 0, 7, 34, 0, + 1, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 255, 3, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 255, 3, - 0, 0, 30, 0, 0, 7, + 1, 64, 0, 0, 0, 124, + 0, 0, 55, 0, 0, 9, 34, 0, 16, 0, 0, 0, + 0, 0, 58, 0, 16, 0, + 2, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 1, 64, 0, 0, 0, 124, + 0, 0, 32, 0, 0, 7, + 18, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 124, 0, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 0, 0, 128, 127, 55, 0, 0, 9, 34, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 2, 0, + 10, 0, 16, 0, 1, 0, 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 124, 0, 0, - 32, 0, 0, 7, 18, 0, - 16, 0, 1, 0, 0, 0, - 26, 0, 16, 0, 3, 0, - 0, 0, 1, 64, 0, 0, - 0, 0, 128, 127, 55, 0, - 0, 9, 34, 0, 16, 0, - 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 58, 0, 16, 0, 1, 0, 0, 0, + 1, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, - 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 1, 0, + 0, 0, 1, 64, 0, 0, + 255, 127, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 255, 127, + 16, 0, 2, 0, 0, 0, + 26, 0, 16, 0, 0, 0, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 2, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 30, 0, 0, 7, 34, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 8, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 8, 0, 0, 0, 85, 0, + 4, 0, 0, 0, 60, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 4, 0, - 0, 0, 60, 0, 0, 7, + 16, 0, 1, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 41, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 1, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 41, 0, 0, 7, 34, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 10, 0, 0, 0, + 60, 0, 0, 7, 18, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 10, 0, 0, 0, 60, 0, - 0, 7, 18, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 0, 0, - 0, 0, 30, 0, 0, 7, - 34, 0, 16, 0, 0, 0, + 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 30, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 42, 0, + 16, 0, 3, 0, 0, 0, + 1, 64, 0, 0, 0, 0, + 128, 0, 85, 0, 0, 7, + 18, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, - 3, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 0, - 85, 0, 0, 7, 18, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 23, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 23, 0, 0, 0, 85, 0, - 0, 7, 34, 0, 16, 0, + 16, 0, 0, 0, 85, 0, + 0, 7, 66, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 16, 0, + 1, 64, 0, 0, 13, 0, 0, 0, 85, 0, 0, 7, - 66, 0, 16, 0, 1, 0, + 130, 0, 16, 0, 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 13, 0, 0, 0, - 85, 0, 0, 7, 130, 0, - 16, 0, 1, 0, 0, 0, - 42, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 3, 0, 0, 0, 1, 0, - 0, 10, 50, 0, 16, 0, - 1, 0, 0, 0, 70, 0, + 0, 0, 3, 0, 0, 0, + 1, 0, 0, 10, 50, 0, 16, 0, 1, 0, 0, 0, - 2, 64, 0, 0, 255, 0, - 0, 0, 0, 128, 0, 0, + 70, 0, 16, 0, 1, 0, + 0, 0, 2, 64, 0, 0, + 255, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 8, - 18, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 128, - 65, 0, 0, 0, 1, 0, - 0, 0, 1, 64, 0, 0, - 113, 0, 0, 0, 85, 0, - 0, 7, 34, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 10, 0, 16, 0, 1, 0, - 0, 0, 34, 0, 0, 7, - 18, 0, 16, 0, 1, 0, - 0, 0, 10, 0, 16, 0, + 0, 0, 0, 0, 30, 0, + 0, 8, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 128, 65, 0, 0, 0, 1, 0, 0, 0, 1, 64, - 0, 0, 24, 0, 0, 0, - 1, 0, 0, 7, 34, 0, + 0, 0, 113, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 85, 0, - 0, 7, 34, 0, 16, 0, - 0, 0, 0, 0, 26, 0, - 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 13, 0, + 1, 0, 0, 0, 34, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 1, 64, 0, 0, 24, 0, 0, 0, 1, 0, 0, 7, - 18, 0, 16, 0, 1, 0, - 0, 0, 42, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 0, 0, 128, 127, - 55, 0, 0, 9, 34, 0, - 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 4, 0, + 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 42, 0, - 16, 0, 2, 0, 0, 0, - 55, 0, 0, 9, 34, 0, + 0, 0, 0, 0, 10, 0, + 16, 0, 1, 0, 0, 0, + 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 3, 0, + 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, - 255, 123, 0, 0, 26, 0, + 13, 0, 0, 0, 1, 0, + 0, 7, 18, 0, 16, 0, + 1, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 60, 0, 0, 7, 66, 0, - 16, 0, 1, 0, 0, 0, - 42, 0, 16, 0, 1, 0, + 1, 64, 0, 0, 0, 0, + 128, 127, 55, 0, 0, 9, + 34, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 4, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 2, 0, + 0, 0, 55, 0, 0, 9, + 34, 0, 16, 0, 0, 0, 0, 0, 58, 0, 16, 0, - 1, 0, 0, 0, 60, 0, + 3, 0, 0, 0, 1, 64, + 0, 0, 255, 123, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 60, 0, 0, 7, + 66, 0, 16, 0, 1, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 58, 0, + 16, 0, 1, 0, 0, 0, + 60, 0, 0, 7, 66, 0, + 16, 0, 0, 0, 0, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 42, 0, 16, 0, + 1, 0, 0, 0, 1, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, - 42, 0, 16, 0, 1, 0, - 0, 0, 1, 0, 0, 7, + 1, 64, 0, 0, 255, 3, + 0, 0, 30, 0, 0, 7, 66, 0, 16, 0, 0, 0, 0, 0, 42, 0, 16, 0, 0, 0, 0, 0, 1, 64, - 0, 0, 255, 3, 0, 0, - 30, 0, 0, 7, 66, 0, + 0, 0, 0, 124, 0, 0, + 55, 0, 0, 9, 66, 0, 16, 0, 0, 0, 0, 0, - 42, 0, 16, 0, 0, 0, - 0, 0, 1, 64, 0, 0, - 0, 124, 0, 0, 55, 0, - 0, 9, 66, 0, 16, 0, - 0, 0, 0, 0, 42, 0, - 16, 0, 3, 0, 0, 0, - 42, 0, 16, 0, 0, 0, + 42, 0, 16, 0, 3, 0, + 0, 0, 42, 0, 16, 0, + 0, 0, 0, 0, 1, 64, + 0, 0, 0, 124, 0, 0, + 32, 0, 0, 7, 18, 0, + 16, 0, 1, 0, 0, 0, + 10, 0, 16, 0, 1, 0, 0, 0, 1, 64, 0, 0, - 0, 124, 0, 0, 32, 0, - 0, 7, 18, 0, 16, 0, - 1, 0, 0, 0, 10, 0, + 0, 0, 128, 127, 55, 0, + 0, 9, 34, 0, 16, 0, + 0, 0, 0, 0, 10, 0, 16, 0, 1, 0, 0, 0, - 1, 64, 0, 0, 0, 0, - 128, 127, 55, 0, 0, 9, - 34, 0, 16, 0, 0, 0, - 0, 0, 10, 0, 16, 0, - 1, 0, 0, 0, 42, 0, + 42, 0, 16, 0, 0, 0, + 0, 0, 26, 0, 16, 0, + 0, 0, 0, 0, 1, 0, + 0, 7, 34, 0, 16, 0, + 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 0, 0, - 0, 0, 1, 0, 0, 7, + 1, 64, 0, 0, 255, 127, + 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 255, 127, 0, 0, + 1, 0, 0, 0, 26, 0, + 16, 0, 0, 0, 0, 0, 30, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, - 26, 0, 16, 0, 1, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 30, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 2, 0, 0, 0, 85, 0, 0, 7, 34, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, 1, 64, 0, 0, 2, 0, - 0, 0, 85, 0, 0, 7, + 0, 0, 60, 0, 0, 7, 34, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 1, 64, - 0, 0, 2, 0, 0, 0, - 60, 0, 0, 7, 34, 0, - 16, 0, 0, 0, 0, 0, - 58, 0, 16, 0, 0, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 41, 0, - 0, 7, 34, 0, 16, 0, + 0, 0, 58, 0, 16, 0, 0, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 1, 64, 0, 0, 20, 0, - 0, 0, 60, 0, 0, 7, - 18, 32, 16, 0, 1, 0, - 0, 0, 26, 0, 16, 0, - 0, 0, 0, 0, 10, 0, + 41, 0, 0, 7, 34, 0, + 16, 0, 0, 0, 0, 0, + 26, 0, 16, 0, 0, 0, + 0, 0, 1, 64, 0, 0, + 20, 0, 0, 0, 60, 0, + 0, 7, 18, 32, 16, 0, + 1, 0, 0, 0, 26, 0, 16, 0, 0, 0, 0, 0, - 62, 0, 0, 1 + 10, 0, 16, 0, 0, 0, + 0, 0, 62, 0, 0, 1 }; diff --git a/DirectXTK/Src/Shaders/NormalMapEffect.fx b/DirectXTK/Src/Shaders/NormalMapEffect.fx index 308afb88..f7a2d751 100644 --- a/DirectXTK/Src/Shaders/NormalMapEffect.fx +++ b/DirectXTK/Src/Shaders/NormalMapEffect.fx @@ -105,7 +105,7 @@ float4 PSNormalPixelLightingTxNoFog(PSInputPixelLightingTx pin) : SV_Target0 float3 eyeVector = normalize(EyePosition - pin.PositionWS.xyz); // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(Sampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(Sampler, pin.TexCoord).xy); float3 normal = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Do lighting @@ -128,7 +128,7 @@ float4 PSNormalPixelLightingTx(PSInputPixelLightingTx pin) : SV_Target0 float3 eyeVector = normalize(EyePosition - pin.PositionWS.xyz); // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(Sampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(Sampler, pin.TexCoord).xy); float3 normal = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Do lighting @@ -153,7 +153,7 @@ float4 PSNormalPixelLightingTxNoFogSpec(PSInputPixelLightingTx pin) : SV_Target0 float3 eyeVector = normalize(EyePosition - pin.PositionWS.xyz); // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(Sampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(Sampler, pin.TexCoord).xy); float3 normal = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Do lighting @@ -175,7 +175,7 @@ float4 PSNormalPixelLightingTxNoSpec(PSInputPixelLightingTx pin) : SV_Target0 float3 eyeVector = normalize(EyePosition - pin.PositionWS.xyz); // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(Sampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(Sampler, pin.TexCoord).xy); float3 normal = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Do lighting diff --git a/DirectXTK/Src/Shaders/PBREffect.fx b/DirectXTK/Src/Shaders/PBREffect.fx index 5b08ebbf..0f98b3f8 100644 --- a/DirectXTK/Src/Shaders/PBREffect.fx +++ b/DirectXTK/Src/Shaders/PBREffect.fx @@ -143,7 +143,7 @@ float4 PSTextured(PSInputPixelLightingTx pin) : SV_Target0 const float3 L = normalize(-LightDirection[0]); // light vector ("to light" opposite of light's direction) // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(SurfaceSampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(SurfaceSampler, pin.TexCoord).xy); float3 N = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Get albedo @@ -168,7 +168,7 @@ float4 PSTexturedEmissive(PSInputPixelLightingTx pin) : SV_Target0 const float3 L = normalize(-LightDirection[0]); // light vector ("to light" opposite of light's direction) // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(SurfaceSampler, pin.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(SurfaceSampler, pin.TexCoord).xy); float3 N = PeturbNormal(localNormal, pin.PositionWS.xyz, pin.NormalWS, pin.TexCoord); // Get albedo @@ -205,7 +205,7 @@ PSOut_Velocity PSTexturedVelocity(VSOut_Velocity pin) const float3 L = normalize(-LightDirection[0]); // light vector ("to light" opposite of light's direction) // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(SurfaceSampler, pin.current.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(SurfaceSampler, pin.current.TexCoord).xy); float3 N = PeturbNormal(localNormal, pin.current.PositionWS.xyz, pin.current.NormalWS, pin.current.TexCoord); // Get albedo @@ -241,7 +241,7 @@ PSOut_Velocity PSTexturedEmissiveVelocity(VSOut_Velocity pin) const float3 L = normalize(-LightDirection[0]); // light vector ("to light" opposite of light's direction) // Before lighting, peturb the surface's normal by the one given in normal map. - float3 localNormal = BiasX2(NormalTexture.Sample(SurfaceSampler, pin.current.TexCoord).xyz); + float3 localNormal = TwoChannelNormalX2(NormalTexture.Sample(SurfaceSampler, pin.current.TexCoord).xy); float3 N = PeturbNormal(localNormal, pin.current.PositionWS.xyz, pin.current.NormalWS, pin.current.TexCoord); // Get albedo diff --git a/DirectXTK/Src/Shaders/Utilities.fxh b/DirectXTK/Src/Shaders/Utilities.fxh index 44bc1e27..a6e3444e 100644 --- a/DirectXTK/Src/Shaders/Utilities.fxh +++ b/DirectXTK/Src/Shaders/Utilities.fxh @@ -39,6 +39,13 @@ float3 PeturbNormal(float3 localNormal, float3 position, float3 normal, float2 t return normalize(mul(localNormal, TBN)); } +float3 TwoChannelNormalX2(float2 normal) +{ + float2 xy = 2.0f * normal - 1.0f; + float z = sqrt(1 - dot(xy, xy)); + return float3(xy.x, xy.y, z); +} + // sRGB // https://en.wikipedia.org/wiki/SRGB diff --git a/DirectXTK/Src/SpriteFont.cpp b/DirectXTK/Src/SpriteFont.cpp index 150eb0a2..a7953202 100644 --- a/DirectXTK/Src/SpriteFont.cpp +++ b/DirectXTK/Src/SpriteFont.cpp @@ -35,12 +35,17 @@ class SpriteFont::Impl template void ForEachGlyph(_In_z_ wchar_t const* text, TAction action) const; + const wchar_t* ConvertUTF8(_In_z_ const char *text); // Fields. ComPtr texture; std::vector glyphs; Glyph const* defaultGlyph; float lineSpacing; + +private: + size_t utfBufferSize; + std::unique_ptr utfBuffer; }; @@ -72,7 +77,8 @@ namespace DirectX // Reads a SpriteFont from the binary format created by the MakeSpriteFont utility. SpriteFont::Impl::Impl(_In_ ID3D11Device* device, _In_ BinaryReader* reader, bool forceSRGB) : - defaultGlyph(nullptr) + defaultGlyph(nullptr), + utfBufferSize(0) { // Validate the header. for (char const* magic = spriteFontMagic; *magic; magic++) @@ -133,7 +139,8 @@ SpriteFont::Impl::Impl(ID3D11ShaderResourceView* texture, Glyph const* glyphs, s : texture(texture), glyphs(glyphs, glyphs + glyphCount), defaultGlyph(nullptr), - lineSpacing(lineSpacing) + lineSpacing(lineSpacing), + utfBufferSize(0) { if (!std::is_sorted(glyphs, glyphs + glyphCount)) { @@ -222,6 +229,36 @@ void SpriteFont::Impl::ForEachGlyph(_In_z_ wchar_t const* text, TAction action) } +const wchar_t* SpriteFont::Impl::ConvertUTF8(_In_z_ const char *text) +{ + if (!utfBuffer) + { + utfBufferSize = 1024; + utfBuffer.reset(new wchar_t[1024]); + } + + int result = MultiByteToWideChar(CP_UTF8, 0, text, -1, utfBuffer.get(), static_cast(utfBufferSize)); + if (!result && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) + { + // Compute required buffer size + result = MultiByteToWideChar(CP_UTF8, 0, text, -1, nullptr, 0); + utfBufferSize = AlignUp(result, 1024); + utfBuffer.reset(new wchar_t[utfBufferSize]); + + // Retry conversion + result = MultiByteToWideChar(CP_UTF8, 0, text, -1, utfBuffer.get(), static_cast(utfBufferSize)); + } + + if (!result) + { + DebugTrace("ERROR: MultiByteToWideChar failed with error %u.\n", GetLastError()); + throw std::exception("MultiByteToWideChar"); + } + + return utfBuffer.get(); +} + + // Construct from a binary file created by the MakeSpriteFont utility. SpriteFont::SpriteFont(_In_ ID3D11Device* device, _In_z_ wchar_t const* fileName, bool forceSRGB) { @@ -270,6 +307,7 @@ SpriteFont::~SpriteFont() } +// Wide-character / UTF-16LE void XM_CALLCONV SpriteFont::DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ wchar_t const* text, XMFLOAT2 const& position, FXMVECTOR color, float rotation, XMFLOAT2 const& origin, float scale, SpriteEffects effects, float layerDepth) const { DrawString(spriteBatch, text, XMLoadFloat2(&position), color, rotation, XMLoadFloat2(&origin), XMVectorReplicate(scale), effects, layerDepth); @@ -412,6 +450,52 @@ RECT XM_CALLCONV SpriteFont::MeasureDrawBounds(_In_z_ wchar_t const* text, FXMVE } +// UTF-8 +void XM_CALLCONV SpriteFont::DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, XMFLOAT2 const& position, FXMVECTOR color, float rotation, XMFLOAT2 const& origin, float scale, SpriteEffects effects, float layerDepth) const +{ + DrawString(spriteBatch, pImpl->ConvertUTF8(text), XMLoadFloat2(&position), color, rotation, XMLoadFloat2(&origin), XMVectorReplicate(scale), effects, layerDepth); +} + + +void XM_CALLCONV SpriteFont::DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, XMFLOAT2 const& position, FXMVECTOR color, float rotation, XMFLOAT2 const& origin, XMFLOAT2 const& scale, SpriteEffects effects, float layerDepth) const +{ + DrawString(spriteBatch, pImpl->ConvertUTF8(text), XMLoadFloat2(&position), color, rotation, XMLoadFloat2(&origin), XMLoadFloat2(&scale), effects, layerDepth); +} + + +void XM_CALLCONV SpriteFont::DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, FXMVECTOR position, FXMVECTOR color, float rotation, FXMVECTOR origin, float scale, SpriteEffects effects, float layerDepth) const +{ + DrawString(spriteBatch, pImpl->ConvertUTF8(text), position, color, rotation, origin, XMVectorReplicate(scale), effects, layerDepth); +} + + +void XM_CALLCONV SpriteFont::DrawString(_In_ SpriteBatch* spriteBatch, _In_z_ char const* text, FXMVECTOR position, FXMVECTOR color, float rotation, FXMVECTOR origin, GXMVECTOR scale, SpriteEffects effects, float layerDepth) const +{ + DrawString(spriteBatch, pImpl->ConvertUTF8(text), position, color, rotation, origin, scale, effects, layerDepth); +} + + +XMVECTOR XM_CALLCONV SpriteFont::MeasureString(_In_z_ char const* text) const +{ + return MeasureString(pImpl->ConvertUTF8(text)); +} + + +RECT SpriteFont::MeasureDrawBounds(_In_z_ char const* text, XMFLOAT2 const& position) const +{ + return MeasureDrawBounds(pImpl->ConvertUTF8(text), position); +} + + +RECT XM_CALLCONV SpriteFont::MeasureDrawBounds(_In_z_ char const* text, FXMVECTOR position) const +{ + XMFLOAT2 pos; + XMStoreFloat2(&pos, position); + + return MeasureDrawBounds(pImpl->ConvertUTF8(text), pos); +} + + // Spacing properties float SpriteFont::GetLineSpacing() const { diff --git a/DirectXTex/DirectXTex.h b/DirectXTex/DirectXTex.h index 74273163..99a49c31 100644 --- a/DirectXTex/DirectXTex.h +++ b/DirectXTex/DirectXTex.h @@ -194,6 +194,12 @@ namespace DirectX WIC_FLAGS_IGNORE_SRGB = 0x20, // Ignores sRGB metadata if present in the file + WIC_FLAGS_FORCE_SRGB = 0x40, + // Writes sRGB metadata into the file reguardless of format + + WIC_FLAGS_FORCE_LINEAR = 0x80, + // Writes linear gamma metadata into the file reguardless of format + WIC_FLAGS_DITHER = 0x10000, // Use ordered 4x4 dithering for any required conversions @@ -528,6 +534,11 @@ namespace DirectX // levels of '0' indicates a full mipchain, otherwise is generates that number of total levels (including the source base image) // Defaults to Fant filtering which is equivalent to a box filter + HRESULT __cdecl ScaleMipMapsAlphaForCoverage( + _In_reads_(nimages) const Image* srcImages, _In_ size_t nimages, _In_ const TexMetadata& metadata, _In_ size_t item, + _In_ float alphaReference, _Inout_ ScratchImage& mipChain); + + enum TEX_PMALPHA_FLAGS { TEX_PMALPHA_DEFAULT = 0, diff --git a/DirectXTex/DirectXTexMipmaps.cpp b/DirectXTex/DirectXTexMipmaps.cpp index 7cda4bf8..d9986502 100644 --- a/DirectXTex/DirectXTexMipmaps.cpp +++ b/DirectXTex/DirectXTexMipmaps.cpp @@ -116,6 +116,233 @@ namespace return hr; } + + +#if DIRECTX_MATH_VERSION >= 310 +#define VectorSum XMVectorSum +#else + inline XMVECTOR XM_CALLCONV VectorSum + ( + FXMVECTOR V + ) + { + XMVECTOR vTemp = XMVectorSwizzle<2, 3, 0, 1>(V); + XMVECTOR vTemp2 = XMVectorAdd(V, vTemp); + vTemp = XMVectorSwizzle<1, 0, 3, 2>(vTemp2); + return XMVectorAdd(vTemp, vTemp2); + } +#endif + + + HRESULT ScaleAlpha( + const Image& srcImage, + float alphaScale, + const Image& destImage) + { + assert(srcImage.width == destImage.width); + assert(srcImage.height == destImage.height); + + ScopedAlignedArrayXMVECTOR scanline(reinterpret_cast(_aligned_malloc((sizeof(XMVECTOR)*srcImage.width), 16))); + if (!scanline) + { + return E_OUTOFMEMORY; + } + + const uint8_t* pSrc = srcImage.pixels; + uint8_t* pDest = destImage.pixels; + if (!pSrc || !pDest) + { + return E_POINTER; + } + + const XMVECTOR vscale = XMVectorReplicate(alphaScale); + + for (size_t h = 0; h < srcImage.height; ++h) + { + if (!_LoadScanline(scanline.get(), srcImage.width, pSrc, srcImage.rowPitch, srcImage.format)) + { + return E_FAIL; + } + + XMVECTOR* ptr = scanline.get(); + for (size_t w = 0; w < srcImage.width; ++w) + { + XMVECTOR v = *ptr; + XMVECTOR alpha = XMVectorMultiply(XMVectorSplatW(v), vscale); + *(ptr++) = XMVectorSelect(alpha, v, g_XMSelect1110); + } + + if (!_StoreScanline(pDest, destImage.rowPitch, destImage.format, scanline.get(), srcImage.width)) + { + return E_FAIL; + } + + pSrc += srcImage.rowPitch; + pDest += destImage.rowPitch; + } + + return S_OK; + } + + + void GenerateAlphaCoverageConvolutionVectors( + _In_ size_t N, + _Out_writes_(N*N) XMVECTOR* vectors) + { + for (size_t sy = 0; sy < N; ++sy) + { + const float fy = (sy + 0.5f) / N; + const float ify = 1.0f - fy; + + for (size_t sx = 0; sx < N; ++sx) + { + const float fx = (sx + 0.5f) / N; + const float ifx = 1.0f - fx; + + // [0]=(x+0, y+0), [1]=(x+0, y+1), [2]=(x+1, y+0), [3]=(x+1, y+1) + vectors[sy * N + sx] = XMVectorSet(ifx * ify, ifx * fy, fx * ify, fx * fy); + } + } + } + + + HRESULT CalculateAlphaCoverage( + const Image& srcImage, + float alphaReference, + float alphaScale, + float& coverage) + { + coverage = 0.0f; + + ScopedAlignedArrayXMVECTOR row0(reinterpret_cast(_aligned_malloc((sizeof(XMVECTOR)*srcImage.width), 16))); + if (!row0) + { + return E_OUTOFMEMORY; + } + + ScopedAlignedArrayXMVECTOR row1(reinterpret_cast(_aligned_malloc((sizeof(XMVECTOR)*srcImage.width), 16))); + if (!row1) + { + return E_OUTOFMEMORY; + } + + const DWORD flags = 0; + const XMVECTOR scale = XMVectorReplicate(alphaScale); + + const uint8_t *pSrcRow0 = srcImage.pixels; + if (!pSrcRow0) + { + return E_POINTER; + } + + const size_t N = 8; + XMVECTOR convolution[N * N]; + GenerateAlphaCoverageConvolutionVectors(N, convolution); + + size_t coverageCount = 0; + for (size_t y = 0; y < srcImage.height - 1; ++y) + { + if (!_LoadScanlineLinear(row0.get(), srcImage.width, pSrcRow0, srcImage.rowPitch, srcImage.format, flags)) + { + return E_FAIL; + } + + const uint8_t *pSrcRow1 = pSrcRow0 + srcImage.rowPitch; + if (!_LoadScanlineLinear(row1.get(), srcImage.width, pSrcRow1, srcImage.rowPitch, srcImage.format, flags)) + { + return E_FAIL; + } + + const XMVECTOR* pRow0 = row0.get(); + const XMVECTOR* pRow1 = row1.get(); + for (size_t x = 0; x < srcImage.width - 1; ++x) + { + // [0]=(x+0, y+0), [1]=(x+0, y+1), [2]=(x+1, y+0), [3]=(x+1, y+1) + XMVECTOR v1 = XMVectorSaturate(XMVectorMultiply(XMVectorSplatW(*pRow0), scale)); + XMVECTOR v2 = XMVectorSaturate(XMVectorMultiply(XMVectorSplatW(*pRow1), scale)); + XMVECTOR v3 = XMVectorSaturate(XMVectorMultiply(XMVectorSplatW(*(pRow0++)), scale)); + XMVECTOR v4 = XMVectorSaturate(XMVectorMultiply(XMVectorSplatW(*(pRow1++)), scale)); + + v1 = XMVectorMergeXY(v1, v2); // [v1.x v2.x --- ---] + v3 = XMVectorMergeXY(v3, v4); // [v3.x v4.x --- ---] + + XMVECTOR v = XMVectorPermute<0, 1, 4, 5>(v1, v3); // [v1.x v2.x v3.x v4.x] + + for (size_t sy = 0; sy < N; ++sy) + { + const size_t ry = sy * N; + for (size_t sx = 0; sx < N; ++sx) + { + v = VectorSum(XMVectorMultiply(v, convolution[ry + sx])); + if (XMVectorGetX(v) > alphaReference) + { + ++coverageCount; + } + } + } + } + + pSrcRow0 = pSrcRow1; + } + + float cscale = static_cast((srcImage.width - 1) * (srcImage.height - 1) * N * N); + if (cscale > 0.f) + { + coverage = static_cast(coverageCount) / cscale; + } + + return S_OK; + } + + + HRESULT EstimateAlphaScaleForCoverage( + const Image& srcImage, + float alphaReference, + float targetCoverage, + float& alphaScale) + { + float minAlphaScale = 0.0f; + float maxAlphaScale = 4.0f; + float bestAlphaScale = 1.0f; + float bestError = FLT_MAX; + + // Determine desired scale using a binary search. Hardcoded to 10 steps max. + alphaScale = 1.0f; + const size_t N = 10; + for (size_t i = 0; i < N; ++i) + { + float currentCoverage = 0.0f; + HRESULT hr = CalculateAlphaCoverage(srcImage, alphaReference, alphaScale, currentCoverage); + if (FAILED(hr)) + { + return hr; + } + + const float error = fabsf(currentCoverage - targetCoverage); + if (error < bestError) + { + bestError = error; + bestAlphaScale = alphaScale; + } + + if (currentCoverage < targetCoverage) + { + minAlphaScale = alphaScale; + } + else if (currentCoverage > targetCoverage) + { + maxAlphaScale = alphaScale; + } + else + { + break; + } + + alphaScale = (minAlphaScale + maxAlphaScale) * 0.5f; + } + + return S_OK; + } } @@ -3179,3 +3406,75 @@ HRESULT DirectX::GenerateMipMaps3D( return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED); } } + +_Use_decl_annotations_ +HRESULT DirectX::ScaleMipMapsAlphaForCoverage( + const Image* srcImages, + size_t nimages, + const TexMetadata& metadata, + size_t item, + float alphaReference, + ScratchImage& mipChain) +{ + if (!srcImages || !nimages || !IsValid(metadata.format) || nimages > metadata.mipLevels || !mipChain.GetImages()) + return E_INVALIDARG; + + if (metadata.IsVolumemap() + || IsCompressed(metadata.format) || IsTypeless(metadata.format) || IsPlanar(metadata.format) || IsPalettized(metadata.format)) + return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED); + + if (srcImages[0].format != metadata.format || srcImages[0].width != metadata.width || srcImages[0].height != metadata.height) + { + // Base image must be the same format, width, and height + return E_FAIL; + } + + float targetCoverage = 0.0f; + HRESULT hr = CalculateAlphaCoverage(srcImages[0], alphaReference, 1.0f, targetCoverage); + if (FAILED(hr)) + return hr; + + // Copy base image + { + const Image& src = srcImages[0]; + + const Image *dest = mipChain.GetImage(0, item, 0); + if (!dest) + return E_POINTER; + + uint8_t* pDest = dest->pixels; + if (!pDest) + return E_POINTER; + + const uint8_t *pSrc = src.pixels; + size_t rowPitch = src.rowPitch; + for (size_t h = 0; h < metadata.height; ++h) + { + size_t msize = std::min(dest->rowPitch, rowPitch); + memcpy_s(pDest, dest->rowPitch, pSrc, msize); + pSrc += rowPitch; + pDest += dest->rowPitch; + } + } + + for (size_t level = 1; level < metadata.mipLevels; ++level) + { + if (level >= nimages) + return E_FAIL; + + float alphaScale = 0.0f; + hr = EstimateAlphaScaleForCoverage(srcImages[level], alphaReference, targetCoverage, alphaScale); + if (FAILED(hr)) + return hr; + + const Image* mipImage = mipChain.GetImage(level, item, 0); + if (!mipImage) + return E_POINTER; + + hr = ScaleAlpha(srcImages[level], alphaScale, *mipImage); + if (FAILED(hr)) + return hr; + } + + return S_OK; +} diff --git a/DirectXTex/DirectXTexWIC.cpp b/DirectXTex/DirectXTexWIC.cpp index f5cb6d81..dabf9cf0 100644 --- a/DirectXTex/DirectXTexWIC.cpp +++ b/DirectXTex/DirectXTexWIC.cpp @@ -570,6 +570,7 @@ namespace // Encodes image metadata //------------------------------------------------------------------------------------- HRESULT EncodeMetadata( + DWORD flags, _In_ IWICBitmapFrameEncode* frame, const GUID& containerFormat, DXGI_FORMAT format) @@ -584,7 +585,7 @@ namespace PROPVARIANT value; PropVariantInit(&value); - bool sRGB = IsSRGB(format); + bool sRGB = ((flags & WIC_FLAGS_FORCE_LINEAR) == 0) && ((flags & WIC_FLAGS_FORCE_SRGB) != 0 || IsSRGB(format)); value.vt = VT_LPSTR; value.pszVal = const_cast("DirectXTex"); @@ -715,7 +716,7 @@ namespace return E_FAIL; } - hr = EncodeMetadata(frame, containerFormat, image.format); + hr = EncodeMetadata(flags, frame, containerFormat, image.format); if (FAILED(hr)) return hr; diff --git a/DirectXTex/ReadMe.txt b/DirectXTex/ReadMe.txt index b301b358..69033191 100644 --- a/DirectXTex/ReadMe.txt +++ b/DirectXTex/ReadMe.txt @@ -3,7 +3,7 @@ DIRECTX TEXTURE LIBRARY (DirectXTex) Copyright (c) Microsoft Corporation. All rights reserved. -November 16, 2018 +February 7, 2019 This package contains DirectXTex, a shared source library for reading and writing DDS files, and performing various texture content processing operations including @@ -138,6 +138,12 @@ RELEASE NOTES ------------------------------------ RELEASE HISTORY +February 7, 2019 + Added ScaleMipMapsAlphaForCoverage function to the library + WIC Writer now has two new flags: WIC_FLAGS_FORCE_SRGB and WIC_FLAGS_FORCE_LINEAR + texassemble: added array-strip command + texconv: added -inverty, -keepcoverage switches + November 16, 2018 VS 2017 updated for Windows 10 October 2018 Update SDK (17763) ARM64 platform configurations added to UWP projects diff --git a/DirectXTex/d3dx12.h b/DirectXTex/d3dx12.h index 336db132..dd6779cf 100644 --- a/DirectXTex/d3dx12.h +++ b/DirectXTex/d3dx12.h @@ -2666,7 +2666,7 @@ inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& } #endif // NTDDI_WIN10_RS2 -// Requires the Windows 10 April 2018 Update SDK (17763) +// Requires the Windows 10 October 2018 Update SDK (17763) #if defined(NTDDI_WIN10_RS5) && (NTDDI_VERSION >= NTDDI_WIN10_RS5) //------------------------------------------------------------------------------------------------ inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b)