From f1e539cadfb085cedc32f9773cfb9d14bfcdf138 Mon Sep 17 00:00:00 2001 From: Bryan Galdrikian Date: Wed, 23 Aug 2017 11:24:32 -0700 Subject: Removing ArtistTools and CurveEditor projects --- .../source/CoreLib/Render/D3D11/D3D11Buffer.cpp | 31 - .../source/CoreLib/Render/D3D11/D3D11Buffer.h | 65 - .../CoreLib/Render/D3D11/D3D11GPUProfiler.cpp | 138 -- .../source/CoreLib/Render/D3D11/D3D11GPUProfiler.h | 56 - .../CoreLib/Render/D3D11/D3D11RenderInterface.cpp | 910 ------- .../CoreLib/Render/D3D11/D3D11RenderInterface.h | 90 - .../CoreLib/Render/D3D11/D3D11RenderShader.cpp | 256 -- .../CoreLib/Render/D3D11/D3D11RenderShader.h | 72 - .../CoreLib/Render/D3D11/D3D11RendererWindow.cpp | 319 --- .../CoreLib/Render/D3D11/D3D11RendererWindow.h | 43 - .../source/CoreLib/Render/D3D11/D3D11Shaders.cpp | 194 -- .../source/CoreLib/Render/D3D11/D3D11Shaders.h | 43 - .../source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp | 208 -- .../source/CoreLib/Render/D3D11/D3D11ShadowMap.h | 72 - .../CoreLib/Render/D3D11/D3D11TextureResource.cpp | 29 - .../CoreLib/Render/D3D11/D3D11TextureResource.h | 64 - .../source/CoreLib/Render/D3D11/D3D11Util.cpp | 333 --- .../source/CoreLib/Render/D3D11/D3D11Util.h | 69 - .../source/CoreLib/Render/D3D11/D3D11Wrapper.cpp | 33 - .../source/CoreLib/Render/D3D11/D3D11Wrapper.h | 14 - .../CoreLib/Render/D3D11/RenderPluginDx11.cpp | 315 --- .../source/CoreLib/Render/D3D11/RenderPluginDx11.h | 83 - .../source/CoreLib/Render/D3D12/D3D12Buffer.cpp | 31 - .../source/CoreLib/Render/D3D12/D3D12Buffer.h | 81 - .../CoreLib/Render/D3D12/D3D12GPUProfiler.cpp | 222 -- .../source/CoreLib/Render/D3D12/D3D12GPUProfiler.h | 63 - .../CoreLib/Render/D3D12/D3D12RenderContext.cpp | 564 ----- .../CoreLib/Render/D3D12/D3D12RenderContext.h | 254 -- .../CoreLib/Render/D3D12/D3D12RenderInterface.cpp | 467 ---- .../CoreLib/Render/D3D12/D3D12RenderInterface.h | 74 - .../CoreLib/Render/D3D12/D3D12RenderShader.cpp | 384 --- .../CoreLib/Render/D3D12/D3D12RenderShader.h | 85 - .../CoreLib/Render/D3D12/D3D12RenderTarget.cpp | 371 --- .../CoreLib/Render/D3D12/D3D12RenderTarget.h | 110 - .../CoreLib/Render/D3D12/D3D12RendererWindow.cpp | 141 -- .../CoreLib/Render/D3D12/D3D12RendererWindow.h | 29 - .../source/CoreLib/Render/D3D12/D3D12Shaders.cpp | 231 -- .../source/CoreLib/Render/D3D12/D3D12Shaders.h | 42 - .../source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp | 99 - .../source/CoreLib/Render/D3D12/D3D12ShadowMap.h | 68 - .../CoreLib/Render/D3D12/D3D12TextureResource.cpp | 29 - .../CoreLib/Render/D3D12/D3D12TextureResource.h | 89 - .../source/CoreLib/Render/D3D12/D3D12Util.cpp | 386 --- .../source/CoreLib/Render/D3D12/D3D12Util.h | 68 - .../source/CoreLib/Render/D3D12/D3D12Wrapper.cpp | 33 - .../source/CoreLib/Render/D3D12/D3D12Wrapper.h | 14 - .../CoreLib/Render/D3D12/RenderPluginDx12.cpp | 343 --- .../source/CoreLib/Render/D3D12/RenderPluginDx12.h | 83 - .../source/CoreLib/Render/GPUProfiler.cpp | 87 - .../source/CoreLib/Render/GPUProfiler.h | 61 - .../CoreLib/Render/GeometryData/BoneGeometryData.h | 305 --- .../Render/GeometryData/LightGeometryData.h | 269 --- .../CoreLib/Render/GeometryData/WindGeometryData.h | 2513 -------------------- .../CoreLib/Render/Interface/RenderInterface.cpp | 351 --- .../CoreLib/Render/Interface/RenderInterface.h | 175 -- .../CoreLib/Render/Interface/RenderPlugin.cpp | 86 - .../source/CoreLib/Render/Interface/RenderPlugin.h | 124 - .../CoreLib/Render/Interface/RenderResources.cpp | 47 - .../CoreLib/Render/Interface/RenderResources.h | 72 - .../source/CoreLib/Render/LightShaderParam.h | 83 - .../source/CoreLib/Render/MeshShaderParam.h | 142 -- .../source/CoreLib/Render/ShadowMap.cpp | 36 - .../ArtistTools/source/CoreLib/Render/ShadowMap.h | 48 - .../source/CoreLib/Render/SimpleRenderable.cpp | 493 ---- .../source/CoreLib/Render/SimpleRenderable.h | 75 - 65 files changed, 12765 deletions(-) delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/ShadowMap.h delete mode 100644 tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp delete mode 100644 tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h (limited to 'tools/ArtistTools/source/CoreLib/Render') 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(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(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 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(&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(&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(&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 -#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 - -// 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 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(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 - -// 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(pBuffer); - if (!pD3D12Buffer) - return 0; - return pD3D12Buffer->m_pBuffer; - } - - static D3D12_VERTEX_BUFFER_VIEW* GetVertexView(GPUBufferResource* pBuffer) - { - GPUBufferD3D12* pD3D12Buffer = dynamic_cast(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(&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(&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(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 -/* -#include -*/ -#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 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 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(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 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::const_iterator cur = m_gpuInterfaces.begin(); - std::vector::const_iterator end = m_gpuInterfaces.end(); - - for (; cur != end; cur++) - { - (*cur)->onGpuWorkSubmitted(queue); - } -} - -void D3D12RenderContext::UpdateGpuWorkCompleted() -{ - std::vector::const_iterator cur = m_gpuInterfaces.begin(); - std::vector::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(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 -using namespace Microsoft::WRL; - -struct NVHairHeap -{ - ComPtr m_pHeap; - UINT m_sizeHeap; - UINT m_currentIndex; - UINT m_sizeDescriptor; - std::vector 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 m_pBuffer; - ComPtr 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 m_pBuffer; - ComPtr 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 m_factory; - ComPtr m_adapter; - - ComPtr m_device; - ComPtr m_commandQueue; - ComPtr m_commandAllocator; - ComPtr m_commandList; - ComPtr m_swapChain; - - ComPtr m_d3d11Device; - ComPtr m_d3d11On12Device; - ComPtr m_d3d11DeviceContext; - ID3D11Resource** m_wrappedBackBuffers; - ID3D11RenderTargetView** m_pD3D11RenderTargetView; - - UINT m_frameIndex; - HANDLE m_fenceEvent; - ComPtr m_fence; - UINT64 m_fenceValue; - - D3D12RenderTarget* m_pCurrentRenderTarget; - map m_RenderTargetMap; - - std::vector 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 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::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(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 -#include -#include -#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 signature; - ComPtr 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::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(m_vertexShader), m_vertexShaderSize }; - psoDesc.PS = { reinterpret_cast(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 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 -#include - -#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 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 -#include -#include -#include -#include -#include "d3dx12.h" -#include -#include -#include -#include -#include -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 m_rtvHeap; - UINT m_rtvDescriptorSize; - ComPtr 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 -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 -#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 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 -#include -#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(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(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 -#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 layouts(numMipMaps); - std::vector row_sizes_in_bytes(numMipMaps); - std::vector 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(&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(&pDXGIDevice1)); - - IDXGIAdapter1 *pDXGIAdapter1 = NULL; - pDXGIDevice1->GetParent(__uuidof(IDXGIAdapter1), reinterpret_cast(&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 - -#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 - -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 -#include -#include - -RenderPlugin* g_Plugin = nullptr; - -RenderPlugin::RenderPlugin() -{ - m_RenderApi = ""; -} - -typedef RenderPlugin*(*Func)(void); - -bool RenderPlugin::Load(std::vector& render_plugins) -{ - if (render_plugins.size() == 0) - { - return false; - } - - std::vector::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& 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 - -#include "Nv.h" - -static std::vector 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(); - -}; - -- cgit v1.2.3