aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/CoreLib/Render
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2017-08-23 11:24:32 -0700
committerBryan Galdrikian <[email protected]>2017-08-23 11:24:32 -0700
commitf1e539cadfb085cedc32f9773cfb9d14bfcdf138 (patch)
tree7ca74e06a4386dd22fd850a8417a31a85d282a30 /tools/ArtistTools/source/CoreLib/Render
parentUpdated to CL 22661993: (diff)
downloadblast-f1e539cadfb085cedc32f9773cfb9d14bfcdf138.tar.xz
blast-f1e539cadfb085cedc32f9773cfb9d14bfcdf138.zip
Removing ArtistTools and CurveEditor projects
Diffstat (limited to 'tools/ArtistTools/source/CoreLib/Render')
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp31
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h65
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp138
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h56
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp910
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h90
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp256
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp319
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h43
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp194
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h43
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp208
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h64
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp333
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h69
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp33
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h14
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp315
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp31
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h81
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp222
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h63
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp564
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h254
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp467
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h74
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp384
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h85
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp371
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h110
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp141
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp231
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h42
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp99
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h89
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp386
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp33
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h14
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp343
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp87
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h61
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h305
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h269
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h2513
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp351
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h175
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp86
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h124
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp47
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h142
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp36
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/ShadowMap.h48
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp493
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h75
65 files changed, 0 insertions, 12765 deletions
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp
deleted file mode 100644
index 4e261f1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Buffer.h"
-
-// shared path
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h
deleted file mode 100644
index d9d9730..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d11.h"
-
-// GPU resources for texture
-struct GPUBufferD3D11 : public GPUBufferResource
-{
- ID3D11Buffer* m_pD3D11Resource;
-
-public:
- static GPUBufferResource* Create(ID3D11Buffer* pResource) {
- GPUBufferD3D11* pBuffer = new GPUBufferD3D11;
- pBuffer->m_pD3D11Resource = pResource;
- return pBuffer;
- }
-
- static ID3D11Buffer* GetResource(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D11* pD3D11Buffer = dynamic_cast<GPUBufferD3D11*>(pBuffer);
- if (!pD3D11Buffer)
- return 0;
- return pD3D11Buffer->m_pD3D11Resource;
- }
-
- ~GPUBufferD3D11()
- {
- Release();
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pD3D11Resource);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp
deleted file mode 100644
index 060a0cb..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11GPUProfiler.h"
-
-#include "D3D11RenderInterface.h"
-
-///////////////////////////////////////////////////////////////
-// factory function to create D3D11 GPU profiler
-/*
-GPUProfiler* GPUProfiler::CreateD3D11()
-{
- GPUProfiler* pProfiler = new D3D11GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-*/
-///////////////////////////////////////////////////////////////
-D3D11GPUProfiler::~D3D11GPUProfiler()
-{
- Release();
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::Initialize()
-{
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
-
- m_pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- D3D11_QUERY_DESC desc;
- memset(&desc, 0, sizeof(D3D11_QUERY_DESC));
- desc.Query = D3D11_QUERY_TIMESTAMP_DISJOINT;
- desc.MiscFlags = 0;
-
- pDevice->CreateQuery(&desc, &m_pQueryDisjoint);
-
- desc.Query = D3D11_QUERY_TIMESTAMP;
-
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- pDevice->CreateQuery(&desc, &m_pQueryStart[i]);
- pDevice->CreateQuery(&desc, &m_pQueryEnd[i]);
- }
- m_enable = true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::Release()
-{
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- SAFE_RELEASE(m_pQueryStart[i]);
- SAFE_RELEASE(m_pQueryEnd[i]);
- }
-
- SAFE_RELEASE(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::StartProfile(int id)
-{
- if (!m_enable) return;
-
- ID3D11Query* pQuery = m_pQueryStart[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::EndProfile(int id)
-{
- if (!m_enable) return;
-
- ID3D11Query* pQuery = m_pQueryEnd[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::StartFrame()
-{
- if (!m_enable) return;
-
- m_pContext->Begin(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::EndFrame()
-{
- if (!m_enable) return;
-
- m_pContext->End(m_pQueryDisjoint);
-
- while(m_pContext->GetData(m_pQueryDisjoint, &m_disjointData, sizeof(D3D11_QUERY_DATA_TIMESTAMP_DISJOINT), 0) != S_OK);
-}
-
-///////////////////////////////////////////////////////////////
-float D3D11GPUProfiler::GetProfileData(int id)
-{
- if (!m_enable)
- return 0.0f;
-
- UINT64 startTime = 0;
- while(m_pContext->GetData(m_pQueryStart[id], &startTime, sizeof(UINT64), 0) != S_OK);
-
- UINT64 endTime = 0;
- while(m_pContext->GetData(m_pQueryEnd[id], &endTime, sizeof(UINT64), 0) != S_OK);
-
- float frequency = static_cast<float>(m_disjointData.Frequency);
- return (endTime - startTime) / frequency * 1000.0f;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h
deleted file mode 100644
index 4c5b32f..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "GPUProfiler.h"
-
-#define MAX_QUERY_COUNT 64
-struct D3D11GPUProfiler : public GPUProfiler
-{
-public:
- ~D3D11GPUProfiler();
-
- void Initialize();
- void Release();
- void StartProfile(int id);
- void EndProfile(int id);
- void StartFrame();
- void EndFrame();
- float GetProfileData(int id);
-
-protected:
- ID3D11Query* m_pQueryDisjoint;
- ID3D11Query* m_pQueryStart[MAX_QUERY_COUNT];
- ID3D11Query* m_pQueryEnd[MAX_QUERY_COUNT];
- D3D11_QUERY_DATA_TIMESTAMP_DISJOINT m_disjointData;
- ID3D11DeviceContext* m_pContext;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp
deleted file mode 100644
index 292de1a..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp
+++ /dev/null
@@ -1,910 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11RenderInterface.h"
-
-#include "D3D11TextureResource.h"
-#include "D3D11Shaders.h"
-#include "D3D11Buffer.h"
-#include "Nv.h"
-#ifdef USE_11ON12_WRAPPER
-#include "D3D11on12Wrapper.h"
-#endif // USE_11ON12_WRAPPER
-namespace RenderInterfaceD3D11
-{
- using namespace RenderInterface;
-
- ID3D11SamplerState* m_pSamplerStates[SAMPLER_TYPE_END];
- ID3D11BlendState* m_pBlendStates[BLEND_STATE_END];
- ID3D11DepthStencilState* m_pDepthStencilStates[DEPTH_STENCIL_STATE_END];
- ID3D11RasterizerState* m_pRasterizerStates[RASTERIZER_STATE_END];
-
-#ifdef USE_11ON12_WRAPPER
-#else
- ID3D11DeviceContext* g_d3dDeviceContext = 0;
- ID3D11Device* g_d3dDevice = 0;
- IDXGIFactory1* g_pDXGIFactory1 = 0;
- IDXGIDevice* g_dxgiDevice = 0;
- IDXGIAdapter * g_pAdapter = 0;
-#endif // USE_11ON12_WRAPPER
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11DeviceContext* GetDeviceContext()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDeviceContext();
-#else
- return g_d3dDeviceContext;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11Device* GetDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDevice11();
-#else
- return g_d3dDevice;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIFactory1* GetDXGIFactory()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDXGIFactory();
-#else
- return g_pDXGIFactory1;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIDevice* GetDXGIDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return nullptr;
-#else
- return g_dxgiDevice;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIAdapter* GetAdapter()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetAdapter();
-#else
- return g_pAdapter;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool IsNvDeviceID(UINT id)
-{
- return id == 0x10DE;
-}
-
-IDXGIAdapter* FindAdapter(IDXGIFactory* IDXGIFactory_0001, const WCHAR* targetName, bool& isNv)
-{
- IDXGIAdapter* targetAdapter = nullptr;
- std::vector<IDXGIAdapter*> adapters;
- // check current adapter first. EnumAdapters could fail on some device
- IDXGIAdapter* pAdapter = nullptr;
- ID3D11Device* pD3dDevice = nullptr;
- ID3D11DeviceContext* pD3dDeviceContext = nullptr;
- DWORD createDeviceFlags = D3D11_CREATE_DEVICE_DEBUG;
- D3D_FEATURE_LEVEL fl;
- // This following code is the robust way to get all possible feature levels while handling DirectX 11.0 systems:
- // please read https://blogs.msdn.microsoft.com/chuckw/2014/02/05/anatomy-of-direct3d-11-create-device/
- D3D_FEATURE_LEVEL lvl[] = { D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_11_0,
- D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0,
- D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1 };
- HRESULT hr = D3D11CreateDevice(nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr,
- createDeviceFlags, lvl, _countof(lvl),
- D3D11_SDK_VERSION, &pD3dDevice, &fl, &pD3dDeviceContext);
- if (pD3dDevice)
- {
- IDXGIDevice* dxgiDevice = nullptr;
- hr = pD3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
- if (SUCCEEDED(hr))
- {
- hr = dxgiDevice->GetAdapter(&pAdapter);
- if (pAdapter)
- {
- adapters.push_back(pAdapter);
- }
- SAFE_RELEASE(dxgiDevice);
- }
- SAFE_RELEASE(pD3dDeviceContext);
- SAFE_RELEASE(pD3dDevice);
- }
-
- // Enum Adapters
- unsigned int adapterNo = 0;
- HRESULT hres = S_OK;
- while (SUCCEEDED(hres = IDXGIFactory_0001->EnumAdapters(adapterNo, (IDXGIAdapter**)&pAdapter)))
- {
- adapters.push_back(pAdapter);
- adapterNo++;
- }
- if (wcslen(targetName) != 0)
- {
- // find the adapter with specified name
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- DXGI_ADAPTER_DESC aDesc;
- pAdapter->GetDesc(&aDesc);
- std::wstring aName = aDesc.Description;
- if (aName.find(targetName) != std::string::npos)
- {
- targetAdapter = pAdapter;
- isNv = IsNvDeviceID(aDesc.VendorId);
- }
- }
- }
- else
- {
- // no name specified, find one NV adapter
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- DXGI_ADAPTER_DESC aDesc;
- pAdapter->GetDesc(&aDesc);
- std::wstring aName = aDesc.Description;
- if (IsNvDeviceID(aDesc.VendorId))
- {
- targetAdapter = pAdapter;
- isNv = true;
- }
- }
- }
- if (targetAdapter == nullptr)
- targetAdapter = adapters[0];
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- if(pAdapter != targetAdapter)
- {
- pAdapter->Release();
- }
- }
-
- return targetAdapter;
-}
-
-HRESULT UseGoodGPUDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return S_OK;
-#else
- // create factory
- if (g_pDXGIFactory1 == NV_NULL)
- {
- HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&g_pDXGIFactory1));
- if (FAILED(hr))
- return hr;
- }
-
- DWORD createDeviceFlags = D3D11_CREATE_DEVICE_SINGLETHREADED; // 0; // I changed only this line.
-#ifdef _DEBUG
- createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
- bool bNVAdapter = false;
- WCHAR* pwName = L"";
- g_pAdapter = FindAdapter(g_pDXGIFactory1, pwName, bNVAdapter);
-
-#ifdef _DEBUG
- DXGI_ADAPTER_DESC adapterDesc;
- g_pAdapter->GetDesc(&adapterDesc);
- std::wstring adapterName = adapterDesc.Description;
-#endif
-
- D3D_FEATURE_LEVEL fl = D3D_FEATURE_LEVEL_9_1;
- HRESULT hr = 0;
-
- hr = D3D11CreateDevice(g_pAdapter, D3D_DRIVER_TYPE_UNKNOWN, nullptr,
- createDeviceFlags, 0, 0,
- D3D11_SDK_VERSION, &g_d3dDevice, &fl, &g_d3dDeviceContext);
-
- if (g_d3dDevice == nullptr)
- {
- // here is the codes to make it run on a WARP device(Windows DirectX CPU - based emulation).
- if (g_pAdapter)
- {
- g_pAdapter->Release();
- g_pAdapter = nullptr;
- }
- hr = D3D11CreateDevice(g_pAdapter, D3D_DRIVER_TYPE_WARP, nullptr,
- createDeviceFlags, 0, 0,
- D3D11_SDK_VERSION, &g_d3dDevice, &fl, &g_d3dDeviceContext);
- }
-
- if(g_d3dDevice)
- {
- IDXGIDevice* dxgiDevice = nullptr;
- hr = g_d3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
- if (SUCCEEDED(hr))
- {
- g_dxgiDevice = dxgiDevice;
- if (g_pAdapter == nullptr)
- {
- // when running on WARP device, need find out adapter.
- hr = dxgiDevice->GetAdapter(&g_pAdapter);
- }
- return hr;
- }
- else
- {
- SAFE_RELEASE(g_d3dDevice);
- SAFE_RELEASE(g_pAdapter);
- SAFE_RELEASE(g_pDXGIFactory1);
- }
- }
- return hr;
-#endif // USE_11ON12_WRAPPER
-}
-
-bool InitDevice(int deviceID)
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::InitDevice();
-#else
- if (deviceID == -1)
- {
- HRESULT hResult = UseGoodGPUDevice();
- if (FAILED(hResult))
- return false;
-
- return true;
- }
-
- D3D_FEATURE_LEVEL featureLvl;
-
- // create factory
- if (g_pDXGIFactory1 == NV_NULL)
- {
- HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&g_pDXGIFactory1));
- if (FAILED(hr))
- return false;
- }
-
- // create adapter for selected device
- if (g_pAdapter == NV_NULL)
- {
- HRESULT hr = g_pDXGIFactory1->EnumAdapters(deviceID, &g_pAdapter);
- if (FAILED(hr))
- return false;
- }
-
- UINT deviceFlags = D3D11_CREATE_DEVICE_SINGLETHREADED;
-#ifdef _DEBUG
- deviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
-
- // create device
- HRESULT hResult = D3D11CreateDevice(
- g_pAdapter,
- D3D_DRIVER_TYPE_UNKNOWN, //D3D_DRIVER_TYPE_HARDWARE,
- 0,
- deviceFlags,
- NV_NULL,
- 0,
- D3D11_SDK_VERSION,
- &g_d3dDevice,
- &featureLvl,
- &g_d3dDeviceContext);
-
- if(FAILED(hResult))
- return false;
-#endif // USE_11ON12_WRAPPER
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- if (!GetDevice() || !GetDeviceContext())
- return false;
-
- D3D11_COMPARISON_FUNC depthFunc = D3D11_COMPARISON_LESS;
-
- InitializeShadersD3D11();
- InitializeRenderStates();
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- DestroyShadersD3D11();
- ClearRenderStates();
-
- // release d3d resources
- IDXGIFactory1* pDxgiFactory = GetDXGIFactory();
- SAFE_RELEASE(pDxgiFactory);
-
- IDXGIAdapter* pAdapter = GetAdapter();
- SAFE_RELEASE(pAdapter);
-
- IDXGIDevice* pDXGIDevice = GetDXGIDevice();
- SAFE_RELEASE(pDXGIDevice);
-
- ID3D11DeviceContext* pContext = GetDeviceContext();
- SAFE_RELEASE(pContext);
-
- ID3D11Device* pDevice = GetDevice();
-#if defined(DEBUG) || defined(_DEBUG)
- // output d3d leak
- ID3D11Debug *d3dDebug;
- HRESULT hr = pDevice->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast<void**>(&d3dDebug));
- if (SUCCEEDED(hr))
- {
- hr = d3dDebug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL);
- }
- if (d3dDebug != nullptr)
- d3dDebug->Release();
-#endif
-
- SAFE_RELEASE(pDevice);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void InitializeRenderStates()
-{
- ID3D11Device* pDevice = GetDevice();
- if (!pDevice)
- return;
-
- /////////////////////////////////////////////////////////////////////////////////////////
- // alpha blending state descriptors
- /////////////////////////////////////////////////////////////////////////////////////////
-
- // alpha blending enabled
- {
- D3D11_BLEND_DESC desc;
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D11_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = true;
- rtDesc.SrcBlend = D3D11_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D11_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D11_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D11_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D11_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- pDevice->CreateBlendState(&desc, &m_pBlendStates[BLEND_STATE_ALPHA]);
- }
-
- // no alpha blending
- {
- D3D11_BLEND_DESC desc;
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D11_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = false;
- rtDesc.SrcBlend = D3D11_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D11_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D11_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D11_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D11_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- pDevice->CreateBlendState(&desc, &m_pBlendStates[BLEND_STATE_NONE]);
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // depth and stencil
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D11_DEPTH_STENCIL_DESC depthTestDesc;
- {
- depthTestDesc.DepthEnable = true;
- depthTestDesc.DepthFunc = D3D11_COMPARISON_LESS;
- depthTestDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
- depthTestDesc.StencilEnable = false;
- depthTestDesc.StencilReadMask = 0xff;
- depthTestDesc.StencilWriteMask = 0xff;
- }
-
- pDevice->CreateDepthStencilState(&depthTestDesc, &m_pDepthStencilStates[DEPTH_STENCIL_DEPTH_TEST]);
-
- D3D11_DEPTH_STENCIL_DESC depthNone;
- {
- depthNone.DepthEnable = false;
- depthNone.DepthFunc = D3D11_COMPARISON_LESS;
- depthNone.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
- depthNone.StencilEnable = false;
- depthNone.StencilReadMask = 0xff;
- depthNone.StencilWriteMask = 0xff;
- }
-
- pDevice->CreateDepthStencilState(&depthNone, &m_pDepthStencilStates[DEPTH_STENCIL_DEPTH_NONE]);
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // rasterizer
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D11_RASTERIZER_DESC rsDesc;
-
- // solid cull front
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_FRONT;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_FRONT]);
- };
-
- // solid cull back
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_BACK;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_BACK]);
- }
-
- // solid cull none
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_NONE]);
-
- }
-
- // wireframe cull none
- {
- rsDesc.FillMode = D3D11_FILL_WIREFRAME;
- rsDesc.CullMode = D3D11_CULL_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = 0;
- rsDesc.DepthBias = 0;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
- };
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_WIRE]);
-
- // samplers
-
- D3D11_SAMPLER_DESC linearSamplerDesc[1] = {
- D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT,
- D3D11_TEXTURE_ADDRESS_WRAP,
- D3D11_TEXTURE_ADDRESS_WRAP,
- D3D11_TEXTURE_ADDRESS_WRAP,
- 0.0, 0, D3D11_COMPARISON_NEVER, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, D3D11_FLOAT32_MAX,
- };
- pDevice->CreateSamplerState(linearSamplerDesc, &m_pSamplerStates[SAMPLER_TYPE_LINEAR]);
-
- // create point clamp sampler for PCF sampling for hair
- D3D11_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D11_FILTER_MIN_MAG_MIP_POINT,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- 0.0, 0, D3D11_COMPARISON_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D11_FLOAT32_MAX,
- };
- pDevice->CreateSamplerState(pointClampSamplerDesc, &m_pSamplerStates[SAMPLER_TYPE_POINTCLAMP]);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearRenderStates()
-{
- for (int i = 0; i < RASTERIZER_STATE_END; i++)
- SAFE_RELEASE(m_pRasterizerStates[i]);
-
- for (int i = 0; i < DEPTH_STENCIL_STATE_END; i++)
- SAFE_RELEASE(m_pDepthStencilStates[i]);
-
- for (int i = 0; i < SAMPLER_TYPE_END; i++)
- SAFE_RELEASE(m_pSamplerStates[i]);
-
- for (int i = 0; i < BLEND_STATE_END; i++)
- SAFE_RELEASE(m_pBlendStates[i]);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindVertexShaderResources( int startSlot, int numSRVs, ID3D11ShaderResourceView** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->VSSetShaderResources( startSlot, numSRVs, ppSRVs);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindPixelShaderResources( int startSlot, int numSRVs, ID3D11ShaderResourceView** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->PSSetShaderResources( startSlot, numSRVs, ppSRVs);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindVertexShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- for (int i = startSlot; i < (startSlot + numSRVs); i++)
- {
- ID3D11ShaderResourceView* pSRV = D3D11TextureResource::GetResource(ppSRVs[i]);
- pDeviceContext->VSSetShaderResources( i, 1, &pSRV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindPixelShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- for (int i = startSlot; i < (startSlot + numSRVs); i++)
- {
- ID3D11ShaderResourceView* pSRV = D3D11TextureResource::GetResource(ppSRVs[i]);
- pDeviceContext->PSSetShaderResources( i, 1, &pSRV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearPixelShaderResources( int startSlot, int numSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- // clean up
- ID3D11ShaderResourceView* ppSRVNull[128];
- memset(&ppSRVNull, 0, sizeof(ID3D11ShaderResourceView*)*128);
-
- pDeviceContext->PSSetShaderResources( startSlot, numSRVs, ppSRVNull);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearVertexShaderResources( int startSlot, int numSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- // clean up
- ID3D11ShaderResourceView* ppSRVNull[128];
- memset(&ppSRVNull, 0, sizeof(ID3D11ShaderResourceView*)*128);
-
- pDeviceContext->VSSetShaderResources( startSlot, numSRVs, ppSRVNull);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearInputLayout()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetInputLayout(nullptr);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleStrip()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleList()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyLineList()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_LINELIST );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- ID3D11Buffer* pD3D11Buffer = GPUBufferD3D11::GetResource(pBuffer);
- if (!pD3D11Buffer)
- return;
-
- pDeviceContext->IASetVertexBuffers( 0, 1, &pD3D11Buffer, &stride, &offset );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ApplySampler(int slot, RenderInterface::SAMPLER_TYPE st)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->PSSetSamplers(slot, 1, &m_pSamplerStates[st] );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->OMSetDepthStencilState(m_pDepthStencilStates[state], 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->RSSetState(m_pRasterizerStates[state]);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE st)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- float zerov[] = {0,0,0,0};
-
- pDeviceContext->OMSetBlendState(m_pBlendStates[st], zerov, 0xffffffff);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void SetViewport(const RenderInterface::Viewport& vp)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- D3D11_VIEWPORT d3dViewport;
-
- d3dViewport.TopLeftX = vp.TopLeftX;
- d3dViewport.TopLeftY = vp.TopLeftY;
-
- d3dViewport.Width = vp.Width;
- d3dViewport.Height = vp.Height;
-
- d3dViewport.MinDepth = vp.MinDepth;
- d3dViewport.MaxDepth = vp.MaxDepth;
-
- pDeviceContext->RSSetViewports(1, &d3dViewport);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(RenderInterface::Viewport& vp)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- UINT numViewports = 1;
- D3D11_VIEWPORT d3dViewport;
- pDeviceContext->RSGetViewports(&numViewports, &d3dViewport);
-
- vp.TopLeftX = d3dViewport.TopLeftX;
- vp.TopLeftY = d3dViewport.TopLeftY;
-
- vp.Width = d3dViewport.Width;
- vp.Height = d3dViewport.Height;
-
- vp.MinDepth = d3dViewport.MinDepth;
- vp.MaxDepth = d3dViewport.MaxDepth;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Draw(unsigned int vertexCount, unsigned int startCount)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->Draw(vertexCount, startCount);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// gpu buffer management
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11Buffer* CreateD3D11Buffer(
- D3D11_USAGE Usage, UINT ByteWidth, UINT StructureByteStride,
- UINT BindFlags, UINT MiscFlags,
- UINT CPUAccessFlags, void *pSysMem)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- D3D11_BUFFER_DESC desc;
-
- desc.Usage = Usage;
- desc.ByteWidth = ByteWidth;
- desc.StructureByteStride = StructureByteStride;
- desc.BindFlags = BindFlags;
- desc.MiscFlags = MiscFlags;
- desc.CPUAccessFlags = CPUAccessFlags;
-
- D3D11_SUBRESOURCE_DATA InitData;
-
- InitData.pSysMem = pSysMem;
- InitData.SysMemPitch = 0;
- InitData.SysMemSlicePitch = 0;
-
- ID3D11Buffer* pBuffer = 0;
-
- HRESULT hr = pSysMem ? pDevice->CreateBuffer( &desc, &InitData, &pBuffer)
- : pDevice->CreateBuffer( &desc, 0, &pBuffer);
-
- if( FAILED(hr) )
- return 0;
-
- return pBuffer;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11ShaderResourceView*
-CreateD3D11ShaderResourceView(
- ID3D11Buffer* pBuffer,
- DXGI_FORMAT Format,
- D3D11_SRV_DIMENSION ViewDimension,
- UINT NumElements,
- UINT FirstElement = 0
- )
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- ID3D11ShaderResourceView* pSRV = 0;
-
- D3D11_SHADER_RESOURCE_VIEW_DESC desc;
- {
- desc.Format = Format;
- desc.ViewDimension = ViewDimension;
- desc.Buffer.FirstElement = FirstElement;
- desc.Buffer.NumElements = NumElements;
- }
-
- pDevice->CreateShaderResourceView( pBuffer, &desc, &pSRV);
-
- return pSRV;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- ID3D11Buffer* pD3D11Buffer = CreateD3D11Buffer(D3D11_USAGE_DEFAULT,
- ByteWidth, 0, D3D11_BIND_VERTEX_BUFFER, 0, 0, pSysMem);
-
- return GPUBufferD3D11::Create(pD3D11Buffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem)
-{
- unsigned int byteWidth = numElements * stride;
-
- ID3D11Buffer* pBuffer = CreateD3D11Buffer(
- D3D11_USAGE_DEFAULT, byteWidth, 0,
- D3D11_BIND_SHADER_RESOURCE, 0, 0, pSysMem);
-
- // create SRV for bone indices
- ID3D11ShaderResourceView* pSRV = CreateD3D11ShaderResourceView(
- pBuffer,
- DXGI_FORMAT_R32G32B32A32_FLOAT,
- D3D11_SRV_DIMENSION_BUFFER,
- numElements);
-
- SAFE_RELEASE(pBuffer); // dec ref count as this is not explicitly used later
-
- return D3D11TextureResource::Create(pSRV);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// create read only shader resource buffer
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth)
-{
- ID3D11Buffer* pBuffer = GPUBufferD3D11::GetResource(pDevicePtr);
- if (!pBuffer)
- return;
-
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->UpdateSubresource(pBuffer, 0, NV_NULL, pSysMem, ByteWidth, 0);
-}
-
-} // end namespace
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h
deleted file mode 100644
index e5f3c02..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "RenderInterface.h"
-
-#include "RenderPlugin.h"
-
-#ifdef NV_ARTISTTOOLS
-enum HAIR_SHADER_TYPE
-{
- SHADER_TYPE_HAIR_SHADER_DEFAULT = RenderInterface::SHADER_TYPE_SIMPLE_COLOR + 1,
- SHADER_TYPE_HAIR_SHADER_SHADOW,
-};
-#endif
-
-// abstract interface to D3D calls
-namespace RenderInterfaceD3D11
-{
- CORERENDER_EXPORT bool InitDevice(int deviceID);
- CORERENDER_EXPORT bool Initialize();
- CORERENDER_EXPORT void Shutdown();
-
- CORERENDER_EXPORT ID3D11DeviceContext* GetDeviceContext();
- CORERENDER_EXPORT ID3D11Device* GetDevice();
- IDXGIFactory1* GetDXGIFactory();
- IDXGIAdapter* GetAdapter();
-
- CORERENDER_EXPORT void InitializeRenderStates();
- CORERENDER_EXPORT void ClearRenderStates();
-
- CORERENDER_EXPORT void ApplySampler(int slot, RenderInterface::SAMPLER_TYPE st);
- CORERENDER_EXPORT void ApplyDepthStencilState(RenderInterface::DEPTH_STENCIL_STATE st);
- CORERENDER_EXPORT void ApplyRasterizerState(RenderInterface::RASTERIZER_STATE st);
- CORERENDER_EXPORT void ApplyBlendState(RenderInterface::BLEND_STATE st);
-
- CORERENDER_EXPORT void GetViewport(RenderInterface::Viewport& vp);
- CORERENDER_EXPORT void SetViewport(const RenderInterface::Viewport& vp);
-
- CORERENDER_EXPORT void BindVertexShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- CORERENDER_EXPORT void BindPixelShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
-
- CORERENDER_EXPORT void ClearVertexShaderResources( int startSlot, int numSRVs);
- CORERENDER_EXPORT void ClearPixelShaderResources( int startSlot, int numSRVs);
-
- CORERENDER_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem);
- CORERENDER_EXPORT GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem );
-
- CORERENDER_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- CORERENDER_EXPORT void ClearInputLayout();
-
- CORERENDER_EXPORT void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
-
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleStrip();
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleList();
- CORERENDER_EXPORT void SetPrimitiveTopologyLineList();
-
-
- CORERENDER_EXPORT void Draw(unsigned int vertexCount, unsigned int startCount = 0);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp
deleted file mode 100644
index 3a4d27e..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "D3D11RenderShader.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11Wrapper.h"
-#include "Nv.h"
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader::D3D11RenderShader() :
- m_pVertexShader(0),
- m_pPixelShader(0),
- m_pInputLayout(0)
-{
- for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- {
- m_pParamBuffers[i] = nullptr;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader::~D3D11RenderShader()
-{
- SAFE_RELEASE(m_pVertexShader);
- SAFE_RELEASE(m_pPixelShader);
- SAFE_RELEASE(m_pInputLayout);
-
- for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- SAFE_RELEASE(m_pParamBuffers[i]);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader* D3D11RenderShader::Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0, UINT cbufferSize1,
- D3D11_INPUT_ELEMENT_DESC* pElemDesc, UINT numElements)
-{
- D3D11RenderShader* pShader = new D3D11RenderShader;
-
- pShader->CreateVSFromBlob(pVSBlob, vsBlobSize, pElemDesc, numElements);
- pShader->CreatePSFromBlob(pPSBlob, psBlobSize);
-
- if (cbufferSize0 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize0, 0);
- SET_D3D_DEBUG_NAME(pShader->getParamBuffer(0), name);
- }
-
- if (cbufferSize1 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize1, 1);
- SET_D3D_DEBUG_NAME(pShader->getParamBuffer(1), name);
- }
-
- if (pShader->getVertexShader())
- SET_D3D_DEBUG_NAME(pShader->getVertexShader(), name);
-
- if (pShader->getPixelShader())
- SET_D3D_DEBUG_NAME(pShader->getPixelShader(), name);
-
- if (pShader->getInputLayout())
- SET_D3D_DEBUG_NAME(pShader->getInputLayout(), name);
-
- return pShader;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreateVSFromBlob(
- void* pBlob, size_t blobSize,
- D3D11_INPUT_ELEMENT_DESC *desc, int elemCount)
-{
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- if (!pBlob || (blobSize == 0))
- return false;
-
- SAFE_RELEASE(m_pVertexShader);
- SAFE_RELEASE(m_pInputLayout);
-
- HRESULT res = pDevice->CreateVertexShader(pBlob, blobSize, NV_NULL, &m_pVertexShader);
-
- if(FAILED(res)) return false;
-
- if (desc)
- {
- res = pDevice->CreateInputLayout(desc, elemCount,
- pBlob, blobSize, &m_pInputLayout);
-
- if(FAILED(res)) return false;
- }
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreatePSFromBlob(void* pBlob, size_t blobSize)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- if (!pBlob || (blobSize == 0))
- return false;
-
- SAFE_RELEASE(m_pPixelShader);
-
- HRESULT res = pDevice->CreatePixelShader(pBlob, blobSize, NV_NULL, &m_pPixelShader);
-
- if (FAILED(res))
- return false;
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::SetConstantBuffer()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- //for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- for (int i = 0; i < 2; i++)
- {
- pContext->PSSetConstantBuffers(i, 1, &m_pParamBuffers[i]);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::MakeCurrent()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (m_pInputLayout)
- pContext->IASetInputLayout(m_pInputLayout);
- else
- pContext->IASetInputLayout(NV_NULL);
-
-
- if (m_pVertexShader)
- {
- pContext->VSSetShader( m_pVertexShader, NV_NULL, 0);
- if (m_pParamBuffers[0])
- pContext->VSSetConstantBuffers(0, 1, &m_pParamBuffers[0]);
- }
-
- if (m_pPixelShader)
- {
- pContext->PSSetShader( m_pPixelShader, NV_NULL, 0);
- if (m_pParamBuffers[0])
- pContext->PSSetConstantBuffers(0, 1, &m_pParamBuffers[0]);
- if (m_pParamBuffers[1])
- pContext->PSSetConstantBuffers(1, 1, &m_pParamBuffers[1]);
- }
-
- pContext->GSSetShader( 0, 0, 0);
- pContext->DSSetShader( 0, 0, 0);
- pContext->HSSetShader( 0, 0, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::Disable()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- pContext->IASetInputLayout(NV_NULL);
-
- pContext->VSSetShader( 0, NV_NULL, 0);
- pContext->PSSetShader( 0, NV_NULL, 0);
- pContext->GSSetShader( 0, 0, 0);
- pContext->DSSetShader( 0, 0, 0);
- pContext->HSSetShader( 0, 0, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreateParamBuffer( UINT sizeBuffer, UINT slot )
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- SAFE_RELEASE(m_pParamBuffers[slot]);
-
- D3D11_BUFFER_DESC Desc;
- {
- Desc.Usage = D3D11_USAGE_DYNAMIC;
- Desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
- Desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
- Desc.MiscFlags = 0;
- Desc.ByteWidth = sizeBuffer;
- }
-
- HRESULT hr = pDevice->CreateBuffer( &Desc, NV_NULL, &m_pParamBuffers[slot] );
- if( FAILED(hr) )
- false;
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void* D3D11RenderShader::MapParam(UINT slot)
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (!m_pParamBuffers[slot] || !pContext)
- return 0;
-
- D3D11_MAPPED_SUBRESOURCE mappedResource;
- HRESULT hr = pContext->Map(m_pParamBuffers[slot], 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
-
- if ( FAILED(hr))
- return 0;
-
- return mappedResource.pData;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::UnmapParam( UINT slot )
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (pContext && m_pParamBuffers[slot])
- pContext->Unmap( m_pParamBuffers[slot], 0);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h
deleted file mode 100644
index 1aad045..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-#include "RenderPlugin.h"
-
-class CORERENDER_EXPORT D3D11RenderShader
-{
-public:
- D3D11RenderShader();
- ~D3D11RenderShader();
-
- static D3D11RenderShader* Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0 = 0, UINT cbufferSize1 = 0,
- D3D11_INPUT_ELEMENT_DESC* pElemDesc = 0, UINT numElements = 0);
-
- void MakeCurrent();
- void Disable();
- void SetConstantBuffer();
-
- void* MapParam(UINT slot = 0);
- void UnmapParam(UINT slot = 0);
-
- ID3D11VertexShader* getVertexShader() { return m_pVertexShader; }
- ID3D11PixelShader* getPixelShader() { return m_pPixelShader; }
- ID3D11InputLayout* getInputLayout() { return m_pInputLayout; }
- ID3D11Buffer* getParamBuffer(UINT slot = 0) { return m_pParamBuffers[slot]; }
-
-protected:
- bool CreateVSFromBlob(void* pBlob, size_t blobSize,
- D3D11_INPUT_ELEMENT_DESC *desc, int elemCount);
- bool CreatePSFromBlob(void* pBlob, size_t blobSize);
- bool CreateParamBuffer(UINT sizeBuffer, UINT slot = 0);
-
-private:
-
- ID3D11VertexShader* m_pVertexShader;
- ID3D11PixelShader* m_pPixelShader;
- ID3D11InputLayout* m_pInputLayout;
- ID3D11Buffer* m_pParamBuffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp
deleted file mode 100644
index 1274ed5..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11RendererWindow.h"
-
-#include "windows.h"
-
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-
-#include "D3D11RenderInterface.h"
-#include "Nv.h"
-#ifdef USE_11ON12_WRAPPER
-#include "D3D11on12Wrapper.h"
-#endif // USE_11ON12_WRAPPER
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderWindow::D3D11RenderWindow() :
- m_sampleCount(8)
- , m_sampleQuality(0)
-#ifdef USE_11ON12_WRAPPER
-#else
- , m_pDXGISwapChain(NV_NULL)
- , m_pD3D11BackBuffer(NV_NULL)
- , m_pD3D11DepthBuffer(NV_NULL)
- , m_pD3D11RenderTargetView(NV_NULL)
- , m_pD3D11DepthStencilView(NV_NULL)
-#endif // USE_11ON12_WRAPPER
-{
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderWindow::~D3D11RenderWindow()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderWindow::Create( HWND hWnd, unsigned int nSamples )
-{
-#ifdef USE_11ON12_WRAPPER
-#else
- if (m_pD3D11BackBuffer != NV_NULL || m_pD3D11RenderTargetView != NV_NULL)
- Free();
-#endif // USE_11ON12_WRAPPER
-
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- ID3D11DeviceContext* pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pDeviceContext)
- return false;
-
- if(nSamples > D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT)
- nSamples = D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT;
-
- m_sampleCount = nSamples;
- m_sampleQuality = 0;
- if(nSamples > 1)
- {
- pDevice->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM, nSamples, &m_sampleQuality);
- assert(m_sampleQuality > 0);
- m_sampleQuality--;
- }
-
- RECT rc;
- GetClientRect((HWND)hWnd, &rc);
- int wBuf = rc.right - rc.left;
- int hBuf = rc.bottom- rc.top;
-
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::InitSwapchain(wBuf, hBuf, hWnd);
-#else
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- {
- memset(&swapChainDesc, 0, sizeof(DXGI_SWAP_CHAIN_DESC));
- swapChainDesc.BufferDesc.Width = wBuf;
- swapChainDesc.BufferDesc.Height= hBuf;
- swapChainDesc.BufferDesc.Format= DXGI_FORMAT_R8G8B8A8_UNORM;
- swapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
- swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
- swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
- swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
-
- swapChainDesc.BufferCount = 1;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
- swapChainDesc.OutputWindow = (HWND)hWnd;
- swapChainDesc.SampleDesc.Count = m_sampleCount;
- swapChainDesc.SampleDesc.Quality = m_sampleQuality;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
- swapChainDesc.Windowed = true;
- }
-
- // Create the swap chain
- IDXGIFactory1* pDXGIFactory = RenderInterfaceD3D11::GetDXGIFactory();
- HRESULT res = pDXGIFactory->CreateSwapChain(pDevice, &swapChainDesc, &m_pDXGISwapChain);
- if (FAILED(res)) return false;
-#endif // USE_11ON12_WRAPPER
-
- // create DXUT text rendering class
- m_pDialogResourceManager = new CDXUTDialogResourceManager;
- m_pDialogResourceManager->OnD3D11CreateDevice(pDevice, pDeviceContext);
- m_pTextHelper = new CDXUTTextHelper( pDevice, pDeviceContext, m_pDialogResourceManager, 15 );
-
- CreateRenderTarget();
- Resize(wBuf, hBuf);
- return true;// SUCCEEDED(res);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Free()
-{
- FreeBuffer();
-
- SAFE_DELETE(m_pTextHelper);
-
-#ifdef USE_11ON12_WRAPPER
-#else
- SAFE_RELEASE(m_pDXGISwapChain);
-#endif // USE_11ON12_WRAPPER
-
- if (m_pDialogResourceManager)
- {
- m_pDialogResourceManager->OnD3D11DestroyDevice();
- SAFE_DELETE(m_pDialogResourceManager);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::FreeBuffer()
-{
-#ifdef USE_11ON12_WRAPPER
-#else
- SAFE_RELEASE(m_pD3D11RenderTargetView);
- SAFE_RELEASE(m_pD3D11BackBuffer);
- SAFE_RELEASE(m_pD3D11DepthStencilView);
- SAFE_RELEASE(m_pD3D11DepthBuffer);
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Present()
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::EndScene();
-#else
- assert(m_pDXGISwapChain);
-
- if(m_pDXGISwapChain)
- {
- //m_pDXGISwapChain->Present(1, 0); // present in vsync
- m_pDXGISwapChain->Present(0, 0); // present in vsync off
- }
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Clear(float r, float g, float b)
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::BeginScene();
- D3D11on12Wrapper::ClearScene(r, g, b);
-#else
- const float clearColor[4] = {r, g, b, 1.0f};
-
- ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- pD3DContext->ClearRenderTargetView(m_pD3D11RenderTargetView, clearColor);
- pD3DContext->ClearDepthStencilView(m_pD3D11DepthStencilView, D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL, 1.0f, 0);
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderWindow::Resize(int w, int h)
-{
- assert(w > 0 && h > 0);
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- HRESULT res0 = m_pDXGISwapChain->GetDesc(&swapChainDesc);
- if (w == (LONG)swapChainDesc.BufferDesc.Width &&
- h == (LONG)swapChainDesc.BufferDesc.Height)
- return true;
-
-#ifdef USE_11ON12_WRAPPER
-#else
- //ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- //ID3D11RenderTargetView *nullRTV = NULL;
- //pD3DContext->OMSetRenderTargets(1, &nullRTV, NULL);
- FreeBuffer();
- swapChainDesc.BufferDesc.Width = w;
- swapChainDesc.BufferDesc.Height = h;
- //HRESULT res = m_pDXGISwapChain->ResizeBuffers(1, w, h, DXGI_FORMAT_R8G8B8A8_UNORM, 0);
- HRESULT res = m_pDXGISwapChain->ResizeBuffers(swapChainDesc.BufferCount, swapChainDesc.BufferDesc.Width,
- swapChainDesc.BufferDesc.Height, swapChainDesc.BufferDesc.Format,
- swapChainDesc.Flags);
- assert(SUCCEEDED(res));
-#endif
- return CreateRenderTarget();
-}
-
-bool D3D11RenderWindow::CreateRenderTarget()
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::ResizeScene(w, h);
-#else
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- // Retrieve the 2D back buffer
- HRESULT res = m_pDXGISwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&m_pD3D11BackBuffer);
- assert(SUCCEEDED(res));
-
- D3D11_TEXTURE2D_DESC descTex2D;
- m_pD3D11BackBuffer->GetDesc(&descTex2D);
-
- // Create the render target view
- D3D11_RENDER_TARGET_VIEW_DESC descRenderTargetView;
- {
- memset(&descRenderTargetView, 0, sizeof(D3D11_RENDER_TARGET_VIEW_DESC));
- descRenderTargetView.Format = descTex2D.Format;
- descRenderTargetView.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS; // -MS dimension to support MSAA
- descRenderTargetView.Texture2D.MipSlice = 0;
- }
-
- res = pDevice->CreateRenderTargetView(m_pD3D11BackBuffer, &descRenderTargetView, &m_pD3D11RenderTargetView);
-
- assert(SUCCEEDED(res));
-
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- HRESULT res0 = m_pDXGISwapChain->GetDesc(&swapChainDesc);
- // Create the depth/stencil buffer and view
- D3D11_TEXTURE2D_DESC depthStencilDesc;
-
- depthStencilDesc.Width = swapChainDesc.BufferDesc.Width;
- depthStencilDesc.Height = swapChainDesc.BufferDesc.Height;
- depthStencilDesc.MipLevels = 1;
- depthStencilDesc.ArraySize = 1;
- depthStencilDesc.Format = DXGI_FORMAT_R24G8_TYPELESS;
- depthStencilDesc.SampleDesc.Count = m_sampleCount;
- depthStencilDesc.SampleDesc.Quality = m_sampleQuality;
- depthStencilDesc.Usage = D3D11_USAGE_DEFAULT;
- depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE;
- depthStencilDesc.CPUAccessFlags = 0;
- depthStencilDesc.MiscFlags = 0;
-
- res = pDevice->CreateTexture2D(&depthStencilDesc, 0, &m_pD3D11DepthBuffer);
- assert(SUCCEEDED(res));
-
- D3D11_DEPTH_STENCIL_VIEW_DESC descDepthStencilView;
- memset(&descDepthStencilView, 0, sizeof(D3D11_DEPTH_STENCIL_VIEW_DESC));
- descDepthStencilView.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- descDepthStencilView.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; // -MS dimension to support MSAA
- descDepthStencilView.Texture2D.MipSlice = 0;
-
- res = pDevice->CreateDepthStencilView(m_pD3D11DepthBuffer, &descDepthStencilView, &m_pD3D11DepthStencilView);
- assert(SUCCEEDED(res));
-
- m_Width = swapChainDesc.BufferDesc.Width;
- m_Height= swapChainDesc.BufferDesc.Height;
-
- /////////////////////////////////////////
- if (m_pDialogResourceManager)
- {
- DXGI_SURFACE_DESC backbufferDesc;
- backbufferDesc.Width = descTex2D.Width;
- backbufferDesc.Height = descTex2D.Height;
- backbufferDesc.Format = descTex2D.Format;
- backbufferDesc.SampleDesc = descTex2D.SampleDesc;
-
- m_pDialogResourceManager->OnD3D11ResizedSwapChain(pDevice, &backbufferDesc);
- }
-
- // assume always the current render window, bind to render context immediately
- ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- pD3DContext->OMSetRenderTargets(1, &m_pD3D11RenderTargetView, m_pD3D11DepthStencilView);
-
- // set the viewport transform
- D3D11_VIEWPORT vp;
- {
- vp.TopLeftX = 0;
- vp.TopLeftY = 0;
- vp.Width = (float)m_Width;
- vp.Height = (float)m_Height;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
- pD3DContext->RSSetViewports(1, &vp);
-#endif // USE_11ON12_WRAPPER
-
- return true;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h
deleted file mode 100644
index 88d5c8f..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include <d3d11.h>
-
-// DXUT stuffs for text rendering
-class CDXUTDialogResourceManager;
-class CDXUTTextHelper;
-
-struct D3D11RenderWindow
-{
-public:
- D3D11RenderWindow();
- ~D3D11RenderWindow();
-
- bool Create(HWND hWnd, unsigned int nSamples = 1);
- bool Resize(int w, int h);
- void Present();
- void Clear(float r, float g, float b);
- bool CreateRenderTarget();
-
- // sample desc
- UINT m_sampleCount;
- UINT m_sampleQuality;
-#ifdef USE_11ON12_WRAPPER
-#else
- int m_Height, m_Width;
-
- IDXGISwapChain* m_pDXGISwapChain;
- ID3D11Texture2D* m_pD3D11BackBuffer;
- ID3D11Texture2D* m_pD3D11DepthBuffer;
- ID3D11RenderTargetView* m_pD3D11RenderTargetView;
- ID3D11DepthStencilView* m_pD3D11DepthStencilView;
-#endif // USE_11ON12_WRAPPER
-
- CDXUTDialogResourceManager* m_pDialogResourceManager;
- CDXUTTextHelper* m_pTextHelper;
-
-private:
- void Free();
- void FreeBuffer();
-
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp
deleted file mode 100644
index f3e210b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Shaders.h"
-
-#include "MeshShaderParam.h"
-#include "LightShaderParam.h"
-
-#include "D3D11RenderShader.h"
-
-using namespace RenderInterface;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Common shader settings
-//static D3D11RenderShader* g_pShaders[SHADER_TYPE_END];
-static std::map<int, D3D11RenderShader*> g_pShaders;
-
-namespace BodyShaderBlobs
-{
- #include "Shaders/BodyShader_VS.h"
- #include "Shaders/BodyShader_PS.h"
-}
-
-namespace BodyShadowBlobs
-{
- #include "Shaders/BodyShadow_VS.h"
- #include "Shaders/BodyShadow_PS.h"
-}
-
-namespace ScreenQuadBlobs
-{
- #include "Shaders/ScreenQuad_VS.h"
- #include "Shaders/ScreenQuad_PS.h"
-}
-
-namespace ScreenQuadColorBlobs
-{
- #include "Shaders/ScreenQuadColor_VS.h"
- #include "Shaders/ScreenQuadColor_PS.h"
-}
-
-namespace VisualizeShadowBlobs
-{
- #include "Shaders/VisualizeShadow_VS.h"
- #include "Shaders/VisualizeShadow_PS.h"
-}
-
-namespace ColorBlobs
-{
- #include "Shaders/Color_VS.h"
- #include "Shaders/Color_PS.h"
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool InitializeShadersD3D11()
-{
- D3D11_INPUT_ELEMENT_DESC layoutBodyRender[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "VERTEX_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "FACE_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 36, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 48, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "VERTEX_ID", 0, DXGI_FORMAT_R32_FLOAT, 0, 56, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- };
-
- UINT numElements = sizeof(layoutBodyRender)/sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_MESH_RENDERING] = D3D11RenderShader::Create( "MeshRenderShader",
- (void*)BodyShaderBlobs::g_vs_main, sizeof(BodyShaderBlobs::g_vs_main),
- (void*)BodyShaderBlobs::g_ps_main, sizeof(BodyShaderBlobs::g_ps_main),
- sizeof(MeshShaderParam), 0,
- &layoutBodyRender[0], numElements);
-
- g_pShaders[SHADER_TYPE_MESH_SHADOW] = D3D11RenderShader::Create( "MeshShadowShader",
- (void*)BodyShadowBlobs::g_vs_main, sizeof(BodyShadowBlobs::g_vs_main),
- (void*)BodyShadowBlobs::g_ps_main, sizeof(BodyShadowBlobs::g_ps_main),
- sizeof(MeshShadowShaderParam), 0,
- &layoutBodyRender[0], numElements);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD] = D3D11RenderShader::Create( "ScreenQuadShader",
- (void*)ScreenQuadBlobs::g_vs_main, sizeof(ScreenQuadBlobs::g_vs_main),
- (void*)ScreenQuadBlobs::g_ps_main, sizeof(ScreenQuadBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD_COLOR] = D3D11RenderShader::Create( "ScreenQuadColorShader",
- (void*)ScreenQuadColorBlobs::g_vs_main, sizeof(ScreenQuadColorBlobs::g_vs_main),
- (void*)ScreenQuadColorBlobs::g_ps_main, sizeof(ScreenQuadColorBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_VISUALIZE_SHADOW] = D3D11RenderShader::Create( "VisualizeShadowShader",
- (void*)VisualizeShadowBlobs::g_vs_main, sizeof(VisualizeShadowBlobs::g_vs_main),
- (void*)VisualizeShadowBlobs::g_ps_main, sizeof(VisualizeShadowBlobs::g_ps_main),
- sizeof(ShadowVizParam));
-
- D3D11_INPUT_ELEMENT_DESC layout_Position_And_Color[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- };
- UINT numElements2 = sizeof(layout_Position_And_Color)/sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_SIMPLE_COLOR] = D3D11RenderShader::Create( "Color",
- (void*)ColorBlobs::g_vs_main, sizeof(ColorBlobs::g_vs_main),
- (void*)ColorBlobs::g_ps_main, sizeof(ColorBlobs::g_ps_main),
- sizeof(SimpleShaderParam), 0,
- &layout_Position_And_Color[0], numElements2);
-
- return true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) { if (x) delete x; x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-void DestroyShadersD3D11()
-{
- for (int i = 0; i < g_pShaders.size(); i++)
- {
- D3D11RenderShader*& pShader = g_pShaders[i];
- if (pShader)
- {
- delete pShader;
- pShader = 0;
- }
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader* GetShaderD3D11(SHADER_TYPE st)
-{
- return g_pShaders[st];
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyShaderD3D11(SHADER_TYPE st)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- pD3D11Shader->MakeCurrent();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void DisableShaderD3D11(RenderInterface::SHADER_TYPE st)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- pD3D11Shader->Disable();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParamD3D11(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- void* mappedParam = pD3D11Shader->MapParam(slot);
-
- memcpy(mappedParam, pSysMem, bytes);
-
- pD3D11Shader->UnmapParam(slot);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h
deleted file mode 100644
index b1d4929..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderInterface.h"
-
-#include "RenderPlugin.h"
-
-///////////////////////////////////////////////////////////////////
-// default shaders
-///////////////////////////////////////////////////////////////////
-CORERENDER_EXPORT bool InitializeShadersD3D11();
-CORERENDER_EXPORT void DestroyShadersD3D11();
-
-CORERENDER_EXPORT void ApplyShaderD3D11(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void DisableShaderD3D11(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void CopyShaderParamD3D11(RenderInterface::SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp
deleted file mode 100644
index 90e30b2..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11ShadowMap.h"
-
-#include "RenderResources.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11TextureResource.h"
-
-namespace
-{
-//////////////////////////////////////////////////////////////////////////////////////////////////
-D3D11_TEXTURE2D_DESC CreateD3D11TextureDesc(
- DXGI_FORMAT Format, UINT Width, UINT Height,
- UINT BindFlags, UINT SampleCount = 1, D3D11_USAGE Usage = D3D11_USAGE_DEFAULT, UINT CPUAccessFlags = 0,
- UINT MiscFlags = 0, UINT ArraySize = 1, UINT MipLevels = 1)
-{
-
- D3D11_TEXTURE2D_DESC desc;
-
- desc.Format = Format;
- desc.Width = Width;
- desc.Height = Height;
-
- desc.ArraySize = ArraySize;
- desc.MiscFlags = MiscFlags;
- desc.MipLevels = MipLevels;
-
- desc.SampleDesc.Count = SampleCount;
- desc.SampleDesc.Quality = 0;
- desc.BindFlags = BindFlags;
- desc.Usage = Usage;
- desc.CPUAccessFlags = CPUAccessFlags;
-
- return desc;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-D3D11_DEPTH_STENCIL_VIEW_DESC CreateD3D11DSVDesc(
- DXGI_FORMAT Format, D3D11_DSV_DIMENSION ViewDimension,
- UINT Flags = 0, UINT MipSlice = 0)
-{
- D3D11_DEPTH_STENCIL_VIEW_DESC desc;
-
- desc.Format = Format;
- desc.ViewDimension = ViewDimension;
- desc.Flags = Flags;
- desc.Texture2D.MipSlice = MipSlice;
-
- return desc;
-}
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D11ShadowMap::D3D11ShadowMap(int resolution)
-{
- m_pShadowTexture = nullptr;
- m_pShadowRTV = nullptr;
- m_pShadowSRV = nullptr;
-
- m_pDepthTexture = nullptr;
- m_pDepthDSV = nullptr;
-
- ID3D11Device* pd3dDevice = RenderInterfaceD3D11::GetDevice();
- if (!pd3dDevice)
- return;
-
- {
- m_viewport.Width = float(resolution);
- m_viewport.Height = float(resolution);
- m_viewport.MinDepth = 0;
- m_viewport.MaxDepth = 1;
- m_viewport.TopLeftX = 0;
- m_viewport.TopLeftY = 0;
- }
-
- HRESULT hr;
-
- // create shadow render target
- {
- D3D11_TEXTURE2D_DESC texDesc = CreateD3D11TextureDesc(
- DXGI_FORMAT_R32_FLOAT, UINT(m_viewport.Width), UINT(m_viewport.Height),
- D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE);
-
- hr = pd3dDevice->CreateTexture2D( &texDesc, NULL, &m_pShadowTexture );
- hr = pd3dDevice->CreateShaderResourceView( m_pShadowTexture, NULL, &m_pShadowSRV );
- hr = pd3dDevice->CreateRenderTargetView(m_pShadowTexture, NULL, &m_pShadowRTV);
-
- m_shadowResource.m_pD3D11Resource = m_pShadowSRV;
- }
-
- // create shadow depth stencil
- {
- D3D11_TEXTURE2D_DESC texDesc = CreateD3D11TextureDesc(
- DXGI_FORMAT_R32_TYPELESS, UINT(m_viewport.Width), UINT(m_viewport.Height),
- D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE);
-
- hr = pd3dDevice->CreateTexture2D( &texDesc, NULL, &m_pDepthTexture );
-
- D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc = CreateD3D11DSVDesc(
- DXGI_FORMAT_D32_FLOAT, D3D11_DSV_DIMENSION_TEXTURE2D);
-
- hr = pd3dDevice->CreateDepthStencilView(m_pDepthTexture, &dsvDesc, &m_pDepthDSV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D11ShadowMap::~D3D11ShadowMap()
-{
- Release();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::Release()
-{
- SAFE_RELEASE(m_pShadowTexture);
- SAFE_RELEASE(m_pShadowRTV);
- SAFE_RELEASE(m_pShadowSRV);
- SAFE_RELEASE(m_pDepthTexture);
- SAFE_RELEASE(m_pDepthDSV);
-
- m_shadowResource.m_pD3D11Resource = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* D3D11ShadowMap::GetShadowSRV()
-{
- return &m_shadowResource;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool D3D11ShadowMap::isValid()
-{
- return m_pShadowTexture && m_pShadowRTV && m_pShadowSRV && m_pDepthTexture && m_pDepthDSV;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::BeginRendering(float clearDepth)
-{
- if (!isValid())
- return;
-
- ID3D11DeviceContext* pd3dContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pd3dContext)
- return;
-
- pd3dContext->OMGetRenderTargets(1, &m_pPreviousRTV, &m_pPreviousDSV);
- m_numPreviousViewports = 1;
- pd3dContext->RSGetViewports(&m_numPreviousViewports, m_previousViewport);
-
- pd3dContext->OMSetRenderTargets( 1, &m_pShadowRTV, m_pDepthDSV);
- pd3dContext->RSSetViewports(1, &m_viewport);
-
- float ClearColor[4] = { clearDepth, clearDepth, clearDepth, clearDepth};
-
- pd3dContext->ClearRenderTargetView( m_pShadowRTV, ClearColor );
- pd3dContext->ClearDepthStencilView( m_pDepthDSV, D3D11_CLEAR_DEPTH, 1.0, 0 );
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::EndRendering()
-{
- if (!isValid())
- return;
-
- ID3D11DeviceContext* pd3dContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pd3dContext)
- return;
-
- pd3dContext->OMSetRenderTargets(0, NULL, NULL);
-
- if (m_pPreviousRTV)
- {
- pd3dContext->OMSetRenderTargets(1, &m_pPreviousRTV, m_pPreviousDSV);
- m_pPreviousRTV->Release();
- if (m_pPreviousDSV) m_pPreviousDSV->Release();
- }
-
- if (m_numPreviousViewports)
- pd3dContext->RSSetViewports(m_numPreviousViewports, m_previousViewport);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h
deleted file mode 100644
index fc9fe79..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "ShadowMap.h"
-
-#include "d3d11.h"
-#include "D3D11TextureResource.h"
-
-class GPUShaderResource;
-class D3D11TextureResource;
-
-struct D3D11ShadowMap : public ShadowMap
-{
- D3D11_VIEWPORT m_viewport;
-
- ID3D11Texture2D* m_pShadowTexture;
- ID3D11RenderTargetView* m_pShadowRTV;
- ID3D11ShaderResourceView* m_pShadowSRV;
-
- ID3D11Texture2D* m_pDepthTexture;
- ID3D11DepthStencilView* m_pDepthDSV;
- ID3D11ShaderResourceView* m_pDepthSRV;
-
- D3D11TextureResource m_shadowResource;
-
-public:
- D3D11ShadowMap(int resolution );
- ~D3D11ShadowMap();
-
- void Release();
- void BeginRendering(float clearDepth);
- void EndRendering();
-
- GPUShaderResource* GetShadowSRV();
-
-protected:
-
- bool isValid();
-
- ID3D11RenderTargetView* m_pPreviousRTV;
- ID3D11DepthStencilView* m_pPreviousDSV;
- UINT m_numPreviousViewports;
- D3D11_VIEWPORT m_previousViewport[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp
deleted file mode 100644
index 2a8f7ee..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11TextureResource.h"
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h
deleted file mode 100644
index 91d6539..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d11.h"
-
-// GPU resources for texture
-struct D3D11TextureResource : public GPUShaderResource
-{
- ID3D11ShaderResourceView* m_pD3D11Resource;
-
-public:
- static GPUShaderResource* Create(ID3D11ShaderResourceView* pResource) {
- D3D11TextureResource* pBuffer = new D3D11TextureResource;
- pBuffer->m_pD3D11Resource = pResource;
- return pBuffer;
- }
-
- static ID3D11ShaderResourceView* GetResource(GPUShaderResource* pBuffer)
- {
- D3D11TextureResource* pD3D11Buffer = dynamic_cast<D3D11TextureResource*>(pBuffer);
- if (!pD3D11Buffer)
- return 0;
- return pD3D11Buffer->m_pD3D11Resource;
- }
-
- ~D3D11TextureResource()
- {
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pD3D11Resource);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp
deleted file mode 100644
index b13c8e3..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp
+++ /dev/null
@@ -1,333 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Util.h"
-
-#include "D3D11Shaders.h"
-#include "D3D11RenderShader.h"
-
-#include "D3DX10tex.h"
-#include "D3DX11tex.h"
-
-#include "D3D11Wrapper.h"
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-#include "D3D11RendererWindow.h"
-#include "SimpleRenderable.h"
-//#include "MeshShaderParam.h"
-#include "D3D11RenderInterface.h"
-#include "D3D11TextureResource.h"
-
-namespace D3D11Util
-{
- using namespace RenderInterface;
-
- // D3D hook to render window
- D3D11RenderWindow* g_pRenderWindow = 0;
-
-///////////////////////////////////////////////////////////////////////////////
-#include "../../../../../../external/stb_image/stb_image.c"
-
-GPUShaderResource*
-CreateTextureSRV(const char* texturename)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- D3DX11_IMAGE_LOAD_INFO texLoadInfo;
-
- texLoadInfo.MipLevels = 8;
- texLoadInfo.MipFilter = D3DX10_FILTER_TRIANGLE;
- texLoadInfo.Filter = D3DX10_FILTER_TRIANGLE;
-
- ID3D11Resource *pRes = 0;
-
- HRESULT hr;
- D3DX11CreateTextureFromFileA(pDevice, texturename, &texLoadInfo, NULL, &pRes, &hr);
-
- ID3D11Texture2D* texture = NULL;
-
- if (!pRes)
- {
- // Try stb_image for .TGA
- int width = 0;
- int height = 0;
- int numComponents = 0;
- unsigned char *pSTBIRes = stbi_load(texturename, &width, &height, &numComponents, 4);
-
- if (!pSTBIRes)
- return 0;
-
- const int requestedMipLevels = texLoadInfo.MipLevels;
-
- D3D11_SUBRESOURCE_DATA* initData = new D3D11_SUBRESOURCE_DATA[requestedMipLevels];
- ZeroMemory(initData, sizeof(D3D11_SUBRESOURCE_DATA)*requestedMipLevels);
-
- struct Pixel
- {
- unsigned char rgba[4];
- };
-
- // prepare target buffer just large enough to include all the mip levels
- Pixel* targets = new Pixel[width*height*2];
-
- // copy the first mip level
- memcpy(targets, pSTBIRes, width*height*4);
-
- // now it's OK to delete the original
- if (pSTBIRes)
- stbi_image_free(pSTBIRes);
-
- // current mip level width and height
- int mipWidth = width;
- int mipHeight = height;
-
- // actual mip levels
- int mipLevels = 0;
-
- // current data
- Pixel* source = targets;
- Pixel* target = nullptr;
-
- for (int idx = 0; idx < requestedMipLevels; ++idx)
- {
- // set initData
- initData[idx].pSysMem = source;
- initData[idx].SysMemPitch = mipWidth*4;
- mipLevels++;
-
- // skip generating mip for 1x1
- if ((mipWidth == 1) && (mipHeight == 1))
- break;
-
- // skip generating mip for the last level
- if (idx == (requestedMipLevels-1))
- break;
-
- // buffer for the next mip level
- target = &source[mipWidth*mipHeight];
-
- const int prevWidth = mipWidth; // previous mip's width
-
- // generate the next mip level
- mipWidth = max(1, mipWidth >> 1);
- mipHeight = max(1, mipHeight >> 1);
-
- Pixel samples[4];
-
- for (int y = 0; y < mipHeight; ++y)
- {
- for (int x = 0; x < mipWidth; ++x)
- {
- const int px = x*2; // x in previous mip
- const int py = y*2; // y in previous mip
-
- samples[0] = source[py*prevWidth + px]; // left top
- samples[1] = source[py*prevWidth + px+1]; // right top
- samples[2] = source[(py+1)*prevWidth + px]; // left bottom
- samples[3] = source[(py+1)*prevWidth + px+1]; // right bottom
-
- // for each component
- for (int comp = 0; comp < 4; ++comp)
- {
- // do the linear box filter for lower mip level
- target[y*mipWidth + x].rgba[comp] = (samples[0].rgba[comp] + samples[1].rgba[comp] + samples[2].rgba[comp] + samples[3].rgba[comp])/4;
- }
- }
- }
-
- // update source
- source = target;
- }
-
- D3D11_TEXTURE2D_DESC desc;
- ZeroMemory(&desc, sizeof(D3D11_TEXTURE2D_DESC));
- desc.ArraySize = 1;
- desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
- desc.CPUAccessFlags = 0;
- desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- desc.Height = height;
- desc.Width = width;
- desc.MipLevels = mipLevels;
- desc.MiscFlags = 0;
- desc.SampleDesc.Count = 1;
- desc.SampleDesc.Quality = 0;
- desc.Usage = D3D11_USAGE_DEFAULT;
-
- HRESULT ret = pDevice->CreateTexture2D(&desc, initData, &texture);
-
- delete initData;
- delete targets;
-
- if (ret != S_OK)
- return 0;
- }
- else
- {
- pRes->QueryInterface(__uuidof( ID3D11Texture2D ), (LPVOID*)&texture);
- }
-
- D3D11_TEXTURE2D_DESC desc;
- texture->GetDesc( &desc );
-
- ID3D11ShaderResourceView* pTextureSRV = 0;
-
- D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc;
- ZeroMemory( &SRVDesc, sizeof(SRVDesc) );
- SRVDesc.Format = desc.Format;
- SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
- SRVDesc.Texture2D.MostDetailedMip = 0;
- SRVDesc.Texture2D.MipLevels = desc.MipLevels;
- pDevice->CreateShaderResourceView(texture, &SRVDesc, &pTextureSRV);
-
- if (texture) texture->Release();
-
- if (pRes)
- pRes->Release();
-
- return D3D11TextureResource::Create(pTextureSRV);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- IDXGIAdapter* pAdapter = RenderInterfaceD3D11::GetAdapter();
- if (!pAdapter)
- return false;
-
- auto adapterDescription = DXGI_ADAPTER_DESC();
- pAdapter->GetDesc(&adapterDescription);
-
- WCHAR* pDescStr = adapterDescription.Description;
- float memInGB = float(adapterDescription.DedicatedVideoMemory) / 1e9f;
- swprintf_s(str, 1000, L"%s(%.1fGb)\n", pDescStr, memInGB);
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- SAFE_DELETE(g_pRenderWindow);
-
- g_pRenderWindow = new D3D11RenderWindow;
- return g_pRenderWindow->Create(hWnd, nSamples);
-}
-
-D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles)
-{
- deviceHandles.pAdapter = RenderInterfaceD3D11::GetAdapter();
- deviceHandles.pFactory = RenderInterfaceD3D11::GetDXGIFactory();
- deviceHandles.pDevice = RenderInterfaceD3D11::GetDevice();
- deviceHandles.pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
-
- deviceHandles.pDXGISwapChain = g_pRenderWindow->m_pDXGISwapChain;
- deviceHandles.pD3D11BackBuffer = g_pRenderWindow->m_pD3D11BackBuffer;
- deviceHandles.pD3D11RenderTargetView = g_pRenderWindow->m_pD3D11RenderTargetView;
- deviceHandles.pD3D11DepthBuffer = g_pRenderWindow->m_pD3D11DepthBuffer;
- deviceHandles.pD3D11DepthStencilView = g_pRenderWindow->m_pD3D11DepthStencilView;
- return deviceHandles;
-}
-
-void DestroyRenderWindow()
-{
- SAFE_DELETE(g_pRenderWindow);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- if (!g_pRenderWindow)
- return false;
-
- return g_pRenderWindow->Resize(w,h);
-}
-
-void PresentRenderWindow()
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Present();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Clear(r,g,b);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->Begin();
-}
-
-void TxtHelperEnd()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->End();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetInsertionPos(x, y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetForegroundColor(DirectX::XMFLOAT4(r,g,b,a));
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->DrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h
deleted file mode 100644
index 8a9176e..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "RenderPlugin.h"
-
-class GPUShaderResource;
-class IDXGISwapChain;
-
-namespace D3D11Util
-{
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
- bool CreateRenderWindow(HWND hWnd, int nSamples);
- void DestroyRenderWindow();
- bool ResizeRenderWindow(int w, int h);
- void PresentRenderWindow();
- void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
- GPUShaderResource* CreateTextureSRV(const char* texturename);
-
- ///////////////////////////////////////////////////////////////////
- CORERENDER_EXPORT bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- CORERENDER_EXPORT void TxtHelperBegin();
- CORERENDER_EXPORT void TxtHelperEnd();
- CORERENDER_EXPORT void TxtHelperSetInsertionPos(int x, int y);
- CORERENDER_EXPORT void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- CORERENDER_EXPORT void TxtHelperDrawTextLine(wchar_t* str);
-
-
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp
deleted file mode 100644
index 5a117f1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Wrapper.h"
-
-namespace D3DWrapper
-{
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h
deleted file mode 100644
index 0d752d8..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "d3d11.h"
-
-namespace D3DWrapper
-{
- inline void SetDebugName(ID3D11DeviceChild* pResource, const char *name)
- {
- if (pResource) pResource->SetPrivateData( WKPDID_D3DDebugObjectName, strlen(name), name);
- }
-}
-
-#define SET_D3D_DEBUG_NAME(x, name) D3DWrapper::SetDebugName(x, name);
-#define SET_D3D_DEBUG_NAME_VAR(x) D3DWrapper::SetDebugName(x, #x);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp
deleted file mode 100644
index 93d3fdf..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-#include "RenderPluginDx11.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11Util.h"
-#include "D3D11Shaders.h"
-#include "D3D11GPUProfiler.h"
-#include "D3D11ShadowMap.h"
-
-RenderPlugin* CreateRenderPlugin(void)
-{
- return new RenderPluginDx11;
-}
-
-RenderPluginDx11::RenderPluginDx11()
-{
- m_RenderApi = "Dx11";
-}
-
-RenderPluginDx11::~RenderPluginDx11()
-{
-}
-
-// interface
-bool RenderPluginDx11::InitDevice(int deviceID)
-{
- return RenderInterfaceD3D11::InitDevice(deviceID);
-}
-
-bool RenderPluginDx11::Initialize()
-{
- return RenderInterfaceD3D11::Initialize();
-}
-
-void RenderPluginDx11::Shutdown()
-{
- D3D11Util::DestroyRenderWindow();
- RenderInterfaceD3D11::Shutdown();
-}
-
-void RenderPluginDx11::CopyToDevice(GPUBufferResource *pDevicePtr,
- void* pSysMem, unsigned int ByteWidth)
-{
- RenderInterfaceD3D11::CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-void RenderPluginDx11::ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderInterfaceD3D11::ApplyDepthStencilState(state);
-}
-
-void RenderPluginDx11::ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderInterfaceD3D11::ApplyRasterizerState(state);
-}
-
-void RenderPluginDx11::ApplySampler(int slot, SAMPLER_TYPE state)
-{
- RenderInterfaceD3D11::ApplySampler(slot, state);
-}
-
-void RenderPluginDx11::ApplyBlendState(BLEND_STATE state)
-{
- RenderInterfaceD3D11::ApplyBlendState(state);
-}
-
-void RenderPluginDx11::GetViewport(Viewport& vp)
-{
- RenderInterfaceD3D11::GetViewport(vp);
-}
-
-void RenderPluginDx11::SetViewport(const Viewport& vp)
-{
- RenderInterfaceD3D11::SetViewport(vp);
-}
-
-void RenderPluginDx11::BindVertexShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
- RenderInterfaceD3D11::BindVertexShaderResources(startSlot, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx11::BindPixelShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
- RenderInterfaceD3D11::BindPixelShaderResources(startSlot, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx11::ClearVertexShaderResources(int startSlot, int numSRVs)
-{
- RenderInterfaceD3D11::ClearVertexShaderResources(startSlot, numSRVs);
-}
-
-void RenderPluginDx11::ClearPixelShaderResources(int startSlot, int numSRVs)
-{
- RenderInterfaceD3D11::ClearPixelShaderResources(startSlot, numSRVs);
-}
-
-void RenderPluginDx11::ClearInputLayout()
-{
- RenderInterfaceD3D11::ClearInputLayout();
-}
-
-void RenderPluginDx11::SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- RenderInterfaceD3D11::SetVertexBuffer(pBuffer, stride, offset);
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyTriangleStrip()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyTriangleStrip();
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyTriangleList()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyTriangleList();
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyLineList()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyLineList();
-}
-
-void RenderPluginDx11::Draw(unsigned int vertexCount, unsigned int startCount)
-{
- RenderInterfaceD3D11::Draw(vertexCount, startCount);
-}
-
-GPUBufferResource* RenderPluginDx11::CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem)
-{
- return RenderInterfaceD3D11::CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-GPUShaderResource* RenderPluginDx11::CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- return RenderInterfaceD3D11::CreateShaderResource(stride, numElements, pSysMem);
-}
-
-void RenderPluginDx11::ApplyForShadow(int ForShadow)
-{
-}
-
-void RenderPluginDx11::SwitchToDX11()
-{
-}
-
-void RenderPluginDx11::FlushDX11()
-{
-}
-
-void RenderPluginDx11::FlushDX12()
-{
-}
-
-void RenderPluginDx11::ApplyPrimitiveTopologyLine()
-{
-}
-
-void RenderPluginDx11::ApplyPrimitiveTopologyTriangle()
-{
-}
-
-void RenderPluginDx11::SubmitGpuWork()
-{
-}
-
-void RenderPluginDx11::WaitForGpu()
-{
-}
-
-// util
-bool RenderPluginDx11::CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return D3D11Util::CreateRenderWindow(hWnd, nSamples);
-}
-
-bool RenderPluginDx11::ResizeRenderWindow(int w, int h)
-{
- return D3D11Util::ResizeRenderWindow(w, h);
-}
-
-void RenderPluginDx11::PresentRenderWindow()
-{
- D3D11Util::PresentRenderWindow();
-}
-
-void RenderPluginDx11::ClearRenderWindow(float r, float g, float b)
-{
- D3D11Util::ClearRenderWindow(r, g, b);
-}
-
-bool RenderPluginDx11::GetDeviceInfoString(wchar_t *str)
-{
- return D3D11Util::GetDeviceInfoString(str);
-}
-
-GPUShaderResource* RenderPluginDx11::CreateTextureSRV(const char* texturename)
-{
- return D3D11Util::CreateTextureSRV(texturename);
-}
-
-void RenderPluginDx11::TxtHelperBegin()
-{
- D3D11Util::TxtHelperBegin();
-}
-
-void RenderPluginDx11::TxtHelperEnd()
-{
- D3D11Util::TxtHelperEnd();
-}
-
-void RenderPluginDx11::TxtHelperSetInsertionPos(int x, int y)
-{
- D3D11Util::TxtHelperSetInsertionPos(x, y);
-}
-
-void RenderPluginDx11::TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- D3D11Util::TxtHelperSetForegroundColor(r, g, b, a);
-}
-
-void RenderPluginDx11::TxtHelperDrawTextLine(wchar_t* str)
-{
- D3D11Util::TxtHelperDrawTextLine(str);
-}
-
-// shader
-bool RenderPluginDx11::InitializeShaders()
-{
- return InitializeShadersD3D11();
-}
-
-void RenderPluginDx11::DestroyShaders()
-{
- DestroyShadersD3D11();
-}
-
-void RenderPluginDx11::ApplyShader(SHADER_TYPE st)
-{
- ApplyShaderD3D11(st);
-}
-
-void RenderPluginDx11::DisableShader(SHADER_TYPE st)
-{
- DisableShaderD3D11(st);
-}
-
-void RenderPluginDx11::BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx11::CopyShaderParam(SHADER_TYPE st,
- void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- CopyShaderParamD3D11(st, pSysMem, bytes, slot);
-}
-
-// GPUProfiler
-GPUProfiler* RenderPluginDx11::CreateGPUProfiler()
-{
- GPUProfiler* pProfiler = new D3D11GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-
-// ShadowMap
-ShadowMap* RenderPluginDx11::CreateShadowMap(int resolution)
-{
- return new D3D11ShadowMap(resolution);
-}
-
-// D3D12RenderContext
-void RenderPluginDx11::PreRender()
-{
-}
-
-void RenderPluginDx11::PostRender()
-{
-}
-
-// GPUMeshResources
-
-#include "MeshData.h"
-#include "AnimUtil.h"
-
-GPUMeshResources* RenderPluginDx11::GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData)
-{
- GPUMeshResources* resources = new GPUMeshResources;
-
- int numIndices = pMeshData->m_NumIndices;
- int numVertices = pMeshData->m_NumVertices;
-
- resources->m_pVertexBuffer = CreateVertexBuffer(
- sizeof(MeshData::MeshVertex) * numIndices, pMeshData->m_pMeshVertices);
-
- resources->m_pBoneIndicesSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneIndices);
-
- resources->m_pBoneWeightsSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneWeights);
-
- return resources;
-}
-
-void RenderPluginDx11::GPUMeshResourcesRelease(GPUMeshResources* pResource)
-{
- SAFE_RELEASE(pResource->m_pVertexBuffer);
- SAFE_RELEASE(pResource->m_pBoneIndicesSRV);
- SAFE_RELEASE(pResource->m_pBoneWeightsSRV);
-}
-
-D3DHandles& RenderPluginDx11::GetDeviceHandles(D3DHandles& deviceHandles)
-{
- return D3D11Util::GetDeviceHandles(deviceHandles);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h
deleted file mode 100644
index a43eb94..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma once
-
-#include "RenderPlugin.h"
-
-extern "C" CORERENDER_EXPORT RenderPlugin* CreateRenderPlugin(void);
-
-class CORERENDER_EXPORT RenderPluginDx11 : public RenderPlugin
-{
-public:
- RenderPluginDx11();
- ~RenderPluginDx11();
-
- // interface
- virtual bool InitDevice(int deviceID);
- virtual bool Initialize();
- virtual void Shutdown();
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- virtual void ApplyRasterizerState(RASTERIZER_STATE state);
- virtual void ApplySampler(int slot, SAMPLER_TYPE st);
- virtual void ApplyBlendState(BLEND_STATE st);
- virtual void GetViewport(Viewport& vp);
- virtual void SetViewport(const Viewport& vp);
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs);
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs);
- virtual void ClearInputLayout();
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
- virtual void SetPrimitiveTopologyTriangleStrip();
- virtual void SetPrimitiveTopologyTriangleList();
- virtual void SetPrimitiveTopologyLineList();
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0);
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0);
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL);
- virtual void ApplyForShadow(int ForShadow);
- virtual void SwitchToDX11();
- virtual void FlushDX11();
- virtual void FlushDX12();
- virtual void ApplyPrimitiveTopologyLine();
- virtual void ApplyPrimitiveTopologyTriangle();
- virtual void SubmitGpuWork();
- virtual void WaitForGpu();
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples);
- virtual bool ResizeRenderWindow(int w, int h);
- virtual void PresentRenderWindow();
- virtual void ClearRenderWindow(float r, float g, float b);
- virtual bool GetDeviceInfoString(wchar_t *str);
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename);
- virtual void TxtHelperBegin();
- virtual void TxtHelperEnd();
- virtual void TxtHelperSetInsertionPos(int x, int y);
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- virtual void TxtHelperDrawTextLine(wchar_t* str);
-
- // shader
- virtual bool InitializeShaders();
- virtual void DestroyShaders();
- virtual void ApplyShader(SHADER_TYPE st);
- virtual void DisableShader(SHADER_TYPE st);
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler();
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution);
-
- // D3D12RenderContext
- virtual void PreRender();
- virtual void PostRender();
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData);
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource);
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp
deleted file mode 100644
index 0421792..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Buffer.h"
-
-// shared path
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h
deleted file mode 100644
index ccf636b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include <d3d12.h>
-
-// GPU resources for texture
-struct GPUBufferD3D12 : public GPUBufferResource
-{
- ID3D12Resource* m_pBuffer;
- UINT m_pBufferSize;
-
- D3D12_VERTEX_BUFFER_VIEW m_vertexBufferView;
-
-public:
- static GPUBufferResource* Create(ID3D12Resource* pResource, int nSize) {
- GPUBufferD3D12* pBuffer = new GPUBufferD3D12;
- pBuffer->m_pBuffer = pResource;
- pBuffer->m_pBufferSize = nSize;
- return pBuffer;
- }
-
- static ID3D12Resource* GetResource(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D12* pD3D12Buffer = dynamic_cast<GPUBufferD3D12*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
- return pD3D12Buffer->m_pBuffer;
- }
-
- static D3D12_VERTEX_BUFFER_VIEW* GetVertexView(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D12* pD3D12Buffer = dynamic_cast<GPUBufferD3D12*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
-
- pD3D12Buffer->m_vertexBufferView.BufferLocation = pD3D12Buffer->m_pBuffer->GetGPUVirtualAddress();
- pD3D12Buffer->m_vertexBufferView.StrideInBytes = 0;
- pD3D12Buffer->m_vertexBufferView.SizeInBytes = pD3D12Buffer->m_pBufferSize;
- return &pD3D12Buffer->m_vertexBufferView;
- }
-
- ~GPUBufferD3D12()
- {
- Release();
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pBuffer);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp
deleted file mode 100644
index b434c3c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12GPUProfiler.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12RenderContext.h"
-///////////////////////////////////////////////////////////////
-// factory function to create D3D12 GPU profiler
-/*
-GPUProfiler* GPUProfiler::CreateD3D12()
-{
- GPUProfiler* pProfiler = new D3D12GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-*/
-
-///////////////////////////////////////////////////////////////
-D3D12GPUProfiler::~D3D12GPUProfiler()
-{
- Release();
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::Initialize()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
-
- /*
- ID3D12Device* pDevice12 = pContext->GetDevice();
-
- D3D12_QUERY_HEAP_DESC queryHeapDesc = {};
- queryHeapDesc.Count = MAX_QUERY_COUNT * 2;
- queryHeapDesc.Type = D3D12_QUERY_HEAP_TYPE_TIMESTAMP;
- ThrowIfFailed(pDevice12->CreateQueryHeap(&queryHeapDesc, IID_PPV_ARGS(&query_heap)));
-
- D3D12_HEAP_PROPERTIES heap_prop;
- heap_prop.Type = D3D12_HEAP_TYPE_DEFAULT;
- heap_prop.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
- heap_prop.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
- heap_prop.CreationNodeMask = 0;
- heap_prop.VisibleNodeMask = 0;
-
- D3D12_RESOURCE_DESC res_desc;
- res_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- res_desc.Alignment = 0;
- res_desc.Width = sizeof(UINT64) * 2;
- res_desc.Height = 1;
- res_desc.DepthOrArraySize = 1;
- res_desc.MipLevels = 1;
- res_desc.Format = DXGI_FORMAT_UNKNOWN;
- res_desc.SampleDesc.Count = 1;
- res_desc.SampleDesc.Quality = 0;
- res_desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
- res_desc.Flags = D3D12_RESOURCE_FLAG_NONE;
-
- ThrowIfFailed(pDevice12->CreateCommittedResource(&heap_prop, D3D12_HEAP_FLAG_NONE,
- &res_desc, D3D12_RESOURCE_STATE_COMMON, nullptr,
- IID_ID3D12Resource, reinterpret_cast<void**>(&query_result)));
-
- heap_prop.Type = D3D12_HEAP_TYPE_READBACK;
- ThrowIfFailed(pDevice12->CreateCommittedResource(&heap_prop, D3D12_HEAP_FLAG_NONE,
- &res_desc, D3D12_RESOURCE_STATE_COPY_DEST, nullptr,
- IID_ID3D12Resource, reinterpret_cast<void**>(&query_result_readback)));
- */
-
- m_pContext = pContext->GetDeviceContext();
-
- D3D11_QUERY_DESC desc;
- memset(&desc, 0, sizeof(D3D11_QUERY_DESC));
- desc.Query = D3D11_QUERY_TIMESTAMP_DISJOINT;
- desc.MiscFlags = 0;
-
- ID3D11Device* pDevice = pContext->GetDevice11();
- pDevice->CreateQuery(&desc, &m_pQueryDisjoint);
-
- desc.Query = D3D11_QUERY_TIMESTAMP;
-
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- pDevice->CreateQuery(&desc, &m_pQueryStart[i]);
- pDevice->CreateQuery(&desc, &m_pQueryEnd[i]);
- }
- m_enable = true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::Release()
-{
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- SAFE_RELEASE(m_pQueryStart[i]);
- SAFE_RELEASE(m_pQueryEnd[i]);
- }
-
- SAFE_RELEASE(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::StartProfile(int id)
-{
- if (!m_enable) return;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- pCommandList->EndQuery(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2);
- */
-
- ID3D11Query* pQuery = m_pQueryStart[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::EndProfile(int id)
-{
- if (!m_enable) return;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- pCommandList->EndQuery(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2 + 1);
- */
-
- ID3D11Query* pQuery = m_pQueryEnd[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::StartFrame()
-{
- if (!m_enable) return;
-
- m_pContext->Begin(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::EndFrame()
-{
- if (!m_enable) return;
-
- m_pContext->End(m_pQueryDisjoint);
-
- while(m_pContext->GetData(m_pQueryDisjoint, &m_disjointData, sizeof(D3D11_QUERY_DATA_TIMESTAMP_DISJOINT), 0) != S_OK);
-}
-
-///////////////////////////////////////////////////////////////
-float D3D12GPUProfiler::GetProfileData(int id)
-{
- if (!m_enable)
- return 0.0f;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- UINT64 times[2];
- D3D12_RESOURCE_BARRIER barrier;
- barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- barrier.Transition.pResource = query_result;
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COMMON;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
- barrier.Transition.Subresource = 0;
- pCommandList->ResourceBarrier(1, &barrier);
-
- pCommandList->ResolveQueryData(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2, 2, query_result, 0);
-
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
- pCommandList->ResourceBarrier(1, &barrier);
-
- pCommandList->CopyResource(query_result_readback, query_result);
-
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
- pCommandList->ResourceBarrier(1, &barrier);
-
- void* pData;
- ThrowIfFailed(query_result_readback->Map(0, 0, &pData));
- memcpy(times, pData, sizeof(UINT64) * 2);
- query_result_readback->Unmap(0, 0);
- */
-
- UINT64 startTime = 0;
- while(m_pContext->GetData(m_pQueryStart[id], &startTime, sizeof(UINT64), 0) != S_OK);
-
- UINT64 endTime = 0;
- while(m_pContext->GetData(m_pQueryEnd[id], &endTime, sizeof(UINT64), 0) != S_OK);
-
- float frequency = static_cast<float>(m_disjointData.Frequency);
- return (endTime - startTime) / frequency * 1000.0f;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h
deleted file mode 100644
index 721b8a9..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-/*
-#include <d3d12.h>
-*/
-#include "GPUProfiler.h"
-
-#define MAX_QUERY_COUNT 64
-struct D3D12GPUProfiler : public GPUProfiler
-{
-public:
- ~D3D12GPUProfiler();
-
- void Initialize();
- void Release();
- void StartProfile(int id);
- void EndProfile(int id);
- void StartFrame();
- void EndFrame();
- float GetProfileData(int id);
-
-protected:
- ID3D11Query* m_pQueryDisjoint;
- ID3D11Query* m_pQueryStart[MAX_QUERY_COUNT];
- ID3D11Query* m_pQueryEnd[MAX_QUERY_COUNT];
- D3D11_QUERY_DATA_TIMESTAMP_DISJOINT m_disjointData;
- ID3D11DeviceContext* m_pContext;
- /*
- ID3D12QueryHeap* query_heap;
- ID3D12Resource* query_result;
- ID3D12Resource* query_result_readback;
- */
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp
deleted file mode 100644
index 8202139..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp
+++ /dev/null
@@ -1,564 +0,0 @@
-#include "D3D12RenderContext.h"
-
-const int nBufferCount = 2;
-//const int nBufferCount = 5;
-
-int nRenderTargetIndex = 1;
-//int nRenderTargetIndex = 4;
-
-D3D12RenderContext::D3D12RenderContext()
-{
- m_sampleCount = 1;
-}
-
-D3D12RenderContext::~D3D12RenderContext()
-{
-}
-
-D3D12RenderContext* D3D12RenderContext::Instance()
-{
- static D3D12RenderContext ri;
- return &ri;
-}
-
-void GetHardwareAdapter(IDXGIFactory2* pFactory, IDXGIAdapter1** ppAdapter)
-{
- IDXGIAdapter1* pAdapter = nullptr;
- *ppAdapter = nullptr;
-
- for (UINT adapterIndex = 0; DXGI_ERROR_NOT_FOUND != pFactory->EnumAdapters1(adapterIndex, &pAdapter); ++adapterIndex)
- {
- DXGI_ADAPTER_DESC1 desc;
- pAdapter->GetDesc1(&desc);
-
- if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE)
- {
- // Don't select the Basic Render Driver adapter.
- // If you want a software adapter, pass in "/warp" on the command line.
- continue;
- }
-
- // Check to see if the adapter supports Direct3D 12, but don't create the
- // actual device yet.
- if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr)))
- {
- break;
- }
- }
-
- *ppAdapter = pAdapter;
-}
-
-void D3D12RenderContext::InitDevice()
-{
- UINT d3d11DeviceFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
-#if defined(_DEBUG)
- // Enable the D3D11 debug layer.
- d3d11DeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
- // Enable the D3D12 debug layer.
- {
- ComPtr<ID3D12Debug> debugController;
- if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController))))
- {
- debugController->EnableDebugLayer();
- }
- }
-#endif
-
- ThrowIfFailed(CreateDXGIFactory1(IID_PPV_ARGS(&m_factory)));
-
- GetHardwareAdapter(m_factory.Get(), &m_adapter);
-
- auto adapterDescription = DXGI_ADAPTER_DESC();
- m_adapter->GetDesc(&adapterDescription);
-
- D3D12CreateDevice(m_adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device));
- if (nullptr == m_device)
- {
- ComPtr<IDXGIAdapter> warpAdapter;
- ThrowIfFailed(m_factory->EnumWarpAdapter(IID_PPV_ARGS(&warpAdapter)));
- ThrowIfFailed(D3D12CreateDevice(warpAdapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device)));
- }
-
- // Describe and create the command queue.
- D3D12_COMMAND_QUEUE_DESC queueDesc = {};
- queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
- queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-
- ThrowIfFailed(m_device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&m_commandQueue)));
-
- ThrowIfFailed(D3D11On12CreateDevice(
- m_device.Get(),
- d3d11DeviceFlags, nullptr, 0,
- reinterpret_cast<IUnknown**>(m_commandQueue.GetAddressOf()), 1, 0,
- &m_d3d11Device,
- &m_d3d11DeviceContext,
- nullptr ));
-
- ThrowIfFailed(m_d3d11Device.As(&m_d3d11On12Device));
-}
-
-void D3D12RenderContext::InitSwapchain(int nWidth, int nHeight, HWND hWnd)
-{
- // Describe and create the swap chain.
- DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
- swapChainDesc.BufferCount = nBufferCount;
- swapChainDesc.BufferDesc.Width = nWidth;
- swapChainDesc.BufferDesc.Height = nHeight;
- swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
- swapChainDesc.OutputWindow = hWnd;
- swapChainDesc.SampleDesc.Count = 1;
- swapChainDesc.Windowed = TRUE;
-
- ComPtr<IDXGISwapChain> swapChain;
- ThrowIfFailed(m_factory->CreateSwapChain(
- m_commandQueue.Get(), // Swap chain needs the queue so that it can force a flush on it.
- &swapChainDesc,
- &swapChain
- ));
-
- ThrowIfFailed(swapChain.As(&m_swapChain));
-
- // This sample does not support fullscreen transitions.
- // ThrowIfFailed(m_factory->MakeWindowAssociation(hWnd, DXGI_MWA_NO_ALT_ENTER));
-
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
-
- // Create the command list.
- ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));
-
- m_pCurrentRenderTarget = new D3D12RenderTarget(0, nBufferCount);
- m_pCurrentRenderTarget->OnCreate(nWidth, nHeight);
- m_pCurrentRenderTarget->SetClearColor(0.5, 0.5, 0.5);
- m_RenderTargetMap[0] = m_pCurrentRenderTarget;
-
- m_pD3D11RenderTargetView = new ID3D11RenderTargetView*[nBufferCount];
- m_wrappedBackBuffers = new ID3D11Resource*[nBufferCount];
- for (int n = 0; n < nBufferCount; n++)
- {
- m_pD3D11RenderTargetView[n] = nullptr;
- m_wrappedBackBuffers[n] = nullptr;
- }
-
- PostCreate();
-}
-
-#ifndef Safe_Release
-#define Safe_Release(p) { if (p) { p->Release(); (p) = nullptr; } }
-#endif // !Safe_Delete
-
-void D3D12RenderContext::ResizeSwapchain(int width, int height)
-{
- D3D12RenderTarget* rt = m_RenderTargetMap[0];
-
- for (int n = 0; n < nBufferCount; n++)
- {
- Safe_Release(m_pD3D11RenderTargetView[n]);
- Safe_Release(m_wrappedBackBuffers[n]);
- }
- m_d3d11DeviceContext->Flush();
-
- rt->OnDestroy();
-
- ThrowIfFailed(m_swapChain->ResizeBuffers(nBufferCount, width, height, DXGI_FORMAT_R8G8B8A8_UNORM, 0));
-
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- rt->OnResize(width, height);
-
- for (int n = 0; n < nBufferCount; n++)
- {
- ID3D11On12Device* pDevice11On12 = GetDevice11On12();
-
- D3D11_RESOURCE_FLAGS d3d11Flags = { D3D11_BIND_RENDER_TARGET };
- ThrowIfFailed(pDevice11On12->CreateWrappedResource(
- rt->GetTexture(n, false),
- &d3d11Flags,
- D3D12_RESOURCE_STATE_RENDER_TARGET,
- D3D12_RESOURCE_STATE_PRESENT,
- IID_PPV_ARGS(&m_wrappedBackBuffers[n])));
-
- ThrowIfFailed(m_d3d11Device->CreateRenderTargetView(m_wrappedBackBuffers[n],
- NULL, &m_pD3D11RenderTargetView[n]));
- }
-}
-
-void D3D12RenderContext::PostCreate()
-{
- m_srvUavHeap.Init(m_device.Get(), 256, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, D3D12_DESCRIPTOR_HEAP_FLAG_NONE);
-
- {
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
- }
-
- {
- ThrowIfFailed(m_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_fence)));
- m_fenceValue = 1;
-
- // Create an event handle to use for frame synchronization.
- m_fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
- if (m_fenceEvent == nullptr)
- {
- ThrowIfFailed(HRESULT_FROM_WIN32(GetLastError()));
- }
-
- WaitForGpu();
- }
-}
-
-void D3D12RenderContext::OnDestroy()
-{
- WaitForGpu();
- if (nullptr != m_fenceEvent)
- {
- CloseHandle(m_fenceEvent);
- m_fenceEvent = nullptr;
- }
-
-#if 0
- ID3D12DebugDevice* debugInterface;
- if (SUCCEEDED(m_device.Get()->QueryInterface(&debugInterface)))
- {
- debugInterface->ReportLiveDeviceObjects(D3D12_RLDO_DETAIL | D3D12_RLDO_IGNORE_INTERNAL);
- debugInterface->Release();
- }
-#endif // 0
-}
-
-void D3D12RenderContext::PreRender()
-{
- ThrowIfFailed(m_commandAllocator->Reset());
- ThrowIfFailed(m_commandList->Reset(m_commandAllocator.Get(), nullptr));
-}
-
-void D3D12RenderContext::PostRender()
-{
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
-
- OnGpuWorkSubmitted(m_commandQueue.Get());
-
- WaitForGpu();
-}
-
-void D3D12RenderContext::SubmitGpuWork()
-{
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
-
- ThrowIfFailed(m_commandList->Reset(m_commandAllocator.Get(), nullptr));
-
- OnGpuWorkSubmitted(m_commandQueue.Get());
-}
-
-
-void D3D12RenderContext::Flush()
-{
- m_pCurrentRenderTarget->PostRender();
- PostRender();
- PreRender();
- m_pCurrentRenderTarget->PreRender();
-}
-
-void D3D12RenderContext::Present()
-{
- ThrowIfFailed(m_swapChain->Present(1, 0));
- //ThrowIfFailed(m_swapChain->Present(0, 0));
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- //OnGpuWorkSubmitted(m_commandQueue.Get(), true);
- //WaitForGpu();
-}
-
-int D3D12RenderContext::AllocRenderTargetIndex()
-{
- return nRenderTargetIndex++;
-}
-
-
-void D3D12RenderContext::AddGpuInterface(GpuInterface* gpuIntf)
-{
- m_gpuInterfaces.push_back(gpuIntf);
-}
-
-
-void D3D12RenderContext::OnGpuWorkSubmitted(ID3D12CommandQueue* queue)
-{
- std::vector<GpuInterface*>::const_iterator cur = m_gpuInterfaces.begin();
- std::vector<GpuInterface*>::const_iterator end = m_gpuInterfaces.end();
-
- for (; cur != end; cur++)
- {
- (*cur)->onGpuWorkSubmitted(queue);
- }
-}
-
-void D3D12RenderContext::UpdateGpuWorkCompleted()
-{
- std::vector<GpuInterface*>::const_iterator cur = m_gpuInterfaces.begin();
- std::vector<GpuInterface*>::const_iterator end = m_gpuInterfaces.end();
-
- for (; cur != end; cur++)
- {
- (*cur)->updateGpuWorkCompleted();
- }
-}
-
-D3D12RenderTarget* D3D12RenderContext::CreateRenderTarget(int renderTargetIndex, int nWidth, int nHeight)
-{
- D3D12RenderTarget* pRenderTarget = new D3D12RenderTarget(renderTargetIndex);
- pRenderTarget->OnCreate(nWidth, nHeight);
- m_RenderTargetMap[renderTargetIndex] = pRenderTarget;
- return pRenderTarget;
-}
-
-ID3D12Resource* D3D12RenderContext::GetTexture(int renderTargetIndex, int index)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- ID3D12Resource* pTexture = pRenderTarget->GetTexture(index);
- return pTexture;
-}
-
-void D3D12RenderContext::SetViewport(D3D12_VIEWPORT& vp)
-{
- m_pCurrentRenderTarget->m_viewport = vp;
- m_commandList->RSSetViewports(1, &vp);
-}
-
-void D3D12RenderContext::GetViewport(D3D12_VIEWPORT& vp)
-{
- vp = m_pCurrentRenderTarget->m_viewport;
-}
-
-D3D12_RESOURCE_DESC D3D12RenderContext::GetBackBufferDesc()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- ID3D12Resource* pResource = pRenderTarget->GetTexture();
- return pResource->GetDesc();
-}
-
-void D3D12RenderContext::SwitchToDX11()
-{
- ReleaseRenderTarget();
- PostRender();
-
- if (nullptr == m_wrappedBackBuffers[m_frameIndex])
- {
- return;
- }
-
- m_d3d11On12Device->AcquireWrappedResources(&m_wrappedBackBuffers[m_frameIndex], 1);
-
- m_d3d11DeviceContext->OMSetRenderTargets(1, &m_pD3D11RenderTargetView[m_frameIndex], nullptr);
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- D3D11_VIEWPORT vp;
- {
- vp.TopLeftX = 0;
- vp.TopLeftY = 0;
- vp.Width = (float)pRenderTarget->m_viewport.Width;
- vp.Height = (float)pRenderTarget->m_viewport.Height;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
- m_d3d11DeviceContext->RSSetViewports(1, &vp);
-}
-
-void D3D12RenderContext::FlushDX11()
-{
- if (nullptr == m_wrappedBackBuffers[m_frameIndex])
- {
- return;
- }
-
- m_d3d11On12Device->ReleaseWrappedResources(&m_wrappedBackBuffers[m_frameIndex], 1);
- m_d3d11DeviceContext->Flush();
-}
-
-ID3D12Resource* D3D12RenderContext::GetDepthStencilResource()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetDepthStencilResource();
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::GetRenderTargetViewHandle()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetRenderTargetViewHandle();
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::GetDepthStencilViewHandle()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetDepthStencilViewHandle();
-}
-
-void D3D12RenderContext::AcquireRenderTarget(bool doClear, int renderTargetIndex)
-{
- m_pCurrentRenderTarget = m_RenderTargetMap[renderTargetIndex];
- m_pCurrentRenderTarget->PreRender(doClear);
-}
-
-void D3D12RenderContext::ReleaseRenderTarget(int renderTargetIndex)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- pRenderTarget->PostRender();
-}
-
-void D3D12RenderContext::SetClearColor(int renderTargetIndex, float r, float g, float b, float a, float depth, float stencil)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- pRenderTarget->SetClearColor(r, g, b, a, depth, stencil);
-}
-
-void D3D12RenderContext::WaitForGpu()
-{
- const UINT64 fence = m_fenceValue;
- ThrowIfFailed(m_commandQueue->Signal(m_fence.Get(), fence));
- m_fenceValue++;
-
- // Wait until the previous frame is finished.
- if (m_fence->GetCompletedValue() < fence)
- {
- ThrowIfFailed(m_fence->SetEventOnCompletion(fence, m_fenceEvent));
- WaitForSingleObject(m_fenceEvent, INFINITE);
- }
-}
-
-void D3D12RenderContext::InitBuffer(NVHairReadOnlyBuffer& buffer)
-{
- buffer.Init(&m_srvUavHeap);
-}
-
-void D3D12RenderContext::DestroyBuffer(NVHairReadOnlyBuffer& buffer)
-{
- buffer.Release();
-}
-
-CD3DX12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::NVHairINT_CreateD3D12ReadOnlyBuffer(
- UINT stride,
- UINT numElements,
- NVHairReadOnlyBuffer* pReadOnlyBuffer,
- void* pSysMem)
-{
- ID3D12Device* pd3dDevice = m_device.Get();
- ID3D12GraphicsCommandList* pCommandList = m_commandList.Get();
-
- UINT bufferSize = numElements * stride;
-
- HRESULT hr;
- hr = pd3dDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(bufferSize),
- D3D12_RESOURCE_STATE_COPY_DEST,
- nullptr,
- IID_PPV_ARGS(pReadOnlyBuffer->m_pBuffer.ReleaseAndGetAddressOf()));
-
- hr = pd3dDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(bufferSize),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(pReadOnlyBuffer->m_pBufferUpload.ReleaseAndGetAddressOf()));
-
- D3D12_SUBRESOURCE_DATA data = {};
- data.pData = reinterpret_cast<UINT8*>(pSysMem);
- data.RowPitch = bufferSize;
- data.SlicePitch = data.RowPitch;
-
- PreRender();
- UpdateSubresources<1>(pCommandList, pReadOnlyBuffer->m_pBuffer.Get(), pReadOnlyBuffer->m_pBufferUpload.Get(), 0, 0, 1, &data);
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pReadOnlyBuffer->m_pBuffer.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
- PostRender();
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(pReadOnlyBuffer->m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), pReadOnlyBuffer->m_srvIndex, pReadOnlyBuffer->m_pSrvUavHeap->m_sizeDescriptor);
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = DXGI_FORMAT_UNKNOWN;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
- srvDesc.Buffer.FirstElement = 0;
- srvDesc.Buffer.NumElements = numElements;
- srvDesc.Buffer.StructureByteStride = stride;
- srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
- pd3dDevice->CreateShaderResourceView(pReadOnlyBuffer->m_pBuffer.Get(), &srvDesc, srvHandle);
-
- return srvHandle;
-}
-
-CD3DX12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::NVHairINT_CreateD3D12Texture(ID3D12Resource* pTexture, int& nIndexInHeap)
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = {};
-
- if (!pTexture)
- return handle;
-
- ID3D12Device* pDevice = m_device.Get();
- if (!pDevice)
- return handle;
-
- nIndexInHeap = m_srvUavHeap.allocate();
- if(nIndexInHeap == -1)
- return handle;
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(m_srvUavHeap.m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(),
- nIndexInHeap, m_srvUavHeap.m_sizeDescriptor);
-
- D3D12_RESOURCE_DESC desc = pTexture->GetDesc();
-
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = desc.Format;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MipLevels = 1;
-
- pDevice->CreateShaderResourceView(pTexture, &srvDesc, srvHandle);
-
- return srvHandle;
-}
-
-void D3D12RenderContext::NVHairINT_DestroyD3D12Texture(int& nIndexInHeap)
-{
- if (nIndexInHeap != -1)
- {
- m_srvUavHeap.deallocate(nIndexInHeap);
- }
-}
-
-void D3D12RenderContext::SetSampleCount(int nSampleCount)
-{
- m_sampleCount = 1;
-
- if (nSampleCount > D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT)
- nSampleCount = D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT;
-
- if (nSampleCount > 1)
- {
- D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS qualityLevels;
- qualityLevels.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- qualityLevels.Flags = D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE;
- qualityLevels.NumQualityLevels = 0;
- qualityLevels.SampleCount = nSampleCount;
-
- ID3D12Device *pDevice = GetDevice();
- pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &qualityLevels, sizeof(qualityLevels));
-
- if (qualityLevels.NumQualityLevels > 0)
- {
- m_sampleCount = qualityLevels.SampleCount;
- }
- }
-}
-
-int D3D12RenderContext::GetSampleCount()
-{
- return m_sampleCount;
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h
deleted file mode 100644
index 2e0b393..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h
+++ /dev/null
@@ -1,254 +0,0 @@
-#pragma once
-
-#include "D3D12RenderTarget.h"
-#include "RenderPlugin.h"
-
-#include "d3dx12.h"
-#include <wrl.h>
-using namespace Microsoft::WRL;
-
-struct NVHairHeap
-{
- ComPtr<ID3D12DescriptorHeap> m_pHeap;
- UINT m_sizeHeap;
- UINT m_currentIndex;
- UINT m_sizeDescriptor;
- std::vector<UINT> m_availableIndexes;
-
- void Init(ID3D12Device* pd3dDevice, UINT size, D3D12_DESCRIPTOR_HEAP_TYPE type, D3D12_DESCRIPTOR_HEAP_FLAGS flags)
- {
- HRESULT hr;
-
- D3D12_DESCRIPTOR_HEAP_DESC srvHeapDesc = {};
- srvHeapDesc.NumDescriptors = size;
- srvHeapDesc.Flags = flags;
- srvHeapDesc.Type = type;
- hr = pd3dDevice->CreateDescriptorHeap(&srvHeapDesc, IID_PPV_ARGS(m_pHeap.ReleaseAndGetAddressOf()));
-
- if (SUCCEEDED(hr))
- {
- m_sizeHeap = size;
- m_sizeDescriptor = pd3dDevice->GetDescriptorHandleIncrementSize(type);
- }
- else
- {
- m_sizeHeap = 0;
- m_sizeDescriptor = 0;
- }
- m_currentIndex = 0;
- m_availableIndexes.clear();
- }
-
- UINT allocate()
- {
- int availables = m_availableIndexes.size();
- if (availables > 0)
- {
- UINT index = m_availableIndexes[availables - 1];
- m_availableIndexes.pop_back();
- return index;
- }
- UINT index = m_currentIndex++;
- if (m_sizeHeap > m_currentIndex)
- return index;
- return (UINT)-1;
- }
-
- void deallocate(UINT availableIndex)
- {
- m_availableIndexes.push_back(availableIndex);
- }
-
- void Release()
- {
- if (m_pHeap) m_pHeap = nullptr;
- m_sizeHeap = 0;
- m_currentIndex = 0;
- m_sizeDescriptor = 0;
- m_availableIndexes.clear();
- }
-};
-
-struct NVHairVertexBuffer
-{
- ComPtr<ID3D12Resource> m_pBuffer;
- ComPtr<ID3D12Resource> m_pBufferUpload;
- D3D12_VERTEX_BUFFER_VIEW m_vertexBufferView;
- NVHairHeap* m_pSrvUavHeap;
- UINT m_uavIndex;
-
- void Init(NVHairHeap* pHeap)
- {
- m_pBuffer = nullptr;
- m_pBufferUpload = nullptr;
- memset(&m_vertexBufferView, 0, sizeof(D3D12_VERTEX_BUFFER_VIEW));
- m_pSrvUavHeap = pHeap;
-
- m_uavIndex = m_pSrvUavHeap->allocate();
- }
-
- D3D12_CPU_DESCRIPTOR_HANDLE getUavCpuHandle()
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE uavHandle(m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), m_uavIndex, m_pSrvUavHeap->m_sizeDescriptor);
- return uavHandle;
- }
-
- void Release()
- {
- if (m_pBuffer) m_pBuffer = nullptr;
- if (m_pBufferUpload) m_pBufferUpload = nullptr;
- memset(&m_vertexBufferView, 0, sizeof(D3D12_VERTEX_BUFFER_VIEW));
- if (m_pSrvUavHeap) m_pSrvUavHeap = nullptr;
- m_uavIndex = (UINT)-1;
- }
-};
-
-struct NVHairReadOnlyBuffer
-{
- ComPtr<ID3D12Resource> m_pBuffer;
- ComPtr<ID3D12Resource> m_pBufferUpload;
- NVHairHeap* m_pSrvUavHeap;
- UINT m_srvIndex;
-
- void Init(NVHairHeap* pHeap)
- {
- m_pBuffer = nullptr;
- m_pBufferUpload = nullptr;
- m_pSrvUavHeap = pHeap;
-
- m_srvIndex = m_pSrvUavHeap->allocate();
- }
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE getSrvCpuHandle()
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), m_srvIndex, m_pSrvUavHeap->m_sizeDescriptor);
- return srvHandle;
- }
-
- void Release()
- {
- m_pSrvUavHeap->deallocate(m_srvIndex);
-
- if (m_pBuffer) m_pBuffer = nullptr;
- if (m_pBufferUpload) m_pBufferUpload = nullptr;
- if (m_pSrvUavHeap) m_pSrvUavHeap = nullptr;
- m_srvIndex = (UINT)-1;
- }
-};
-
-class CORERENDER_EXPORT D3D12RenderContext
-{
-public:
- ~D3D12RenderContext();
- static D3D12RenderContext* Instance();
-
- class GpuInterface
- {
- public:
- virtual void onGpuWorkSubmitted(ID3D12CommandQueue* queue) = 0;
- virtual void updateGpuWorkCompleted() = 0;
- virtual ~GpuInterface() {}
- };
-
- typedef void (*GpuWorkSubmitFunc)(ID3D12CommandQueue* queue, void* data);
- typedef void (*GpuUpdateCompletedFunc)(void* data);
-
- void InitDevice();
- void InitSwapchain(int width, int height, HWND hWnd);
- void ResizeSwapchain(int width, int height);
- void PostCreate();
-
- void OnDestroy();
-
- void PreRender();
- void PostRender();
- void Flush();
-
- void SubmitGpuWork();
- void WaitForGpu();
-
- void UpdateGpuWorkCompleted();
-
- void Present();
-
- int AllocRenderTargetIndex();
- D3D12RenderTarget* CreateRenderTarget(int renderTargetIndex, int nWidth, int nHeight);
- void SetClearColor(int renderTargetIndex, float r, float g, float b, float a = 1.0, float depth = 1.0, float stencil = 0.0);
- void AcquireRenderTarget(bool doClear = false, int renderTargetIndex = 0);
- void ReleaseRenderTarget(int renderTargetIndex = 0);
- ID3D12Resource* GetTexture(int renderTargetIndex, int index = 0);
- void SetViewport(D3D12_VIEWPORT& vp);
- void GetViewport(D3D12_VIEWPORT& vp);
-
- ID3D12Device* GetDevice() { return m_device.Get(); }
- ID3D12GraphicsCommandList* GetGraphicsCommandList() { return m_commandList.Get(); }
- ID3D12CommandQueue* GetCommandQueue() const { return m_commandQueue.Get(); }
-
- IDXGISwapChain3* GetSwapChain() { return m_swapChain.Get(); }
- UINT GetFrameIndex() { return m_frameIndex; }
-
- ID3D11Device* GetDevice11() { return m_d3d11Device.Get(); }
- ID3D11On12Device* GetDevice11On12() { return m_d3d11On12Device.Get(); }
- ID3D11DeviceContext* GetDeviceContext() { return m_d3d11DeviceContext.Get(); }
-
- D3D12_RESOURCE_DESC GetBackBufferDesc();
- void SwitchToDX11();
- void FlushDX11();
-
- ID3D12Resource* GetDepthStencilResource();
- D3D12_CPU_DESCRIPTOR_HANDLE GetRenderTargetViewHandle();
- D3D12_CPU_DESCRIPTOR_HANDLE GetDepthStencilViewHandle();
-
- void InitBuffer(NVHairReadOnlyBuffer& buffer);
- void DestroyBuffer(NVHairReadOnlyBuffer& buffer);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE NVHairINT_CreateD3D12ReadOnlyBuffer(
- UINT stride,
- UINT numElements,
- NVHairReadOnlyBuffer* pReadOnlyBuffer,
- void* pSysMem);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE NVHairINT_CreateD3D12Texture(ID3D12Resource* pTexture, int& nIndexInHeap);
- void NVHairINT_DestroyD3D12Texture(int& nIndexInHeap);
-
- void SetSampleCount(int nSampleCount);
- int GetSampleCount();
-
- void AddGpuInterface(GpuInterface* intf);
-
-private:
- void OnGpuWorkSubmitted(ID3D12CommandQueue* queue);
-
- D3D12RenderContext();
-
- ComPtr<IDXGIFactory4> m_factory;
- ComPtr<IDXGIAdapter1> m_adapter;
-
- ComPtr<ID3D12Device> m_device;
- ComPtr<ID3D12CommandQueue> m_commandQueue;
- ComPtr<ID3D12CommandAllocator> m_commandAllocator;
- ComPtr<ID3D12GraphicsCommandList> m_commandList;
- ComPtr<IDXGISwapChain3> m_swapChain;
-
- ComPtr<ID3D11Device> m_d3d11Device;
- ComPtr<ID3D11On12Device> m_d3d11On12Device;
- ComPtr<ID3D11DeviceContext> m_d3d11DeviceContext;
- ID3D11Resource** m_wrappedBackBuffers;
- ID3D11RenderTargetView** m_pD3D11RenderTargetView;
-
- UINT m_frameIndex;
- HANDLE m_fenceEvent;
- ComPtr<ID3D12Fence> m_fence;
- UINT64 m_fenceValue;
-
- D3D12RenderTarget* m_pCurrentRenderTarget;
- map<int, D3D12RenderTarget*> m_RenderTargetMap;
-
- std::vector<GpuInterface*> m_gpuInterfaces;
-
- NVHairHeap m_srvUavHeap;
-
- // sample desc
- UINT m_sampleCount;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp
deleted file mode 100644
index 2346683..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp
+++ /dev/null
@@ -1,467 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12RenderInterface.h"
-
-#include "D3D12TextureResource.h"
-#include "D3D12Shaders.h"
-#include "D3D12Buffer.h"
-
-#include "D3D12RenderContext.h"
-
-namespace RenderInterfaceD3D12
-{
- using namespace RenderInterface;
-
- D3D12_BLEND_DESC m_BlendStates[BLEND_STATE_END];
- D3D12_DEPTH_STENCIL_DESC m_DepthStencilStates[DEPTH_STENCIL_STATE_END];
- D3D12_RASTERIZER_DESC m_RasterizerStates[RASTERIZER_STATE_END];
-
- D3D12RenderContext *pRenderContext = D3D12RenderContext::Instance();
-
- SHADER_TYPE m_ShaderType;
- RenderShaderStateKey m_ShaderStateKey;
-
- map<RenderShaderStateKey, RenderShaderState*> m_RenderShaderStates;
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool InitDevice(int deviceID)
-{
- pRenderContext->InitDevice();
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- if (!pRenderContext)
- return false;
-
- InitializeShadersD3D12();
- InitializeRenderStates();
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- DestroyShadersD3D12();
-}
-
-RenderShaderState* GetShaderState()
-{
- RenderShaderState* pShaderState = nullptr;
- map<RenderShaderStateKey, RenderShaderState*>::iterator it = m_RenderShaderStates.find(m_ShaderStateKey);
- if (it != m_RenderShaderStates.end())
- {
- pShaderState = it->second;
- }
- else
- {
- pShaderState = new RenderShaderState;
- pShaderState->BlendState = m_BlendStates[m_ShaderStateKey.BlendState];
- pShaderState->DepthStencilState = m_DepthStencilStates[m_ShaderStateKey.DepthStencilState];
- pShaderState->RasterizerState = m_RasterizerStates[m_ShaderStateKey.RasterizerState];
- pShaderState->PrimitiveTopologyType = m_ShaderStateKey.PrimitiveTopologyType;
- if (m_ShaderStateKey.ForShadow)
- {
- pShaderState->RTVFormat = DXGI_FORMAT_R32_FLOAT;
- pShaderState->DSVFormat = DXGI_FORMAT_D32_FLOAT;
- }
- else
- {
- pShaderState->RTVFormat = DXGI_FORMAT_R8G8B8A8_UNORM;
- pShaderState->DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT;
- pShaderState->SampleCount = D3D12RenderContext::Instance()->GetSampleCount();
- }
-
- m_RenderShaderStates[m_ShaderStateKey] = pShaderState;
- }
- return pShaderState;
-}
-//////////////////////////////////////////////////////////////////////////////////////
-void InitializeRenderStates()
-{
- /////////////////////////////////////////////////////////////////////////////////////////
- // alpha blending state descriptors
- /////////////////////////////////////////////////////////////////////////////////////////
-
- // alpha blending enabled
- {
- D3D12_BLEND_DESC desc = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D12_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = true;
- rtDesc.SrcBlend = D3D12_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D12_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D12_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D12_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D12_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- m_BlendStates[BLEND_STATE_ALPHA] = desc;
- }
-
- // no alpha blending
- {
- D3D12_BLEND_DESC desc = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D12_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = false;
- rtDesc.SrcBlend = D3D12_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D12_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D12_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D12_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D12_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- m_BlendStates[BLEND_STATE_NONE] = desc;
- }
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // depth and stencil
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D12_DEPTH_STENCIL_DESC depthTestDesc = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- {
- depthTestDesc.DepthEnable = true;
- depthTestDesc.DepthFunc = D3D12_COMPARISON_FUNC_LESS;
- depthTestDesc.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
- depthTestDesc.StencilEnable = false;
- depthTestDesc.StencilReadMask = 0xff;
- depthTestDesc.StencilWriteMask = 0xff;
- }
-
- m_DepthStencilStates[DEPTH_STENCIL_DEPTH_TEST] = depthTestDesc;
-
- D3D12_DEPTH_STENCIL_DESC depthNone = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- {
- depthNone.DepthEnable = false;
- depthNone.DepthFunc = D3D12_COMPARISON_FUNC_LESS;
- depthNone.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ZERO;
- depthNone.StencilEnable = false;
- depthNone.StencilReadMask = 0xff;
- depthNone.StencilWriteMask = 0xff;
- }
-
- m_DepthStencilStates[DEPTH_STENCIL_DEPTH_NONE] = depthNone;
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // rasterizer
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D12_RASTERIZER_DESC rsDesc = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT);
-
- // solid cull front
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_FRONT;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_FRONT] = rsDesc;
- };
-
- // solid cull back
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_BACK;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_BACK] = rsDesc;
- }
-
- // solid cull none
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_NONE] = rsDesc;
- }
-
- // wireframe cull none
- {
- rsDesc.FillMode = D3D12_FILL_MODE_WIREFRAME;
- rsDesc.CullMode = D3D12_CULL_MODE_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = 0;
- rsDesc.DepthBias = 0;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
- };
-
- m_RasterizerStates[RASTERIZER_STATE_WIRE] = rsDesc;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleStrip()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleList()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyLineList()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- D3D12_VERTEX_BUFFER_VIEW* vertexView = GPUBufferD3D12::GetVertexView(pBuffer);
- if (!vertexView)
- return;
-
- vertexView->StrideInBytes = stride;
- ID3D12GraphicsCommandList* m_commandList = pRenderContext->GetGraphicsCommandList();
- m_commandList->IASetVertexBuffers(0, 1, vertexView);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- m_ShaderStateKey.DepthStencilState = state;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- m_ShaderStateKey.RasterizerState = state;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE state)
-{
- m_ShaderStateKey.BlendState = state;
-}
-
-void ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType)
-{
- m_ShaderStateKey.PrimitiveTopologyType = PrimitiveTopologyType;
-}
-
-void ApplyForShadow(int ForShadow)
-{
- m_ShaderStateKey.ForShadow = ForShadow;
-}
-
-void SwitchToDX11()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->SwitchToDX11();
-}
-
-void FlushDX11()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->FlushDX11();
-}
-
-void FlushDX12()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->Flush();
-}
-
-void SubmitGpuWork()
-{
- D3D12RenderContext::Instance()->SubmitGpuWork();
-}
-
-void WaitForGpu()
-{
- D3D12RenderContext* context = D3D12RenderContext::Instance();
- context->WaitForGpu();
- context->UpdateGpuWorkCompleted();
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void SetViewport(const RenderInterface::Viewport& vp)
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
-
- D3D12_VIEWPORT d3dViewport;
-
- d3dViewport.TopLeftX = vp.TopLeftX;
- d3dViewport.TopLeftY = vp.TopLeftY;
-
- d3dViewport.Width = vp.Width;
- d3dViewport.Height = vp.Height;
-
- d3dViewport.MinDepth = vp.MinDepth;
- d3dViewport.MaxDepth = vp.MaxDepth;
-
- pRenderContext->SetViewport(d3dViewport);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(RenderInterface::Viewport& vp)
-{
- D3D12_VIEWPORT d3dViewport;
- pRenderContext->GetViewport(d3dViewport);
-
- vp.TopLeftX = d3dViewport.TopLeftX;
- vp.TopLeftY = d3dViewport.TopLeftY;
-
- vp.Width = d3dViewport.Width;
- vp.Height = d3dViewport.Height;
-
- vp.MinDepth = d3dViewport.MinDepth;
- vp.MaxDepth = d3dViewport.MaxDepth;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Draw(unsigned int vertexCount, unsigned int startCount)
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->DrawInstanced(vertexCount, 1, startCount, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return false;
-
- ID3D12Resource* pBuffer = nullptr;
- ThrowIfFailed(pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(ByteWidth),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&pBuffer)));
- if (nullptr == pBuffer)
- {
- return false;
- }
-
- void* pData;
- ThrowIfFailed(pBuffer->Map(0, nullptr, &pData));
- memcpy(pData, pSysMem, ByteWidth);
- pBuffer->Unmap(0, nullptr);
-
- return GPUBufferD3D12::Create(pBuffer, ByteWidth);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return false;
-
- ID3D12Device* pDevice = pContext->GetDevice();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- pContext->NVHairINT_CreateD3D12ReadOnlyBuffer(stride, numElements, pReadOnlyBuffer, pSysMem);
-
- int nIndexInHeap = -1;
- return D3D12TextureResource::Create(pReadOnlyBuffer->m_pBuffer.Get(), pReadOnlyBuffer->getSrvCpuHandle(), nIndexInHeap);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// create read only shader resource buffer
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pGPUBuffer, void* pSysMem, unsigned int ByteWidth)
-{
- ID3D12Resource* pBuffer = GPUBufferD3D12::GetResource(pGPUBuffer);
- if (!pBuffer)
- return;
-
- void* pData;
- ThrowIfFailed(pBuffer->Map(0, nullptr, &pData));
- memcpy(pData, pSysMem, ByteWidth);
- pBuffer->Unmap(0, nullptr);
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return;
-
- ID3D12Device* pDevice = pContext->GetDevice();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- D3D12_SUBRESOURCE_DATA data = {};
- data.pData = reinterpret_cast<UINT8*>(pSysMem);
- data.RowPitch = ByteWidth;
- data.SlicePitch = data.RowPitch;
-
- ID3D12Resource* m_pBufferUpload = GPUBufferD3D12::GetResourceUpload(pGPUBuffer, pDevice, ByteWidth);
-
- UpdateSubresources<1>(pCommandList, pBuffer, m_pBufferUpload, 0, 0, 1, &data);
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pBuffer,
- D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
- */
-}
-} // end namespace
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h
deleted file mode 100644
index 8168936..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-#include <d3d11.h>
-#include <d3d12.h>
-#include <dxgi1_4.h>
-#include "RenderInterface.h"
-#include "RenderPlugin.h"
-class RenderShaderState;
-// abstract interface to D3D calls
-namespace RenderInterfaceD3D12
-{
- CORERENDER_EXPORT bool InitDevice(int deviceID);
- CORERENDER_EXPORT bool Initialize();
- CORERENDER_EXPORT void Shutdown();
-
- RenderShaderState* GetShaderState();
- void InitializeRenderStates();
-
- CORERENDER_EXPORT void ApplyDepthStencilState(RenderInterface::DEPTH_STENCIL_STATE st);
- CORERENDER_EXPORT void ApplyRasterizerState(RenderInterface::RASTERIZER_STATE st);
- CORERENDER_EXPORT void ApplyBlendState(RenderInterface::BLEND_STATE st);
- CORERENDER_EXPORT void ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType);
- CORERENDER_EXPORT void ApplyForShadow(int ForShadow);
- CORERENDER_EXPORT void SwitchToDX11();
- CORERENDER_EXPORT void FlushDX11();
- CORERENDER_EXPORT void FlushDX12();
- CORERENDER_EXPORT void SubmitGpuWork();
- CORERENDER_EXPORT void WaitForGpu();
-
- CORERENDER_EXPORT void GetViewport(RenderInterface::Viewport& vp);
- CORERENDER_EXPORT void SetViewport(const RenderInterface::Viewport& vp);
-
- CORERENDER_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem);
- CORERENDER_EXPORT GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer);
-
- CORERENDER_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- CORERENDER_EXPORT void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
-
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleStrip();
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleList();
- CORERENDER_EXPORT void SetPrimitiveTopologyLineList();
-
-
- CORERENDER_EXPORT void Draw(unsigned int vertexCount, unsigned int startCount = 0);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp
deleted file mode 100644
index f115349..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp
+++ /dev/null
@@ -1,384 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "D3D12RenderShader.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12Wrapper.h"
-#include "D3D12RenderContext.h"
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader::D3D12RenderShader()
-{
- m_vertexShader = 0;
- m_vertexShaderSize = 0;
- m_pixelShader = 0;
- m_pixelShaderSize = 0;
-
- m_inputElementDescs = 0;
- m_inputElementDescsNum = 0;
-
- m_pRootSignature = 0;
-
- m_scuHeap = 0;
- m_scuDescriptorSize = 0;
-
- m_samplerHeap = 0;
- m_samplerDescriptorSize = 0;
-
- m_PipelineStates.clear();
-
- for (int i = 0; i < 2; i++)
- {
- m_ConstantBuffer[i] = nullptr;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader::~D3D12RenderShader()
-{
- for (int i = 0; i < 1; i++)
- {
- SAFE_RELEASE(m_ConstantBuffer[i]);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader* D3D12RenderShader::Create(
- const char *name,
- void* vertexShader, size_t vertexShaderSize, void* pixelShader, size_t pixelShaderSize,
- UINT cbufferSize0, UINT cbufferSize1,
- D3D12_INPUT_ELEMENT_DESC* pElemDesc, UINT numElements,
- int ShaderResourceNum, int UnorderedAccessNum, int SamplerNum)
-{
- D3D12RenderContext* pAdapter = D3D12RenderContext::Instance();
- ID3D12Device* m_device = pAdapter->GetDevice();
-
- D3D12RenderShader* pShader = new D3D12RenderShader;
-
- int sizeofuint = sizeof(UINT8);
- pShader->m_vertexShaderSize = vertexShaderSize;
- if (vertexShaderSize > 0)
- {
- pShader->m_vertexShader = new UINT8[vertexShaderSize / sizeofuint];
- memcpy(pShader->m_vertexShader, vertexShader, vertexShaderSize);
- }
- pShader->m_pixelShaderSize = pixelShaderSize;
- if (pixelShaderSize > 0)
- {
- pShader->m_pixelShader = new UINT8[pixelShaderSize / sizeofuint];
- memcpy(pShader->m_pixelShader, pixelShader, pixelShaderSize);
- }
-
- pShader->m_inputElementDescsNum = numElements;
- pShader->m_inputElementDescs = pElemDesc;
-
- CD3DX12_DESCRIPTOR_RANGE ranges[3];
- CD3DX12_ROOT_PARAMETER rootParameters[2];
-
- int rangesindex = 0;
- int rootParametersindex = 0;
-
- if (ShaderResourceNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, ShaderResourceNum, 0);
- }
- int ConstantBufferNum = 0;
- if (cbufferSize0 > 0)
- {
- ConstantBufferNum++;
- }
- if (cbufferSize1 > 0)
- {
- ConstantBufferNum++;
- }
- if (ConstantBufferNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, ConstantBufferNum, 0);
- }
- if (UnorderedAccessNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_UAV, UnorderedAccessNum, 0);
- }
- if (rangesindex > 0)
- {
- rootParameters[rootParametersindex++].InitAsDescriptorTable(rangesindex, &ranges[0], D3D12_SHADER_VISIBILITY_ALL);
- }
-
- if (SamplerNum > 0)
- {
- ranges[rangesindex].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, SamplerNum, 0);
- rootParameters[rootParametersindex++].InitAsDescriptorTable(1, &ranges[rangesindex], D3D12_SHADER_VISIBILITY_ALL);
- }
-
- D3D12_ROOT_SIGNATURE_FLAGS rootSignatureFlags =
- D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS;
- CD3DX12_ROOT_SIGNATURE_DESC rootSignatureDesc;
- rootSignatureDesc.Init(rootParametersindex, rootParameters, 0, nullptr, rootSignatureFlags);
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- ThrowIfFailed(D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
- ThrowIfFailed(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&pShader->m_pRootSignature)));
-
- int numSCU = ShaderResourceNum + ConstantBufferNum + UnorderedAccessNum;
- if (numSCU > 0)
- {
- D3D12_DESCRIPTOR_HEAP_DESC scuHeapDesc = {};
- scuHeapDesc.NumDescriptors = numSCU;
- scuHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
- scuHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&scuHeapDesc, IID_PPV_ARGS(&pShader->m_scuHeap)));
- pShader->m_scuDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- if (ConstantBufferNum > 0)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE scuHandle(pShader->m_scuHeap->GetCPUDescriptorHandleForHeapStart(),
- ShaderResourceNum, pShader->m_scuDescriptorSize);
-
- if (cbufferSize0 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize0, 0);
-
- // Describe and create a constant buffer view.
- D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
- // CB size is required to be 256-byte aligned.
- cbvDesc.SizeInBytes = (cbufferSize0 + 255) & ~255;
- cbvDesc.BufferLocation = pShader->m_ConstantBuffer[0]->GetGPUVirtualAddress();
- m_device->CreateConstantBufferView(&cbvDesc, scuHandle);
- scuHandle.Offset(pShader->m_scuDescriptorSize);
- }
- if (cbufferSize1 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize1, 1);
-
- // Describe and create a constant buffer view.
- D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
- // CB size is required to be 256-byte aligned.
- cbvDesc.SizeInBytes = (cbufferSize1 + 255) & ~255;
- cbvDesc.BufferLocation = pShader->m_ConstantBuffer[1]->GetGPUVirtualAddress();
- m_device->CreateConstantBufferView(&cbvDesc, scuHandle);
- }
- }
- }
-
- if (SamplerNum > 0)
- {
- D3D12_DESCRIPTOR_HEAP_DESC samplerHeapDesc = {};
- samplerHeapDesc.NumDescriptors = SamplerNum;
- samplerHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER;
- samplerHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&samplerHeapDesc, IID_PPV_ARGS(&pShader->m_samplerHeap)));
- pShader->m_samplerDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE samplerHandle(pShader->m_samplerHeap->GetCPUDescriptorHandleForHeapStart());
-
- if(SamplerNum == 1)
- {
- D3D12_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(pointClampSamplerDesc, samplerHandle);
- }
- else if(SamplerNum == 2)
- {
- D3D12_SAMPLER_DESC linearSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(linearSamplerDesc, samplerHandle);
- samplerHandle.Offset(pShader->m_samplerDescriptorSize);
-
- D3D12_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(pointClampSamplerDesc, samplerHandle);
- }
- }
-
- return pShader;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::SetConstantBuffer()
-{
- return;
-}
-
-ID3D12PipelineState* D3D12RenderShader::GetPipelineState(RenderShaderState* pShaderState)
-{
- ID3D12PipelineState* pPipelineState = nullptr;
- map<RenderShaderState*, ID3D12PipelineState*>::iterator it = m_PipelineStates.find(pShaderState);
- if (it == m_PipelineStates.end())
- {
- D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
- psoDesc.InputLayout = { m_inputElementDescs, m_inputElementDescsNum };
- psoDesc.pRootSignature = m_pRootSignature;
- psoDesc.VS = { reinterpret_cast<UINT8*>(m_vertexShader), m_vertexShaderSize };
- psoDesc.PS = { reinterpret_cast<UINT8*>(m_pixelShader), m_pixelShaderSize };
- psoDesc.BlendState = pShaderState->BlendState;
- psoDesc.RasterizerState = pShaderState->RasterizerState;
- psoDesc.DepthStencilState = pShaderState->DepthStencilState;
- psoDesc.SampleMask = UINT_MAX;
- psoDesc.PrimitiveTopologyType = pShaderState->PrimitiveTopologyType;
- psoDesc.NumRenderTargets = 1;
- psoDesc.RTVFormats[0] = pShaderState->RTVFormat;
- psoDesc.DSVFormat = pShaderState->DSVFormat;
- psoDesc.SampleDesc.Count = pShaderState->SampleCount;
-
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- ThrowIfFailed(pDevice->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&pPipelineState)));
-
- m_PipelineStates[pShaderState] = pPipelineState;
- }
- else
- {
- pPipelineState = it->second;
- }
- return pPipelineState;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::MakeCurrent()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* m_commandList = pContext->GetGraphicsCommandList();
-
- RenderShaderState* pShaderState = RenderInterfaceD3D12::GetShaderState();
- if (nullptr == pShaderState)
- {
- return;
- }
-
- ID3D12PipelineState* pPipelineState = GetPipelineState(pShaderState);
-
- m_commandList->SetGraphicsRootSignature(m_pRootSignature);
- m_commandList->SetPipelineState(pPipelineState);
-
- vector<ID3D12DescriptorHeap*> heaps;
- if (nullptr != m_scuHeap)
- {
- heaps.push_back(m_scuHeap);
- }
- if (nullptr != m_samplerHeap)
- {
- heaps.push_back(m_samplerHeap);
- }
- if (heaps.size() > 0)
- {
- m_commandList->SetDescriptorHeaps(heaps.size(), heaps.data());
- }
- int heapindex = 0;
- if (nullptr != m_scuHeap)
- {
- m_commandList->SetGraphicsRootDescriptorTable(heapindex++, m_scuHeap->GetGPUDescriptorHandleForHeapStart());
- }
- if (nullptr != m_samplerHeap)
- {
- m_commandList->SetGraphicsRootDescriptorTable(heapindex++, m_samplerHeap->GetGPUDescriptorHandleForHeapStart());
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::Disable()
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderShader::CreateParamBuffer( UINT sizeBuffer, UINT slot )
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return false;
-
- SAFE_RELEASE(m_ConstantBuffer[slot]);
-
- ThrowIfFailed(pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(sizeBuffer),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&m_ConstantBuffer[slot])));
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void* D3D12RenderShader::MapParam(UINT slot)
-{
- if (!m_ConstantBuffer[slot])
- return 0;
-
- void* pData;
- ThrowIfFailed(m_ConstantBuffer[slot]->Map(0, nullptr, &pData));
- return pData;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::UnmapParam( UINT slot )
-{
- if (!m_ConstantBuffer[slot])
- return;
-
- m_ConstantBuffer[slot]->Unmap(0, nullptr);
-}
-
-void D3D12RenderShader::BindShaderResource(UINT slot, CD3DX12_CPU_DESCRIPTOR_HANDLE& handle)
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return;
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE destHandle(m_scuHeap->GetCPUDescriptorHandleForHeapStart(), slot, m_scuDescriptorSize);
- if (handle.ptr != 0)
- {
- pDevice->CopyDescriptorsSimple(1, destHandle, handle, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- }
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h
deleted file mode 100644
index d43783c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-#include <d3d12.h>
-
-#include "D3D12RenderTarget.h"
-
-class D3D12RenderShader
-{
-public:
- D3D12RenderShader();
- ~D3D12RenderShader();
-
- static D3D12RenderShader* Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0 = 0, UINT cbufferSize1 = 0,
- D3D12_INPUT_ELEMENT_DESC* pElemDesc = 0, UINT numElements = 0,
- int ShaderResourceNum = 0, int UnorderedAccessNum = 0, int SamplerNum = 0);
-
- void MakeCurrent();
- void Disable();
- void SetConstantBuffer();
-
- void* MapParam(UINT slot = 0);
- void UnmapParam(UINT slot = 0);
-
- void BindShaderResource(UINT slot, CD3DX12_CPU_DESCRIPTOR_HANDLE& handle);
-
-protected:
- bool CreateParamBuffer(UINT sizeBuffer, UINT slot = 0);
-
-private:
- ID3D12PipelineState* GetPipelineState(RenderShaderState* pShaderState);
-
- void* m_vertexShader;
- SIZE_T m_vertexShaderSize;
- void* m_pixelShader;
- SIZE_T m_pixelShaderSize;
-
- D3D12_INPUT_ELEMENT_DESC* m_inputElementDescs;
- UINT m_inputElementDescsNum;
-
- ID3D12RootSignature* m_pRootSignature;
-
- ID3D12DescriptorHeap* m_scuHeap;
- int m_scuDescriptorSize;
-
- ID3D12Resource* m_ConstantBuffer[2];
-
- ID3D12DescriptorHeap* m_samplerHeap;
- int m_samplerDescriptorSize;
-
- map<RenderShaderState*, ID3D12PipelineState*> m_PipelineStates;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp
deleted file mode 100644
index 301cad6..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-#include "D3D12RenderTarget.h"
-#include "D3D12RenderContext.h"
-
-D3D12RenderTarget::D3D12RenderTarget(int renderTargetIndex, int nRenderTargetCount)
-{
- m_RenderTargetIndex = renderTargetIndex;
-
- m_RenderTargetCount = nRenderTargetCount;
-
- m_BackBuffers = nullptr;
- m_RenderTargets = nullptr;
- m_DepthStencil = nullptr;
-
- m_pRenderContext = D3D12RenderContext::Instance();
-
- if (m_RenderTargetCount > 0)
- {
- m_BackBuffers = new ID3D12Resource*[m_RenderTargetCount];
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_BackBuffers[n] = nullptr;
- }
-
- m_RenderTargets = new ID3D12Resource*[m_RenderTargetCount];
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_RenderTargets[n] = nullptr;
- }
- }
-
- if (renderTargetIndex == 0)
- {
- m_rtvClearValue.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- m_rtvClearValue.Color[0] = 0.0;
- m_rtvClearValue.Color[1] = 0.0;
- m_rtvClearValue.Color[2] = 0.0;
- m_rtvClearValue.Color[3] = 1.0;
- }
- else
- {
- m_rtvClearValue.Format = DXGI_FORMAT_R32_FLOAT;
- m_rtvClearValue.Color[0] = FLT_MAX;
- m_rtvClearValue.Color[1] = FLT_MAX;
- m_rtvClearValue.Color[2] = FLT_MAX;
- m_rtvClearValue.Color[3] = FLT_MAX;
- }
-
- if (renderTargetIndex == 0)
- {
- m_dsvClearValue.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- }
- else
- {
- m_dsvClearValue.Format = DXGI_FORMAT_D32_FLOAT;
- }
- m_dsvClearValue.DepthStencil.Depth = 1.0f;
- m_dsvClearValue.DepthStencil.Stencil = 0;
-}
-
-D3D12RenderTarget::~D3D12RenderTarget()
-{
- if (nullptr != m_BackBuffers)
- {
- delete[] m_BackBuffers;
- m_BackBuffers = nullptr;
- }
-
- if (nullptr != m_RenderTargets)
- {
- delete[] m_RenderTargets;
- m_RenderTargets = nullptr;
- }
-}
-
-ID3D12Resource* D3D12RenderTarget::GetDepthStencilResource()
-{
- return m_DepthStencil;
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderTarget::GetRenderTargetViewHandle()
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
- return rtvHandle;
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderTarget::GetDepthStencilViewHandle()
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle(m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- return dsvHandle;
-}
-
-void D3D12RenderTarget::CreateResource(int nWidth, int nHeight)
-{
- ID3D12Device* m_device = m_pRenderContext->GetDevice();
- int nSampleCount = m_pRenderContext->GetSampleCount();
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
-
- if (m_RenderTargetIndex == 0)
- {
- IDXGISwapChain3* m_swapChain = m_pRenderContext->GetSwapChain();
-
- // Create a RTV for each frame.
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- ThrowIfFailed(m_swapChain->GetBuffer(n, IID_PPV_ARGS(&m_BackBuffers[n])));
-
- if (nSampleCount > 1)
- {
- // If we are multi-sampling - create a render target separate from the back buffer
- CD3DX12_HEAP_PROPERTIES heapProps(D3D12_HEAP_TYPE_DEFAULT);
- D3D12_RESOURCE_DESC desc = m_BackBuffers[n]->GetDesc();
-
- desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- desc.SampleDesc.Count = nSampleCount;
- desc.SampleDesc.Quality = 0;
- desc.Alignment = 0;
-
- ThrowIfFailed(m_device->CreateCommittedResource(&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_RENDER_TARGET,
- &m_rtvClearValue, IID_PPV_ARGS(&m_RenderTargets[n])));
- }
- else
- {
- // The render targets and back buffers are the same thing
- m_RenderTargets[n] = m_BackBuffers[n];
- }
-
- m_device->CreateRenderTargetView(m_RenderTargets[n], nullptr, rtvHandle);
- rtvHandle.Offset(1, m_rtvDescriptorSize);
- }
-
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_dsvClearValue.Format,
- nWidth, nHeight, 1, 1, nSampleCount, 0,
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
-
- ThrowIfFailed(m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT), // No need to read/write by CPU
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_DEPTH_WRITE,
- &m_dsvClearValue,
- IID_PPV_ARGS(&m_DepthStencil)));
-
- D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc = {};
- dsvDesc.ViewDimension = nSampleCount <= 1 ? D3D12_DSV_DIMENSION_TEXTURE2D : D3D12_DSV_DIMENSION_TEXTURE2DMS;
- dsvDesc.Format = m_dsvClearValue.Format;
- dsvDesc.Texture2D.MipSlice = 0;
- dsvDesc.Flags = D3D12_DSV_FLAG_NONE;
- m_device->CreateDepthStencilView(m_DepthStencil, &dsvDesc, m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- }
- }
- else
- {
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_rtvClearValue.Format,
- nWidth, nHeight, 1, 1, 1, 0,
- D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET);
-
- D3D12_RENDER_TARGET_VIEW_DESC rtvDesc = {};
- rtvDesc.Format = m_rtvClearValue.Format;
- rtvDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
- rtvDesc.Texture2D.MipSlice = 0;
- rtvDesc.Texture2D.PlaneSlice = 0;
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_RENDER_TARGET,
- &m_rtvClearValue,
- IID_PPV_ARGS(&m_RenderTargets[n]));
- m_device->CreateRenderTargetView(m_RenderTargets[n], &rtvDesc, rtvHandle);
- rtvHandle.Offset(1, m_rtvDescriptorSize);
- }
- }
-
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_dsvClearValue.Format,
- nWidth, nHeight, 1, 1, 1, 0,
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
-
- m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_DEPTH_WRITE,
- &m_dsvClearValue,
- IID_PPV_ARGS(&m_DepthStencil));
-
- D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc = {};
- dsvDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D;
- dsvDesc.Format = m_dsvClearValue.Format;
- dsvDesc.Texture2D.MipSlice = 0;
- dsvDesc.Flags = D3D12_DSV_FLAG_NONE;
- m_device->CreateDepthStencilView(m_DepthStencil, &dsvDesc, m_dsvHeap.Get()->GetCPUDescriptorHandleForHeapStart());
- }
- }
-}
-
-void D3D12RenderTarget::OnCreate(int nWidth, int nHeight)
-{
- ID3D12Device* m_device = m_pRenderContext->GetDevice();
-
- // Create descriptor heaps.
- {
- // Describe and create a render target view (RTV) descriptor heap.
- D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {};
- rtvHeapDesc.NumDescriptors = m_RenderTargetCount;
- rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
- rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_rtvHeap)));
-
- m_rtvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
-
- // Describe and create a render target view (RTV) descriptor heap.
- D3D12_DESCRIPTOR_HEAP_DESC dsvHeapDesc = {};
- dsvHeapDesc.NumDescriptors = 1;
- dsvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_DSV;
- dsvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&dsvHeapDesc, IID_PPV_ARGS(&m_dsvHeap)));
-
- m_dsvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- }
-
- OnResize(nWidth, nHeight);
-}
-
-void D3D12RenderTarget::OnResize(int nWidth, int nHeight)
-{
- CreateResource(nWidth, nHeight);
-
- // viewport and scissor rect
- {
- memset(&m_viewport, 0, sizeof(m_viewport));
- m_viewport.Width = nWidth;
- m_viewport.Height = nHeight;
- m_viewport.MaxDepth = 1.0;
-
- memset(&m_scissorRect, 0, sizeof(m_scissorRect));
- m_scissorRect.right = nWidth;
- m_scissorRect.bottom = nHeight;
- }
-}
-
-void D3D12RenderTarget::OnDestroy()
-{
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- Safe_Release(m_RenderTargets[n]);
-
- if (m_pRenderContext->GetSampleCount() > 1)
- {
- Safe_Release(m_BackBuffers[n]);
- }
- }
- Safe_Release(m_DepthStencil);
-}
-
-void D3D12RenderTarget::PreRender(bool doClear)
-{
- ID3D12GraphicsCommandList* m_commandList = m_pRenderContext->GetGraphicsCommandList();
- m_commandList->RSSetViewports(1, &m_viewport);
- m_commandList->RSSetScissorRects(1, &m_scissorRect);
-
- int numSamples = 1;
- UINT m_frameIndex = 0;
- D3D12_RESOURCE_STATES state = D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
- if (m_RenderTargetIndex == 0)
- {
- numSamples = m_pRenderContext->GetSampleCount();
- m_frameIndex = m_pRenderContext->GetFrameIndex();
- if (numSamples <= 1)
- {
- state = D3D12_RESOURCE_STATE_PRESENT;
- }
- else
- {
- state = D3D12_RESOURCE_STATE_RESOLVE_SOURCE;
- }
- }
-
- ID3D12Resource* pRenderTarget = m_RenderTargets[m_frameIndex];
-
- m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pRenderTarget, state, D3D12_RESOURCE_STATE_RENDER_TARGET));
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
- CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle(m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- m_commandList->OMSetRenderTargets(1, &rtvHandle, FALSE, &dsvHandle);
-
- if (doClear)
- {
- m_commandList->ClearRenderTargetView(rtvHandle, m_rtvClearValue.Color, 0, nullptr);
- m_commandList->ClearDepthStencilView(dsvHandle, D3D12_CLEAR_FLAG_DEPTH,
- m_dsvClearValue.DepthStencil.Depth, m_dsvClearValue.DepthStencil.Stencil, 0, nullptr);
- }
-}
-
-void D3D12RenderTarget::PostRender()
-{
- ID3D12GraphicsCommandList* m_commandList = m_pRenderContext->GetGraphicsCommandList();
-
- int numSamples = 1;
- UINT m_frameIndex = 0;
- D3D12_RESOURCE_STATES state = D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
- if (m_RenderTargetIndex == 0)
- {
- numSamples = m_pRenderContext->GetSampleCount();
- m_frameIndex = m_pRenderContext->GetFrameIndex();
- state = D3D12_RESOURCE_STATE_PRESENT;
- }
-
- if (numSamples <= 1)
- {
- ID3D12Resource* renderTarget = m_RenderTargets[m_frameIndex];
- CD3DX12_RESOURCE_BARRIER barrier(CD3DX12_RESOURCE_BARRIER::Transition(renderTarget, D3D12_RESOURCE_STATE_RENDER_TARGET, state));
- m_commandList->ResourceBarrier(1, &barrier);
- }
- else
- {
- ID3D12Resource* backBuffer = m_BackBuffers[m_frameIndex];
- ID3D12Resource* renderTarget = m_RenderTargets[m_frameIndex];
-
- // Barriers to wait for the render target, and the backbuffer to be in correct state
- {
- D3D12_RESOURCE_BARRIER barriers[] =
- {
- CD3DX12_RESOURCE_BARRIER::Transition(renderTarget, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_RESOLVE_SOURCE),
- CD3DX12_RESOURCE_BARRIER::Transition(backBuffer, D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RESOLVE_DEST),
- };
- m_commandList->ResourceBarrier(2, barriers);
- }
- // Do the resolve...
- m_commandList->ResolveSubresource(backBuffer, 0, renderTarget, 0, m_rtvClearValue.Format);
- // Barrier until can present
- {
- CD3DX12_RESOURCE_BARRIER barrier(CD3DX12_RESOURCE_BARRIER::Transition(backBuffer, D3D12_RESOURCE_STATE_RESOLVE_DEST, D3D12_RESOURCE_STATE_PRESENT));
- m_commandList->ResourceBarrier(1, &barrier);
- }
- }
-}
-
-void D3D12RenderTarget::SetClearColor(float r, float g, float b, float a, float depth, float stencil)
-{
- m_rtvClearValue.Color[0] = r;
- m_rtvClearValue.Color[1] = g;
- m_rtvClearValue.Color[2] = b;
- m_rtvClearValue.Color[3] = a;
-
- m_dsvClearValue.DepthStencil.Depth = depth;
- m_dsvClearValue.DepthStencil.Stencil = stencil;
-}
-
-ID3D12Resource* D3D12RenderTarget::GetTexture(int nIndex, bool bRenderTarget)
-{
- if (nIndex < 0 || nIndex > m_RenderTargetCount)
- return nullptr;
-
- if (bRenderTarget)
- {
- return m_RenderTargets[nIndex];
- }
- else
- {
- return m_BackBuffers[nIndex];
- }
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h
deleted file mode 100644
index 8ae0b7d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h
+++ /dev/null
@@ -1,110 +0,0 @@
-#pragma once
-
-class D3D12RenderContext;
-
-#include "RenderInterface.h"
-using namespace RenderInterface;
-
-#include <d3d12.h>
-#include <d3d11on12.h>
-#include <dxgi1_4.h>
-#include <D3Dcompiler.h>
-#include <DirectXMath.h>
-#include "d3dx12.h"
-#include <string>
-#include <vector>
-#include <map>
-#include <wrl.h>
-#include <shellapi.h>
-using namespace std;
-using namespace DirectX;
-using namespace Microsoft::WRL;
-
-#ifndef Safe_Delete
-#define Safe_Delete(p) { if (p) { delete (p); (p) = nullptr; } }
-#endif // !Safe_Delete
-#ifndef Safe_Release
-#define Safe_Release(p) { if (p) { p->Release(); (p) = nullptr; } }
-#endif // !Safe_Delete
-
-inline void ThrowIfFailed(HRESULT hr)
-{
- if (FAILED(hr))
- {
- throw;
- }
-}
-
-typedef struct RenderShaderStateKey
-{
- BLEND_STATE BlendState = BLEND_STATE_NONE;
- RASTERIZER_STATE RasterizerState = RASTERIZER_STATE_FILL_CULL_NONE;
- DEPTH_STENCIL_STATE DepthStencilState = DEPTH_STENCIL_DEPTH_TEST;
- D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
- int ForShadow = 0;
-
- bool operator <(const RenderShaderStateKey &other) const
- {
- int key = (((BlendState * 10 + RasterizerState) * 10 + DepthStencilState) * 10 + PrimitiveTopologyType) * 10 + ForShadow;
- int otherkey = (((other.BlendState * 10 + other.RasterizerState) * 10 + other.DepthStencilState) * 10 + other.PrimitiveTopologyType) * 10 + other.ForShadow;
- return key < otherkey;
- }
-} RenderShaderStateKey;
-
-typedef struct RenderShaderState
-{
- D3D12_BLEND_DESC BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- D3D12_RASTERIZER_DESC RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT);
- D3D12_DEPTH_STENCIL_DESC DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
- DXGI_FORMAT RTVFormat = DXGI_FORMAT_R8G8B8A8_UNORM;
- DXGI_FORMAT DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT;
- int SampleCount = 1;
-} RenderShaderState;
-
-class D3D12RenderTarget
-{
-public:
- D3D12RenderTarget(int renderTargetIndex, int nRenderTargetCount = 1);
- ~D3D12RenderTarget();
-
- void OnCreate(int nWidth, int nHeight);
- void OnResize(int nWidth, int nHeight);
- void OnDestroy();
-
- void PreRender(bool doClear = false);
- void PostRender();
-
- void SetClearColor(float r, float g, float b, float a = 1.0, float depth = 1.0, float stencil = 0.0);
-
- ID3D12Resource* GetTexture(int nIndex = 0, bool bRenderTarget = true);
-
- D3D12_VIEWPORT m_viewport;
-
- ID3D12Resource* GetDepthStencilResource();
- D3D12_CPU_DESCRIPTOR_HANDLE GetRenderTargetViewHandle();
- D3D12_CPU_DESCRIPTOR_HANDLE GetDepthStencilViewHandle();
-
-private:
- void CreateResource(int nWidth, int nHeight);
-
- int m_RenderTargetIndex;
- int m_RenderTargetCount;
-
- ID3D12Resource** m_BackBuffers;
- ID3D12Resource** m_RenderTargets;
- ID3D12Resource* m_DepthStencil;
-
- ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
- UINT m_rtvDescriptorSize;
- ComPtr<ID3D12DescriptorHeap> m_dsvHeap;
- UINT m_dsvDescriptorSize;
-
- D3D12_RECT m_scissorRect;
-
- D3D12RenderContext* m_pRenderContext;
-
- D3D12_CLEAR_VALUE m_rtvClearValue;
- D3D12_CLEAR_VALUE m_dsvClearValue;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp
deleted file mode 100644
index b640ebd..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12RendererWindow.h"
-
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12RenderContext.h"
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderWindow::D3D12RenderWindow()
-{
- m_pRenderContext = D3D12RenderContext::Instance();
-
- m_pDialogResourceManager = 0;
- m_pTextHelper = 0;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderWindow::~D3D12RenderWindow()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderWindow::Create( HWND hWnd, unsigned int nSamples )
-{
- m_pRenderContext->SetSampleCount(nSamples);
-
- RECT rc;
- GetClientRect((HWND)hWnd, &rc);
- int wBuf = rc.right - rc.left;
- int hBuf = rc.bottom- rc.top;
-
- ID3D11Device *pDevice = m_pRenderContext->GetDevice11();
- ID3D11DeviceContext* pDeviceContext = m_pRenderContext->GetDeviceContext();
- if (nullptr != pDevice && nullptr != pDeviceContext)
- {
- m_pDialogResourceManager = new CDXUTDialogResourceManager;
- m_pDialogResourceManager->OnD3D11CreateDevice(pDevice, pDeviceContext);
- m_pTextHelper = new CDXUTTextHelper(pDevice, pDeviceContext, m_pDialogResourceManager, 15);
- }
-
- m_pRenderContext->InitSwapchain(wBuf, hBuf, hWnd);
- Resize(wBuf, hBuf);
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Free()
-{
- FreeBuffer();
-
- SAFE_DELETE(m_pTextHelper);
-
- if (m_pDialogResourceManager)
- {
- m_pDialogResourceManager->OnD3D11DestroyDevice();
- SAFE_DELETE(m_pDialogResourceManager);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::FreeBuffer()
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Present()
-{
-// m_pRenderContext->ReleaseRenderTarget();
-
-// m_pRenderContext->PostRender();
-
- m_pRenderContext->Present();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Clear(float r, float g, float b)
-{
- m_pRenderContext->PreRender();
-
- m_pRenderContext->SetClearColor(0, r, g, b);
- m_pRenderContext->AcquireRenderTarget(true);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderWindow::Resize( int w, int h )
-{
- assert(w > 0 && h > 0);
-
- m_pRenderContext->ResizeSwapchain(w, h);
-
- if (m_pDialogResourceManager)
- {
- ID3D11Device *pDevice = m_pRenderContext->GetDevice11();
- D3D12_RESOURCE_DESC descTex2D = m_pRenderContext->GetBackBufferDesc();
-
- DXGI_SURFACE_DESC backbufferDesc;
- backbufferDesc.Width = descTex2D.Width;
- backbufferDesc.Height = descTex2D.Height;
- backbufferDesc.Format = descTex2D.Format;
- backbufferDesc.SampleDesc = descTex2D.SampleDesc;
-
- m_pDialogResourceManager->OnD3D11ResizedSwapChain(pDevice, &backbufferDesc);
- }
-
- return true;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h
deleted file mode 100644
index abd5d9b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <d3d12.h>
-class D3D12RenderContext;
-// DXUT stuffs for text rendering
-class CDXUTDialogResourceManager;
-class CDXUTTextHelper;
-
-struct D3D12RenderWindow
-{
-public:
- D3D12RenderWindow();
- ~D3D12RenderWindow();
-
- bool Create(HWND hWnd, unsigned int nSamples = 1);
- bool Resize(int w, int h);
- void Present();
- void Clear(float r, float g, float b);
-
- CDXUTDialogResourceManager* m_pDialogResourceManager;
- CDXUTTextHelper* m_pTextHelper;
-
-private:
- void Free();
- void FreeBuffer();
-
- D3D12RenderContext* m_pRenderContext;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp
deleted file mode 100644
index 0c07409..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Shaders.h"
-
-#include "MeshShaderParam.h"
-#include "LightShaderParam.h"
-
-//#include <Nv/Blast/NvHairSdk.h>
-#include "D3D12RenderShader.h"
-#include "D3D12RenderContext.h"
-#include "D3D12TextureResource.h"
-using namespace RenderInterface;
-
-D3D12_INPUT_ELEMENT_DESC layoutBodyRender[] =
-{
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "VERTEX_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "FACE_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 36, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 48, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "VERTEX_ID", 0, DXGI_FORMAT_R32_FLOAT, 0, 56, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
-};
-
-D3D12_INPUT_ELEMENT_DESC layout_Position_And_Color[] =
-{
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
-};
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Common shader settings
-//static D3D12RenderShader* g_pShaders[SHADER_TYPE_END];
-static std::map<int, D3D12RenderShader*> g_pShaders;
-/*
-namespace BodyShaderBlobs
-{
- #include "Shaders/BodyShader_VS.h"
- #include "Shaders/BodyShader_PS.h"
-}
-
-namespace BodyShadowBlobs
-{
- #include "Shaders/BodyShadow_VS.h"
- #include "Shaders/BodyShadow_PS.h"
-}
-
-namespace ScreenQuadBlobs
-{
- #include "Shaders/ScreenQuad_VS.h"
- #include "Shaders/ScreenQuad_PS.h"
-}
-
-namespace ScreenQuadColorBlobs
-{
- #include "Shaders/ScreenQuadColor_VS.h"
- #include "Shaders/ScreenQuadColor_PS.h"
-}
-
-namespace VisualizeShadowBlobs
-{
- #include "Shaders/VisualizeShadow_VS.h"
- #include "Shaders/VisualizeShadow_PS.h"
-}
-
-namespace ColorBlobs
-{
- #include "Shaders/Color_VS.h"
- #include "Shaders/Color_PS.h"
-}
-*/
-//////////////////////////////////////////////////////////////////////////
-bool InitializeShadersD3D12()
-{
- /*
- UINT numElements = sizeof(layoutBodyRender) / sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_MESH_RENDERING] = D3D12RenderShader::Create("MeshRenderShader",
- (void*)BodyShaderBlobs::g_vs_main, sizeof(BodyShaderBlobs::g_vs_main),
- (void*)BodyShaderBlobs::g_ps_main, sizeof(BodyShaderBlobs::g_ps_main),
- sizeof(MeshShaderParam), 0,
- &layoutBodyRender[0], numElements,
- 10, 0, 2);
-
- g_pShaders[SHADER_TYPE_MESH_SHADOW] = D3D12RenderShader::Create("MeshShadowShader",
- (void*)BodyShadowBlobs::g_vs_main, sizeof(BodyShadowBlobs::g_vs_main),
- (void*)BodyShadowBlobs::g_ps_main, sizeof(BodyShadowBlobs::g_ps_main),
- sizeof(MeshShadowShaderParam), 0,
- &layoutBodyRender[0], numElements,
- 2);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD] = D3D12RenderShader::Create("ScreenQuadShader",
- (void*)ScreenQuadBlobs::g_vs_main, sizeof(ScreenQuadBlobs::g_vs_main),
- (void*)ScreenQuadBlobs::g_ps_main, sizeof(ScreenQuadBlobs::g_ps_main),
- 0, 0,
- 0, 0,
- 1, 0, 1);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD_COLOR] = D3D12RenderShader::Create("ScreenQuadColorShader",
- (void*)ScreenQuadColorBlobs::g_vs_main, sizeof(ScreenQuadColorBlobs::g_vs_main),
- (void*)ScreenQuadColorBlobs::g_ps_main, sizeof(ScreenQuadColorBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_VISUALIZE_SHADOW] = D3D12RenderShader::Create("VisualizeShadowShader",
- (void*)VisualizeShadowBlobs::g_vs_main, sizeof(VisualizeShadowBlobs::g_vs_main),
- (void*)VisualizeShadowBlobs::g_ps_main, sizeof(VisualizeShadowBlobs::g_ps_main),
- sizeof(ShadowVizParam), 0,
- 0, 0,
- 1, 0, 1);
-
- UINT numElements2 = sizeof(layout_Position_And_Color) / sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_SIMPLE_COLOR] = D3D12RenderShader::Create("Color",
- (void*)ColorBlobs::g_vs_main, sizeof(ColorBlobs::g_vs_main),
- (void*)ColorBlobs::g_ps_main, sizeof(ColorBlobs::g_ps_main),
- sizeof(SimpleShaderParam), 0,
- &layout_Position_And_Color[0], numElements2);
-
- g_pShaders[SHADER_TYPE_HAIR_SHADER_DEFAULT] = D3D12RenderShader::Create(
- "hairShaderDefault", 0, 0,
- (void*)BlastShaderBlobs::g_ps_main, sizeof(BlastShaderBlobs::g_ps_main),
- sizeof(NvHair::ShaderConstantBuffer),
- sizeof(LightShaderParam)
- );
-
- g_pShaders[SHADER_TYPE_HAIR_SHADER_SHADOW] = D3D12RenderShader::Create(
- "hairShadow", 0, 0,
- (void*)BlastShadowBlobs::g_ps_main, sizeof(BlastShadowBlobs::g_ps_main),
- sizeof(NvHair::ShaderConstantBuffer),
- 0);
- */
- return true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) { if (x) delete x; x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-void DestroyShadersD3D12()
-{
- for (int i = 0; i < g_pShaders.size(); i++)
- {
- D3D12RenderShader*& pShader = g_pShaders[i];
- if (pShader)
- {
- delete pShader;
- pShader = 0;
- }
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader* GetShaderD3D12(SHADER_TYPE st)
-{
- return g_pShaders[st];
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyShaderD3D12(SHADER_TYPE st)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- pD3D12Shader->MakeCurrent();
-}
-
-void BindShaderResourcesD3D12(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- for (int i = 0; i < numSRVs; i++)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = D3D12TextureResource::GetHandle(ppSRVs[i]);
- pD3D12Shader->BindShaderResource(i, handle);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void DisableShaderD3D12(RenderInterface::SHADER_TYPE st)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- pD3D12Shader->Disable();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParamD3D12(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- void* mappedParam = pD3D12Shader->MapParam(slot);
-
- memcpy(mappedParam, pSysMem, bytes);
-
- pD3D12Shader->UnmapParam(slot);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h
deleted file mode 100644
index 29b0e1b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderInterface.h"
-#include "RenderPlugin.h"
-///////////////////////////////////////////////////////////////////
-// default shaders
-///////////////////////////////////////////////////////////////////
-CORERENDER_EXPORT bool InitializeShadersD3D12();
-CORERENDER_EXPORT void DestroyShadersD3D12();
-
-CORERENDER_EXPORT void ApplyShaderD3D12(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void DisableShaderD3D12(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void BindShaderResourcesD3D12(RenderInterface::SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
-CORERENDER_EXPORT void CopyShaderParamD3D12(RenderInterface::SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp
deleted file mode 100644
index 342c6f3..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12ShadowMap.h"
-
-#include "RenderResources.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12TextureResource.h"
-#include "D3D12RenderContext.h"
-
-//////////////////////////////////////////////////////////////////////////////
-D3D12ShadowMap::D3D12ShadowMap(int resolution)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- m_nIndex = pContext->AllocRenderTargetIndex();
- m_pRenderTarget = pContext->CreateRenderTarget(m_nIndex, resolution, resolution);
- ID3D12Resource* pTexture = pContext->GetTexture(m_nIndex);
- int nIndexInHeap = -1;
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = pContext->NVHairINT_CreateD3D12Texture(pTexture, nIndexInHeap);
- m_ShadowResource.m_pResource = pTexture;
- m_ShadowResource.m_Handle = handle;
- m_ShadowResource.m_nIndexInHeap = nIndexInHeap;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D12ShadowMap::~D3D12ShadowMap()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->NVHairINT_DestroyD3D12Texture(m_ShadowResource.m_nIndexInHeap);
-
- Release();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::Release()
-{
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* D3D12ShadowMap::GetShadowSRV()
-{
- return &m_ShadowResource;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool D3D12ShadowMap::isValid()
-{
- return m_pRenderTarget != nullptr;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::BeginRendering(float clearDepth)
-{
- if (!isValid())
- return;
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->ReleaseRenderTarget();
-
- pContext->AcquireRenderTarget(true, m_nIndex);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::EndRendering()
-{
- if (!isValid())
- return;
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->ReleaseRenderTarget(m_nIndex);
-
- pContext->AcquireRenderTarget();
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h
deleted file mode 100644
index dabf9a1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "ShadowMap.h"
-
-#include <d3d11.h>
-#include <d3d12.h>
-#include "D3D12TextureResource.h"
-
-#include "DXUT.h" // DXUT header
-#include "d3dx12.h"
-
-#include "D3D12RenderTarget.h"
-
-using namespace Microsoft::WRL;
-
-class GPUShaderResource;
-class D3D12TextureResource;
-
-struct D3D12ShadowMap : public ShadowMap
-{
- D3D12TextureResource m_ShadowResource;
-
- D3D12RenderTarget* m_pRenderTarget;
-
-public:
- D3D12ShadowMap(int resolution );
- ~D3D12ShadowMap();
-
- void Release();
- void BeginRendering(float clearDepth);
- void EndRendering();
-
- GPUShaderResource* GetShadowSRV();
-
-protected:
-
- bool isValid();
- int m_nIndex;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp
deleted file mode 100644
index 0247895..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12TextureResource.h"
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h
deleted file mode 100644
index b6c7584..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d12.h"
-#include "d3dx12.h"
-
-// GPU resources for texture
-struct D3D12TextureResource : public GPUShaderResource
-{
- ID3D12Resource* m_pResource;
- CD3DX12_CPU_DESCRIPTOR_HANDLE m_Handle;
- int m_nIndexInHeap;
-
-public:
- static GPUShaderResource* Create(
- ID3D12Resource* pResource,
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle,
- int nIndexInHeap) {
- D3D12TextureResource* pBuffer = new D3D12TextureResource;
- pBuffer->m_pResource = pResource;
- pBuffer->m_Handle = handle;
- pBuffer->m_nIndexInHeap = nIndexInHeap;
- return pBuffer;
- }
-
- static ID3D12Resource* GetResource(GPUShaderResource* pBuffer)
- {
- D3D12TextureResource* pD3D12Buffer = dynamic_cast<D3D12TextureResource*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
- return pD3D12Buffer->m_pResource;
- }
-
- static CD3DX12_CPU_DESCRIPTOR_HANDLE GetHandle(GPUShaderResource* pBuffer)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = {};
- D3D12TextureResource* pD3D12Buffer = dynamic_cast<D3D12TextureResource*>(pBuffer);
- if (pD3D12Buffer)
- handle = pD3D12Buffer->m_Handle;
- else
- handle.ptr = 0;
- return handle;
- }
-
- D3D12TextureResource()
- {
- m_pResource = 0;
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pResource);
- }
-
- ~D3D12TextureResource()
- {
- Release();
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp
deleted file mode 100644
index 695bb41..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include <DirectXTex.h>
-#include "D3D12Util.h"
-
-#include "D3D12Shaders.h"
-#include "D3D12RenderShader.h"
-
-#include "D3DX10tex.h"
-#include "D3DX11tex.h"
-
-#include "D3D12Wrapper.h"
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-#include "D3D12RendererWindow.h"
-#include "SimpleRenderable.h"
-//#include "MeshShaderParam.h"
-#include "D3D12RenderInterface.h"
-#include "D3D12TextureResource.h"
-#include "D3D12RenderContext.h"
-namespace D3D12Util
-{
- using namespace RenderInterface;
-
- // D3D hook to render window
- D3D12RenderWindow* g_pRenderWindow = 0;
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource*
- CreateTextureSRV(const char* texturename)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return 0;
- ID3D12Device* pDevice = pContext->GetDevice();
- if (!pDevice)
- return 0;
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- if (!pCommandList)
- return 0;
-
- unsigned char *pSTBIRes = 0;
- int width = 0;
- int height = 0;
-
- size_t nu = strlen(texturename);
- size_t n = (size_t)MultiByteToWideChar(CP_ACP, 0, (const char *)texturename, (int)nu, NULL, 0);
- wchar_t* pwstr = new wchar_t[n];
- MultiByteToWideChar(CP_ACP, 0, (const char *)texturename, (int)nu, pwstr, (int)n);
- pwstr[n] = 0;
-
- TexMetadata texMetadata;
- ScratchImage scratchImage;
- HRESULT loaded = LoadFromTGAFile(pwstr, &texMetadata, scratchImage);
-
- if (loaded != S_OK)
- {
- loaded = LoadFromWICFile(pwstr, TEX_FILTER_DEFAULT | WIC_FLAGS_ALL_FRAMES, &texMetadata, scratchImage);
- }
-
- if (loaded != S_OK)
- {
- loaded = LoadFromDDSFile(pwstr, DDS_FLAGS_NONE, &texMetadata, scratchImage);
- }
-
- if (loaded == S_OK)
- {
- pSTBIRes = scratchImage.GetPixels();
- width = texMetadata.width;
- height = texMetadata.height;
- }
-
- if (!pSTBIRes)
- return 0;
-
- int numMipMaps = 0;
- {
- int mipWidth = width;
- int mipHeight = height;
- while (mipWidth > 1 || mipHeight > 1)
- {
- numMipMaps++;
- mipWidth >>= 1;
- mipHeight >>= 1;
-
- if ((mipWidth * sizeof(uint32_t)) < D3D12_TEXTURE_DATA_PITCH_ALIGNMENT)
- break;
- }
- }
-
- std::vector<D3D12_PLACED_SUBRESOURCE_FOOTPRINT> layouts(numMipMaps);
- std::vector<uint64_t> row_sizes_in_bytes(numMipMaps);
- std::vector<uint32_t> num_rows(numMipMaps);
-
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(
- DXGI_FORMAT_R8G8B8A8_UNORM, width, height, 1, (UINT16)numMipMaps, 1, 0, D3D12_RESOURCE_FLAG_NONE,
- D3D12_TEXTURE_LAYOUT_UNKNOWN, 0);
-
- uint64_t required_size = 0;
- pDevice->GetCopyableFootprints(&resourceDesc, 0, numMipMaps, 0, &layouts[0], &num_rows[0], &row_sizes_in_bytes[0], &required_size);
-
- HRESULT hr;
- ID3D12Resource* mTextureUpload;
- ID3D12Resource* mTexture;
-
- hr = pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_COPY_DEST,
- nullptr,
- IID_PPV_ARGS(&mTexture));
- mTexture->SetName(L"Texture");
- hr = pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(required_size),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&mTextureUpload));
- mTextureUpload->SetName(L"TextureUpload");
-
- const int requestedMipLevels = numMipMaps;
- D3D12_SUBRESOURCE_DATA* initData = new D3D12_SUBRESOURCE_DATA[requestedMipLevels];
- ZeroMemory(initData, sizeof(D3D12_SUBRESOURCE_DATA)*requestedMipLevels);
-
- struct Pixel
- {
- unsigned char rgba[4];
- };
-
- // prepare target buffer just large enough to include all the mip levels
- Pixel* targets = new Pixel[width*height * 2];
-
- // copy the first mip level
- memcpy(targets, pSTBIRes, width*height * 4);
-
- // current mip level width and height
- int mipWidth = width;
- int mipHeight = height;
-
- // actual mip levels
- int mipLevels = 0;
-
- // current data
- Pixel* source = targets;
- Pixel* target = nullptr;
-
- for (int idx = 0; idx < requestedMipLevels; ++idx)
- {
- // set initData
- initData[idx].pData = source;
- initData[idx].RowPitch = mipWidth * 4;
- mipLevels++;
-
- // skip generating mip for 1x1
- if ((mipWidth == 1) && (mipHeight == 1))
- break;
-
- // skip generating mip for the last level
- if (idx == (requestedMipLevels - 1))
- break;
-
- // buffer for the next mip level
- target = &source[mipWidth*mipHeight];
-
- const int prevWidth = mipWidth; // previous mip's width
-
- // generate the next mip level
- mipWidth = max(1, mipWidth >> 1);
- mipHeight = max(1, mipHeight >> 1);
-
- Pixel samples[4];
-
- for (int y = 0; y < mipHeight; ++y)
- {
- for (int x = 0; x < mipWidth; ++x)
- {
- const int px = x * 2; // x in previous mip
- const int py = y * 2; // y in previous mip
-
- samples[0] = source[py*prevWidth + px]; // left top
- samples[1] = source[py*prevWidth + px + 1]; // right top
- samples[2] = source[(py + 1)*prevWidth + px]; // left bottom
- samples[3] = source[(py + 1)*prevWidth + px + 1]; // right bottom
-
- // for each component
- for (int comp = 0; comp < 4; ++comp)
- {
- // do the linear box filter for lower mip level
- target[y*mipWidth + x].rgba[comp] = (samples[0].rgba[comp] + samples[1].rgba[comp] + samples[2].rgba[comp] + samples[3].rgba[comp]) / 4;
- }
- }
- }
-
- // update source
- source = target;
- }
-
- uint8_t* p;
- mTextureUpload->Map(0, nullptr, reinterpret_cast<void**>(&p));
- for (uint32_t i = 0; i < numMipMaps; ++i)
- {
- memcpy(p + layouts[i].Offset, initData[i].pData, layouts[i].Footprint.RowPitch * num_rows[i]);
- }
- mTextureUpload->Unmap(0, nullptr);
-
- for (uint32_t i = 0; i < numMipMaps; ++i)
- {
- D3D12_TEXTURE_COPY_LOCATION src;
- src.pResource = mTextureUpload;
- src.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
- src.PlacedFootprint = layouts[i];
-
- D3D12_TEXTURE_COPY_LOCATION dst;
- dst.pResource = mTexture;
- dst.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- dst.SubresourceIndex = i;
- pCommandList->CopyTextureRegion(&dst, 0, 0, 0, &src, nullptr);
- }
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(mTexture, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
-
- delete initData;
- delete targets;
-
- int nIndexInHeap = -1;
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = pContext->NVHairINT_CreateD3D12Texture(mTexture, nIndexInHeap);
- return D3D12TextureResource::Create(mTexture, handle, nIndexInHeap);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- ID3D11Device* pDevice = nullptr;// RenderInterfaceD3D12::GetDevice();
- if (!pDevice)
- return false;
-
- {
- IDXGIDevice1 *pDXGIDevice1 = NULL;
- pDevice->QueryInterface(__uuidof(IDXGIDevice1), reinterpret_cast<void **>(&pDXGIDevice1));
-
- IDXGIAdapter1 *pDXGIAdapter1 = NULL;
- pDXGIDevice1->GetParent(__uuidof(IDXGIAdapter1), reinterpret_cast<void **>(&pDXGIAdapter1));
-
- if (pDXGIAdapter1)
- {
- auto adapterDescription = DXGI_ADAPTER_DESC1();
- pDXGIAdapter1->GetDesc1(&adapterDescription);
-
- WCHAR* pDescStr = adapterDescription.Description;
- float memInGB = float(adapterDescription.DedicatedVideoMemory) / 1e9f;
- swprintf_s(str, 1000, L"%s(%.1fGb)\n", pDescStr, memInGB);
- }
- }
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- SAFE_DELETE(g_pRenderWindow);
-
- g_pRenderWindow = new D3D12RenderWindow;
- return g_pRenderWindow->Create(hWnd, nSamples);
-}
-
-D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles)
-{
- /*
- deviceHandles.pAdapter = RenderInterfaceD3D11::GetAdapter();
- deviceHandles.pFactory = RenderInterfaceD3D11::GetDXGIFactory();
- deviceHandles.pDevice = RenderInterfaceD3D11::GetDevice();
- deviceHandles.pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
-
- deviceHandles.pDXGISwapChain = g_pRenderWindow->m_pDXGISwapChain;
- deviceHandles.pD3D11BackBuffer = g_pRenderWindow->m_pD3D11BackBuffer;
- deviceHandles.pD3D11RenderTargetView = g_pRenderWindow->m_pD3D11RenderTargetView;
- deviceHandles.pD3D11DepthBuffer = g_pRenderWindow->m_pD3D11DepthBuffer;
- deviceHandles.pD3D11DepthStencilView = g_pRenderWindow->m_pD3D11DepthStencilView;
- */
- return deviceHandles;
-}
-
-void DestroyRenderWindow()
-{
- SAFE_DELETE(g_pRenderWindow);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- if (!g_pRenderWindow)
- return false;
-
- return g_pRenderWindow->Resize(w,h);
-}
-
-void PresentRenderWindow()
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Present();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Clear(r,g,b);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->Begin();
-}
-
-void TxtHelperEnd()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->End();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetInsertionPos(x, y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetForegroundColor(DirectX::XMFLOAT4(r,g,b,a));
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->DrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h
deleted file mode 100644
index f83b063..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d12.h>
-
-#include "RenderPlugin.h"
-
-class GPUShaderResource;
-
-namespace D3D12Util
-{
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
- bool CreateRenderWindow(HWND hWnd, int nSamples);
- void DestroyRenderWindow();
- bool ResizeRenderWindow(int w, int h);
- void PresentRenderWindow();
- void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
- GPUShaderResource* CreateTextureSRV(const char* texturename);
-
- ///////////////////////////////////////////////////////////////////
- bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- void TxtHelperBegin();
- void TxtHelperEnd();
- void TxtHelperSetInsertionPos(int x, int y);
- void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- void TxtHelperDrawTextLine(wchar_t* str);
-
-
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp
deleted file mode 100644
index b534a36..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Wrapper.h"
-
-namespace D3DWrapper
-{
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h
deleted file mode 100644
index dc81e34..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <d3d11.h>
-
-namespace D3DWrapper
-{
- inline void SetDebugName(ID3D11DeviceChild* pResource, const char *name)
- {
- if (pResource) pResource->SetPrivateData( WKPDID_D3DDebugObjectName, strlen(name), name);
- }
-}
-
-#define SET_D3D_DEBUG_NAME(x, name) D3DWrapper::SetDebugName(x, name);
-#define SET_D3D_DEBUG_NAME_VAR(x) D3DWrapper::SetDebugName(x, #x);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp
deleted file mode 100644
index 9945d7c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-#include "RenderPluginDx12.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12Util.h"
-#include "D3D12Shaders.h"
-#include "D3D12GPUProfiler.h"
-#include "D3D12ShadowMap.h"
-#include "D3D12RenderContext.h"
-
-RenderPlugin* CreateRenderPlugin(void)
-{
- return new RenderPluginDx12;
-}
-
-RenderPluginDx12::RenderPluginDx12()
-{
- m_RenderApi = "Dx12";
-}
-
-RenderPluginDx12::~RenderPluginDx12()
-{
-}
-
-// interface
-bool RenderPluginDx12::InitDevice(int deviceID)
-{
- return RenderInterfaceD3D12::InitDevice(deviceID);
-}
-
-bool RenderPluginDx12::Initialize()
-{
- return RenderInterfaceD3D12::Initialize();
-}
-
-void RenderPluginDx12::Shutdown()
-{
- D3D12Util::DestroyRenderWindow();
- RenderInterfaceD3D12::Shutdown();
-}
-
-void RenderPluginDx12::CopyToDevice(GPUBufferResource *pDevicePtr,
- void* pSysMem, unsigned int ByteWidth)
-{
- RenderInterfaceD3D12::CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-void RenderPluginDx12::ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderInterfaceD3D12::ApplyDepthStencilState(state);
-}
-
-void RenderPluginDx12::ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderInterfaceD3D12::ApplyRasterizerState(state);
-}
-
-void RenderPluginDx12::ApplySampler(int slot, SAMPLER_TYPE state)
-{
-}
-
-void RenderPluginDx12::ApplyBlendState(BLEND_STATE state)
-{
- RenderInterfaceD3D12::ApplyBlendState(state);
-}
-
-void RenderPluginDx12::GetViewport(Viewport& vp)
-{
- RenderInterfaceD3D12::GetViewport(vp);
-}
-
-void RenderPluginDx12::SetViewport(const Viewport& vp)
-{
- RenderInterfaceD3D12::SetViewport(vp);
-}
-
-void RenderPluginDx12::BindVertexShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx12::BindPixelShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx12::ClearVertexShaderResources(int startSlot, int numSRVs)
-{
-}
-
-void RenderPluginDx12::ClearPixelShaderResources(int startSlot, int numSRVs)
-{
-}
-
-void RenderPluginDx12::ClearInputLayout()
-{
-}
-
-void RenderPluginDx12::SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- RenderInterfaceD3D12::SetVertexBuffer(pBuffer, stride, offset);
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyTriangleStrip()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyTriangleStrip();
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyTriangleList()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyTriangleList();
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyLineList()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyLineList();
-}
-
-void RenderPluginDx12::Draw(unsigned int vertexCount, unsigned int startCount)
-{
- RenderInterfaceD3D12::Draw(vertexCount, startCount);
-}
-
-GPUBufferResource* RenderPluginDx12::CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem)
-{
- return RenderInterfaceD3D12::CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-GPUShaderResource* RenderPluginDx12::CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- return RenderInterfaceD3D12::CreateShaderResource(stride, numElements, pSysMem, pReadOnlyBuffer);
-}
-
-void RenderPluginDx12::ApplyForShadow(int ForShadow)
-{
- RenderInterfaceD3D12::ApplyForShadow(ForShadow);
-}
-
-void RenderPluginDx12::SwitchToDX11()
-{
- RenderInterfaceD3D12::SwitchToDX11();
-}
-
-void RenderPluginDx12::FlushDX11()
-{
- RenderInterfaceD3D12::FlushDX11();
-}
-
-void RenderPluginDx12::FlushDX12()
-{
- RenderInterfaceD3D12::FlushDX12();
-}
-
-void RenderPluginDx12::ApplyPrimitiveTopologyLine()
-{
- RenderInterfaceD3D12::ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE);
-}
-
-void RenderPluginDx12::ApplyPrimitiveTopologyTriangle()
-{
- RenderInterfaceD3D12::ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE);
-}
-
-void RenderPluginDx12::SubmitGpuWork()
-{
- RenderInterfaceD3D12::SubmitGpuWork();
-}
-
-void RenderPluginDx12::WaitForGpu()
-{
- RenderInterfaceD3D12::WaitForGpu();
-}
-
-// util
-bool RenderPluginDx12::CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return D3D12Util::CreateRenderWindow(hWnd, nSamples);
-}
-
-bool RenderPluginDx12::ResizeRenderWindow(int w, int h)
-{
- return D3D12Util::ResizeRenderWindow(w, h);
-}
-
-void RenderPluginDx12::PresentRenderWindow()
-{
- D3D12Util::PresentRenderWindow();
-}
-
-void RenderPluginDx12::ClearRenderWindow(float r, float g, float b)
-{
- D3D12Util::ClearRenderWindow(r, g, b);
-}
-
-bool RenderPluginDx12::GetDeviceInfoString(wchar_t *str)
-{
- return D3D12Util::GetDeviceInfoString(str);
-}
-
-GPUShaderResource* RenderPluginDx12::CreateTextureSRV(const char* texturename)
-{
- return D3D12Util::CreateTextureSRV(texturename);
-}
-
-void RenderPluginDx12::TxtHelperBegin()
-{
- D3D12Util::TxtHelperBegin();
-}
-
-void RenderPluginDx12::TxtHelperEnd()
-{
- D3D12Util::TxtHelperEnd();
-}
-
-void RenderPluginDx12::TxtHelperSetInsertionPos(int x, int y)
-{
- D3D12Util::TxtHelperSetInsertionPos(x, y);
-}
-
-void RenderPluginDx12::TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- D3D12Util::TxtHelperSetForegroundColor(r, g, b, a);
-}
-
-void RenderPluginDx12::TxtHelperDrawTextLine(wchar_t* str)
-{
- D3D12Util::TxtHelperDrawTextLine(str);
-}
-
-// shader
-bool RenderPluginDx12::InitializeShaders()
-{
- return InitializeShadersD3D12();
-}
-
-void RenderPluginDx12::DestroyShaders()
-{
- DestroyShadersD3D12();
-}
-
-void RenderPluginDx12::ApplyShader(SHADER_TYPE st)
-{
- ApplyShaderD3D12(st);
-}
-
-void RenderPluginDx12::DisableShader(SHADER_TYPE st)
-{
- DisableShaderD3D12(st);
-}
-
-void RenderPluginDx12::BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
- BindShaderResourcesD3D12(st, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx12::CopyShaderParam(SHADER_TYPE st,
- void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- CopyShaderParamD3D12(st, pSysMem, bytes, slot);
-}
-
-// GPUProfiler
-GPUProfiler* RenderPluginDx12::CreateGPUProfiler()
-{
- GPUProfiler* pProfiler = new D3D12GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-
-// ShadowMap
-ShadowMap* RenderPluginDx12::CreateShadowMap(int resolution)
-{
- return new D3D12ShadowMap(resolution);
-}
-
-// D3D12RenderContext
-void RenderPluginDx12::PreRender()
-{
- D3D12RenderContext::Instance()->PreRender();
-}
-
-void RenderPluginDx12::PostRender()
-{
- D3D12RenderContext::Instance()->PostRender();
-}
-
-// GPUMeshResources
-#include "MeshData.h"
-#include "AnimUtil.h"
-
-class GPUMeshResourcesDx12 : public GPUMeshResources
-{
-public:
- NVHairReadOnlyBuffer m_BoneIndicesBuffer;
- NVHairReadOnlyBuffer m_BoneWeightsBuffer;
-};
-
-GPUMeshResources* RenderPluginDx12::GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData)
-{
- GPUMeshResources* resources = new GPUMeshResourcesDx12;
-
- int numIndices = pMeshData->m_NumIndices;
- int numVertices = pMeshData->m_NumVertices;
-
- resources->m_pVertexBuffer = CreateVertexBuffer(
- sizeof(MeshData::MeshVertex) * numIndices, pMeshData->m_pMeshVertices);
-
- GPUMeshResourcesDx12* resourceDx12 = (GPUMeshResourcesDx12*)resources;
- if (NULL != resourceDx12)
- {
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->InitBuffer(resourceDx12->m_BoneIndicesBuffer);
- pContext->InitBuffer(resourceDx12->m_BoneWeightsBuffer);
- resources->m_pBoneIndicesSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneIndices, &resourceDx12->m_BoneIndicesBuffer);
- resources->m_pBoneWeightsSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneWeights, &resourceDx12->m_BoneWeightsBuffer);
- }
-
- return resources;
-}
-
-void RenderPluginDx12::GPUMeshResourcesRelease(GPUMeshResources* pResource)
-{
- SAFE_RELEASE(pResource->m_pVertexBuffer);
- SAFE_RELEASE(pResource->m_pBoneIndicesSRV);
- SAFE_RELEASE(pResource->m_pBoneWeightsSRV);
-
- GPUMeshResourcesDx12* pResourceDx12 = (GPUMeshResourcesDx12*)pResource;
- if (NULL == pResourceDx12)
- {
- return;
- }
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->DestroyBuffer(pResourceDx12->m_BoneIndicesBuffer);
- pContext->DestroyBuffer(pResourceDx12->m_BoneWeightsBuffer);
-}
-
-D3DHandles& RenderPluginDx12::GetDeviceHandles(D3DHandles& deviceHandles)
-{
- return D3D12Util::GetDeviceHandles(deviceHandles);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h
deleted file mode 100644
index a88dfbf..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma once
-
-#include "RenderPlugin.h"
-
-extern "C" CORERENDER_EXPORT RenderPlugin* CreateRenderPlugin(void);
-
-class CORERENDER_EXPORT RenderPluginDx12 : public RenderPlugin
-{
-public:
- RenderPluginDx12();
- ~RenderPluginDx12();
-
- // interface
- virtual bool InitDevice(int deviceID);
- virtual bool Initialize();
- virtual void Shutdown();
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- virtual void ApplyRasterizerState(RASTERIZER_STATE state);
- virtual void ApplySampler(int slot, SAMPLER_TYPE st);
- virtual void ApplyBlendState(BLEND_STATE st);
- virtual void GetViewport(Viewport& vp);
- virtual void SetViewport(const Viewport& vp);
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs);
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs);
- virtual void ClearInputLayout();
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
- virtual void SetPrimitiveTopologyTriangleStrip();
- virtual void SetPrimitiveTopologyTriangleList();
- virtual void SetPrimitiveTopologyLineList();
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0);
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0);
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL);
- virtual void ApplyForShadow(int ForShadow);
- virtual void SwitchToDX11();
- virtual void FlushDX11();
- virtual void FlushDX12();
- virtual void ApplyPrimitiveTopologyLine();
- virtual void ApplyPrimitiveTopologyTriangle();
- virtual void SubmitGpuWork();
- virtual void WaitForGpu();
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples);
- virtual bool ResizeRenderWindow(int w, int h);
- virtual void PresentRenderWindow();
- virtual void ClearRenderWindow(float r, float g, float b);
- virtual bool GetDeviceInfoString(wchar_t *str);
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename);
- virtual void TxtHelperBegin();
- virtual void TxtHelperEnd();
- virtual void TxtHelperSetInsertionPos(int x, int y);
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- virtual void TxtHelperDrawTextLine(wchar_t* str);
-
- // shader
- virtual bool InitializeShaders();
- virtual void DestroyShaders();
- virtual void ApplyShader(SHADER_TYPE st);
- virtual void DisableShader(SHADER_TYPE st);
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler();
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution);
-
- // D3D12RenderContext
- virtual void PreRender();
- virtual void PostRender();
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData);
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource);
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp
deleted file mode 100644
index 08a3497..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "GPUProfiler.h"
-
-#include "RenderPlugin.h"
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) {if(x){delete x; x=nullptr;}}
-#endif
-
-GPUProfiler* g_pGPUProfiler = 0;
-
-void GPUProfiler_Initialize()
-{
- g_pGPUProfiler = RenderPlugin::Instance()->CreateGPUProfiler();
-}
-
-void GPUProfiler_Shutdown()
-{
- SAFE_DELETE(g_pGPUProfiler);
-}
-
-void GPUProfiler_Enable(bool b)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->Enable(b);
-}
-
-void GPUProfiler_StartFrame()
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->StartFrame();
-}
-
-void GPUProfiler_EndFrame()
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->EndFrame();
-}
-
-void GPUProfiler_StartProfile(int id)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->StartProfile(id);
-}
-
-void GPUProfiler_EndProfile(int id)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->EndProfile(id);
-}
-
-float GPUProfiler_GetProfileData(int id)
-{
- if (!g_pGPUProfiler)
- return 0;
-
- return g_pGPUProfiler->GetProfileData(id);
-}
-
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h
deleted file mode 100644
index 65bb602..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "corelib_global.h"
-
-struct CORELIB_EXPORT GPUProfiler
-{
- bool m_enable;
-
-public:
- // define base class virtual destructor to make sure child classes call destructor right.
- virtual ~GPUProfiler() {}
-
- void Enable(bool b) { m_enable = b; }
-
- virtual void Initialize() = 0;
- virtual void Release() = 0;
- virtual void StartFrame() = 0;
- virtual void EndFrame() = 0;
- virtual void StartProfile(int id) = 0;
- virtual void EndProfile(int id) = 0;
- virtual float GetProfileData(int id) = 0;
-};
-
-// helper functions
-CORELIB_EXPORT void GPUProfiler_Initialize();
-CORELIB_EXPORT void GPUProfiler_Enable(bool);
-CORELIB_EXPORT void GPUProfiler_Shutdown();
-CORELIB_EXPORT void GPUProfiler_StartFrame();
-CORELIB_EXPORT void GPUProfiler_EndFrame();
-CORELIB_EXPORT void GPUProfiler_StartProfile(int id);
-CORELIB_EXPORT void GPUProfiler_EndProfile(int id);
-CORELIB_EXPORT float GPUProfiler_GetProfileData(int id);
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h
deleted file mode 100644
index 4a6ea37..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h
+++ /dev/null
@@ -1,305 +0,0 @@
-const int num_faces = 100;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[100*3*8] = {
-0.250000, -0.951057, -0.181636, 0.000000, 0.900000, 0.277578, -0.881468, -0.382053,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, 0.277578, -0.881468, -0.382053,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, 0.277578, -0.881468, -0.382053,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, -0.000000, -0.881468, -0.472244,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.000000, -0.881468, -0.472244,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.000000, -0.881468, -0.472244,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.277578, -0.881468, -0.382053,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.277578, -0.881468, -0.382053,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.277578, -0.881468, -0.382053,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.449130, -0.881468, -0.145931,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.449130, -0.881468, -0.145931,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.449130, -0.881468, -0.145931,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.449130, -0.881468, 0.145931,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.449130, -0.881468, 0.145931,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.449130, -0.881468, 0.145931,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.277578, -0.881468, 0.382053,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, -0.277578, -0.881468, 0.382053,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, -0.277578, -0.881468, 0.382053,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, 0.000000, -0.881468, 0.472244,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.000000, -0.881468, 0.472244,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.000000, -0.881468, 0.472244,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.277578, -0.881468, 0.382053,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.277578, -0.881468, 0.382053,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.277578, -0.881468, 0.382053,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.449130, -0.881468, 0.145931,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.449130, -0.881468, 0.145931,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.449131, -0.881468, 0.145931,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.449131, -0.881468, -0.145931,
-0.250000, -0.951057, -0.181636, 1.000000, 0.900000, 0.449131, -0.881468, -0.145931,
-0.475528, -0.809017, -0.345492, 1.000000, 0.800000, 0.449131, -0.881468, -0.145931,
-0.475528, -0.809017, -0.345492, 0.000000, 0.800000, 0.425919, -0.689152, -0.586227,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, 0.425919, -0.689152, -0.586227,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, 0.425919, -0.689152, -0.586227,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, -0.000000, -0.689152, -0.724617,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.000000, -0.689152, -0.724617,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.000000, -0.689152, -0.724617,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.425919, -0.689152, -0.586228,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.425919, -0.689152, -0.586228,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.425919, -0.689152, -0.586228,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.689152, -0.689152, -0.223919,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.689152, -0.689152, -0.223919,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.689152, -0.689152, -0.223919,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.689152, -0.689152, 0.223919,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.689152, -0.689152, 0.223919,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.689152, -0.689152, 0.223919,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.425919, -0.689152, 0.586228,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, -0.425919, -0.689152, 0.586228,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, -0.425919, -0.689152, 0.586228,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, 0.000000, -0.689152, 0.724617,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.000000, -0.689152, 0.724617,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.000000, -0.689152, 0.724617,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.425919, -0.689152, 0.586227,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.425919, -0.689152, 0.586227,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.425919, -0.689152, 0.586227,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.689152, -0.689152, 0.223919,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.689152, -0.689152, 0.223919,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.689152, -0.689152, 0.223919,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.689152, -0.689152, -0.223919,
-0.475528, -0.809017, -0.345492, 1.000000, 0.800000, 0.689152, -0.689152, -0.223919,
-0.654509, -0.587785, -0.475528, 1.000000, 0.700000, 0.689152, -0.689152, -0.223919,
-0.654509, -0.587785, -0.475528, 0.000000, 0.700000, 0.528952, -0.436083, -0.728040,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, 0.528952, -0.436083, -0.728040,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, 0.528952, -0.436083, -0.728040,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, -0.000000, -0.436083, -0.899906,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.000000, -0.436083, -0.899906,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.000000, -0.436083, -0.899906,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.528952, -0.436083, -0.728040,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.528952, -0.436083, -0.728040,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.528952, -0.436083, -0.728040,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.855862, -0.436083, -0.278086,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.855862, -0.436083, -0.278086,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.855862, -0.436083, -0.278086,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.855862, -0.436083, 0.278086,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.855862, -0.436083, 0.278086,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.855862, -0.436083, 0.278086,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.528952, -0.436083, 0.728040,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, -0.528952, -0.436083, 0.728039,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, -0.528952, -0.436083, 0.728039,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, 0.000000, -0.436083, 0.899906,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.000000, -0.436083, 0.899906,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.000000, -0.436083, 0.899906,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.528952, -0.436083, 0.728039,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.528952, -0.436083, 0.728040,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.528952, -0.436083, 0.728040,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.855862, -0.436083, 0.278086,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.855862, -0.436083, 0.278086,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.855862, -0.436083, 0.278086,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.855862, -0.436084, -0.278086,
-0.654509, -0.587785, -0.475528, 1.000000, 0.700000, 0.855862, -0.436084, -0.278086,
-0.769421, -0.309017, -0.559017, 1.000000, 0.600000, 0.855862, -0.436084, -0.278086,
-0.769421, -0.309017, -0.559017, 0.000000, 0.600000, 0.581228, -0.148952, -0.799992,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, 0.581228, -0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, 0.581228, -0.148952, -0.799992,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, -0.000000, -0.148952, -0.988844,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.000000, -0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.000000, -0.148952, -0.988844,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.581228, -0.148952, -0.799992,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.581228, -0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.581228, -0.148952, -0.799992,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.940447, -0.148952, -0.305570,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.940447, -0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, -0.148952, -0.305570,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.940447, -0.148952, 0.305570,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.940447, -0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.940447, -0.148952, 0.305570,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.581228, -0.148952, 0.799992,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, -0.581228, -0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, -0.581228, -0.148952, 0.799992,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, 0.000000, -0.148952, 0.988844,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.000000, -0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.000000, -0.148952, 0.988844,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.581228, -0.148952, 0.799992,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.581228, -0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.581228, -0.148952, 0.799992,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.940447, -0.148952, 0.305570,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.940447, -0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, -0.148952, 0.305570,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.940447, -0.148952, -0.305570,
-0.769421, -0.309017, -0.559017, 1.000000, 0.600000, 0.940447, -0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 1.000000, 0.500000, 0.940447, -0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 0.000000, 0.500000, 0.581228, 0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, 0.581228, 0.148952, -0.799992,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, 0.581228, 0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, -0.000000, 0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.000000, 0.148952, -0.988844,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.000000, 0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.581228, 0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.581228, 0.148952, -0.799992,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.581228, 0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.940447, 0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, 0.148952, -0.305570,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.940447, 0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, 0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.940447, 0.148952, 0.305570,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.940447, 0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.581228, 0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, -0.581228, 0.148952, 0.799992,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, -0.581228, 0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, 0.000000, 0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.000000, 0.148952, 0.988844,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.000000, 0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.581228, 0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.581228, 0.148952, 0.799992,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.581228, 0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.940447, 0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, 0.148952, 0.305570,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.940447, 0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, 0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 1.000000, 0.500000, 0.940447, 0.148952, -0.305570,
-0.769421, 0.309017, -0.559017, 1.000000, 0.400000, 0.940447, 0.148952, -0.305569,
-0.769421, 0.309017, -0.559017, 0.000000, 0.400000, 0.528952, 0.436083, -0.728040,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, 0.528952, 0.436083, -0.728040,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, 0.528952, 0.436083, -0.728040,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, -0.000000, 0.436083, -0.899906,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.000000, 0.436083, -0.899906,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.000000, 0.436083, -0.899906,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.528952, 0.436083, -0.728039,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.528952, 0.436083, -0.728039,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.528952, 0.436083, -0.728039,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.855862, 0.436083, -0.278086,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.855862, 0.436083, -0.278086,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.855862, 0.436083, -0.278086,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.855862, 0.436083, 0.278086,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.855862, 0.436083, 0.278086,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.855862, 0.436083, 0.278086,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.528952, 0.436083, 0.728039,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, -0.528952, 0.436083, 0.728039,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, -0.528952, 0.436083, 0.728039,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, 0.000000, 0.436083, 0.899906,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.000000, 0.436083, 0.899906,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.000000, 0.436083, 0.899906,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.528952, 0.436083, 0.728040,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.528952, 0.436083, 0.728040,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.528952, 0.436083, 0.728040,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.855862, 0.436083, 0.278086,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.855862, 0.436083, 0.278086,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.855862, 0.436083, 0.278086,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.855862, 0.436084, -0.278086,
-0.769421, 0.309017, -0.559017, 1.000000, 0.400000, 0.855862, 0.436084, -0.278086,
-0.654509, 0.587785, -0.475528, 1.000000, 0.300000, 0.855862, 0.436084, -0.278086,
-0.654509, 0.587785, -0.475528, 0.000000, 0.300000, 0.425919, 0.689152, -0.586227,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, 0.425919, 0.689152, -0.586227,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, 0.425919, 0.689152, -0.586227,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, -0.000000, 0.689152, -0.724617,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.000000, 0.689152, -0.724617,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.000000, 0.689152, -0.724617,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.425919, 0.689152, -0.586227,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.425919, 0.689152, -0.586227,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.425919, 0.689152, -0.586227,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.689152, 0.689152, -0.223919,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.689152, 0.689152, -0.223919,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.689152, 0.689152, -0.223919,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.689152, 0.689152, 0.223919,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.689152, 0.689152, 0.223919,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.689152, 0.689152, 0.223919,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.425919, 0.689152, 0.586228,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, -0.425919, 0.689152, 0.586228,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, -0.425919, 0.689152, 0.586228,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, 0.000000, 0.689152, 0.724617,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.000000, 0.689152, 0.724617,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.000000, 0.689152, 0.724617,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.425919, 0.689152, 0.586227,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.425919, 0.689152, 0.586227,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.425919, 0.689152, 0.586227,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.689152, 0.689152, 0.223919,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.689152, 0.689152, 0.223919,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.689152, 0.689152, 0.223919,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.689152, 0.689152, -0.223919,
-0.654509, 0.587785, -0.475528, 1.000000, 0.300000, 0.689152, 0.689152, -0.223919,
-0.475528, 0.809017, -0.345492, 1.000000, 0.200000, 0.689152, 0.689152, -0.223919,
-0.475528, 0.809017, -0.345492, 0.000000, 0.200000, 0.277578, 0.881468, -0.382053,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, 0.277578, 0.881468, -0.382053,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, 0.277578, 0.881468, -0.382053,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, -0.000000, 0.881468, -0.472244,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.000000, 0.881468, -0.472244,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.000000, 0.881468, -0.472244,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.277578, 0.881468, -0.382053,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.277578, 0.881468, -0.382053,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.277578, 0.881468, -0.382053,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.449130, 0.881468, -0.145931,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.449130, 0.881468, -0.145931,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.449130, 0.881468, -0.145931,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.449130, 0.881468, 0.145931,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.449130, 0.881468, 0.145931,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.449131, 0.881468, 0.145931,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.277578, 0.881468, 0.382053,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, -0.277578, 0.881468, 0.382053,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, -0.277578, 0.881468, 0.382053,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, 0.000000, 0.881468, 0.472244,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.000000, 0.881468, 0.472244,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.000000, 0.881468, 0.472244,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.277578, 0.881468, 0.382053,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.277578, 0.881468, 0.382053,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.277578, 0.881468, 0.382053,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.449131, 0.881468, 0.145931,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.449131, 0.881468, 0.145931,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.449130, 0.881468, 0.145931,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.449131, 0.881468, -0.145931,
-0.475528, 0.809017, -0.345492, 1.000000, 0.200000, 0.449131, 0.881468, -0.145931,
-0.250000, 0.951057, -0.181636, 1.000000, 0.100000, 0.449131, 0.881468, -0.145931,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, 0.096557, -0.986415, -0.132899,
-0.250000, -0.951057, -0.181636, 0.000000, 0.900000, 0.096557, -0.986415, -0.132899,
-0.000000, -1.000000, 0.000000, 0.050000, 1.000000, 0.096557, -0.986415, -0.132899,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.000000, -0.986415, -0.164272,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, -0.000000, -0.986415, -0.164272,
-0.000000, -1.000000, 0.000000, 0.150000, 1.000000, -0.000000, -0.986415, -0.164272,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.096557, -0.986415, -0.132899,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.096557, -0.986415, -0.132899,
-0.000000, -1.000000, 0.000000, 0.250000, 1.000000, -0.096557, -0.986415, -0.132899,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.156233, -0.986415, -0.050763,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.156233, -0.986415, -0.050763,
-0.000000, -1.000000, 0.000000, 0.350000, 1.000000, -0.156233, -0.986415, -0.050763,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.156233, -0.986415, 0.050763,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.156233, -0.986415, 0.050763,
-0.000000, -1.000000, 0.000000, 0.450000, 1.000000, -0.156233, -0.986415, 0.050763,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, -0.096557, -0.986415, 0.132899,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.096557, -0.986415, 0.132899,
-0.000000, -1.000000, 0.000000, 0.550000, 1.000000, -0.096557, -0.986415, 0.132899,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.000000, -0.986415, 0.164272,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, 0.000000, -0.986415, 0.164272,
-0.000000, -1.000000, 0.000000, 0.650000, 1.000000, 0.000000, -0.986415, 0.164272,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.096557, -0.986415, 0.132899,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.096557, -0.986415, 0.132899,
-0.000000, -1.000000, 0.000000, 0.750000, 1.000000, 0.096557, -0.986415, 0.132899,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.156233, -0.986415, 0.050763,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.156233, -0.986415, 0.050763,
-0.000000, -1.000000, 0.000000, 0.850000, 1.000000, 0.156233, -0.986415, 0.050763,
-0.250000, -0.951057, -0.181636, 1.000000, 0.900000, 0.156233, -0.986415, -0.050763,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.156233, -0.986415, -0.050763,
-0.000000, -1.000000, 0.000000, 0.950000, 1.000000, 0.156233, -0.986415, -0.050763,
-0.250000, 0.951057, -0.181636, 0.000000, 0.100000, 0.096557, 0.986415, -0.132899,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, 0.096557, 0.986415, -0.132899,
-0.000000, 1.000000, 0.000000, 0.050000, 0.000000, 0.096557, 0.986415, -0.132899,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, -0.000000, 0.986415, -0.164272,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.000000, 0.986415, -0.164272,
-0.000000, 1.000000, 0.000000, 0.150000, 0.000000, -0.000000, 0.986415, -0.164272,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.096557, 0.986415, -0.132899,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.096557, 0.986415, -0.132899,
-0.000000, 1.000000, 0.000000, 0.250000, 0.000000, -0.096557, 0.986415, -0.132899,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.156233, 0.986415, -0.050763,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.156233, 0.986415, -0.050763,
-0.000000, 1.000000, 0.000000, 0.350000, 0.000000, -0.156233, 0.986415, -0.050763,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.156233, 0.986415, 0.050763,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.156233, 0.986415, 0.050763,
-0.000000, 1.000000, 0.000000, 0.450000, 0.000000, -0.156233, 0.986415, 0.050763,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.096557, 0.986415, 0.132899,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, -0.096557, 0.986415, 0.132899,
-0.000000, 1.000000, 0.000000, 0.550000, 0.000000, -0.096557, 0.986415, 0.132899,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, 0.000000, 0.986415, 0.164272,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.000000, 0.986415, 0.164272,
-0.000000, 1.000000, 0.000000, 0.650000, 0.000000, 0.000000, 0.986415, 0.164272,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.096557, 0.986415, 0.132899,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.096557, 0.986415, 0.132899,
-0.000000, 1.000000, 0.000000, 0.750000, 0.000000, 0.096557, 0.986415, 0.132899,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.156233, 0.986415, 0.050763,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.156233, 0.986415, 0.050763,
-0.000000, 1.000000, 0.000000, 0.850000, 0.000000, 0.156233, 0.986415, 0.050763,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.156233, 0.986415, -0.050763,
-0.250000, 0.951057, -0.181636, 1.000000, 0.100000, 0.156233, 0.986415, -0.050763,
-0.000000, 1.000000, 0.000000, 0.950000, 0.000000, 0.156233, 0.986415, -0.050763,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h
deleted file mode 100644
index ed21841..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h
+++ /dev/null
@@ -1,269 +0,0 @@
-const int num_faces = 88;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[88*3*8] = {
-2.977119, 2.977121, -34.306633, 0.375000, 0.687500, 0.177861, 0.429396, -0.885429,
-0.000000, 4.210287, -34.306633, 0.406250, 0.687500, 0.177861, 0.429396, -0.885429,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, 0.177861, 0.429396, -0.885429,
-0.000000, 4.210287, -34.306633, 0.406250, 0.687500, -0.177861, 0.429396, -0.885429,
--2.977119, 2.977121, -34.306633, 0.437500, 0.687500, -0.177861, 0.429396, -0.885429,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.177861, 0.429396, -0.885429,
--2.977119, 2.977121, -34.306633, 0.437500, 0.687500, -0.429395, 0.177862, -0.885430,
--4.210285, 0.000002, -34.306633, 0.468750, 0.687500, -0.429395, 0.177862, -0.885430,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.429395, 0.177862, -0.885429,
--4.210285, 0.000002, -34.306633, 0.468750, 0.687500, -0.429395, -0.177862, -0.885430,
--2.977119, -2.977118, -34.306633, 0.500000, 0.687500, -0.429395, -0.177862, -0.885430,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.429395, -0.177862, -0.885430,
--2.977119, -2.977118, -34.306633, 0.500000, 0.687500, -0.177861, -0.429395, -0.885429,
-0.000000, -4.210283, -34.306633, 0.531250, 0.687500, -0.177861, -0.429395, -0.885429,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, -0.177861, -0.429395, -0.885429,
-0.000000, -4.210283, -34.306633, 0.531250, 0.687500, 0.177862, -0.429395, -0.885429,
-2.977120, -2.977118, -34.306633, 0.562500, 0.687500, 0.177862, -0.429395, -0.885429,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.177862, -0.429395, -0.885429,
-2.977120, -2.977118, -34.306633, 0.562500, 0.687500, 0.429395, -0.177862, -0.885430,
-4.210286, 0.000002, -34.306633, 0.593750, 0.687500, 0.429395, -0.177862, -0.885430,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.429395, -0.177862, -0.885429,
-4.210286, 0.000002, -34.306633, 0.593750, 0.687500, 0.429395, 0.177862, -0.885429,
-2.977119, 2.977121, -34.306633, 0.625000, 0.687500, 0.429395, 0.177862, -0.885429,
-6.423971, 6.423968, -31.942669, 0.625000, 0.640508, 0.429395, 0.177862, -0.885429,
--4.210285, 0.000002, -34.306633, 0.343750, 0.843750, -0.124125, -0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.124125, -0.051414, -0.990934,
--2.977119, -2.977118, -34.306633, 0.389515, 0.733265, -0.124125, -0.051414, -0.990934,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.791070, 0.327672, -0.516564,
-7.679888, 7.679888, -10.002398, 0.625000, 0.499530, 0.791071, 0.327672, -0.516564,
-12.349342, 12.349340, 0.110407, 0.625000, 0.311560, 0.791070, 0.327672, -0.516564,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.791071, -0.327672, -0.516564,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.791070, -0.327672, -0.516564,
-17.464600, 0.000000, 0.110407, 0.593750, 0.311560, 0.791070, -0.327672, -0.516564,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, 0.327672, -0.791071, -0.516564,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.327672, -0.791071, -0.516564,
-12.349343, -12.349342, 0.110407, 0.562500, 0.311560, 0.327672, -0.791071, -0.516564,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.327672, -0.791071, -0.516564,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, -0.327672, -0.791071, -0.516564,
-0.000001, -17.464596, 0.110407, 0.531250, 0.311560, -0.327672, -0.791071, -0.516564,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.791071, -0.327672, -0.516564,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.791071, -0.327672, -0.516564,
--12.349340, -12.349340, 0.110407, 0.500000, 0.311560, -0.791071, -0.327672, -0.516564,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.791071, 0.327672, -0.516564,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.791071, 0.327672, -0.516564,
--17.464596, 0.000000, 0.110407, 0.468750, 0.311560, -0.791071, 0.327672, -0.516564,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, -0.327672, 0.791071, -0.516564,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.327672, 0.791071, -0.516564,
--12.349340, 12.349340, 0.110407, 0.437500, 0.311560, -0.327672, 0.791071, -0.516564,
-7.679888, 7.679888, -10.002398, 0.375000, 0.499530, 0.327672, 0.791071, -0.516564,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, 0.327672, 0.791071, -0.516564,
-0.000001, 17.464598, 0.110407, 0.406250, 0.311560, 0.327672, 0.791071, -0.516564,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.923880, 0.382683, 0.000000,
-7.679888, 7.679889, -29.138687, 0.625000, 0.593515, 0.923880, 0.382683, 0.000000,
-7.679888, 7.679888, -10.002398, 0.625000, 0.499530, 0.923880, 0.382683, 0.000000,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.923880, -0.382683, 0.000000,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.923880, -0.382683, 0.000000,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.923880, -0.382683, 0.000000,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, 0.382683, -0.923880, 0.000000,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.382683, -0.923880, 0.000000,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.382683, -0.923880, 0.000000,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.382683, -0.923880, 0.000000,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, -0.382683, -0.923880, 0.000000,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, -0.382683, -0.923880, 0.000000,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.923880, -0.382683, 0.000000,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.923880, -0.382683, 0.000000,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.923880, -0.382683, 0.000000,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.923880, 0.382683, 0.000000,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.923880, 0.382683, 0.000000,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.923880, 0.382683, 0.000000,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, -0.382683, 0.923880, -0.000000,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.382683, 0.923880, -0.000000,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.382683, 0.923880, -0.000000,
-7.679888, 7.679889, -29.138687, 0.375000, 0.593515, 0.382683, 0.923880, -0.000000,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, 0.382683, 0.923880, -0.000000,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, 0.382683, 0.923880, -0.000000,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.797373, 0.330283, -0.505083,
-6.423971, 6.423968, -31.942669, 0.625000, 0.640508, 0.797373, 0.330283, -0.505083,
-7.679888, 7.679889, -29.138687, 0.625000, 0.593515, 0.797373, 0.330283, -0.505083,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.797373, -0.330283, -0.505083,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.797373, -0.330283, -0.505083,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.797373, -0.330283, -0.505083,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, 0.330283, -0.797373, -0.505083,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.330283, -0.797373, -0.505083,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.330283, -0.797373, -0.505083,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.330283, -0.797373, -0.505083,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, -0.330283, -0.797373, -0.505083,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, -0.330283, -0.797373, -0.505083,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.797373, -0.330283, -0.505083,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.797374, -0.330282, -0.505083,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.797374, -0.330282, -0.505083,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.797373, 0.330283, -0.505083,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.797373, 0.330283, -0.505083,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.797373, 0.330283, -0.505083,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, -0.330282, 0.797373, -0.505084,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.330282, 0.797373, -0.505084,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.330282, 0.797373, -0.505084,
-6.423971, 6.423968, -31.942669, 0.375000, 0.640508, 0.330282, 0.797373, -0.505084,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, 0.330282, 0.797373, -0.505084,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, 0.330282, 0.797373, -0.505084,
-2.977119, 2.977121, -34.306633, 0.610485, 0.954235, 0.124125, 0.051414, -0.990934,
-4.210286, 0.000002, -34.306633, 0.656250, 0.843750, 0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.124125, -0.051414, -0.990934,
-4.210286, 0.000002, -34.306633, 0.656250, 0.843750, 0.124125, -0.051414, -0.990934,
-2.977120, -2.977118, -34.306633, 0.610485, 0.733265, 0.124125, -0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.051415, -0.124125, -0.990934,
-2.977120, -2.977118, -34.306633, 0.610485, 0.733265, 0.051415, -0.124125, -0.990934,
-0.000000, -4.210283, -34.306633, 0.500000, 0.687500, 0.051415, -0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.051414, -0.124125, -0.990934,
-0.000000, -4.210283, -34.306633, 0.500000, 0.687500, -0.051414, -0.124125, -0.990934,
--2.977119, -2.977118, -34.306633, 0.389515, 0.733265, -0.051414, -0.124125, -0.990934,
--2.977119, 2.977121, -34.306633, 0.389515, 0.954235, -0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.124125, 0.051414, -0.990934,
--4.210285, 0.000002, -34.306633, 0.343750, 0.843750, -0.124125, 0.051414, -0.990934,
-0.000000, 4.210287, -34.306633, 0.500000, 1.000000, -0.051414, 0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.051414, 0.124125, -0.990934,
--2.977119, 2.977121, -34.306633, 0.389515, 0.954235, -0.051414, 0.124125, -0.990934,
-2.977119, 2.977121, -34.306633, 0.610485, 0.954235, 0.051414, 0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.051414, 0.124125, -0.990934,
-0.000000, 4.210287, -34.306633, 0.500000, 1.000000, 0.051414, 0.124125, -0.990934,
-12.349342, 12.349340, 0.110407, 0.610485, 0.045765, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 0.110407, 0.500000, 0.000000, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 0.110407, 0.500000, 0.000000, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 0.110407, 0.389515, 0.045765, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 0.110407, 0.389515, 0.045765, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 0.110407, 0.343750, 0.156250, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 0.110407, 0.343750, 0.156250, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 0.110407, 0.389515, 0.266735, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 0.110407, 0.389515, 0.266735, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464596, 0.110407, 0.500000, 0.312500, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464596, 0.110407, 0.500000, 0.312500, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 0.110407, 0.610485, 0.266735, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 0.110407, 0.610485, 0.266735, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 0.110407, 0.656250, 0.156250, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 0.110407, 0.656250, 0.156250, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 0.110407, 0.610485, 0.045765, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, -0.117337, -0.283277, 0.951833,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, -0.117337, -0.283277, 0.951833,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, -0.117337, -0.283277, 0.951833,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, 0.117337, -0.283277, 0.951833,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, 0.117337, -0.283277, 0.951833,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.117337, -0.283277, 0.951833,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, 0.283277, -0.117337, 0.951833,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, 0.283277, -0.117337, 0.951833,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.283277, -0.117337, 0.951833,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, 0.283277, 0.117337, 0.951833,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, 0.283277, 0.117337, 0.951833,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.283277, 0.117337, 0.951833,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, 0.117337, 0.283277, 0.951833,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, 0.117337, 0.283277, 0.951833,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, 0.117337, 0.283277, 0.951833,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, -0.117337, 0.283277, 0.951833,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, -0.117337, 0.283277, 0.951833,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.117337, 0.283277, 0.951833,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, -0.283277, 0.117337, 0.951833,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, -0.283277, 0.117337, 0.951833,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.283277, 0.117337, 0.951833,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, -0.283277, -0.117337, 0.951833,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, -0.283277, -0.117337, 0.951833,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.283277, -0.117337, 0.951833,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.301379, -0.124836, 0.945297,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.301379, -0.124836, 0.945297,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, -0.301379, -0.124836, 0.945297,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.124835, -0.301379, 0.945297,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, -0.124835, -0.301379, 0.945297,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, -0.124835, -0.301379, 0.945297,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, 0.124835, -0.301379, 0.945297,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.124835, -0.301379, 0.945297,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, 0.124835, -0.301379, 0.945297,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.301379, -0.124835, 0.945297,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.301379, -0.124835, 0.945297,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, 0.301379, -0.124835, 0.945297,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.301379, 0.124835, 0.945297,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.301379, 0.124835, 0.945297,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, 0.301379, 0.124835, 0.945297,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.124836, 0.301379, 0.945297,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, 0.124835, 0.301379, 0.945297,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, 0.124836, 0.301379, 0.945297,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, -0.124835, 0.301379, 0.945297,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.124835, 0.301379, 0.945297,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, -0.124835, 0.301379, 0.945297,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.301379, 0.124835, 0.945297,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.301379, 0.124835, 0.945297,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, -0.301379, 0.124835, 0.945297,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, 0.923878, 0.382687, 0.000000,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, 0.923878, 0.382687, 0.000000,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.890349, 0.368798, -0.266959,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, 0.382687, 0.923878, 0.000000,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, 0.382687, 0.923878, 0.000000,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, 0.368799, 0.890348, -0.266960,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, -0.382687, 0.923878, -0.000000,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, -0.382687, 0.923878, -0.000000,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.368799, 0.890348, -0.266959,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, -0.923878, 0.382687, -0.000000,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, -0.923878, 0.382687, -0.000000,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, 0.368798, -0.266960,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, -0.923878, -0.382687, -0.000000,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, -0.923878, -0.382687, -0.000000,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.890348, -0.368798, -0.266959,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, -0.382687, -0.923878, -0.000000,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, -0.382687, -0.923878, -0.000000,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, -0.368799, -0.890348, -0.266960,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, 0.382687, -0.923878, 0.000000,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, 0.382687, -0.923878, 0.000000,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.368799, -0.890348, -0.266959,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, 0.923878, -0.382687, 0.000000,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, 0.923878, -0.382687, 0.000000,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, -0.368798, -0.266960,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, 0.368798, -0.266960,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.890349, 0.368798, -0.266959,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.916255, 0.379530, 0.128197,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.890349, -0.368798, -0.266959,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, -0.368798, -0.266960,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, -0.379530, 0.128199,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, 0.368799, -0.890348, -0.266960,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.368799, -0.890348, -0.266959,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.379530, -0.916255, 0.128197,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.368799, -0.890348, -0.266959,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, -0.368799, -0.890348, -0.266960,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, -0.379530, -0.916255, 0.128199,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, -0.368798, -0.266960,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.890348, -0.368798, -0.266959,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.916255, -0.379530, 0.128197,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.890348, 0.368798, -0.266959,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, 0.368798, -0.266960,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, 0.379530, 0.128199,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, -0.368799, 0.890348, -0.266960,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.368799, 0.890348, -0.266959,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.379530, 0.916255, 0.128197,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.368799, 0.890348, -0.266959,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, 0.368799, 0.890348, -0.266960,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, 0.379530, 0.916255, 0.128199,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.916255, -0.379530, 0.128197,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, -0.379530, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.831594, -0.344462, 0.435657,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, 0.379530, -0.916255, 0.128199,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.379530, -0.916255, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.344462, -0.831594, 0.435657,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.379530, -0.916255, 0.128197,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, -0.379530, -0.916255, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.344462, -0.831594, 0.435657,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, -0.379530, 0.128199,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.916255, -0.379530, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.831594, -0.344462, 0.435657,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.916255, 0.379530, 0.128197,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, 0.379530, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.831594, 0.344462, 0.435657,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, -0.379530, 0.916255, 0.128199,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.379530, 0.916255, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.344462, 0.831594, 0.435657,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.379530, 0.916255, 0.128197,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, 0.379530, 0.916255, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.344462, 0.831594, 0.435657,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, 0.379530, 0.128199,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.916255, 0.379530, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.831594, 0.344462, 0.435657,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h
deleted file mode 100644
index 3d1390a..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h
+++ /dev/null
@@ -1,2513 +0,0 @@
-const int num_faces = 836;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[836*3*8] = {
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, -0.570521, -0.819696, 0.051023,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.002737, 4.997122, -28.191074, 0.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.002737, 4.921762, -29.530731, 0.000000, 0.966243, -0.582241, 0.811733, -0.045666,
--1.002737, 5.199909, -26.333269, 0.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 4.997122, -28.191074, 0.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.002737, 5.640600, -24.050657, 0.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.002737, 5.199909, -26.333269, 0.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 6.429670, -21.436577, 0.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 5.640600, -24.050657, 0.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.002737, 7.484703, -18.704168, 0.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.002737, 6.429670, -21.436577, 0.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 8.723274, -16.066572, 0.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 7.484703, -18.704168, 0.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.002737, 10.001389, -13.505806, 0.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.002737, 8.723274, -16.066572, 0.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 11.175043, -11.003893, 0.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.002737, 10.001389, -13.505806, 0.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.003346, 12.054029, -8.797724, 0.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.002737, 11.175043, -11.003893, 0.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.005175, 12.448139, -7.124194, 0.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.003346, 12.054029, -8.797724, 0.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.006394, 11.114811, -5.517140, 1.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.340640, 11.818584, -5.617008, 1.166667, -0.809096, -0.999853, 0.017074, 0.001872,
--1.340640, 11.818584, -5.617008, 1.166667, -0.809096, -0.999853, 0.017074, 0.001872,
--1.006394, 12.522362, -5.716876, 1.333333, -1.447277, -0.566040, 0.824377, 0.001632,
--1.005175, 12.448139, -7.124194, 0.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.002737, 11.560024, -0.158328, 0.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.003346, 12.142200, -2.567771, 0.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.337592, 11.435898, -2.488622, 0.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.337592, 11.435898, -2.488622, 0.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.003346, 10.729588, -2.409474, 1.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.002737, 10.886791, 2.566613, 0.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.002737, 11.560024, -0.158328, 0.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 10.314148, 5.254678, 0.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.886791, 2.566613, 0.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.002737, 10.024443, 7.827566, 0.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.002737, 10.314148, 5.254678, 0.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.200031, 10.206976, 0.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.024443, 7.827566, 0.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.002737, 10.783842, 12.373039, 0.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.002737, 10.200031, 10.206976, 0.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 11.718807, 14.305887, 0.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 10.783842, 12.373039, 0.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.002737, 12.901150, 15.938179, 0.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.002737, 11.718807, 14.305887, 0.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 14.227100, 17.202572, 0.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 12.901150, 15.938179, 0.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.002737, 15.688553, 18.126600, 0.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.002737, 14.227100, 17.202572, 0.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 17.277420, 18.737804, 0.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 15.688553, 18.126600, 0.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.002737, 18.963112, 19.009758, 0.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.002737, 17.277420, 18.737804, 0.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 20.715042, 18.916035, 0.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 18.963112, 19.009758, 0.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.002737, 22.528088, 18.387989, 0.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.002737, 20.715042, 18.916035, 0.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 24.397125, 17.356983, 0.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 22.528088, 18.387989, 0.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.002737, 26.120163, 15.851318, 0.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.002737, 24.397125, 17.356983, 0.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 27.495193, 13.899298, 0.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 26.120163, 15.851318, 0.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.002737, 28.234837, 11.594271, 0.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.002737, 27.495193, 13.899298, 0.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 28.051701, 9.029581, 0.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 28.234837, 11.594271, 0.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.002737, 27.272324, 6.583387, 0.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.002737, 28.051701, 9.029581, 0.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 26.223228, 4.633848, 0.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 27.272324, 6.583387, 0.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.002737, 25.192875, 3.192066, 0.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.002737, 26.223228, 4.633848, 0.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 24.600067, 1.327282, 1.166667, -2.723639, -0.595697, -0.491752, -0.635079,
--0.742768, 24.296909, 1.783397, 1.333333, -1.447277, -0.428917, -0.894621, -0.125234,
--1.002737, 24.469711, 2.269146, 0.666667, -2.691582, -0.583534, -0.710408, 0.393458,
--1.002737, 24.469711, 2.269146, 0.666667, -2.691582, -0.583534, -0.710408, 0.393458,
--1.002737, 25.192875, 3.192066, 0.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--0.742768, 25.130249, 1.141007, 1.000000, -4.000000, -0.424007, 0.088516, -0.901323,
--1.002737, 24.600067, 1.327282, 1.166667, -2.723639, -0.595697, -0.491752, -0.635079,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.570521, -0.819696, 0.051023,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, -0.570521, -0.819696, 0.051023,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-0.999079, 11.114811, -5.517140, 2.000000, -0.170915, 0.582792, -0.812607, -0.004817,
--0.003657, 10.880220, -5.483850, 1.500000, -0.170915, -0.000127, -0.999975, -0.007088,
--0.003657, 10.880220, -5.483850, 1.500000, -0.170915, -0.000127, -0.999975, -0.007088,
--1.006394, 11.114811, -5.517140, 1.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.003346, 10.729588, -2.409474, 1.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--0.000610, 10.494156, -2.383091, 1.500000, -0.336720, 0.000040, -0.977947, -0.208854,
--0.000610, 10.494156, -2.383091, 1.500000, -0.336720, 0.000040, -0.977947, -0.208854,
-1.002127, 10.729588, -2.409474, 2.000000, -0.336720, 0.568931, -0.804350, -0.171283,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
-0.000000, 25.158775, 0.885566, 1.500000, -4.000000, 0.000000, 0.098978, -0.995090,
--0.742768, 25.130249, 1.141007, 1.000000, -4.000000, -0.424007, 0.088516, -0.901323,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-0.742768, 25.130249, 1.141007, 2.000000, -4.000000, 0.424007, 0.088516, -0.901323,
-0.000000, 25.158775, 0.885566, 1.500000, -4.000000, 0.000000, 0.098978, -0.995090,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, 0.582240, 0.811733, -0.045667,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.570521, -0.819696, 0.051023,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.333325, 11.818588, -5.617008, 2.500000, -0.170915, 0.999852, 0.017082, 0.001868,
-0.999079, 11.114811, -5.517140, 2.000000, -0.170915, 0.582792, -0.812607, -0.004817,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-0.999079, 12.522362, -5.716876, 3.000000, -0.170915, 0.565733, 0.824587, 0.001687,
-1.333325, 11.818588, -5.617008, 2.500000, -0.170915, 0.999852, 0.017082, 0.001868,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002127, 10.729588, -2.409474, 2.000000, -0.336720, 0.568931, -0.804350, -0.171283,
-1.336373, 11.435898, -2.488622, 2.500000, -0.336720, 0.999684, 0.024018, 0.007427,
-1.336373, 11.435898, -2.488622, 2.500000, -0.336720, 0.999684, 0.024018, 0.007427,
-1.002127, 12.142200, -2.567771, 3.000000, -0.336720, 0.545588, 0.819894, 0.173516,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 24.600067, 1.327282, 2.500000, -4.000000, 0.595697, -0.491752, -0.635079,
-0.742768, 25.130249, 1.141007, 2.000000, -4.000000, 0.424007, 0.088516, -0.901323,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-0.742768, 24.296909, 1.783397, 3.000000, -4.000000, 0.428917, -0.894621, -0.125234,
-1.002737, 24.600067, 1.327282, 2.500000, -4.000000, 0.595697, -0.491752, -0.635079,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, -0.582241, 0.811733, -0.045666,
--1.002737, 4.997122, -28.191074, 4.000000, 0.932486, -0.582174, 0.810005, -0.070467,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, 0.582240, 0.811733, -0.045667,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
--1.002737, 4.997122, -28.191074, 4.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.002737, 5.199909, -26.333269, 4.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 5.199909, -26.333269, 4.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 5.640600, -24.050657, 4.000000, 0.786333, -0.583127, 0.787897, -0.197941,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
--1.002737, 5.640600, -24.050657, 4.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.002737, 6.429670, -21.436577, 4.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 6.429670, -21.436577, 4.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 7.484703, -18.704168, 4.000000, 0.551894, -0.576888, 0.751118, -0.320970,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
--1.002737, 7.484703, -18.704168, 4.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.002737, 8.723274, -16.066572, 4.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 8.723274, -16.066572, 4.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 10.001389, -13.505806, 4.000000, 0.286075, -0.565597, 0.742253, -0.359389,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
--1.002737, 10.001389, -13.505806, 4.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.002737, 11.175043, -11.003893, 4.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.002737, 11.175043, -11.003893, 4.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.003346, 12.054029, -8.797724, 4.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--1.003346, 12.054029, -8.797724, 4.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.005175, 12.448139, -7.124194, 2.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.005175, 12.448139, -7.124194, 2.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.006394, 12.522362, -5.716876, 1.333333, -1.447277, -0.566040, 0.824377, 0.001632,
--0.003657, 12.756954, -5.750165, 2.166667, -0.809096, -0.000126, 1.000000, 0.000870,
--0.003657, 12.756954, -5.750165, 2.166667, -0.809096, -0.000126, 1.000000, 0.000870,
-0.999079, 12.522362, -5.716876, 3.000000, -0.170915, 0.565733, 0.824587, 0.001687,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002127, 12.142200, -2.567771, 3.000000, -0.336720, 0.545588, 0.819894, 0.173516,
--0.000610, 12.377636, -2.594154, 3.500000, -0.336720, 0.000041, 0.978486, 0.206311,
--0.000610, 12.377636, -2.594154, 3.500000, -0.336720, 0.000041, 0.978486, 0.206311,
--1.003346, 12.142200, -2.567771, 4.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.002737, 11.560024, -0.158328, 4.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 11.560024, -0.158328, 4.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 10.886791, 2.566613, 4.000000, -0.670054, -0.549613, 0.814083, 0.187601,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
--1.002737, 10.886791, 2.566613, 4.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.002737, 10.314148, 5.254678, 4.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.314148, 5.254678, 4.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.024443, 7.827566, 4.000000, -1.018373, -0.552727, 0.833125, 0.019881,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
--1.002737, 10.024443, 7.827566, 4.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.002737, 10.200031, 10.206976, 4.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.200031, 10.206976, 4.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.783842, 12.373039, 4.000000, -1.349704, -0.535040, 0.792292, -0.293266,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
--1.002737, 10.783842, 12.373039, 4.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.002737, 11.718807, 14.305887, 4.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 11.718807, 14.305887, 4.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 12.901150, 15.938179, 4.000000, -1.683037, -0.520176, 0.645820, -0.558867,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
--1.002737, 12.901150, 15.938179, 4.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.002737, 14.227100, 17.202572, 4.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 14.227100, 17.202572, 4.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 15.688553, 18.126600, 4.000000, -1.986219, -0.519424, 0.384311, -0.763219,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
--1.002737, 15.688553, 18.126600, 4.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.002737, 17.277420, 18.737804, 4.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 17.277420, 18.737804, 4.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 18.963112, 19.009758, 4.000000, -2.303954, -0.519106, 0.044200, -0.853567,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
--1.002737, 18.963112, 19.009758, 4.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.002737, 20.715042, 18.916035, 4.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 20.715042, 18.916035, 4.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 22.528088, 18.387989, 4.000000, -2.637287, -0.514483, -0.334572, -0.789537,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
--1.002737, 22.528088, 18.387989, 4.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.002737, 24.397125, 17.356983, 4.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 24.397125, 17.356983, 4.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 26.120163, 15.851318, 4.000000, -3.040334, -0.515999, -0.637877, -0.571716,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
--1.002737, 26.120163, 15.851318, 4.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.002737, 27.495193, 13.899298, 4.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 27.495193, 13.899298, 4.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 28.234837, 11.594271, 4.000000, -3.427773, -0.549861, -0.829859, -0.094800,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
--1.002737, 28.234837, 11.594271, 4.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.002737, 28.051701, 9.029581, 4.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 28.051701, 9.029581, 4.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 27.272324, 6.583387, 4.000000, -3.761107, -0.563170, -0.762896, 0.317537,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
--1.002737, 27.272324, 6.583387, 4.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.002737, 26.223228, 4.633848, 4.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 26.223228, 4.633848, 4.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 25.192875, 3.192066, 4.000000, -3.935886, -0.573805, -0.657830, 0.487860,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-0.000000, 24.041351, 1.768998, 3.500000, -4.000000, 0.000000, -0.991299, -0.131630,
-0.742768, 24.296909, 1.783397, 3.000000, -4.000000, 0.428917, -0.894621, -0.125234,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
--1.002737, 25.192875, 3.192066, 4.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.002737, 24.469711, 2.269146, 4.000000, -3.967943, -0.583534, -0.710408, 0.393458,
--1.002737, 24.469711, 2.269146, 4.000000, -3.967943, -0.583534, -0.710408, 0.393458,
--0.742768, 24.296909, 1.783397, 4.000000, -4.000000, -0.428917, -0.894621, -0.125234,
-0.000000, 24.041351, 1.768998, 3.500000, -4.000000, 0.000000, -0.991299, -0.131630,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, -0.576236, -0.817066, 0.018853,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.002737, 0.153999, -30.965355, 0.000000, 0.945709, -0.580105, 0.814042, -0.028521,
--1.002737, 0.129889, -32.334755, 0.000000, 0.972854, -0.578352, 0.815661, -0.014359,
--1.002737, 0.245815, -29.027195, 0.000000, 0.884407, -0.580554, 0.811733, -0.063605,
--1.002737, 0.153999, -30.965355, 0.000000, 0.945709, -0.580105, 0.814042, -0.028521,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.002737, 0.496042, -26.601746, 0.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.002737, 0.245815, -29.027195, 0.000000, 0.884407, -0.580554, 0.811733, -0.063605,
--1.002737, 0.995396, -23.770485, 0.000000, 0.718491, -0.583417, 0.789634, -0.190008,
--1.002737, 0.496042, -26.601746, 0.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.000716, 1.899328, -20.774343, 0.000000, 0.613877, -0.578823, 0.757196, -0.302684,
--1.002737, 0.995396, -23.770485, 0.000000, 0.718491, -0.583417, 0.789634, -0.190008,
--0.994652, 3.363289, -17.854239, 1.500000, 0.568689, -0.554925, 0.739714, -0.380633,
--1.000716, 1.899328, -20.774343, 0.000000, 0.613877, -0.578823, 0.757196, -0.302684,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--0.990610, 3.544037, -14.721523, 1.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--1.324855, 4.237772, -14.807808, 2.000000, 0.395355, -0.999804, 0.015791, -0.011962,
--1.324855, 4.237772, -14.807808, 2.000000, 0.395355, -0.999804, 0.015791, -0.011962,
--0.990610, 4.931509, -14.894089, 3.000000, 0.523501, -0.544986, 0.762408, -0.348891,
--0.994652, 3.363289, -17.854239, 1.500000, 0.568689, -0.554925, 0.739714, -0.380633,
--1.002737, 6.556976, -6.071414, 0.000000, -0.308178, -0.553122, 0.818963, 0.152824,
--1.000716, 6.770885, -8.754030, 0.000000, -0.079458, -0.549751, 0.833161, -0.060139,
--1.334961, 6.071638, -8.749280, 0.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.334961, 6.071638, -8.749280, 0.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.000716, 5.372389, -8.744530, 1.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.002737, 5.785589, -3.493792, 0.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.002737, 6.556976, -6.071414, 0.000000, -0.308178, -0.553122, 0.818963, 0.152824,
--1.002737, 4.735826, -0.785002, 0.000000, -0.767833, -0.563593, 0.774459, 0.287360,
--1.002737, 5.785589, -3.493792, 0.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.002737, 3.758350, 1.971984, 0.000000, -0.998770, -0.573360, 0.788967, 0.220880,
--1.002737, 4.735826, -0.785002, 0.000000, -0.767833, -0.563593, 0.774459, 0.287360,
--1.002737, 3.203825, 4.694192, 1.500000, -0.960717, -0.573166, 0.812586, 0.105755,
--1.002737, 3.758350, 1.971984, 0.000000, -0.998770, -0.573360, 0.788967, 0.220880,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 1.707661, 7.456823, 1.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.336982, 2.380295, 7.427917, 2.000000, -1.114440, -0.999670, -0.025705, 0.000199,
--1.336982, 2.380295, 7.427917, 2.000000, -1.114440, -0.999670, -0.025705, 0.000199,
--1.002737, 3.052929, 7.399012, 3.000000, -0.922665, -0.571504, 0.820505, -0.012461,
--1.002737, 3.203825, 4.694192, 1.500000, -0.960717, -0.573166, 0.812586, 0.105755,
--1.022346, 4.637777, 15.286472, 1.333333, -1.667888, -0.574184, 0.765044, -0.291584,
--1.007639, 3.836994, 12.751901, 0.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--1.341885, 3.176014, 12.915927, 0.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.341885, 3.176014, 12.915927, 0.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.007639, 2.515034, 13.079953, 1.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.032151, 4.412262, 18.174877, 1.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.366396, 5.044981, 17.903212, 1.833333, -1.749232, -0.999757, -0.019426, 0.010462,
--1.366396, 5.044981, 17.903212, 1.833333, -1.749232, -0.999757, -0.019426, 0.010462,
--1.032151, 5.677700, 17.631544, 2.666667, -1.722117, -0.577835, 0.723604, -0.377496,
--1.022346, 4.637777, 15.286472, 1.333333, -1.667888, -0.574184, 0.765044, -0.291584,
--1.002737, 8.987209, 23.827108, 0.500000, -2.000000, -0.690086, 0.408969, 0.597098,
--0.742768, 9.282909, 23.329664, 0.000000, -2.000000, -0.487251, 0.872639, 0.032983,
--1.002737, 9.038933, 22.663582, 0.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.002737, 9.038933, 22.663582, 0.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.007639, 8.160118, 21.422651, 0.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.341885, 7.556932, 21.789433, 0.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.341885, 7.556932, 21.789433, 0.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.007639, 6.953747, 22.156216, 1.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--0.742768, 8.411285, 23.925793, 1.000000, -2.000000, -0.485429, -0.281111, 0.827850,
--1.002737, 8.987209, 23.827108, 0.500000, -2.000000, -0.690086, 0.408969, 0.597098,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.576237, -0.817066, 0.018853,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, -0.576236, -0.817066, 0.018853,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.014864, 3.544037, -14.721523, 2.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-0.012127, 3.312792, -14.692760, 1.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-0.012127, 3.312792, -14.692760, 1.500000, 0.267209, 0.000169, -0.904592, 0.426279,
--0.990610, 3.544037, -14.721523, 1.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.000716, 5.372389, -8.744530, 1.000000, -0.079458, -0.594849, -0.801661, 0.059106,
-0.002021, 5.139305, -8.742946, 1.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-0.002021, 5.139305, -8.742946, 1.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-1.004758, 5.372389, -8.744530, 2.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.707661, 7.456823, 2.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-0.000000, 1.483450, 7.466458, 1.500000, -1.306215, 0.000000, -0.999837, 0.018050,
-0.000000, 1.483450, 7.466458, 1.500000, -1.306215, 0.000000, -0.999837, 0.018050,
--1.002737, 1.707661, 7.456823, 1.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.007639, 2.515034, 13.079953, 1.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--0.004902, 2.294706, 13.134627, 1.500000, -1.613659, 0.000247, -0.968748, 0.248048,
--0.004902, 2.294706, 13.134627, 1.500000, -1.613659, 0.000247, -0.968748, 0.248048,
-0.997835, 2.515034, 13.079953, 2.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.973323, 4.412262, 18.174875, 2.000000, -1.776346, 0.554281, -0.740975, 0.379115,
--0.029414, 4.201355, 18.265430, 1.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--0.029414, 4.201355, 18.265430, 1.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--1.032151, 4.412262, 18.174877, 1.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
-0.000000, 8.401409, 24.234768, 1.500000, -2.000000, -0.000001, -0.291501, 0.956571,
--0.742768, 8.411285, 23.925793, 1.000000, -2.000000, -0.485429, -0.281111, 0.827850,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.007639, 6.953747, 22.156216, 1.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--0.004902, 6.752687, 22.278475, 1.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--0.004902, 6.752687, 22.278475, 1.500000, -1.939034, 0.000369, -0.822635, 0.568570,
-0.997835, 6.953747, 22.156214, 2.000000, -1.939034, 0.572743, -0.675634, 0.464203,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-0.742768, 8.411285, 23.925795, 2.000000, -2.000000, 0.485428, -0.281111, 0.827851,
-0.000000, 8.401409, 24.234768, 1.500000, -2.000000, -0.000001, -0.291501, 0.956571,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.578352, 0.815661, -0.014359,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.576237, -0.817066, 0.018853,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.014864, 4.931509, -14.894089, 3.000000, 0.267209, 0.545447, 0.762198, -0.348629,
-1.349109, 4.237772, -14.807808, 2.500000, 0.267209, 0.999805, 0.015731, -0.011963,
-1.349109, 4.237772, -14.807808, 2.500000, 0.267209, 0.999805, 0.015731, -0.011963,
-1.014864, 3.544037, -14.721523, 2.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.004758, 5.372389, -8.744530, 2.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-1.339004, 6.071638, -8.749280, 2.500000, -0.079458, 0.999013, 0.044275, -0.003633,
-1.339004, 6.071638, -8.749280, 2.500000, -0.079458, 0.999013, 0.044275, -0.003633,
-1.004758, 6.770885, -8.754030, 3.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.336982, 2.380295, 7.427917, 2.500000, -1.306215, 0.999670, -0.025705, 0.000199,
-1.002737, 1.707661, 7.456823, 2.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.052929, 7.399012, 3.000000, -1.306215, 0.571504, 0.820504, -0.012461,
-1.336982, 2.380295, 7.427917, 2.500000, -1.306215, 0.999670, -0.025705, 0.000199,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.997835, 2.515034, 13.079953, 2.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-1.332080, 3.176014, 12.915927, 2.500000, -1.613659, 0.999801, -0.018232, 0.008046,
-1.332080, 3.176014, 12.915927, 2.500000, -1.613659, 0.999801, -0.018232, 0.008046,
-0.997834, 3.836994, 12.751901, 3.000000, -1.613659, 0.571655, 0.794480, -0.204969,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.973323, 5.677700, 17.631544, 3.000000, -1.776346, 0.576561, 0.724323, -0.378066,
-1.307569, 5.044981, 17.903212, 2.500000, -1.776346, 0.999751, -0.019683, 0.010530,
-1.307569, 5.044981, 17.903212, 2.500000, -1.776346, 0.999751, -0.019683, 0.010530,
-0.973323, 4.412262, 18.174875, 2.000000, -1.776346, 0.554281, -0.740975, 0.379115,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-1.002737, 8.987209, 23.827108, 2.500000, -2.000000, 0.690085, 0.408969, 0.597099,
-0.742768, 8.411285, 23.925795, 2.000000, -2.000000, 0.485428, -0.281111, 0.827851,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-0.997835, 6.953747, 22.156214, 2.000000, -1.939034, 0.572743, -0.675634, 0.464203,
-1.332080, 7.556932, 21.789433, 2.500000, -1.939034, 0.999977, -0.005048, -0.004524,
-1.332080, 7.556932, 21.789433, 2.500000, -1.939034, 0.999977, -0.005048, -0.004524,
-0.997834, 8.160118, 21.422651, 3.000000, -1.939034, 0.574744, 0.665807, -0.475784,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-0.742768, 9.282909, 23.329664, 3.000000, -2.000000, 0.487250, 0.872639, 0.032983,
-1.002737, 8.987209, 23.827108, 2.500000, -2.000000, 0.690085, 0.408969, 0.597099,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.578352, 0.815661, -0.014359,
--1.002737, 0.153999, -30.965355, 3.000000, 0.523501, -0.580105, 0.814042, -0.028521,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.578352, 0.815661, -0.014359,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
--1.002737, 0.153999, -30.965355, 3.000000, 0.523501, -0.580105, 0.814042, -0.028521,
--1.002737, 0.245815, -29.027195, 3.500000, 0.673303, -0.580554, 0.811733, -0.063605,
--1.002737, 0.245815, -29.027195, 3.500000, 0.673303, -0.580554, 0.811733, -0.063605,
--1.002737, 0.496042, -26.601746, 4.000000, 0.823105, -0.581048, 0.805721, -0.114877,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
--1.002737, 0.496042, -26.601746, 4.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.002737, 0.995396, -23.770485, 3.500000, 0.673303, -0.583417, 0.789634, -0.190008,
--1.002737, 0.995396, -23.770485, 3.500000, 0.673303, -0.583417, 0.789634, -0.190008,
--1.000716, 1.899328, -20.774343, 3.000000, 0.523501, -0.578823, 0.757196, -0.302684,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-0.012127, 5.162754, -14.922852, 3.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-1.014864, 4.931509, -14.894089, 3.000000, 0.267209, 0.545447, 0.762198, -0.348629,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
--1.000716, 1.899328, -20.774343, 3.000000, 0.523501, -0.578823, 0.757196, -0.302684,
--0.994652, 3.363289, -17.854239, 3.000000, 0.523501, -0.554925, 0.739714, -0.380633,
--0.994652, 3.363289, -17.854239, 3.000000, 0.523501, -0.554925, 0.739714, -0.380633,
--0.990610, 4.931509, -14.894089, 3.000000, 0.523501, -0.544986, 0.762408, -0.348891,
-0.012127, 5.162754, -14.922852, 3.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.004758, 6.770885, -8.754030, 3.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-0.002021, 7.003967, -8.755614, 3.000000, -0.501061, -0.000102, 0.997541, -0.070087,
-0.002021, 7.003967, -8.755614, 3.000000, -0.501061, -0.000102, 0.997541, -0.070087,
--1.000716, 6.770885, -8.754030, 3.000000, -0.922665, -0.549751, 0.833161, -0.060139,
--1.002737, 6.556976, -6.071414, 3.500000, -0.729781, -0.553122, 0.818963, 0.152824,
--1.002737, 6.556976, -6.071414, 3.500000, -0.729781, -0.553122, 0.818963, 0.152824,
--1.002737, 5.785589, -3.493792, 4.000000, -0.536897, -0.556039, 0.785897, 0.270530,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
--1.002737, 5.785589, -3.493792, 4.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.002737, 4.735826, -0.785002, 3.500000, -0.729781, -0.563593, 0.774459, 0.287360,
--1.002737, 4.735826, -0.785002, 3.500000, -0.729781, -0.563593, 0.774459, 0.287360,
--1.002737, 3.758350, 1.971984, 3.000000, -0.922665, -0.573360, 0.788967, 0.220880,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
--1.002737, 3.758350, 1.971984, 3.000000, -0.922665, -0.573360, 0.788967, 0.220880,
--1.002737, 3.203825, 4.694192, 3.000000, -0.922665, -0.573166, 0.812586, 0.105755,
--1.002737, 3.203825, 4.694192, 3.000000, -0.922665, -0.573166, 0.812586, 0.105755,
--1.002737, 3.052929, 7.399012, 3.000000, -0.922665, -0.571504, 0.820505, -0.012461,
-0.000000, 3.277142, 7.389376, 3.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-0.000000, 3.277142, 7.389376, 3.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-1.002737, 3.052929, 7.399012, 3.000000, -1.306215, 0.571504, 0.820504, -0.012461,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
--0.029414, 5.888605, 17.540989, 2.833333, -1.749232, -0.000556, 0.885983, -0.463718,
-0.973323, 5.677700, 17.631544, 3.000000, -1.776346, 0.576561, 0.724323, -0.378066,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.997834, 3.836994, 12.751901, 3.000000, -1.613659, 0.571655, 0.794480, -0.204969,
--0.004902, 4.057320, 12.697225, 2.833333, -1.667888, 0.000259, 0.967531, -0.252752,
--0.004902, 4.057320, 12.697225, 2.833333, -1.667888, 0.000259, 0.967531, -0.252752,
--1.007639, 3.836994, 12.751901, 2.666667, -1.722117, -0.571038, 0.793815, -0.209219,
--1.022346, 4.637777, 15.286472, 2.666667, -1.722117, -0.574184, 0.765044, -0.291584,
--1.022346, 4.637777, 15.286472, 2.666667, -1.722117, -0.574184, 0.765044, -0.291584,
--1.032151, 5.677700, 17.631544, 2.666667, -1.722117, -0.577835, 0.723604, -0.377496,
--0.029414, 5.888605, 17.540989, 2.833333, -1.749232, -0.000556, 0.885983, -0.463718,
-0.000000, 9.573013, 23.419453, 3.500000, -2.000000, -0.000000, 0.997856, 0.065453,
-0.742768, 9.282909, 23.329664, 3.000000, -2.000000, 0.487250, 0.872639, 0.032983,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-0.997834, 8.160118, 21.422651, 3.000000, -1.939034, 0.574744, 0.665807, -0.475784,
--0.004902, 8.361179, 21.300390, 3.500000, -1.939034, 0.000389, 0.815229, -0.579139,
--0.004902, 8.361179, 21.300390, 3.500000, -1.939034, 0.000389, 0.815229, -0.579139,
--1.007639, 8.160118, 21.422651, 4.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.002737, 9.038933, 22.663582, 4.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.002737, 9.038933, 22.663582, 4.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--0.742768, 9.282909, 23.329664, 4.000000, -2.000000, -0.487251, 0.872639, 0.032983,
-0.000000, 9.573013, 23.419453, 3.500000, -2.000000, -0.000000, 0.997856, 0.065453,
--1.002737, -2.734034, 6.657467, 1.500000, 0.761751, -0.582703, 0.762742, 0.280503,
--1.002737, -1.996943, 4.816424, 0.000000, 1.000000, -0.580237, 0.756078, 0.302774,
--1.336982, -2.618040, 4.463405, 0.500000, 1.000000, -0.999977, -0.006223, -0.002555,
--1.336982, -2.618040, 4.463405, 0.500000, 1.000000, -0.999977, -0.006223, -0.002555,
--1.002737, -3.239137, 4.110385, 1.000000, 1.000000, -0.573276, -0.760494, -0.304965,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.336982, -4.187579, 8.722692, 2.000000, 0.670678, -0.999851, -0.016874, -0.003651,
--1.336982, -4.187579, 8.722692, 2.000000, 0.670678, -0.999851, -0.016874, -0.003651,
--1.002737, -3.550490, 9.039287, 3.000000, 0.523501, -0.582189, 0.779143, 0.232362,
--1.002737, -2.734034, 6.657467, 1.500000, 0.761751, -0.582703, 0.762742, 0.280503,
--1.002737, -4.339600, 12.037193, 0.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -3.550490, 9.039287, 0.000000, 0.817855, -0.582189, 0.779143, 0.232362,
--1.336982, -4.187579, 8.722692, 0.500000, 0.817855, -0.999851, -0.016874, -0.003651,
--1.336982, -4.187579, 8.722692, 0.500000, 0.817855, -0.999851, -0.016874, -0.003651,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.002737, -4.987385, 15.402298, 0.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.002737, -4.339600, 12.037193, 0.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -5.379865, 18.885717, 0.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -4.987385, 15.402298, 0.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.002737, -5.586154, 22.318600, 0.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.002737, -5.379865, 18.885717, 0.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.675372, 25.532089, 0.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.586154, 22.318600, 0.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.002737, -5.679584, 28.946095, 0.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.002737, -5.675372, 25.532089, 0.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.630855, 32.893612, 0.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -5.679584, 28.946095, 0.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--4.193409, -2.445326, 32.893612, 0.000000, -0.594415, -0.686924, 0.716419, 0.121978,
--1.002737, -5.630855, 32.893612, 0.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -3.239137, 4.110385, 1.000000, 1.000000, -0.573276, -0.760494, -0.304965,
-0.000000, -3.446170, 3.992712, 1.500000, 1.000000, 0.000000, -0.928140, -0.372231,
-0.000000, -3.446170, 3.992712, 1.500000, 1.000000, 0.000000, -0.928140, -0.372231,
-1.002737, -3.239137, 4.110385, 2.000000, 1.000000, 0.573276, -0.760494, -0.304965,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -3.239137, 4.110385, 2.000000, 1.000000, 0.573276, -0.760494, -0.304965,
-1.336982, -2.618040, 4.463405, 2.500000, 1.000000, 0.999977, -0.006223, -0.002555,
-1.336982, -2.618040, 4.463405, 2.500000, 1.000000, 0.999977, -0.006223, -0.002555,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, -0.596303, 0.745197, 0.298504,
--1.002737, -1.996943, 4.816424, 3.000000, -1.666667, -0.580237, 0.756078, 0.302774,
-0.000000, -1.789911, 4.934098, 3.000000, -1.833333, -0.000000, 0.928348, 0.371713,
-0.000000, -1.789911, 4.934098, 3.000000, -1.833333, -0.000000, 0.928348, 0.371713,
-1.002737, -1.996943, 4.816424, 3.000000, -2.000000, 0.580237, 0.756078, 0.302774,
-1.002737, -1.445931, 3.440848, 2.500000, -2.000000, 0.596303, 0.745197, 0.298504,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-0.000000, -1.789911, 4.934098, 3.500000, 1.000000, -0.000000, 0.928348, 0.371713,
-0.000000, -1.789911, 4.934098, 3.500000, 1.000000, -0.000000, 0.928348, 0.371713,
--1.002737, -1.996943, 4.816424, 4.000000, 1.000000, -0.580237, 0.756078, 0.302774,
--1.002737, -2.734034, 6.657467, 4.000000, 0.908927, -0.582703, 0.762742, 0.280503,
--1.002737, -2.734034, 6.657467, 4.000000, 0.908927, -0.582703, 0.762742, 0.280503,
--1.002737, -3.550490, 9.039287, 4.000000, 0.817855, -0.582189, 0.779143, 0.232362,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
--1.002737, -3.550490, 9.039287, 4.000000, 0.817855, -0.582189, 0.779143, 0.232362,
--1.002737, -4.339600, 12.037193, 4.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -4.339600, 12.037193, 4.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -4.987385, 15.402298, 4.000000, 0.484521, -0.576620, 0.807781, 0.122473,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
--1.002737, -4.987385, 15.402298, 4.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.002737, -5.379865, 18.885717, 4.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.379865, 18.885717, 4.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.586154, 22.318600, 4.000000, 0.039374, -0.570604, 0.820419, 0.036373,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
--1.002737, -5.586154, 22.318600, 4.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.002737, -5.675372, 25.532089, 4.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.675372, 25.532089, 4.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.679584, 28.946095, 4.000000, -0.344415, -0.577055, 0.816690, -0.004975,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
--1.002737, -5.679584, 28.946095, 4.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.002737, -5.630855, 32.893612, 4.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -5.630855, 32.893612, 4.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--4.193409, -2.445326, 32.893612, 4.000000, -0.594415, -0.686924, 0.716419, 0.121978,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, -0.555812, -0.771611, -0.309336,
--1.002737, -3.239137, 4.110385, 4.000000, -1.666667, -0.573276, -0.760494, -0.304965,
--1.336982, -2.618040, 4.463405, 4.000000, -1.833333, -0.999977, -0.006223, -0.002555,
--1.336982, -2.618040, 4.463405, 4.000000, -1.833333, -0.999977, -0.006223, -0.002555,
--1.002737, -1.996943, 4.816424, 4.000000, -2.000000, -0.580237, 0.756078, 0.302774,
--1.002737, -1.445931, 3.440848, 3.500000, -2.000000, -0.596303, 0.745197, 0.298504,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, 0.555812, -0.771611, -0.309336,
-1.002737, -3.239137, 4.110385, 5.000000, -1.666667, 0.573276, -0.760494, -0.304965,
-0.000000, -3.446170, 3.992712, 5.000000, -1.833333, 0.000000, -0.928140, -0.372231,
-0.000000, -3.446170, 3.992712, 5.000000, -1.833333, 0.000000, -0.928140, -0.372231,
--1.002737, -3.239137, 4.110385, 5.000000, -2.000000, -0.573276, -0.760494, -0.304965,
--1.002737, -2.684134, 2.725971, 4.500000, -2.000000, -0.555812, -0.771611, -0.309336,
--1.336982, -22.914524, -4.929887, 7.000000, -1.833333, -0.999805, -0.016666, 0.010584,
--1.002737, -22.289114, -5.237599, 7.000000, -1.666667, -0.580101, 0.726129, -0.369081,
--1.002737, -22.791559, -6.324653, 6.500000, -1.666667, -0.585182, 0.679392, -0.442706,
--1.002737, -22.791559, -6.324653, 6.500000, -1.666667, -0.585182, 0.679392, -0.442706,
--0.742768, -23.169422, -6.772669, 6.000000, -1.666667, -0.444774, 0.383424, -0.809421,
--1.002737, -23.736286, -6.771559, 6.000000, -1.833333, -0.633041, -0.276747, -0.722959,
--1.002737, -23.736286, -6.771559, 6.000000, -1.833333, -0.633041, -0.276747, -0.722959,
--0.742768, -24.152987, -6.401496, 6.000000, -2.000000, -0.455754, -0.834431, -0.309862,
--1.002737, -24.101816, -5.795360, 6.500000, -2.000000, -0.571338, -0.788867, 0.226409,
--1.002737, -24.101816, -5.795360, 6.500000, -2.000000, -0.571338, -0.788867, 0.226409,
--1.002737, -23.539934, -4.622173, 7.000000, -2.000000, -0.559738, -0.733607, 0.385376,
--1.336982, -22.914524, -4.929887, 7.000000, -1.833333, -0.999805, -0.016666, 0.010584,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -22.289114, -5.237599, 1.000000, 5.000000, -0.580101, 0.726129, -0.369081,
--1.336982, -22.914524, -4.929887, 0.500000, 5.000000, -0.999805, -0.016666, 0.010584,
--1.336982, -22.914524, -4.929887, 0.500000, 5.000000, -0.999805, -0.016666, 0.010584,
--1.002737, -23.539934, -4.622173, 0.000000, 5.000000, -0.559738, -0.733607, 0.385376,
--1.002737, -22.670450, -3.070609, 0.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -22.670450, -3.070609, 0.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -21.393009, -1.363454, 0.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.002737, -21.393009, -1.363454, 0.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.002737, -19.607264, 0.276508, 0.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -19.607264, 0.276508, 0.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -17.444981, 1.593854, 0.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.002737, -17.444981, 1.593854, 0.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.002737, -15.037928, 2.333167, 0.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -15.037928, 2.333167, 0.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -12.539209, 2.645355, 0.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.002737, -12.539209, 2.645355, 0.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.002737, -10.101929, 2.681329, 0.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -10.101929, 2.681329, 0.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -7.868385, 2.366725, 0.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.002737, -7.868385, 2.366725, 0.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.002737, -5.980879, 1.627182, 0.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -5.980879, 1.627182, 0.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -4.339529, 0.487975, 0.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.002737, -4.339529, 0.487975, 0.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.002737, -2.844458, -1.025621, 0.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -2.844458, -1.025621, 0.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -1.550434, -2.775177, 0.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.002737, -1.550434, -2.775177, 0.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.002737, -0.512230, -4.622262, 0.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -0.512230, -4.622262, 0.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, 0.212360, -6.622896, 0.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.002737, 0.212360, -6.622896, 0.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.002737, 0.565540, -8.833092, 0.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.565540, -8.833092, 0.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.467394, -11.098533, 0.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.002737, 0.467394, -11.098533, 0.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.002737, -0.161999, -13.264900, 0.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -0.161999, -13.264900, 0.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -1.085560, -15.409132, 0.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.002737, -1.085560, -15.409132, 0.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.002737, -2.066217, -17.608171, 0.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.066217, -17.608171, 0.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.990782, -19.848455, 0.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.002737, -2.990782, -19.848455, 0.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.002737, -3.746061, -22.116426, 0.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -3.746061, -22.116426, 0.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -4.302059, -24.249632, 0.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.336982, -5.505962, -27.491592, 0.500000, 1.186658, -0.999932, -0.011525, 0.001722,
--1.002737, -6.213656, -27.449341, 1.000000, 1.186658, -0.570758, -0.816393, 0.087968,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.002737, -4.302059, -24.249632, 0.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.002737, -4.628780, -26.085621, 0.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.628780, -26.085621, 0.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.798269, -27.533844, 0.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.336982, -5.505962, -27.491592, 0.500000, 1.186658, -0.999932, -0.011525, 0.001722,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.565626, -0.821288, 0.074517,
--1.002737, -6.213656, -27.449341, 1.000000, 1.053028, -0.570758, -0.816393, 0.087968,
--1.336982, -5.505962, -27.491592, 1.000000, 1.119843, -0.999932, -0.011525, 0.001722,
--1.336982, -5.505962, -27.491592, 1.000000, 1.119843, -0.999932, -0.011525, 0.001722,
--1.002737, -4.798269, -27.533844, 1.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.002737, -4.882575, -28.503754, 0.500000, 1.186658, -0.589040, 0.805068, -0.069986,
-0.000000, -22.080643, -5.340171, 1.000000, 1.026514, 0.000000, 0.892013, -0.452009,
-1.002737, -22.289114, -5.237599, 1.000000, 1.053028, 0.580101, 0.726128, -0.369081,
-1.002737, -22.791559, -6.324653, 0.500000, 1.053028, 0.585182, 0.679392, -0.442706,
-1.002737, -22.791559, -6.324653, 0.500000, 1.053028, 0.585182, 0.679392, -0.442706,
-0.742768, -23.169422, -6.772669, 0.000000, 1.053028, 0.444774, 0.383425, -0.809421,
-0.000000, -23.066525, -7.012697, 0.000000, 1.026514, -0.000000, 0.424976, -0.905205,
-0.000000, -23.066525, -7.012697, 0.000000, 1.026514, -0.000000, 0.424976, -0.905205,
--0.742768, -23.169422, -6.772669, 0.000000, 1.000000, -0.444774, 0.383424, -0.809421,
--1.002737, -22.791559, -6.324653, 0.500000, 1.000000, -0.585182, 0.679392, -0.442706,
--1.002737, -22.791559, -6.324653, 0.500000, 1.000000, -0.585182, 0.679392, -0.442706,
--1.002737, -22.289114, -5.237599, 1.000000, 1.000000, -0.580101, 0.726129, -0.369081,
-0.000000, -22.080643, -5.340171, 1.000000, 1.026514, 0.000000, 0.892013, -0.452009,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -22.289114, -5.237599, 2.000000, 5.000000, 0.580101, 0.726128, -0.369081,
-0.000000, -22.080643, -5.340171, 1.500000, 5.000000, 0.000000, 0.892013, -0.452009,
-0.000000, -22.080643, -5.340171, 1.500000, 5.000000, 0.000000, 0.892013, -0.452009,
--1.002737, -22.289114, -5.237599, 1.000000, 5.000000, -0.580101, 0.726129, -0.369081,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-0.000000, -6.449554, -27.435261, 1.500000, 1.186658, -0.000000, -0.994229, 0.107280,
-1.002737, -6.213656, -27.449341, 2.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.213656, -27.449341, 1.000000, 1.186658, -0.570758, -0.816393, 0.087968,
-0.000000, -6.449554, -27.435261, 1.500000, 1.186658, -0.000000, -0.994229, 0.107280,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.565626, -0.821288, 0.074517,
-1.002737, -6.213656, -27.449341, 2.000000, 1.053028, 0.570758, -0.816393, 0.087968,
-0.000000, -6.449554, -27.435261, 2.000000, 1.119843, -0.000000, -0.994229, 0.107280,
-0.000000, -6.449554, -27.435261, 2.000000, 1.119843, -0.000000, -0.994229, 0.107280,
--1.002737, -6.213656, -27.449341, 2.000000, 1.186658, -0.570758, -0.816393, 0.087968,
--1.002737, -6.305892, -28.466030, 1.500000, 1.186658, -0.565626, -0.821288, 0.074517,
-1.336982, -22.914524, -4.929887, 2.000000, 1.026514, 0.999805, -0.016666, 0.010584,
-1.002737, -23.539934, -4.622173, 2.000000, 1.053028, 0.559738, -0.733607, 0.385376,
-1.002737, -24.101816, -5.795360, 1.500000, 1.053028, 0.571338, -0.788867, 0.226409,
-1.002737, -24.101816, -5.795360, 1.500000, 1.053028, 0.571338, -0.788867, 0.226409,
-0.742768, -24.152987, -6.401496, 1.000000, 1.053028, 0.455754, -0.834430, -0.309862,
-1.002737, -23.736286, -6.771559, 1.000000, 1.026514, 0.633041, -0.276748, -0.722959,
-1.002737, -23.736286, -6.771559, 1.000000, 1.026514, 0.633041, -0.276748, -0.722959,
-0.742768, -23.169422, -6.772669, 1.000000, 1.000000, 0.444774, 0.383425, -0.809421,
-1.002737, -22.791559, -6.324653, 1.500000, 1.000000, 0.585182, 0.679392, -0.442706,
-1.002737, -22.791559, -6.324653, 1.500000, 1.000000, 0.585182, 0.679392, -0.442706,
-1.002737, -22.289114, -5.237599, 2.000000, 1.000000, 0.580101, 0.726128, -0.369081,
-1.336982, -22.914524, -4.929887, 2.000000, 1.026514, 0.999805, -0.016666, 0.010584,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -23.539934, -4.622173, 3.000000, 5.000000, 0.559738, -0.733607, 0.385376,
-1.336982, -22.914524, -4.929887, 2.500000, 5.000000, 0.999805, -0.016666, 0.010584,
-1.336982, -22.914524, -4.929887, 2.500000, 5.000000, 0.999805, -0.016666, 0.010584,
-1.002737, -22.289114, -5.237599, 2.000000, 5.000000, 0.580101, 0.726128, -0.369081,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.336982, -5.505962, -27.491592, 2.500000, 1.186658, 0.999932, -0.011526, 0.001722,
-1.002737, -4.798269, -27.533844, 3.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.213656, -27.449341, 2.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.336982, -5.505962, -27.491592, 2.500000, 1.186658, 0.999932, -0.011526, 0.001722,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, 0.589040, 0.805067, -0.069986,
-1.002737, -4.798269, -27.533844, 3.000000, 1.053028, 0.583019, 0.808019, -0.084825,
-1.336982, -5.505962, -27.491592, 3.000000, 1.119843, 0.999932, -0.011526, 0.001722,
-1.336982, -5.505962, -27.491592, 3.000000, 1.119843, 0.999932, -0.011526, 0.001722,
-1.002737, -6.213656, -27.449341, 3.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.002737, -6.305892, -28.466030, 2.500000, 1.186658, 0.565626, -0.821288, 0.074517,
-0.000000, -23.748404, -4.519603, 3.000000, 1.026514, -0.000000, -0.884854, 0.465869,
--1.002737, -23.539934, -4.622173, 3.000000, 1.053028, -0.559738, -0.733607, 0.385376,
--1.002737, -24.101816, -5.795360, 2.500000, 1.053028, -0.571338, -0.788867, 0.226409,
--1.002737, -24.101816, -5.795360, 2.500000, 1.053028, -0.571338, -0.788867, 0.226409,
--0.742768, -24.152987, -6.401496, 2.000000, 1.053028, -0.455754, -0.834431, -0.309862,
-0.000000, -24.406044, -6.530420, 2.000000, 1.026514, 0.000000, -0.933376, -0.358900,
-0.000000, -24.406044, -6.530420, 2.000000, 1.026514, 0.000000, -0.933376, -0.358900,
-0.742768, -24.152987, -6.401496, 2.000000, 1.000000, 0.455754, -0.834430, -0.309862,
-1.002737, -24.101816, -5.795360, 2.500000, 1.000000, 0.571338, -0.788867, 0.226409,
-1.002737, -24.101816, -5.795360, 2.500000, 1.000000, 0.571338, -0.788867, 0.226409,
-1.002737, -23.539934, -4.622173, 3.000000, 1.000000, 0.559738, -0.733607, 0.385376,
-0.000000, -23.748404, -4.519603, 3.000000, 1.026514, -0.000000, -0.884854, 0.465869,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
--1.002737, -21.393009, -1.363454, 4.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.002737, -22.670450, -3.070609, 4.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -22.670450, -3.070609, 4.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -23.539934, -4.622173, 4.000000, 5.000000, -0.559738, -0.733607, 0.385376,
-0.000000, -23.748404, -4.519603, 3.500000, 5.000000, -0.000000, -0.884854, 0.465869,
-0.000000, -23.748404, -4.519603, 3.500000, 5.000000, -0.000000, -0.884854, 0.465869,
-1.002737, -23.539934, -4.622173, 3.000000, 5.000000, 0.559738, -0.733607, 0.385376,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
--1.002737, -17.444981, 1.593854, 4.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.002737, -19.607264, 0.276508, 4.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -19.607264, 0.276508, 4.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -21.393009, -1.363454, 4.000000, 4.915090, -0.538985, -0.621423, 0.568620,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
--1.002737, -12.539209, 2.645355, 4.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.002737, -15.037928, 2.333167, 4.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -15.037928, 2.333167, 4.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -17.444981, 1.593854, 4.000000, 4.724558, -0.523473, -0.350048, 0.776815,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
--1.002737, -7.868385, 2.366725, 4.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.002737, -10.101929, 2.681329, 4.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -10.101929, 2.681329, 4.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -12.539209, 2.645355, 4.000000, 4.391225, -0.529316, -0.059790, 0.846315,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
--1.002737, -4.339529, 0.487975, 4.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.002737, -5.980879, 1.627182, 4.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -5.980879, 1.627182, 4.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -7.868385, 2.366725, 4.000000, 3.986911, -0.526810, 0.210598, 0.823480,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
--1.002737, -1.550434, -2.775177, 4.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.002737, -2.844458, -1.025621, 4.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -2.844458, -1.025621, 4.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -4.339529, 0.487975, 4.000000, 3.510776, -0.515414, 0.553092, 0.654552,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
--1.002737, 0.212360, -6.622896, 4.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.002737, -0.512230, -4.622262, 4.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -0.512230, -4.622262, 4.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -1.550434, -2.775177, 4.000000, 3.092546, -0.505987, 0.723592, 0.469458,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
--1.002737, 0.467394, -11.098533, 4.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.002737, 0.565540, -8.833092, 4.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.565540, -8.833092, 4.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.212360, -6.622896, 4.000000, 2.707584, -0.505652, 0.835716, 0.214230,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
--1.002737, -1.085560, -15.409132, 4.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.002737, -0.161999, -13.264900, 4.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -0.161999, -13.264900, 4.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, 0.467394, -11.098533, 4.000000, 2.374251, -0.517497, 0.844529, -0.137721,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
--1.002737, -2.990782, -19.848455, 4.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.002737, -2.066217, -17.608171, 4.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.066217, -17.608171, 4.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -1.085560, -15.409132, 4.000000, 2.016609, -0.545979, 0.767296, -0.336399,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
--1.002737, -4.302059, -24.249632, 4.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.002737, -3.746061, -22.116426, 4.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -3.746061, -22.116426, 4.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -2.990782, -19.848455, 4.000000, 1.691091, -0.573541, 0.767562, -0.286181,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-0.000000, -4.562372, -27.547928, 3.500000, 1.186658, 0.000000, 0.994554, -0.104226,
--1.002737, -4.798269, -27.533844, 4.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.002737, -4.628780, -26.085621, 4.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.628780, -26.085621, 4.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.302059, -24.249632, 4.000000, 1.410785, -0.582444, 0.793471, -0.176531,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.798269, -27.533844, 3.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-0.000000, -4.562372, -27.547928, 3.500000, 1.186658, 0.000000, 0.994554, -0.104226,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.589040, 0.805068, -0.069986,
--1.002737, -4.798269, -27.533844, 4.000000, 1.053028, -0.583018, 0.808019, -0.084825,
-0.000000, -4.562372, -27.547928, 4.000000, 1.119843, 0.000000, 0.994554, -0.104226,
-0.000000, -4.562372, -27.547928, 4.000000, 1.119843, 0.000000, 0.994554, -0.104226,
-1.002737, -4.798269, -27.533844, 4.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-1.002737, -4.882575, -28.503754, 3.500000, 1.186658, 0.589040, 0.805067, -0.069986,
-1.010821, 4.753092, -11.679992, 3.500000, 1.000000, 0.576512, -0.780907, 0.240454,
-1.014864, 3.544037, -14.721523, 3.000000, 1.000000, 0.562535, -0.748836, 0.350428,
-1.349109, 4.237772, -14.807808, 3.000000, 1.026514, 0.999805, 0.015731, -0.011963,
-1.349109, 4.237772, -14.807808, 3.000000, 1.026514, 0.999805, 0.015731, -0.011963,
-1.014864, 4.931509, -14.894089, 3.000000, 1.053028, 0.545447, 0.762198, -0.348629,
-1.010821, 6.148220, -11.777804, 3.500000, 1.053028, 0.548873, 0.801150, -0.238531,
-1.010821, 6.148220, -11.777804, 3.500000, 1.053028, 0.548873, 0.801150, -0.238531,
-1.004758, 6.770885, -8.754030, 4.000000, 1.053028, 0.549543, 0.833398, -0.058740,
-1.339004, 6.071638, -8.749280, 4.000000, 1.026514, 0.999013, 0.044275, -0.003633,
-1.339004, 6.071638, -8.749280, 4.000000, 1.026514, 0.999013, 0.044275, -0.003633,
-1.004758, 5.372389, -8.744530, 4.000000, 1.000000, 0.594556, -0.801738, 0.060986,
-1.010821, 4.753092, -11.679992, 3.500000, 1.000000, 0.576512, -0.780907, 0.240454,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.990610, 3.544037, -14.721523, 2.000000, 0.267209, -0.562098, -0.749029, 0.350717,
-0.012127, 3.312792, -14.692760, 2.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-0.012127, 3.312792, -14.692760, 2.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-1.014864, 3.544037, -14.721523, 3.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-1.010821, 4.753092, -11.679992, 3.000000, 0.093875, 0.576512, -0.780907, 0.240454,
-1.010821, 4.753092, -11.679992, 3.000000, 0.093875, 0.576512, -0.780907, 0.240454,
-1.004758, 5.372389, -8.744530, 3.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-0.002021, 5.139305, -8.742946, 2.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-0.002021, 5.139305, -8.742946, 2.500000, -0.079458, -0.000101, -0.997122, 0.075814,
--1.000716, 5.372389, -8.744530, 2.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--0.990610, 4.931509, -14.894089, 1.000000, 0.267209, -0.544986, 0.762408, -0.348891,
--1.324855, 4.237772, -14.807808, 1.500000, 0.267209, -0.999804, 0.015791, -0.011962,
--1.324855, 4.237772, -14.807808, 1.500000, 0.267209, -0.999804, 0.015791, -0.011962,
--0.990610, 3.544037, -14.721523, 2.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--1.000716, 5.372389, -8.744530, 2.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--1.334961, 6.071638, -8.749280, 1.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.334961, 6.071638, -8.749280, 1.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.000716, 6.770885, -8.754030, 1.000000, -0.079458, -0.549751, 0.833161, -0.060139,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
-1.010821, 6.148220, -11.777804, 1.500000, 0.222021, 0.548873, 0.801150, -0.238531,
-1.014864, 4.931509, -14.894089, 3.000000, 0.523501, 0.545447, 0.762198, -0.348629,
-0.012127, 5.162754, -14.922852, 2.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-0.012127, 5.162754, -14.922852, 2.000000, 0.395355, 0.000167, 0.910359, -0.413819,
--0.990610, 4.931509, -14.894089, 1.000000, 0.267209, -0.544986, 0.762408, -0.348891,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--1.000716, 6.770885, -8.754030, 1.000000, -0.079458, -0.549751, 0.833161, -0.060139,
-0.002021, 7.003967, -8.755614, 0.500000, -0.079458, -0.000102, 0.997541, -0.070087,
-0.002021, 7.003967, -8.755614, 0.500000, -0.079458, -0.000102, 0.997541, -0.070087,
-1.004758, 6.770885, -8.754030, 0.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-1.010821, 6.148220, -11.777804, 1.500000, 0.222021, 0.548873, 0.801150, -0.238531,
--1.002737, 1.949966, 10.301342, 3.000000, 0.093875, -0.548106, -0.827983, 0.118418,
--1.002737, 1.707661, 7.456823, 3.000000, 0.267209, -0.546192, -0.837529, 0.014826,
-0.000000, 1.483450, 7.466458, 3.000000, 0.395355, 0.000000, -0.999837, 0.018050,
-0.000000, 1.483450, 7.466458, 3.000000, 0.395355, 0.000000, -0.999837, 0.018050,
-1.002737, 1.707661, 7.456823, 3.000000, 0.523501, 0.546192, -0.837529, 0.014826,
-1.002737, 1.949966, 10.301342, 3.000000, -0.199582, 0.548430, -0.827643, 0.119301,
-1.002737, 1.949966, 10.301342, 3.000000, -0.199582, 0.548430, -0.827643, 0.119301,
-0.997835, 2.515034, 13.079953, 3.000000, -0.922665, 0.552074, -0.807195, 0.208929,
--0.004902, 2.294706, 13.134627, 3.000000, -0.501061, 0.000247, -0.968748, 0.248048,
--0.004902, 2.294706, 13.134627, 3.000000, -0.501061, 0.000247, -0.968748, 0.248048,
--1.007639, 2.515034, 13.079953, 3.000000, -0.079458, -0.551445, -0.808533, 0.205386,
--1.002737, 1.949966, 10.301342, 3.000000, 0.093875, -0.548106, -0.827983, 0.118418,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.002737, 3.052929, 7.399012, 1.000000, -1.306215, -0.571504, 0.820505, -0.012461,
--1.336982, 2.380295, 7.427917, 1.500000, -1.306215, -0.999670, -0.025705, 0.000199,
--1.336982, 2.380295, 7.427917, 1.500000, -1.306215, -0.999670, -0.025705, 0.000199,
--1.002737, 1.707661, 7.456823, 2.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.002737, 1.949966, 10.301342, 2.000000, -1.459937, -0.548106, -0.827983, 0.118418,
--1.002737, 1.949966, 10.301342, 2.000000, -1.459937, -0.548106, -0.827983, 0.118418,
--1.007639, 2.515034, 13.079953, 2.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--1.341885, 3.176014, 12.915927, 1.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.341885, 3.176014, 12.915927, 1.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.007639, 3.836994, 12.751901, 1.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
-1.002737, 3.286348, 10.103830, 1.500000, -1.268162, 0.570686, 0.812576, -0.118478,
-1.002737, 3.052929, 7.399012, 3.000000, -0.922665, 0.571504, 0.820504, -0.012461,
-0.000000, 3.277142, 7.389376, 2.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-0.000000, 3.277142, 7.389376, 2.000000, -1.114440, 0.000000, 0.999891, -0.014768,
--1.002737, 3.052929, 7.399012, 1.000000, -1.306215, -0.571504, 0.820505, -0.012461,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.007639, 3.836994, 12.751901, 1.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--0.004902, 4.057320, 12.697225, 0.500000, -1.613659, 0.000259, 0.967531, -0.252752,
--0.004902, 4.057320, 12.697225, 0.500000, -1.613659, 0.000259, 0.967531, -0.252752,
-0.997834, 3.836994, 12.751901, 0.000000, -1.613659, 0.571655, 0.794480, -0.204969,
-1.002737, 3.286348, 10.103830, 1.500000, -1.268162, 0.570686, 0.812576, -0.118478,
-1.002737, 1.949966, 10.301342, 3.000000, -1.459937, 0.548430, -0.827643, 0.119301,
-1.002737, 1.707661, 7.456823, 3.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-1.336982, 2.380295, 7.427917, 3.000000, -1.114440, 0.999670, -0.025705, 0.000199,
-1.336982, 2.380295, 7.427917, 3.000000, -1.114440, 0.999670, -0.025705, 0.000199,
-1.002737, 3.052929, 7.399012, 3.000000, -0.922665, 0.571504, 0.820504, -0.012461,
-1.002737, 3.286348, 10.103830, 2.833333, -1.322391, 0.570686, 0.812576, -0.118478,
-1.002737, 3.286348, 10.103830, 2.833333, -1.322391, 0.570686, 0.812576, -0.118478,
-0.997834, 3.836994, 12.751901, 2.666667, -1.722117, 0.571655, 0.794480, -0.204969,
-1.332080, 3.176014, 12.915927, 2.833333, -1.667888, 0.999801, -0.018232, 0.008046,
-1.332080, 3.176014, 12.915927, 2.833333, -1.667888, 0.999801, -0.018232, 0.008046,
-0.997835, 2.515034, 13.079953, 3.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-1.002737, 1.949966, 10.301342, 3.000000, -1.459937, 0.548430, -0.827643, 0.119301,
-0.983128, 5.711351, 20.357510, 2.000000, -1.459937, 0.562328, -0.698593, 0.442442,
-0.973323, 4.412262, 18.174875, 2.000000, -1.306215, 0.554281, -0.740975, 0.379115,
-1.307569, 5.044981, 17.903212, 2.500000, -1.306215, 0.999751, -0.019683, 0.010530,
-1.307569, 5.044981, 17.903212, 2.500000, -1.306215, 0.999751, -0.019683, 0.010530,
-0.973323, 5.677700, 17.631544, 3.000000, -1.306215, 0.576561, 0.724323, -0.378066,
-0.983128, 6.945759, 19.711123, 3.000000, -1.459937, 0.574803, 0.682785, -0.451006,
-0.983128, 6.945759, 19.711123, 3.000000, -1.459937, 0.574803, 0.682785, -0.451006,
-0.997834, 8.160118, 21.422651, 3.000000, -1.613659, 0.574744, 0.665807, -0.475784,
-1.332080, 7.556932, 21.789433, 2.500000, -1.613659, 0.999977, -0.005048, -0.004524,
-1.332080, 7.556932, 21.789433, 2.500000, -1.613659, 0.999977, -0.005048, -0.004524,
-0.997835, 6.953747, 22.156214, 2.000000, -1.613659, 0.572743, -0.675634, 0.464203,
-0.983128, 5.711351, 20.357510, 2.000000, -1.459937, 0.562328, -0.698593, 0.442442,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.032151, 4.412262, 18.174877, 2.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--0.029414, 4.201355, 18.265430, 2.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--0.029414, 4.201355, 18.265430, 2.500000, -1.776346, -0.000535, -0.890739, 0.454514,
-0.973323, 4.412262, 18.174875, 3.000000, -1.776346, 0.554281, -0.740975, 0.379115,
-0.983128, 5.711351, 20.357510, 3.000000, -1.857690, 0.562328, -0.698593, 0.442442,
-0.983128, 5.711351, 20.357510, 3.000000, -1.857690, 0.562328, -0.698593, 0.442442,
-0.997835, 6.953747, 22.156214, 3.000000, -1.939034, 0.572743, -0.675634, 0.464203,
--0.004902, 6.752687, 22.278475, 2.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--0.004902, 6.752687, 22.278475, 2.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--1.007639, 6.953747, 22.156216, 2.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.022346, 6.945759, 19.711123, 1.000000, -1.857690, -0.575450, 0.685898, -0.445422,
--1.032151, 5.677700, 17.631544, 1.000000, -1.776346, -0.577835, 0.723604, -0.377496,
--1.366396, 5.044981, 17.903212, 1.500000, -1.776346, -0.999757, -0.019426, 0.010462,
--1.366396, 5.044981, 17.903212, 1.500000, -1.776346, -0.999757, -0.019426, 0.010462,
--1.032151, 4.412262, 18.174877, 2.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.007639, 6.953747, 22.156216, 2.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.341885, 7.556932, 21.789433, 1.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.341885, 7.556932, 21.789433, 1.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.007639, 8.160118, 21.422651, 1.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.022346, 6.945759, 19.711123, 1.000000, -1.857690, -0.575450, 0.685898, -0.445422,
--1.002737, 8.987209, 23.827108, 1.833333, -1.749232, -0.690086, 0.408969, 0.597098,
--0.742768, 8.411285, 23.925793, 1.000000, -1.776346, -0.485429, -0.281111, 0.827850,
-0.000000, 8.401409, 24.234768, 1.000000, -1.857690, -0.000001, -0.291501, 0.956571,
-0.000000, 8.401409, 24.234768, 1.000000, -1.857690, -0.000001, -0.291501, 0.956571,
-0.742768, 8.411285, 23.925795, 1.000000, -1.939034, 0.485428, -0.281111, 0.827851,
-1.002737, 8.987209, 23.827108, 0.500000, -1.939034, 0.690085, 0.408969, 0.597099,
-1.002737, 8.987209, 23.827108, 0.500000, -1.939034, 0.690085, 0.408969, 0.597099,
-0.742768, 9.282909, 23.329664, 0.000000, -1.939034, 0.487250, 0.872639, 0.032983,
-0.000000, 9.573013, 23.419453, 1.333333, -1.830575, -0.000000, 0.997856, 0.065453,
-0.000000, 9.573013, 23.419453, 1.333333, -1.830575, -0.000000, 0.997856, 0.065453,
--0.742768, 9.282909, 23.329664, 2.666667, -1.722117, -0.487251, 0.872639, 0.032983,
--1.002737, 8.987209, 23.827108, 1.833333, -1.749232, -0.690086, 0.408969, 0.597098,
-0.983128, 6.945759, 19.711123, 1.500000, -2.000000, 0.574803, 0.682785, -0.451006,
-0.973323, 5.677700, 17.631544, 2.000000, -2.000000, 0.576561, 0.724323, -0.378066,
--0.029414, 5.888605, 17.540989, 2.500000, -2.000000, -0.000556, 0.885983, -0.463718,
--0.029414, 5.888605, 17.540989, 2.500000, -2.000000, -0.000556, 0.885983, -0.463718,
--1.032151, 5.677700, 17.631544, 3.000000, -2.000000, -0.577835, 0.723604, -0.377496,
--1.022346, 6.945759, 19.711123, 3.500000, -2.000000, -0.575450, 0.685898, -0.445422,
--1.022346, 6.945759, 19.711123, 3.500000, -2.000000, -0.575450, 0.685898, -0.445422,
--1.007639, 8.160118, 21.422651, 4.000000, -2.000000, -0.574068, 0.669723, -0.471080,
--0.004902, 8.361179, 21.300390, 2.500000, -2.000000, 0.000389, 0.815229, -0.579139,
--0.004902, 8.361179, 21.300390, 2.500000, -2.000000, 0.000389, 0.815229, -0.579139,
-0.997834, 8.160118, 21.422651, 1.000000, -2.000000, 0.574744, 0.665807, -0.475784,
-0.983128, 6.945759, 19.711123, 1.500000, -2.000000, 0.574803, 0.682785, -0.451006,
--1.005175, 11.029587, -4.132468, 3.000000, -1.857690, -0.578521, -0.809497, -0.100142,
--1.006394, 11.114811, -5.517140, 3.000000, -1.776346, -0.583093, -0.812392, -0.004755,
--0.003657, 10.880220, -5.483850, 2.833333, -1.749232, -0.000127, -0.999975, -0.007088,
--0.003657, 10.880220, -5.483850, 2.833333, -1.749232, -0.000127, -0.999975, -0.007088,
-0.999079, 11.114811, -5.517140, 2.666667, -1.722117, 0.582792, -0.812607, -0.004817,
-1.000299, 11.029585, -4.132468, 3.333333, -1.830575, 0.578319, -0.809495, -0.101318,
-1.000299, 11.029585, -4.132468, 3.333333, -1.830575, 0.578319, -0.809495, -0.101318,
-1.002127, 10.729588, -2.409474, 4.000000, -1.939034, 0.568931, -0.804350, -0.171283,
--0.000610, 10.494156, -2.383091, 3.500000, -1.939034, 0.000040, -0.977947, -0.208854,
--0.000610, 10.494156, -2.383091, 3.500000, -1.939034, 0.000040, -0.977947, -0.208854,
--1.003346, 10.729588, -2.409474, 3.000000, -1.939034, -0.568927, -0.804482, -0.170679,
--1.005175, 11.029587, -4.132468, 3.000000, -1.857690, -0.578521, -0.809497, -0.100142,
--1.005175, 12.441681, -4.309345, 1.000000, -0.253818, -0.554831, 0.825951, 0.099839,
--1.006394, 12.522362, -5.716876, 1.000000, -0.170915, -0.566040, 0.824377, 0.001632,
--1.340640, 11.818584, -5.617008, 1.500000, -0.170915, -0.999853, 0.017074, 0.001872,
--1.340640, 11.818584, -5.617008, 1.500000, -0.170915, -0.999853, 0.017074, 0.001872,
--1.006394, 11.114811, -5.517140, 2.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.005175, 11.029587, -4.132468, 2.000000, -0.253818, -0.578521, -0.809497, -0.100142,
--1.005175, 11.029587, -4.132468, 2.000000, -0.253818, -0.578521, -0.809497, -0.100142,
--1.003346, 10.729588, -2.409474, 2.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--1.337592, 11.435898, -2.488622, 1.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.337592, 11.435898, -2.488622, 1.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.003346, 12.142200, -2.567771, 1.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.005175, 12.441681, -4.309345, 1.000000, -0.253818, -0.554831, 0.825951, 0.099839,
-0.000000, 25.158775, 0.885566, 0.666667, -0.891999, 0.000000, 0.098978, -0.995090,
-0.742768, 25.130249, 1.141007, 1.333333, -1.447277, 0.424007, 0.088516, -0.901323,
-1.002737, 24.600067, 1.327282, 1.166667, -0.809096, 0.595697, -0.491752, -0.635079,
-1.002737, 24.600067, 1.327282, 1.166667, -0.809096, 0.595697, -0.491752, -0.635079,
-0.742768, 24.296909, 1.783397, 1.000000, -0.170915, 0.428917, -0.894621, -0.125234,
-0.000000, 24.041351, 1.768998, 1.000000, -0.253818, 0.000000, -0.991299, -0.131630,
-0.000000, 24.041351, 1.768998, 1.000000, -0.253818, 0.000000, -0.991299, -0.131630,
--0.742768, 24.296909, 1.783397, 1.000000, -0.336720, -0.428917, -0.894621, -0.125234,
--1.002737, 24.600067, 1.327282, 0.500000, -0.336720, -0.595697, -0.491752, -0.635079,
--1.002737, 24.600067, 1.327282, 0.500000, -0.336720, -0.595697, -0.491752, -0.635079,
--0.742768, 25.130249, 1.141007, 0.000000, -0.336720, -0.424007, 0.088516, -0.901323,
-0.000000, 25.158775, 0.885566, 0.666667, -0.891999, 0.000000, 0.098978, -0.995090,
-1.000299, 12.441681, -4.309345, 1.500000, -4.000000, 0.554885, 0.826037, 0.098819,
-0.999079, 12.522362, -5.716876, 2.000000, -4.000000, 0.565733, 0.824587, 0.001687,
--0.003657, 12.756954, -5.750165, 2.500000, -4.000000, -0.000126, 1.000000, 0.000870,
--0.003657, 12.756954, -5.750165, 2.500000, -4.000000, -0.000126, 1.000000, 0.000870,
--1.006394, 12.522362, -5.716876, 3.000000, -4.000000, -0.566040, 0.824377, 0.001632,
--1.005175, 12.441681, -4.309345, 3.500000, -4.000000, -0.554831, 0.825951, 0.099839,
--1.005175, 12.441681, -4.309345, 3.500000, -4.000000, -0.554831, 0.825951, 0.099839,
--1.003346, 12.142200, -2.567771, 4.000000, -4.000000, -0.545383, 0.819886, 0.174196,
--0.000610, 12.377636, -2.594154, 2.500000, -4.000000, 0.000041, 0.978486, 0.206311,
--0.000610, 12.377636, -2.594154, 2.500000, -4.000000, 0.000041, 0.978486, 0.206311,
-1.002127, 12.142200, -2.567771, 1.000000, -4.000000, 0.545588, 0.819894, 0.173516,
-1.000299, 12.441681, -4.309345, 1.500000, -4.000000, 0.554885, 0.826037, 0.098819,
-1.000299, 11.029585, -4.132468, 4.000000, -3.848496, 0.578319, -0.809495, -0.101318,
-0.999079, 11.114811, -5.517140, 4.000000, -3.761107, 0.582792, -0.812607, -0.004817,
-1.333325, 11.818588, -5.617008, 4.000000, -3.594440, 0.999852, 0.017082, 0.001868,
-1.333325, 11.818588, -5.617008, 4.000000, -3.594440, 0.999852, 0.017082, 0.001868,
-0.999079, 12.522362, -5.716876, 4.000000, -3.427773, 0.565733, 0.824587, 0.001687,
-1.000299, 12.441681, -4.309345, 4.000000, -3.234054, 0.554885, 0.826037, 0.098819,
-1.000299, 12.441681, -4.309345, 4.000000, -3.234054, 0.554885, 0.826037, 0.098819,
-1.002127, 12.142200, -2.567771, 4.000000, -3.040334, 0.545588, 0.819894, 0.173516,
-1.336373, 11.435898, -2.488622, 4.000000, -3.488110, 0.999684, 0.024018, 0.007427,
-1.336373, 11.435898, -2.488622, 4.000000, -3.488110, 0.999684, 0.024018, 0.007427,
-1.002127, 10.729588, -2.409474, 4.000000, -3.935886, 0.568931, -0.804350, -0.171283,
-1.000299, 11.029585, -4.132468, 4.000000, -3.848496, 0.578319, -0.809495, -0.101318,
-1.002737, -23.736286, -6.771559, 0.500000, 1.053028, 0.633041, -0.276748, -0.722959,
-0.742768, -24.152987, -6.401496, 1.000000, 1.053028, 0.455754, -0.834430, -0.309862,
-0.000000, -24.406044, -6.530420, 1.500000, 1.053028, 0.000000, -0.933376, -0.358900,
-0.000000, -24.406044, -6.530420, 1.500000, 1.053028, 0.000000, -0.933376, -0.358900,
--0.742768, -24.152987, -6.401496, 2.000000, 1.053028, -0.455754, -0.834431, -0.309862,
--1.002737, -23.736286, -6.771559, 4.000000, -0.306819, -0.633041, -0.276747, -0.722959,
--1.002737, -23.736286, -6.771559, 4.000000, -0.306819, -0.633041, -0.276747, -0.722959,
--0.742768, -23.169422, -6.772669, 6.000000, -1.666667, -0.444774, 0.383424, -0.809421,
-0.000000, -23.066525, -7.012697, 3.000000, -0.306819, -0.000000, 0.424976, -0.905205,
-0.000000, -23.066525, -7.012697, 3.000000, -0.306819, -0.000000, 0.424976, -0.905205,
-0.742768, -23.169422, -6.772669, 0.000000, 1.053028, 0.444774, 0.383425, -0.809421,
-1.002737, -23.736286, -6.771559, 0.500000, 1.053028, 0.633041, -0.276748, -0.722959,
-1.336982, -2.618040, 4.463405, 4.000000, -0.333333, 0.999977, -0.006223, -0.002555,
-1.002737, -3.239137, 4.110385, 5.000000, -1.666667, 0.573276, -0.760494, -0.304965,
-1.002737, -2.684134, 2.725971, 2.500000, -0.689796, 0.555812, -0.771611, -0.309336,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, 0.596303, 0.745197, 0.298504,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-1.336982, -2.618040, 4.463405, 4.000000, -0.333333, 0.999977, -0.006223, -0.002555,
--1.336982, -0.581338, -32.314465, 0.500000, 0.972854, 0.000000, -0.028514, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, 0.000000, -0.028512, -0.999593,
--1.336982, 4.212124, -29.503693, 0.500000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--1.336982, -5.594234, -28.484890, 0.500000, 1.119843, -0.000004, -0.026495, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.000002, -0.026494, -0.999649,
--1.336982, -2.065033, 3.083410, 3.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.000002, -0.028517, -0.999593,
-1.336982, -0.581338, -32.314465, 2.500000, 0.972854, 0.000000, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-1.336982, -0.581338, -32.314465, 2.500000, 0.972854, 0.000000, -0.028517, -0.999593,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.000002, -0.028516, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.000002, -0.028516, -0.999593,
-0.000000, -1.529640, -32.287415, 1.500000, 0.972854, 0.000002, -0.028513, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-0.000000, -1.529640, -32.287415, 1.500000, 0.972854, 0.000002, -0.028513, -0.999593,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, 0.000000, -0.028512, -0.999593,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.000002, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.336982, -0.581338, -32.314465, 0.500000, 0.972854, 0.000000, -0.028514, -0.999593,
-0.000000, 0.366964, -32.341518, 3.250000, 0.867302, 0.000000, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.000002, -0.028517, -0.999593,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.000002, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-0.000000, 0.366964, -32.341518, 3.250000, 0.867302, 0.000000, -0.028517, -0.999593,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, -0.000000, -0.038080, -0.999275,
-1.336982, 4.212124, -29.503689, 2.500000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-1.336982, 4.212124, -29.503689, 2.500000, 0.966243, 0.000000, -0.038077, -0.999275,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.000000, -0.038075, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.000000, -0.038075, -0.999275,
-0.000000, 3.265942, -29.467636, 1.500000, 0.966243, 0.000000, -0.038076, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-0.000000, 3.265942, -29.467636, 1.500000, 0.966243, 0.000000, -0.038076, -0.999275,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.336982, 4.212124, -29.503693, 0.500000, 0.966243, 0.000000, -0.038077, -0.999275,
-0.000000, 5.158308, -29.539745, 3.500000, 0.966243, -0.000000, -0.038080, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, 0.000000, -0.038077, -0.999275,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, -0.000000, -0.038080, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-0.000000, 5.158308, -29.539745, 3.500000, 0.966243, -0.000000, -0.038080, -0.999275,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, -0.000002, -0.026493, -0.999649,
-1.336982, -5.594234, -28.484890, 2.500000, 1.119843, 0.000002, -0.026495, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-1.336982, -5.594234, -28.484890, 2.500000, 1.119843, 0.000002, -0.026495, -0.999649,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.000002, -0.026494, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.000002, -0.026494, -0.999649,
-0.000000, -6.543112, -28.459743, 1.500000, 1.119843, 0.000000, -0.026496, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -6.543112, -28.459743, 1.500000, 1.119843, 0.000000, -0.026496, -0.999649,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.000002, -0.026494, -0.999649,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.000001, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.336982, -5.594234, -28.484890, 0.500000, 1.119843, -0.000004, -0.026495, -0.999649,
-0.000000, -4.645356, -28.510036, 3.500000, 1.119843, 0.000000, -0.026488, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.000001, -0.026493, -0.999649,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, -0.000002, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -4.645356, -28.510036, 3.500000, 1.119843, 0.000000, -0.026488, -0.999649,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, -0.000000, 0.500000, -0.866025,
-1.336982, -2.065033, 3.083410, 2.500000, -0.594898, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-1.336982, -2.065033, 3.083410, 2.500000, -0.594898, 0.000000, 0.500000, -0.866025,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, -0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, -0.000000, 0.500000, -0.866025,
-0.000000, -2.890502, 2.606825, 4.500000, -1.833333, 0.000000, 0.500000, -0.866026,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.890502, 2.606825, 4.500000, -1.833333, 0.000000, 0.500000, -0.866026,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, 0.000000, 0.500000, -0.866025,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.336982, -2.065033, 3.083410, 3.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -1.239565, 3.559994, 2.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, -0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -1.239565, 3.559994, 2.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
--4.193409, -2.445326, 32.893612, 0.000000, -0.594415, -0.686924, 0.716419, 0.121978,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
--4.193409, -2.445326, 32.893612, 4.000000, -0.594415, -0.686924, 0.716419, 0.121978,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp
deleted file mode 100644
index 61586d8..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp
+++ /dev/null
@@ -1,351 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "RenderInterface.h"
-#include "MeshShaderParam.h"
-#include "RenderPlugin.h"
-
-namespace RenderInterface
-{
-
-////////////////////////////////////////////////////////////////////////////////////////////
-bool InitDevice(int deviceID)
-{
- if (!RenderPlugin::Instance()->InitDevice(deviceID))
- {
- MessageBox( 0, L"Could not create device.", L"Error", MB_ICONEXCLAMATION );
- return false;
- }
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- return RenderPlugin::Instance()->GetDeviceInfoString(str);
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- return RenderPlugin::Instance()->Initialize();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- RenderPlugin::Instance()->Shutdown();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// gpu buffer management
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- return RenderPlugin::Instance()->CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth)
-{
- RenderPlugin::Instance()->CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-///////////////////////////////////////////////////////////////////
-// texture resource mangement
-///////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateTextureResource(const char* filepath)
-{
- return RenderPlugin::Instance()->CreateTextureSRV(filepath);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void RenderShadowMap(GPUShaderResource* pShadowSRV, float znear, float zfar)
-{
- // update constant buffer
- ShadowVizParam shaderParam;
- {
- shaderParam.m_zFar = zfar;
- shaderParam.m_zNear = znear;
- }
- CopyShaderParam(SHADER_TYPE_VISUALIZE_SHADOW, &shaderParam, sizeof(ShadowVizParam), 0);
-
- RenderPlugin::Instance()->BindPixelShaderResources(0, 1, &pShadowSRV);
-
- // render states
- RenderPlugin::Instance()->ApplySampler(0, SAMPLER_TYPE_POINTCLAMP);
-
- RenderPlugin::Instance()->BindShaderResources(SHADER_TYPE_VISUALIZE_SHADOW, 1, &pShadowSRV);
-
-
- RenderPlugin::Instance()->ApplyRasterizerState(RASTERIZER_STATE_FILL_CULL_NONE);
- RenderPlugin::Instance()->ApplyDepthStencilState(DEPTH_STENCIL_DEPTH_NONE);
-
- // set IA vars
- RenderPlugin::Instance()->ClearInputLayout();
-
- RenderPlugin::Instance()->SetPrimitiveTopologyTriangleStrip();
-
- // set shader and tex resource
- ApplyShader(SHADER_TYPE_VISUALIZE_SHADOW);
-
- // draw quad
- RenderPlugin::Instance()->Draw(3, 0);
-
- // cleanup shader and its resource
- RenderPlugin::Instance()->ClearPixelShaderResources(0, 1);
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_VISUALIZE_SHADOW);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// render with full color shader
-void RenderScreenQuad(
- GPUShaderResource* pTextureSRV
- )
-{
- RenderPlugin::Instance()->ApplyRasterizerState(RASTERIZER_STATE_FILL_CULL_NONE);
- RenderPlugin::Instance()->ApplyDepthStencilState(DEPTH_STENCIL_DEPTH_NONE);
-
- RenderPlugin::Instance()->ClearInputLayout();
-
- RenderPlugin::Instance()->SetPrimitiveTopologyTriangleStrip();
-
- if(pTextureSRV)
- {
- RenderPlugin::Instance()->BindShaderResources(SHADER_TYPE_SCREEN_QUAD, 1, &pTextureSRV);
-
- ApplyShader(SHADER_TYPE_SCREEN_QUAD);
-
- RenderPlugin::Instance()->BindPixelShaderResources(0, 1, &pTextureSRV);
- RenderPlugin::Instance()->ApplySampler(0, SAMPLER_TYPE_POINTCLAMP);
-
- RenderPlugin::Instance()->Draw(3,0);
-
- RenderPlugin::Instance()->ClearPixelShaderResources(0, 1);
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_SCREEN_QUAD);
- }
- else
- {
- ApplyShader(SHADER_TYPE_SCREEN_QUAD_COLOR);
-
- RenderPlugin::Instance()->Draw(3,0);
-
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_SCREEN_QUAD_COLOR);
- }
-}
-
-
-void SubmitGpuWork()
-{
- RenderPlugin::Instance()->SubmitGpuWork();
-}
-
-void WaitForGpu()
-{
- RenderPlugin::Instance()->WaitForGpu();
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-// draw calls
-///////////////////////////////////////////////////////////////////////////////
-void DrawLineList(GPUBufferResource* pDevicePtr, unsigned int nVerts, unsigned int stride)
-{
- RenderPlugin::Instance()->SetVertexBuffer(pDevicePtr, stride);
- RenderPlugin::Instance()->SetPrimitiveTopologyLineList();
- RenderPlugin::Instance()->Draw(nVerts, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// render states management
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderPlugin::Instance()->ApplyDepthStencilState(state);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderPlugin::Instance()->ApplyRasterizerState(state);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplySampler(int slot, SAMPLER_TYPE st)
-{
- RenderPlugin::Instance()->ApplySampler(slot, st);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE st)
-{
- RenderPlugin::Instance()->ApplyBlendState(st);
-}
-
-void ApplyForShadow(int ForShadow)
-{
- RenderPlugin::Instance()->ApplyForShadow(ForShadow);
-}
-
-void SwitchToDX11()
-{
- RenderPlugin::Instance()->SwitchToDX11();
-}
-
-void FlushDX11()
-{
- RenderPlugin::Instance()->FlushDX11();
-}
-
-void FlushDX12()
-{
- RenderPlugin::Instance()->FlushDX12();
-}
-
-void ApplyPrimitiveTopologyLine()
-{
- RenderPlugin::Instance()->ApplyPrimitiveTopologyLine();
-}
-
-void ApplyPrimitiveTopologyTriangle()
-{
- RenderPlugin::Instance()->ApplyPrimitiveTopologyTriangle();
-}
-
-///////////////////////////////////////////////////////////////////
-// shader magement
-///////////////////////////////////////////////////////////////////
-void ApplyShader(SHADER_TYPE st)
-{
- RenderPlugin::Instance()->ApplyShader(st);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- RenderPlugin::Instance()->CopyShaderParam(st, pSysMem, bytes, slot);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Viewport magement
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(Viewport& vp)
-{
- RenderPlugin::Instance()->GetViewport(vp);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SetViewport(const Viewport& vp)
-{
- RenderPlugin::Instance()->SetViewport(vp);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return RenderPlugin::Instance()->CreateRenderWindow(hWnd, nSamples);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- return RenderPlugin::Instance()->ResizeRenderWindow(w,h);
-}
-
-void PresentRenderWindow()
-{
- return RenderPlugin::Instance()->PresentRenderWindow();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- return RenderPlugin::Instance()->ClearRenderWindow(r,g,b);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Texture resource management
-///////////////////////////////////////////////////////////////////////////////
-static GPUShaderResource* g_backgroundTextureSRV = 0;
-
-bool LoadBackgroundTexture(const char* filePath)
-{
- ClearBackgroundTexture();
-
- RenderPlugin::Instance()->PreRender();
- g_backgroundTextureSRV = RenderPlugin::Instance()->CreateTextureSRV(filePath);
- RenderPlugin::Instance()->PostRender();
-
- return (g_backgroundTextureSRV != 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void RenderBackgroundTexture()
-{
- RenderScreenQuad(g_backgroundTextureSRV);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ClearBackgroundTexture()
-{
- SAFE_RELEASE(g_backgroundTextureSRV);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- RenderPlugin::Instance()->TxtHelperBegin();
-}
-
-void TxtHelperEnd()
-{
- RenderPlugin::Instance()->TxtHelperEnd();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- RenderPlugin::Instance()->TxtHelperSetInsertionPos(x,y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- RenderPlugin::Instance()->TxtHelperSetForegroundColor(r,g,b,a);
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- RenderPlugin::Instance()->TxtHelperDrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h
deleted file mode 100644
index 9bc4036..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h
+++ /dev/null
@@ -1,175 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "windows.h"
-
-#include "RenderResources.h"
-
-// API agnostic interface for rendering
-namespace RenderInterface
-{
- ///////////////////////////////////////////////////////////////////
- enum RASTERIZER_STATE
- {
- RASTERIZER_STATE_FILL_CULL_NONE,
- RASTERIZER_STATE_FILL_CULL_FRONT,
- RASTERIZER_STATE_FILL_CULL_BACK,
- RASTERIZER_STATE_WIRE,
- RASTERIZER_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum DEPTH_STENCIL_STATE
- {
- DEPTH_STENCIL_DEPTH_TEST,
- DEPTH_STENCIL_DEPTH_NONE,
- DEPTH_STENCIL_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum SAMPLER_TYPE
- {
- SAMPLER_TYPE_LINEAR,
- SAMPLER_TYPE_POINTCLAMP,
- SAMPLER_TYPE_END,
- };
-
- ///////////////////////////////////////////////////////////////////
- enum BLEND_STATE
- {
- BLEND_STATE_ALPHA,
- BLEND_STATE_NONE,
- BLEND_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum SHADER_TYPE
- {
- SHADER_TYPE_MESH_RENDERING,
- SHADER_TYPE_MESH_SHADOW,
- SHADER_TYPE_SCREEN_QUAD,
- SHADER_TYPE_SCREEN_QUAD_COLOR,
- SHADER_TYPE_VISUALIZE_SHADOW,
- SHADER_TYPE_SIMPLE_COLOR,
-#ifndef NV_ARTISTTOOLS
- SHADER_TYPE_HAIR_SHADER_DEFAULT,
- SHADER_TYPE_HAIR_SHADER_SHADOW,
-#endif // NV_ARTISTTOOLS
- };
-
- ///////////////////////////////////////////////////////////////////
- // global acess for render context and device to minimize D3D entry points
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool InitDevice(int deviceID);
- CORELIB_EXPORT bool Initialize();
- CORELIB_EXPORT void Shutdown();
-
- CORELIB_EXPORT void SubmitGpuWork();
- CORELIB_EXPORT void WaitForGpu();
-
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool CreateRenderWindow(HWND hWnd, int nSamples);
- CORELIB_EXPORT bool ResizeRenderWindow(int w, int h);
- CORELIB_EXPORT void PresentRenderWindow();
- CORELIB_EXPORT void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // shader magement
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT void ApplyShader(SHADER_TYPE st);
- CORELIB_EXPORT void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- ///////////////////////////////////////////////////////////////////
- // viewport management
- ///////////////////////////////////////////////////////////////////
- struct Viewport
- {
- float TopLeftX;
- float TopLeftY;
- float Width;
- float Height;
- float MinDepth;
- float MaxDepth;
- };
-
- CORELIB_EXPORT void GetViewport(Viewport& vp);
- CORELIB_EXPORT void SetViewport(const Viewport& vp);
-
- ///////////////////////////////////////////////////////////////////
- // gpu buffer management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem = 0);
- CORELIB_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- ///////////////////////////////////////////////////////////////////
- // texture resource mangement
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT GPUShaderResource* CreateTextureResource(const char* filePath);
- CORELIB_EXPORT void RenderShadowMap(GPUShaderResource* pShadowSRV, float znear, float zfar);
-
- ///////////////////////////////////////////////////////////////////
- // render state management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- CORELIB_EXPORT void ApplyRasterizerState(RASTERIZER_STATE state);
- CORELIB_EXPORT void ApplySampler(int slot, SAMPLER_TYPE st);
- CORELIB_EXPORT void ApplyBlendState(BLEND_STATE st);
-
- CORELIB_EXPORT void ApplyForShadow(int ForShadow);
- CORELIB_EXPORT void SwitchToDX11();
- CORELIB_EXPORT void FlushDX11();
- CORELIB_EXPORT void FlushDX12();
- CORELIB_EXPORT void ApplyPrimitiveTopologyLine();
- CORELIB_EXPORT void ApplyPrimitiveTopologyTriangle();
- ///////////////////////////////////////////////////////////////////
- // draw calls
- ///////////////////////////////////////////////////////////////////
- void DrawLineList(GPUBufferResource* pVertexBuffer, unsigned int nVerts, unsigned int bytesize);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- ///////////////////////////////////////////////////////////////////
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
-
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- CORELIB_EXPORT void TxtHelperBegin();
- CORELIB_EXPORT void TxtHelperEnd();
- CORELIB_EXPORT void TxtHelperSetInsertionPos(int x, int y);
- CORELIB_EXPORT void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- CORELIB_EXPORT void TxtHelperDrawTextLine(wchar_t* str);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp
deleted file mode 100644
index 3df8c85..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "RenderPlugin.h"
-
-#include <io.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-RenderPlugin* g_Plugin = nullptr;
-
-RenderPlugin::RenderPlugin()
-{
- m_RenderApi = "";
-}
-
-typedef RenderPlugin*(*Func)(void);
-
-bool RenderPlugin::Load(std::vector<std::string>& render_plugins)
-{
- if (render_plugins.size() == 0)
- {
- return false;
- }
-
- std::vector<std::string>::iterator it;
- std::string pluginDll = "";
- HMODULE module = NULL;
- Func CreateFunc = NULL;
- bool loaded = false;
- for (it = render_plugins.begin(); it != render_plugins.end(); it++)
- {
-#ifdef NV_ARTISTTOOLS
- pluginDll = "RenderPlugin";
-#else
- pluginDll = "FurRender";
-#endif
-
- pluginDll.append(*it);
-
-#ifdef _WIN64
- pluginDll.append(".win64");
-#else
- pluginDll.append(".win32");
-#endif
-
-#ifdef _DEBUG
- pluginDll.append(".d");
-#else
-#endif
-
- pluginDll.append(".dll");
-
- module = LoadLibraryA(pluginDll.c_str());
- if (NULL == module)
- return false;
-
- CreateFunc = (Func)GetProcAddress(module, "CreateRenderPlugin");
- if (NULL == CreateFunc)
- return false;
-
- g_Plugin = CreateFunc();
- if (NULL != g_Plugin)
- {
- loaded = true;
- break;
- }
- }
- return loaded;
-}
-
-RenderPlugin::~RenderPlugin()
-{
-}
-
-
-RenderPlugin* RenderPlugin::Instance()
-{
- return g_Plugin;
-}
-
-void RenderPlugin::Destroy()
-{
- if (nullptr == g_Plugin)
- return;
-
- delete g_Plugin;
- g_Plugin = nullptr;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h
deleted file mode 100644
index e755aea..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h
+++ /dev/null
@@ -1,124 +0,0 @@
-#pragma once
-
-#include "RenderInterface.h"
-using namespace RenderInterface;
-
-class NVHairReadOnlyBuffer;
-class GPUProfiler;
-class ShadowMap;
-
-class IDXGIAdapter;
-class IUnknown;
-class IDXGIFactory1;
-class IDXGISwapChain;
-
-struct D3DHandles
-{
-public:
- IDXGIAdapter* pAdapter;
- IDXGIFactory1* pFactory;
- IUnknown* pDevice;
- IUnknown* pDeviceContext;
-
- IDXGISwapChain* pDXGISwapChain;
- IUnknown* pD3D11BackBuffer;
- IUnknown* pD3D11RenderTargetView;
- IUnknown* pD3D11DepthBuffer;
- IUnknown* pD3D11DepthStencilView;
-};
-
-#ifdef CORERENDER_LIB
-# define CORERENDER_EXPORT Q_DECL_EXPORT
-#else
-# define CORERENDER_EXPORT Q_DECL_IMPORT
-#endif
-
-class CORELIB_EXPORT RenderPlugin
-{
-public:
- static bool Load(std::vector<std::string>& render_plugins);
- static RenderPlugin* Instance();
- static void Destroy();
-
- ~RenderPlugin();
-
- // self
- virtual std::string GetRenderApi() { return m_RenderApi; }
-
- // interface
- virtual bool InitDevice(int deviceID) = 0;
- virtual bool Initialize() = 0;
- virtual void Shutdown() = 0;
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth) = 0;
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state) = 0;
- virtual void ApplyRasterizerState(RASTERIZER_STATE state) = 0;
- virtual void ApplySampler(int slot, SAMPLER_TYPE st) = 0;
- virtual void ApplyBlendState(BLEND_STATE st) = 0;
- virtual void GetViewport(Viewport& vp) = 0;
- virtual void SetViewport(const Viewport& vp) = 0;
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs) = 0;
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs) = 0;
- virtual void ClearInputLayout() = 0;
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0) = 0;
- virtual void SetPrimitiveTopologyTriangleStrip() = 0;
- virtual void SetPrimitiveTopologyTriangleList() = 0;
- virtual void SetPrimitiveTopologyLineList() = 0;
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0) = 0;
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0) = 0;
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL) = 0;
-
- // interface dx12
- virtual void ApplyForShadow(int ForShadow) = 0;
- virtual void SwitchToDX11() = 0;
- virtual void FlushDX11() = 0;
- virtual void FlushDX12() = 0;
- virtual void ApplyPrimitiveTopologyLine() = 0;
- virtual void ApplyPrimitiveTopologyTriangle() = 0;
- virtual void SubmitGpuWork() = 0;
- virtual void WaitForGpu() = 0;
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples) = 0;
- virtual bool ResizeRenderWindow(int w, int h) = 0;
- virtual void PresentRenderWindow() = 0;
- virtual void ClearRenderWindow(float r, float g, float b) = 0;
- virtual bool GetDeviceInfoString(wchar_t *str) = 0;
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename) = 0;
- virtual void TxtHelperBegin() = 0;
- virtual void TxtHelperEnd() = 0;
- virtual void TxtHelperSetInsertionPos(int x, int y) = 0;
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f) = 0;
- virtual void TxtHelperDrawTextLine(wchar_t* str) = 0;
-
- // shader
- virtual bool InitializeShaders() = 0;
- virtual void DestroyShaders() = 0;
- virtual void ApplyShader(SHADER_TYPE st) = 0;
- virtual void DisableShader(SHADER_TYPE st) = 0;
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0) = 0;
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler() = 0;
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution) = 0;
-
- // D3D12RenderContext
- virtual void PreRender() = 0;
- virtual void PostRender() = 0;
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData) = 0;
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource) = 0;
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles) = 0;
-
-protected:
- RenderPlugin();
- std::string m_RenderApi;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp
deleted file mode 100644
index 19863fc..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "RenderResources.h"
-
-// shared path
-#include "AnimUtil.h"
-#include "MeshData.h"
-
-#include "RenderPlugin.h"
-
-////////////////////////////////////////////////////////////////////////////////////////
-GPUMeshResources* GPUMeshResources::Create(MeshData* pMeshData, const SkinData& skinData)
-{
- return RenderPlugin::Instance()->GPUMeshResourcesCreate(pMeshData, skinData);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-void GPUMeshResources::Release()
-{
- RenderPlugin::Instance()->GPUMeshResourcesRelease(this);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h
deleted file mode 100644
index c261730..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#pragma once
-
-#include "corelib_global.h"
-#include "CoreLib.h"
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-//////////////////////////////////////////////////////////////////////////////////////
-// API specific GPU resources (todo - add reference counting)
-//////////////////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUBufferResource
-{
-public:
- virtual ~GPUBufferResource() {}
- virtual void Release() = 0;
-};
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUShaderResource
-{
-public:
- virtual ~GPUShaderResource() {}
- virtual void Release() = 0;
-};
-
-class MeshData;
-class SkinData;
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUMeshResources
-{
-public:
- GPUBufferResource* m_pVertexBuffer;
- GPUShaderResource* m_pBoneIndicesSRV;
- GPUShaderResource* m_pBoneWeightsSRV;
-
- static GPUMeshResources* Create(MeshData*, const SkinData& skinData);
- void Release();
-};
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h b/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h
deleted file mode 100644
index 9935f71..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "MathUtil.h"
-
-#define MAX_LIGHTS 4
-
-// shader parameter for light
-struct LightParam
-{
- int m_enable;
- atcore_float3 m_dir;
-
- int m_useShadows;
- atcore_float3 m_color;
-
- atcore_float3 m_ambientColor;
- int m_isEnvLight;
-
- int m_lhs;
- int _reserved1;
- int _reserved2;
- int _reserved3;
-
- float m_depthBias;
- float m_depthGain;
- int m_useEnvMap;
- float m_intensity;
-
- atcore_float4x4 m_viewMatrix;
- atcore_float4x4 m_lightMatrix;
-
-public:
- LightParam()
- {
- m_dir = gfsdk_makeFloat3(-1.0f, -1.0f, -1.0f);
- m_enable = 0;
- m_useShadows = false;
- m_isEnvLight = 0;
- m_useEnvMap = 0;
-
- m_depthBias = 1.0f;
- m_depthGain = 1.0f;
-
- m_color = gfsdk_makeFloat3(1.0f, 1.0f, 1.0f);
- m_ambientColor = gfsdk_makeFloat3(0.0f, 0.0f, 0.0f);
- }
-};
-
-
-// light shader block in c-buffer
-struct LightShaderParam
-{
- LightParam m_lightParam[MAX_LIGHTS];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h b/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h
deleted file mode 100644
index 5dce51d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "MathUtil.h"
-#include "LightShaderParam.h"
-
-// same layout as the constant buffer used in body shader
-#define MAX_BONE_MATRICES 512
-
-// shared struct for mesh shader cbuffer and material access
-struct MeshShaderParam
-{
- atcore_float4x4 m_ViewProjection;
- atcore_float4x4 m_BodyTransformation;
-
- LightShaderParam m_lightParam;
-
- atcore_float3 m_eyePosition;
- float m_specularShininess;
-
- int m_useDiffuseTextures;
- int m_useSpecularTextures;
- int m_useNormalTextures;
- int m_useTextures;
-
-
- atcore_float4 m_ambientColor;
- atcore_float4 m_diffuseColor;
- atcore_float4 m_specularColor;
-
- int m_wireFrame;
- int m_useLighting;
- int m_wireFrameOver;
- float m_unitScale;
-
- int m_useDQs;
- int m_diffuseChannel;
- int m_flatNormal;
- int m_usePinPos;
-
- atcore_float4x4 m_boneMatrices[MAX_BONE_MATRICES];
- atcore_dualquaternion m_boneDQs[MAX_BONE_MATRICES];
-
- MeshShaderParam()
- {
- m_specularShininess = 30.0f;
-
- m_ambientColor = gfsdk_makeFloat4(0.0f, 0.0f, 0.0f, 1.0f);
- m_diffuseColor = gfsdk_makeFloat4(1.0f, 1.0f, 1.0f, 1.0f);
- m_specularColor = gfsdk_makeFloat4(0.0f, 0.0f, 0.0f, 0.0f);
-
- m_useDiffuseTextures = true;
- m_useSpecularTextures = true;
- m_useNormalTextures = true;
- m_useTextures = true;
-
- m_wireFrame = false;
- m_wireFrameOver = false;
- m_useLighting = true;
- m_unitScale = 1.0f;
-
- m_useDQs = false;
- m_flatNormal = false;
-
- m_usePinPos = false;
-
- memset(m_boneMatrices, 0, sizeof(atcore_float4x4) * MAX_BONE_MATRICES);
- memset(m_boneDQs, 0, sizeof(atcore_dualquaternion) * MAX_BONE_MATRICES);
- }
-};
-
-// struct for mesh shadow shader cbuffer
-struct MeshShadowShaderParam
-{
- atcore_float4x4 m_ViewProjection;
- atcore_float4x4 m_ViewMatrix;
- atcore_float4x4 m_BodyTransformation;
-
- int m_useDQs;
- int m_usePinPos;
- float _reserved_[2];
-
- atcore_float4x4 m_boneMatrices[MAX_BONE_MATRICES];
- atcore_dualquaternion m_boneDQs[MAX_BONE_MATRICES];
-
- MeshShadowShaderParam()
- {
- m_useDQs = false;
- m_usePinPos = false;
-
- memset(m_boneMatrices, 0, sizeof(atcore_float4x4) * MAX_BONE_MATRICES);
- memset(m_boneDQs, 0, sizeof(atcore_dualquaternion) * MAX_BONE_MATRICES);
- }
-};
-
-struct SimpleShaderParam
-{
- atcore_float4x4 world;
- atcore_float4x4 view;
- atcore_float4x4 projection;
- atcore_float4 color;
-
- int useVertexColor;
- int dummy2;
- int dummy3;
- int dummy4;
-};
-
-struct ShadowVizParam
-{
- float m_zNear;
- float m_zFar;
- float _align1;
- float _align2;
-}; \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp
deleted file mode 100644
index 72b90be..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "ShadowMap.h"
-
-#include "RenderPlugin.h"
-
-/////////////////////////////////////////////////////////////////////////
-ShadowMap* ShadowMap::Create(int resolution)
-{
- return RenderPlugin::Instance()->CreateShadowMap(resolution);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h
deleted file mode 100644
index 9a62b06..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-class GPUShaderResource;
-
-struct ShadowMap
-{
-public:
- static ShadowMap* ShadowMap::Create(int resolution);
- virtual ~ShadowMap() {}
-
- virtual void Release() = 0;
- virtual void BeginRendering(float clearDepth) = 0;
- virtual void EndRendering() = 0;
-
- virtual GPUShaderResource* GetShadowSRV() = 0;
-};
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp b/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp
deleted file mode 100644
index 0dfb169..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp
+++ /dev/null
@@ -1,493 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "SimpleRenderable.h"
-
-#include "RenderInterface.h"
-
-#include <vector>
-
-#include "Nv.h"
-
-static std::vector<SimpleRenderable*> g_SimpleShapes;
-
-struct DefaultVertexType
-{
- atcore_float3 pos;
- atcore_float4 color;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleRenderable::SimpleRenderable()
- : m_pVertexBuffer(NV_NULL)
- , m_numIndices(0)
- , m_numVertices(0)
-{
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleRenderable::~SimpleRenderable()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Free()
-{
- SAFE_RELEASE(m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::Initialize()
-{
- //////////////////////////////////////////////////////////////////////////////
- // create icon shape
- g_SimpleShapes.resize(NUM_SHAPE_TYPES);
-
- g_SimpleShapes[GROUND_YUP] = new SimpleRenderable;
- g_SimpleShapes[GROUND_YUP]->InitGroundGeometry(false);
-
- g_SimpleShapes[GROUND_ZUP] = new SimpleRenderable;
- g_SimpleShapes[GROUND_ZUP]->InitGroundGeometry(true);
-
- g_SimpleShapes[AXIS_YUP] = new SimpleRenderable;
- g_SimpleShapes[AXIS_YUP]->InitAxisGeometry(false);
-
- g_SimpleShapes[AXIS_ZUP] = new SimpleRenderable;
- g_SimpleShapes[AXIS_ZUP]->InitAxisGeometry(true);
-
- g_SimpleShapes[WIND_YUP] = new SimpleRenderable;
- g_SimpleShapes[WIND_YUP]->InitWindGeometry();
-
- g_SimpleShapes[WIND_ZUP] = new SimpleRenderable;
- g_SimpleShapes[WIND_ZUP]->InitWindGeometry();
-
- g_SimpleShapes[LIGHT] = new SimpleRenderable;
- g_SimpleShapes[LIGHT]->InitLightGeometry();
-
- g_SimpleShapes[LIGHT_RAY] = new SimpleRenderable;
- g_SimpleShapes[LIGHT_RAY]->InitLightRayGeometry();
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Draw(SHAPE_TYPE t, bool depthTest)
-{
- if (t >= g_SimpleShapes.size())
- return;
-
- g_SimpleShapes[t]->Draw(depthTest);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Shutdown()
-{
- for (int i = 0; i < g_SimpleShapes.size(); i++)
- {
- if (g_SimpleShapes[i])
- {
- g_SimpleShapes[i]->Free();
- delete g_SimpleShapes[i];
- }
- }
-
- g_SimpleShapes.clear();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitGroundGeometry(bool zUP)
-{
- const int nSeed = 10;
- const int nRow = nSeed * 2 + 1;
- const int nLines = nRow * 2;
- const float fLen = 25.0f;
- const float fSpace = fLen/nSeed;
- float groundHeight = 0.0f;
-
- const atcore_float4 color1 = gfsdk_makeFloat4(0.65, 0.65, 0.65, 1.0f);
- const atcore_float4 color2 = gfsdk_makeFloat4(0.1f, 0.1f, 0.1f, 1.0f);
-
- DWORD offset;
-
- const int numVerts = nLines * 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- //build ground lines/verts
- for(int i = 0; i < nSeed; i++)
- {
- if ( zUP )
- {
- // lines parallel to y
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), -fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- // lines parallel to y
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), -fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, -fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, -fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
- }
- else
- {
- // lines parallel to z
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), groundHeight, -fLen);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), groundHeight, fLen);
- pData->color = color1;
- pData++;
-
- // lines parallel to z
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), groundHeight, -fLen);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), groundHeight, fLen);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, -fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, -fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, fSpace * (i+1));
- pData->color = color1;
- pData++;
- }
- }
-
- if ( zUP )
- {
- // line y
- pData->pos = gfsdk_makeFloat3(-fLen, 0.0f, groundHeight);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, 0.0f, groundHeight);
- pData->color = color2;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(0.0f, -fLen, groundHeight);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0.0f, fLen, groundHeight);
- pData->color = color2;
- pData++;
- }
- else
- {
- // line z
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, 0.0f);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, 0.0f);
- pData->color = color2;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(0.0f, groundHeight, -fLen);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0.0f, groundHeight, fLen);
- pData->color = color2;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitAxisGeometry(bool zUP)
-{
- const atcore_float4 colorRed = gfsdk_makeFloat4(1.0f, 0, 0, 1.0f);
- const atcore_float4 colorGreen = gfsdk_makeFloat4(0, 1.0f, 0, 1.0f);
- const atcore_float4 colorBlue = gfsdk_makeFloat4(0, 0, 1.0f, 1.0f);
- const float dist = 1.0f;
- const int numVerts = 3 * 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- {
- // x axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(dist, 0, 0);
- pData->color = colorRed;
- pData++;
-
- // y axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorGreen;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, dist, 0);
- pData->color = colorGreen;
- pData++;
-
- // z axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, 0, dist);
- pData->color = colorBlue;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitLightGeometry()
-{
- // The following geometry data are generated by external/ObjLoad tool
-#include "GeometryData/LightGeometryData.h"
- const atcore_float4 colorYellow = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- const int numVerts = num_faces*3*2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- const float modelScale = 0.25f;
- for (int fi = 0; fi < num_faces; ++fi)
- {
- float* v0 = &vertices[(fi*3+0)*8];
- float* v1 = &vertices[(fi*3+1)*8];
- float* v2 = &vertices[(fi*3+2)*8];
-
- // flip Y
- v0[2] *= -1;
- v1[2] *= -1;
- v2[2] *= -1;
-
- // line 0
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorYellow;
- pData++;
-
- // line 1
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorYellow;
- pData++;
-
- // line 2
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorYellow;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitLightRayGeometry()
-{
- const atcore_float4 colorRed = gfsdk_makeFloat4(1.0f, 0, 0, 1.0f);
- const int numVerts = 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitWindGeometry()
-{
- // The following geometry data are generated by external/ObjLoad tool
-#include "GeometryData/WindGeometryData.h"
- const atcore_float4 colorBlue = gfsdk_makeFloat4(0, 0, 1.0f, 1.0f);
- const int numVerts = num_faces*3*2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- const float modelScale = 0.5f;
- for (int fi = 0; fi < num_faces; ++fi)
- {
- float* v0 = &vertices[(fi*3+0)*8];
- float* v1 = &vertices[(fi*3+1)*8];
- float* v2 = &vertices[(fi*3+2)*8];
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorBlue;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Draw(bool depthTest)
-{
- RenderInterface::ApplyPrimitiveTopologyLine();
-
- RenderInterface::ApplyShader(RenderInterface::SHADER_TYPE_SIMPLE_COLOR);
- RenderInterface::DrawLineList(m_pVertexBuffer, m_numVertices, sizeof(DefaultVertexType));
-
- RenderInterface::FlushDX12();
- RenderInterface::ApplyPrimitiveTopologyTriangle();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::DrawLine(const atcore_float3& from, const atcore_float3& to)
-{
- SimpleRenderable* pShape = g_SimpleShapes[LIGHT_RAY];
-
- DefaultVertexType buf[2];
- DefaultVertexType* pData = buf;
-
- // start position
- pData->pos = from;
- pData->color = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- pData++;
-
- // end position
- pData->pos = to;
- pData->color = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- pData++;
-
- RenderInterface::CopyToDevice(pShape->m_pVertexBuffer, buf, 2 * sizeof(DefaultVertexType));
-
- pShape->Draw(true);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h b/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h
deleted file mode 100644
index c43c07d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#pragma once
-
-#include "MathUtil.h"
-
-class GPUBufferResource;
-
-class SimpleRenderable
-{
-public:
- enum SHAPE_TYPE
- {
- GROUND_YUP,
- GROUND_ZUP,
- AXIS_YUP,
- AXIS_ZUP,
- WIND_YUP,
- WIND_ZUP,
- LIGHT,
- LIGHT_RAY,
- NUM_SHAPE_TYPES
- };
-
- static bool Initialize();
- static void Shutdown();
- static void Draw(SHAPE_TYPE t, bool depthTest = true);
- static void DrawLine(const atcore_float3& from, const atcore_float3& to);
-
-protected:
- GPUBufferResource* m_pVertexBuffer;
-
- unsigned int m_numVertices;
- unsigned int m_numIndices;
-
- SimpleRenderable();
- ~SimpleRenderable();
-
- bool InitGroundGeometry(bool zUp);
- bool InitAxisGeometry(bool zUp);
- bool InitLightGeometry();
- bool InitLightRayGeometry();
- bool InitWindGeometry();
-
- void Draw(bool depthTest = true);
-
- void Free();
-
-};
-