aboutsummaryrefslogtreecommitdiff
path: root/tools/ArtistTools/source/CoreLib
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2017-08-23 11:24:32 -0700
committerBryan Galdrikian <[email protected]>2017-08-23 11:24:32 -0700
commitf1e539cadfb085cedc32f9773cfb9d14bfcdf138 (patch)
tree7ca74e06a4386dd22fd850a8417a31a85d282a30 /tools/ArtistTools/source/CoreLib
parentUpdated to CL 22661993: (diff)
downloadblast-f1e539cadfb085cedc32f9773cfb9d14bfcdf138.tar.xz
blast-f1e539cadfb085cedc32f9773cfb9d14bfcdf138.zip
Removing ArtistTools and CurveEditor projects
Diffstat (limited to 'tools/ArtistTools/source/CoreLib')
-rw-r--r--tools/ArtistTools/source/CoreLib/Anim/AnimUtil.cpp417
-rw-r--r--tools/ArtistTools/source/CoreLib/Anim/AnimUtil.h219
-rw-r--r--tools/ArtistTools/source/CoreLib/Anim/FbxUtil.cpp1029
-rw-r--r--tools/ArtistTools/source/CoreLib/Anim/FbxUtil.h63
-rw-r--r--tools/ArtistTools/source/CoreLib/Backdoor/backdoor.cpp263
-rw-r--r--tools/ArtistTools/source/CoreLib/Backdoor/backdoor.h52
-rw-r--r--tools/ArtistTools/source/CoreLib/CoreLib.cpp1508
-rw-r--r--tools/ArtistTools/source/CoreLib/CoreLib.h125
-rw-r--r--tools/ArtistTools/source/CoreLib/Parameters/FoundationHolder.h138
-rw-r--r--tools/ArtistTools/source/CoreLib/Parameters/HackNvParamBug.cpp6
-rw-r--r--tools/ArtistTools/source/CoreLib/Parameters/PlaylistParams.pl33
-rw-r--r--tools/ArtistTools/source/CoreLib/Parameters/go.bat6
-rw-r--r--tools/ArtistTools/source/CoreLib/PluginInterface.h142
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp31
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h65
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp138
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h56
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp910
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h90
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp256
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp319
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h43
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp194
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h43
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp208
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h64
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp333
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h69
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp33
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h14
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp315
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp31
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h81
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp222
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h63
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp564
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h254
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp467
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h74
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp384
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h85
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp371
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h110
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp141
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp231
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h42
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp99
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp29
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h89
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp386
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp33
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h14
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp343
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp87
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h61
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h305
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h269
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h2513
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp351
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h175
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp86
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h124
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp47
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h72
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h83
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h142
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp36
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/ShadowMap.h48
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp493
-rw-r--r--tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h75
-rw-r--r--tools/ArtistTools/source/CoreLib/Resource/AppMainWindow.qrc4
-rw-r--r--tools/ArtistTools/source/CoreLib/Resource/D3DQt-CC.icobin24358 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/Resource/resource.rc2
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Camera.cpp891
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Camera.h129
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Gamepad.cpp1307
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Gamepad.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.cpp357
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.h177
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Light.cpp744
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Light.h152
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/MeshData.cpp108
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/MeshData.h74
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Mouse.cpp105
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/Mouse.h103
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/SimpleScene.cpp1257
-rw-r--r--tools/ArtistTools/source/CoreLib/Scene/SimpleScene.h213
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/AppMainWindow.qrc36
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/AppMainWindow.ui428
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/CameraBookmarksDialog.ui76
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/DisplayLightPanel.ui645
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/DisplayPreferencesPanel.ui885
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/DisplayScenePanel.ui616
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/OutputWindow.ui19
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/ThemeDark.qss457
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/ThemeDefault.qss76
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/Add.pngbin1200 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/ArrowDown.pngbin84 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/ArrowUp.pngbin87 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/CheckBox.pngbin202 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/CurveEditor.pngbin3263 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/DarkBorder.pngbin156 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/Down.pngbin591 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/EditWrench.pngbin4041 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/Refresh_icon.pngbin3702 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/Remove_icon.pngbin3383 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/TextureBox.bmpbin1062 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/TextureDisabled_icon.pngbin3031 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/TextureEnabled_icon.pngbin636 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/TextureIsUsed_icon.pngbin541 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/Up.pngbin304 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/importFile.pngbin3018 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/openFile.pngbin1150 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/playlist.pngbin1767 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/refreshReload.pngbin3164 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/saveDisc.pngbin3065 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/simulationPlay.pngbin4060 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/simulationStep.pngbin4774 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/simulationStop.pngbin1748 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/transportLoop.pngbin4660 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/transportPlay.pngbin3465 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/transportRewind.pngbin4649 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/transportStepForward.pngbin3762 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/transportStop.pngbin2946 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_notVisible.pngbin19891 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_visible.pngbin20126 -> 0 bytes
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Automate.cpp530
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Automate.h23
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/CoreLibUtils.h65
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/MathUtil.cpp327
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/MathUtil.h557
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Profiler.cpp82
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Profiler.h51
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Settings.cpp767
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Settings.h392
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Stats.cpp76
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Stats.h54
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Timer.cpp80
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/Timer.h68
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.cpp75
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.h136
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/XMLHelper.cpp121
-rw-r--r--tools/ArtistTools/source/CoreLib/Utils/XMLHelper.h39
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/AppMainWindow.cpp1593
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/AppMainWindow.h221
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.cpp106
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.h31
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/D3DWidget.cpp150
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/D3DWidget.h51
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.cpp263
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.h47
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.cpp177
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.h80
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.cpp915
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.h100
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.cpp106
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.h41
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.cpp190
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.h51
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/OutputWindow.cpp22
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/OutputWindow.h22
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.cpp17
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.h284
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/SlideSpinBoxInt.h15
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/TipListView.cpp42
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/TipListView.h26
-rw-r--r--tools/ArtistTools/source/CoreLib/Window/UIGlobal.h37
-rw-r--r--tools/ArtistTools/source/CoreLib/corelib_global.h20
176 files changed, 0 insertions, 33745 deletions
diff --git a/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.cpp b/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.cpp
deleted file mode 100644
index f070f42..0000000
--- a/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.cpp
+++ /dev/null
@@ -1,417 +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.
-//
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// This file contains wrapper functions to make hair lib easy to setup and use
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#include <vector>
-#include <string>
-
-#include "AnimUtil.h"
-#include "MathUtil.h"
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-AnimationCache::~AnimationCache()
-{
- Release();
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void AnimationCache::Initialize(int numBones, NvInt32 frameStart, NvInt32 frameEnd)
-{
- m_numBones = numBones;
- m_frameStart = frameStart;
- m_frameEnd = frameEnd;
-
- m_numFrames = frameEnd - frameStart + 1;
-
- Release();
- Allocate();
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void AnimationCache::Allocate()
-{
- m_pBoneMatrices = new atcore_float4x4[m_numFrames * m_numBones];
- m_pBoneNames = new char[NV_HAIR_MAX_STRING * m_numBones];
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void AnimationCache::Release()
-{
- if (m_pBoneMatrices)
- delete []m_pBoneMatrices;
-
- if (m_pBoneNames)
- delete []m_pBoneNames;
-
- m_pBoneMatrices = 0;
- m_pBoneNames = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool AnimationCache::GetInterpolationInfo(float frame, int& indexStart, int& indexEnd, float &fracFrame)
-{
- if (frame < m_frameStart)
- return false;
-
- if (frame > m_frameEnd)
- return false;
-
- int startFrame = (int)frame;
-
- fracFrame = frame - startFrame;
-
- indexStart = (int)(frame - m_frameStart);
- indexEnd = indexStart + 1;
-
- if (indexEnd >= (int)m_numFrames)
- {
- indexEnd = indexStart;
- fracFrame = 0.0f;
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-int AnimationCache::FindBone(const char *toFind) const
-{
- if (!toFind)
- return -1;
- for (int i = 0; i < m_numBones; i++)
- {
- const char* boneName = GetBoneName(i);
- if (!strcmp(boneName, toFind))
- return i;
- }
- return -1;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool AnimationCache::FindBoneMapping( int numBones, const NvChar* boneNames, int* mappedBoneId) const
-{
- // mappedBoneId must be pre-allocated
-
- for (int i = 0; i < numBones; i++)
- {
- mappedBoneId[i] = FindBone(boneNames + i * NV_HAIR_MAX_STRING);
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void BoneData::Allocate(NvUInt32 numBones)
-{
- Release();
-
- m_numBones = numBones;
-
- m_pPoseMatrices = new atcore_float4x4[numBones];
- m_pSkinMatrices = new atcore_float4x4[numBones];
- m_pBoneMatrices = new atcore_float4x4[numBones];
-
- m_pSkinDQs = new atcore_dualquaternion[numBones];
- m_pBoneNames = new char[NV_HAIR_MAX_STRING * m_numBones];
- m_pMappedBoneId = new int[numBones];
-
- for (int i = 0; i < numBones; i++)
- {
- gfsdk_makeIdentity(m_pPoseMatrices[i]);
- gfsdk_makeIdentity(m_pSkinMatrices[i]);
- m_pMappedBoneId[i] = -1;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void BoneData::Release()
-{
- if (m_pPoseMatrices)
- {
- delete []m_pPoseMatrices;
- m_pPoseMatrices = 0;
- }
-
- if (m_pBoneMatrices)
- {
- delete []m_pBoneMatrices;
- m_pBoneMatrices = 0;
- }
-
- if (m_pSkinMatrices)
- {
- delete []m_pSkinMatrices;
- m_pSkinMatrices = 0;
- }
-
- if (m_pSkinDQs)
- {
- delete []m_pSkinDQs;
- m_pSkinDQs = 0;
- }
-
- if (m_pBoneNames)
- {
- delete []m_pBoneNames;
- m_pBoneNames = 0;
- }
-
- if (m_pMappedBoneId)
- {
- delete []m_pMappedBoneId;
- m_pMappedBoneId = 0;
- }
-
- m_numBones = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void BoneData::InitializeAnimationCache(AnimationCache* pGlobalCache, const char* nodeName)
-{
- if (!pGlobalCache || !pGlobalCache->isValid())
- return;
-
- pGlobalCache->FindBoneMapping(m_numBones, m_pBoneNames, m_pMappedBoneId);
-
- m_nodeId = pGlobalCache->FindBone(nodeName);
-
- m_pAnimationCache = pGlobalCache;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool BoneData::Update(float frameTime, const char* rootBoneName, bool bindPose, bool zup)
-{
- if (!m_pAnimationCache || !m_pAnimationCache->isValid() )
- bindPose = true;
-
- atcore_float4x4 model;
- gfsdk_makeIdentity(model);
-
- if (bindPose)
- {
- for (int i = 0; i < m_numBones; i++)
- {
- m_pBoneMatrices[i] = m_pPoseMatrices[i];
- m_pSkinMatrices[i] = model;
- m_pSkinDQs[i] = gfsdk_makeDQ(m_pSkinMatrices[i]);
- }
- return true;
- }
-
- int indexStart, indexEnd;
- float fracFrame = 0.0f;
- if (false == m_pAnimationCache->GetInterpolationInfo(frameTime, indexStart, indexEnd, fracFrame))
- return false;
-
- atcore_float4x4* pBoneStart = m_pAnimationCache->GetNodeMatrices(indexStart);
- atcore_float4x4* pBoneEnd = m_pAnimationCache->GetNodeMatrices(indexEnd);
-
- int numBones = m_numBones;
-
- atcore_float4x4 root;
- gfsdk_makeIdentity(root);
-
- if (rootBoneName)
- {
- int rootIndex = m_pAnimationCache->FindBone(rootBoneName);
-
- if (rootIndex >= 0)
- {
- root = gfsdk_lerp(pBoneStart[rootIndex], pBoneEnd[rootIndex], fracFrame);
-
- atcore_float3 lT = gfsdk_getTranslation(root);
-
- if (zup)
- lT.z = 0;
- else
- lT.y = 0;
-
- gfsdk_makeIdentity(root);
- gfsdk_setTranslation(root, -1.0f * lT);
- }
- }
-
- // interpolate skinning matrix
- for (int i = 0; i < numBones; i++)
- {
- atcore_float4x4 bone;
-
- int index = m_pMappedBoneId[i];
- if (index >= 0)
- bone = gfsdk_lerp(pBoneStart[index], pBoneEnd[index], fracFrame);
- else
- gfsdk_makeIdentity(bone);
-
- atcore_float4x4 pose = m_pPoseMatrices[i];
-
- m_pBoneMatrices[i] = bone;
- m_pSkinMatrices[i] = gfsdk_inverse(pose) * bone * root;
- m_pSkinDQs[i] = gfsdk_makeDQ(m_pSkinMatrices[i]);
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void MeshDesc::Allocate(NvUInt32 numVertices, NvUInt32 numTriangles)
-{
- Release();
-
- m_NumTriangles = numTriangles;
- m_NumVertices = numVertices;
-
- m_pVertices = new atcore_float3[numVertices];
-
- m_pVertexNormals = new atcore_float3[numTriangles * 3];
- m_pFaceNormals = new atcore_float3[numTriangles * 3];
-
- m_pTangents = new atcore_float3[numTriangles * 3];
-
- m_pIndices = new NvUInt32[numTriangles * 3];
- m_pTexCoords = new atcore_float2[numTriangles * 3];
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void MeshDesc::Release()
-{
- if (m_pVertices)
- delete []m_pVertices;
- if (m_pVertexNormals)
- delete []m_pVertexNormals;
- if (m_pFaceNormals)
- delete []m_pFaceNormals;
- if (m_pTangents)
- delete []m_pTangents;
-
- if (m_pIndices)
- delete []m_pIndices;
- if (m_pTexCoords)
- delete []m_pTexCoords;
-
- m_NumTriangles = 0;
- m_NumVertices = 0;
-
- m_pVertices = nullptr;
- m_pVertexNormals = nullptr;
- m_pFaceNormals = nullptr;
- m_pTangents = nullptr;
-
- m_pIndices = nullptr;
- m_pTexCoords = nullptr;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void MeshDesc::UpdateNormal(bool updateVertexNormal)
-{
- atcore_float3* vertexNormal = new atcore_float3[m_NumVertices];
- memset(vertexNormal, 0, sizeof(atcore_float3) * m_NumVertices);
-
- for (int i = 0; i < m_NumTriangles; i++)
- {
- atcore_float3 faceNormal;
-
- int fidx = i*3;
- int id0 = m_pIndices[fidx++];
- int id1 = m_pIndices[fidx++];
- int id2 = m_pIndices[fidx++];
-
- atcore_float3 p0 = m_pVertices[id0];
- atcore_float3 p1 = m_pVertices[id1];
- atcore_float3 p2 = m_pVertices[id2];
- atcore_float3 p01 = p1 - p0;
- atcore_float3 p02 = p2 - p0;
-
- faceNormal.x = p01.y * p02.z - p01.z * p02.y;
- faceNormal.y = p01.z * p02.x - p01.x * p02.z;
- faceNormal.z = p01.x * p02.y - p01.y * p02.x;
-
- gfsdk_normalize(faceNormal);
-
- m_pFaceNormals[i * 3 + 0] = faceNormal;
- m_pFaceNormals[i * 3 + 1] = faceNormal;
- m_pFaceNormals[i * 3 + 2] = faceNormal;
-
- vertexNormal[id0] += faceNormal;
- vertexNormal[id1] += faceNormal;
- vertexNormal[id2] += faceNormal;
- }
-
- if (updateVertexNormal)
- {
- for (int i = 0; i < m_NumVertices; ++i)
- gfsdk_normalize(vertexNormal[i]);
-
- for (int i = 0; i < m_NumTriangles; i++)
- {
- int fidx = i*3;
- int id0 = m_pIndices[fidx++];
- int id1 = m_pIndices[fidx++];
- int id2 = m_pIndices[fidx++];
-
- for (int k = 0; k < 3; k++)
- {
- int fidx = i*3 + k;
- int vidx = m_pIndices[fidx];
- m_pVertexNormals[fidx] = vertexNormal[vidx];
- }
- }
- }
-
- delete []vertexNormal;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void SkinData::Allocate(NvUInt32 numBones, NvUInt32 numVertices)
-{
- Release();
-
- m_boneData.Allocate(numBones);
-
- m_pBoneIndices = new atcore_float4[numVertices];
- m_pBoneWeights = new atcore_float4[numVertices];
-
- memset(m_pBoneIndices, 0, sizeof(atcore_float4) * numVertices);
- memset(m_pBoneWeights, 0, sizeof(atcore_float4) * numVertices);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void SkinData::Release()
-{
- // clear memory
- if (m_pBoneIndices)
- delete []m_pBoneIndices;
- if (m_pBoneWeights)
- delete []m_pBoneWeights;
-
- m_pBoneIndices = 0;
- m_pBoneWeights = 0;
-
- m_boneData.Release();
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.h b/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.h
deleted file mode 100644
index 5fd239b..0000000
--- a/tools/ArtistTools/source/CoreLib/Anim/AnimUtil.h
+++ /dev/null
@@ -1,219 +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"
-#include <string.h>
-#define NV_HAIR_MAX_STRING 128
-
-////////////////////////////////////////////////////////////////////////////////////////
-// cache for animated bone data
-struct CORELIB_EXPORT AnimationCache
-{
- NvUInt32 m_numBones;
- NvChar* m_pBoneNames;
-
- NvInt32 m_frameStart;
- NvInt32 m_frameEnd;
- NvUInt32 m_numFrames;
-
- atcore_float4x4* m_pBoneMatrices;
-
- AnimationCache() :
- m_numBones(0),
- m_frameStart(0),
- m_frameEnd(0),
- m_numFrames(0),
- m_pBoneMatrices(nullptr),
- m_pBoneNames(nullptr)
- {
- }
-
- bool isValid() const {
- return (m_numBones > 0) && (m_numFrames > 0) && (m_pBoneMatrices != 0);
- }
-
- void Allocate();
- void Release();
- void Initialize(int numBones, NvInt32 frameStart, NvInt32 frameEnd);
-
- bool GetInterpolationInfo(float frameTime, int& indexStart, int& indexEnd, float &fracFrame);
-
- const atcore_float4x4* GetNodeMatrices(int index) const { return m_pBoneMatrices + index * m_numBones; }
- atcore_float4x4* GetNodeMatrices(int index) { return m_pBoneMatrices + index * m_numBones; }
-
- const char* GetBoneName(int index) const
- {
- return m_pBoneNames + index * NV_HAIR_MAX_STRING;
- }
-
- void SetBoneName(int index, const char* boneName)
- {
- char* str = m_pBoneNames + index * NV_HAIR_MAX_STRING;
- strcpy_s(str, NV_HAIR_MAX_STRING, boneName);
- }
-
- int FindBone(const char *boneName) const;
- bool FindBoneMapping( int numBones, const NvChar* boneNames, int* mappedBoneId) const;
-
- ~AnimationCache();
-};
-
-////////////////////////////////////////////////////////////////////////////////////////
-// bone matrices at each frame
-////////////////////////////////////////////////////////////////////////////////////////
-struct CORELIB_EXPORT BoneData
-{
- NvUInt32 m_numBones;
- NvChar* m_pBoneNames;
-
- atcore_float4x4* m_pPoseMatrices; // rest pose for each bone
- atcore_float4x4* m_pBoneMatrices; // updated bone matrix
- atcore_float4x4* m_pSkinMatrices; // interpolated skinning matrix for current frame
- atcore_dualquaternion* m_pSkinDQs; // dual quats
-
- AnimationCache* m_pAnimationCache;
- int* m_pMappedBoneId;
- int m_nodeId;
-
-public:
- BoneData() :
- m_numBones(0),
- m_pBoneNames(nullptr),
- m_pPoseMatrices(nullptr),
- m_pBoneMatrices(nullptr),
- m_pSkinMatrices(nullptr),
- m_pSkinDQs(nullptr),
- m_pAnimationCache(nullptr),
- m_pMappedBoneId(nullptr),
- m_nodeId(-1)
- {}
-
- void Allocate(NvUInt32 numBones);
- void Release();
-
- const char* getBoneName(int index)
- {
- return m_pBoneNames + index * NV_HAIR_MAX_STRING;
- }
-
- void setBoneName(int index, const char* boneName)
- {
- char* str = m_pBoneNames + index * NV_HAIR_MAX_STRING;
- strcpy_s(str, NV_HAIR_MAX_STRING, boneName);
- }
-
- void InitializeAnimationCache(AnimationCache* pGlobalCache, const char* nodeName);
- bool Update(float frameTime, const char* rootBoneName, bool bindPose, bool zup);
-
-};
-
-////////////////////////////////////////////////////////////////////////////////////////
-// Skinning data
-struct CORELIB_EXPORT SkinData
-{
- BoneData m_boneData;
-
- atcore_float4* m_pBoneIndices;
- atcore_float4* m_pBoneWeights;
-
-public:
- SkinData() :
- m_pBoneIndices(nullptr),
- m_pBoneWeights(nullptr)
- {}
-
- void Allocate(NvUInt32 numBones, NvUInt32 numVertices);
- void Release();
-};
-
-
-////////////////////////////////////////////////////////////////////////////////////////
-struct CORELIB_EXPORT MeshDesc
-{
- NvUInt32 m_NumVertices;
- NvUInt32 m_NumTriangles;
-
- atcore_float3* m_pVertices;
- atcore_float3* m_pVertexNormals;
- atcore_float3* m_pFaceNormals;
- atcore_float3* m_pTangents;
- atcore_float3 m_ColorRGB;
-
- NvUInt32* m_pIndices;
- atcore_float2* m_pTexCoords;
-
-public:
- MeshDesc() :
- m_NumVertices(0),
- m_NumTriangles(0),
-
- m_pVertices(nullptr),
- m_pVertexNormals(nullptr),
- m_pFaceNormals(nullptr),
- m_pTangents(nullptr),
-
- m_pIndices(nullptr),
- m_pTexCoords(nullptr)
- {
- m_ColorRGB = gfsdk_makeFloat3(0, 0, 0);
- }
-
- void Allocate(NvUInt32 numVertices, NvUInt32 numTriangles);
- void Release();
-
- void UpdateNormal(bool updateVertexNormal = false);
-};
-
-////////////////////////////////////////////////////////////////////////////////////////
-#define MATERIAL_NAME_SIZE 128
-
-struct CORELIB_EXPORT MeshMaterial
-{
- NvChar m_name[MATERIAL_NAME_SIZE];
-
- atcore_float3 m_ambientColor;
- float m_ambientFactor;
-
- atcore_float3 m_diffuseColor;
- float m_diffuseFactor;
-
- float m_specularFactor;
- float m_shininess;
-
- NvChar m_diffuseTexture[MATERIAL_NAME_SIZE];
- NvChar m_specularTexture[MATERIAL_NAME_SIZE];
- NvChar m_bumpTexture[MATERIAL_NAME_SIZE];
- NvChar m_normalTexture[MATERIAL_NAME_SIZE];
- NvChar m_transparentTexture[MATERIAL_NAME_SIZE];
-
-public:
- MeshMaterial()
- {}
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.cpp b/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.cpp
deleted file mode 100644
index 1d78d5c..0000000
--- a/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.cpp
+++ /dev/null
@@ -1,1029 +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.
-//
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// This file contains wrapper functions to make hair lib easy to setup and use
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#include "fbxsdk.h"
-#include <vector>
-#include <string>
-
-#include "FbxUtil.h"
-#include "MathUtil.h"
-#include "GlobalSettings.h"
-
-// local functions used only in this file
-namespace {
-
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Get the geometry offset to a node. It is never inherited by the children.
- FbxAMatrix GetGeometry(FbxNode* pNode)
- {
- const FbxVector4 lT = pNode->GetGeometricTranslation(FbxNode::eSourcePivot);
- const FbxVector4 lR = pNode->GetGeometricRotation(FbxNode::eSourcePivot);
- const FbxVector4 lS = pNode->GetGeometricScaling(FbxNode::eSourcePivot);
-
- return FbxAMatrix(lT, lR, lS);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////
- void convertFromFbxMatrix(atcore_float4x4& transform, FbxAMatrix& tmatrix)
- {
- float* data = (float*)&transform;
-
- // update skinning matrix
- for (int row = 0; row < 4; row++)
- for (int col = 0; col < 4; col++)
- {
- data[ row * 4 + col] = float(tmatrix.Get(row,col));
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool checkMesh(FbxNode* pNode)
- {
- FbxMesh* pMesh = pNode->GetMesh();
- if (!pMesh)
- return false;
-
- return true;
- }
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- bool checkSkinned(FbxNode* pNode)
- {
- FbxGeometry* pFbxGeometry = pNode->GetGeometry();
- if (!pFbxGeometry)
- return false;
-
- FbxSkin* pFbxSkin = (FbxSkin*)pFbxGeometry->GetDeformer(0, FbxDeformer::eSkin);
- if (!pFbxSkin)
- return false;
-
- return true;
- }
-}
-
-namespace
-{
- FbxManager* s_FbxManager = nullptr;
- FbxScene* s_FbxScene = nullptr;
-
-
- /////////////////////////////////////////////////////////////////////////////
- // find node by name
- FbxNode*
- FindNodeByName(FbxScene* scene, const char* nodeName)
- {
- if (!scene)
- return 0;
-
- if (!nodeName)
- return 0;
-
- for (int i = 0; i < scene->GetNodeCount(); i++)
- {
- FbxNode* node = scene->GetNode(i);
- const char* name = node->GetName();
- if (!strcmp(nodeName, name))
- return node;
- }
- return 0;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool
-FbxUtil::Release(void)
-{
- if (s_FbxScene)
- {
- s_FbxScene->Destroy();
- s_FbxScene = nullptr;
- }
-
- if (s_FbxManager)
- {
- s_FbxManager->Destroy();
- s_FbxManager = nullptr;
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//// if fbx uses one unit which is not supported, we will also convert its unit.
-bool FbxUtil::Initialize(const char* fbxFileName, nvidia::Float& fbxSceneUnit, nvidia::Float toScneUnit, bool bConvertUnit)
-{
- if (fbxFileName)
- {
- FbxImporter* s_FbxImporter = nullptr;
-
- if (!s_FbxManager)
- s_FbxManager = FbxManager::Create();
-
- if (!s_FbxImporter)
- s_FbxImporter = FbxImporter::Create(s_FbxManager, "");
-
- if (!s_FbxScene)
- s_FbxScene = FbxScene::Create(s_FbxManager, "");
-
- if (!s_FbxImporter->Initialize(fbxFileName, -1))
- return false;
-
- if (!s_FbxImporter->Import(s_FbxScene))
- return false;
-
- FbxGlobalSettings& settings = s_FbxScene->GetGlobalSettings();
-
- FbxSystemUnit fbxUnit = settings.GetSystemUnit();
- fbxSceneUnit = fbxUnit.GetScaleFactor();
- bool bSupported = GlobalSettings::Inst().isSupportedUnitByUnitInCm(fbxSceneUnit);
- bool bNeedConvert = ((toScneUnit > 0.0f) && bConvertUnit && (fabs(toScneUnit - fbxSceneUnit) > 0.001f));
- if (bNeedConvert || !bSupported)
- {
- // if FBX has a non-supported unit, we still convert its unit
- FbxSystemUnit convertUnit(toScneUnit);
- convertUnit.ConvertScene(s_FbxScene);
- }
-
- s_FbxImporter->Destroy();
-
- // get time info
- FbxTimeSpan timespan;
- settings.GetTimelineDefaultTimeSpan(timespan);
-
- FbxTime startTime = timespan.GetStart();
- FbxTime endTime = timespan.GetStop();
-
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool FbxUtil::GetGlobalSettings(float* pStartFrame, float* pEndFrame, float *pFps, int *upAxis, char* rootBoneName)
-{
- if ( !s_FbxScene)
- return false;
-
- FbxGlobalSettings& settings = s_FbxScene->GetGlobalSettings();
-
- FbxTimeSpan timespan;
- settings.GetTimelineDefaultTimeSpan(timespan);
-
- FbxTime startTime = timespan.GetStart();
- FbxTime endTime = timespan.GetStop();
-
- if (pStartFrame)
- *pStartFrame = (float)startTime.GetFrameCount();
-
- if (pEndFrame)
- *pEndFrame = (float)endTime.GetFrameCount();
-
- if (pFps)
- *pFps = (float)endTime.GetFrameRate(FbxTime::GetGlobalTimeMode());
-
- if (upAxis)
- {
- int upSign = 0;
- FbxAxisSystem axisSystem = settings.GetAxisSystem();
- FbxAxisSystem::EUpVector upVector = axisSystem.GetUpVector(upSign);
-
- enum FbxAxisSystem::ECoordSystem coordSystem = axisSystem.GetCoorSystem();
-
- switch (upVector)
- {
- case FbxAxisSystem::eXAxis: *upAxis = 0; break;
- case FbxAxisSystem::eYAxis: *upAxis = 1; break;
- case FbxAxisSystem::eZAxis: *upAxis = 2; break;
- }
- }
-
- if (rootBoneName)
- {
- FbxNode* pRoot = s_FbxScene->GetRootNode();
- if (pRoot)
- {
- strncpy(rootBoneName, pRoot->GetName(), NV_HAIR_MAX_STRING);
- }
- else
- strcpy(rootBoneName, "");
- }
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-
-bool
-FbxUtil::InitializeAnimationCache(AnimationCache& animCache)
-{
- if (!s_FbxScene)
- return false;
-
- float startFrame, endFrame, fps;
- FbxUtil::GetGlobalSettings(&startFrame, &endFrame, &fps);
-
- int numNodes = s_FbxScene->GetNodeCount();
-
- ////////////////////////////////////////////
- animCache.Initialize(numNodes, (NvInt32)startFrame, (NvInt32)endFrame);
-
- for (int i = 0; i < numNodes; i++)
- {
- FbxNode* node = s_FbxScene->GetNode(i);
- const char* nodeName = node->GetName();
- animCache.SetBoneName(i, nodeName);
- }
-
- ////////////////////////////////////////////
- for (NvInt frame = animCache.m_frameStart; frame <= animCache.m_frameEnd; frame++)
- {
- FbxTime lTime;
- lTime.SetSecondDouble( frame / fps);
-
- int index = frame - animCache.m_frameStart;
- atcore_float4x4 *pNodeMatrices = animCache.GetNodeMatrices(index);
-
- for (int i = 0; i < numNodes; i++)
- {
- FbxNode* node = s_FbxScene->GetNode(i);
- FbxAMatrix nodeMatrix = node->EvaluateGlobalTransform(lTime);
- convertFromFbxMatrix(pNodeMatrices[i], nodeMatrix);
- }
- }
-
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-static FbxSkin* GetFbxSkin( FbxNode* pFbxNode )
-{
- if (!pFbxNode)
- return 0;
-
- FbxMesh* pFbxMesh = pFbxNode->GetMesh();
- if (!pFbxMesh)
- return 0;
-
- FbxGeometry* pFbxGeometry = pFbxNode->GetGeometry();
- if (!pFbxGeometry)
- return 0;
-
- int deformerCount = pFbxGeometry->GetDeformerCount(FbxDeformer::eSkin);
-
- FbxSkin *pFbxSkin = 0;
- if (deformerCount > 0)
- pFbxSkin = (FbxSkin*)pFbxGeometry->GetDeformer(0, FbxDeformer::eSkin);
-
- return pFbxSkin;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-static int GetNumMeshPoints( FbxNode* pFbxNode)
-{
- if (!pFbxNode)
- return 0;
-
- FbxMesh* pFbxMesh = pFbxNode->GetMesh();
- if (!pFbxMesh)
- return 0;
-
- return pFbxMesh->GetControlPointsCount();
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-static bool GetBoneData(FbxSkin *pFbxSkin, FbxNode* pFbxNode, NvChar* pBoneNames, atcore_float4x4 *pBindPoses)
-{
- if (!pFbxSkin || !pFbxNode)
- return false;
-
- int numBones = (int)pFbxSkin->GetClusterCount();
-
- for (int i = 0; i < numBones; i++)
- {
- FbxCluster* pFbxCluster = pFbxSkin->GetCluster(i);
-
- FbxNode* pLink = pFbxCluster->GetLink();
-
- // copy bone names
- const char* boneName = pLink->GetName();
- char* str = pBoneNames + i * NV_HAIR_MAX_STRING;
- strcpy_s(str, NV_HAIR_MAX_STRING, boneName);
-
- // write pose matrix
- {
- FbxAMatrix lReferenceGlobalInitPosition;
- pFbxCluster->GetTransformMatrix(lReferenceGlobalInitPosition);
-
- FbxAMatrix lReferenceGeometry = GetGeometry(pFbxNode);
- lReferenceGlobalInitPosition *= lReferenceGeometry;
-
- FbxAMatrix lClusterGlobalInitPosition;
- pFbxCluster->GetTransformLinkMatrix(lClusterGlobalInitPosition);
-
- FbxAMatrix lClusterMatrix = lClusterGlobalInitPosition.Inverse() * lReferenceGlobalInitPosition;
- convertFromFbxMatrix(pBindPoses[i], lClusterMatrix.Inverse());
- }
- }
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-static bool GetSkinningWeights(FbxSkin* pFbxSkin, atcore_float4* boneIndices, atcore_float4* boneWeights, int numPoints)
-{
- int numClusters = (int)pFbxSkin->GetClusterCount();
- if (numClusters == 0)
- return false;
-
- // copy skinning weights and indices
- int* pIndexCounts = new int[numPoints];
- memset(pIndexCounts, 0, sizeof(int) * numPoints);
-
- for (int i = 0; i < numClusters; i++)
- {
- if (!pFbxSkin) continue;
-
- FbxCluster* pFbxCluster = pFbxSkin->GetCluster(i);
-
- if (!pFbxCluster) continue;
-
- int cpCount = pFbxCluster->GetControlPointIndicesCount();
- int* pPointIndices = pFbxCluster->GetControlPointIndices();
- double* pWeights = pFbxCluster->GetControlPointWeights();
-
- for (int j = 0; j < cpCount; j++)
- {
- if (pWeights[j] == 0.0f)
- continue;
-
- int pointIndex = pPointIndices[j];
- int& cnt = pIndexCounts[pointIndex];
-
- float* pBoneIndex = (float*)&boneIndices[pointIndex];
- float* pBoneWeights = (float*)&boneWeights[pointIndex];
-
- if (cnt < 4)
- {
- pBoneIndex[cnt] = float(i);
- pBoneWeights[cnt] = float(pWeights[j]);
- cnt++;
- }
- else // over 4, so we just bind to largest weights
- {
- float minWeight = (float)pWeights[j];
- int minIndex = -1;
- for (int b = 0; b < 4; b++)
- {
- float w = pBoneWeights[b];
-
- if (w < minWeight)
- {
- minWeight = w;
- minIndex = b;
- }
- }
-
- if (minIndex >= 0)
- {
- pBoneIndex[minIndex] = float(i);
- pBoneWeights[minIndex] = float(pWeights[j]);
- }
-
- cnt++;
- }
- }
- }
-
- for (int i = 0; i < numPoints; i++)
- {
- float* pBoneWeights = (float*)&boneWeights[i];
-
- float weightsum = 0;
- for (int i = 0; i < 4; i++)
- {
- weightsum += pBoneWeights[i];
- }
-
- if (weightsum == 0)
- continue;
-
- for (int i = 0; i < 4; i++)
- pBoneWeights[i] /= weightsum;
- }
-
- if (pIndexCounts) delete []pIndexCounts;
-
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-bool FbxUtil::InitializeSkinData( const char* meshName, SkinData& skinData)
-{
- FbxNode* pFbxNode = FindNodeByName(s_FbxScene, meshName);
- if (!pFbxNode)
- return false;
-
- FbxSkin* pFbxSkin = GetFbxSkin(pFbxNode);
- int numPoints = GetNumMeshPoints(pFbxNode);
-
- BoneData& boneData = skinData.m_boneData;
-
- if (pFbxSkin)
- {
- int numBones = (int)pFbxSkin->GetClusterCount();
- skinData.Allocate(numBones, numPoints);
-
- // get bone data (bind pose, bone names, ..)
- GetBoneData(pFbxSkin, pFbxNode, boneData.m_pBoneNames, boneData.m_pPoseMatrices);
-
- // get skinning weights
- atcore_float4* boneIndices = skinData.m_pBoneIndices;
- atcore_float4* boneWeights = skinData.m_pBoneWeights;
-
- GetSkinningWeights(pFbxSkin, boneIndices, boneWeights, numPoints);
- }
- else // no skinning, use model matrix
- {
- int numBones = 1;
-
- skinData.Allocate(numBones, numPoints);
-
- // copy bone name
- const char* boneName = pFbxNode->GetName();
- boneData.setBoneName(0, boneName);
-
- // make pose matrix
- gfsdk_makeIdentity(boneData.m_pPoseMatrices[0]);
-
- // all the vertices map to the model matrix
- atcore_float4* boneIndices = skinData.m_pBoneIndices;
- atcore_float4* boneWeights = skinData.m_pBoneWeights;
-
- for (int i = 0; i < numPoints; i++)
- {
- boneIndices[i] = gfsdk_makeFloat4(0, 0, 0, 0);
- boneWeights[i] = gfsdk_makeFloat4(1, 0, 0, 0);
- }
- }
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool FbxUtil::GetMeshInfo(int* numMeshes, char** meshNames, char** parents, char** skinned)
-{
- int cnt = 0;
-
- for (int i = 0; i < s_FbxScene->GetNodeCount(); i++)
- {
- FbxNode* pNode = s_FbxScene->GetNode(i);
- if (checkMesh(pNode))
- cnt++;
- }
-
- char *pNameBuffer = new char[cnt * 128];
- char *pSkinnedBuffer = new char[cnt];
-
- char *pParentBuffer = new char[cnt * 128];
- memset(pParentBuffer, 0, cnt * 128);
-
- cnt = 0;
- for (int i = 0; i < s_FbxScene->GetNodeCount(); i++)
- {
- FbxNode* pNode = s_FbxScene->GetNode(i);
-
- if (!checkMesh(pNode))
- continue;
-
- strcpy(pNameBuffer + cnt * 128, pNode->GetName());
-
- FbxNode* pParentNode = pNode->GetParent();
- if (pParentNode != nullptr)
- {
- strcpy(pParentBuffer + cnt * 128, pParentNode->GetName());
- }
-
- pSkinnedBuffer[cnt] = checkSkinned(pNode);
-
- cnt++;
- }
-
- *numMeshes = cnt;
- if (skinned)
- {
- *skinned = pSkinnedBuffer;
- }
- else
- delete []pSkinnedBuffer;
-
- *meshNames = pNameBuffer;
- *parents = pParentBuffer;
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool FbxUtil::GetMeshMaterials( const NvChar* meshName, int *numMaterials, MeshMaterial** materials)
-{
- if (!s_FbxScene)
- return false;
-
- FbxNode* pNode = FindNodeByName(s_FbxScene, meshName);
- if (!pNode)
- return false;
-
- int numMats = pNode->GetMaterialCount();
- if (numMats == 0)
- return false;
-
- *materials = new MeshMaterial[numMats];
-
- int matCnt = 0;
-
- for (int i = 0; i < numMats; i++)
- {
- FbxSurfaceMaterial *mat = pNode->GetMaterial(i);
- if (!mat) continue;
- if (mat->GetUserDataPtr()) continue;
-
- MeshMaterial& material = (*materials)[matCnt];
-
- strcpy(material.m_name, mat->GetName());
- strcpy(material.m_diffuseTexture, "");
- strcpy(material.m_bumpTexture, "");
- strcpy(material.m_transparentTexture, "");
- strcpy(material.m_normalTexture, "");
-
- (atcore_float3&)material.m_ambientColor = gfsdk_makeFloat3(1.0f, 1.0f, 1.0f);
- (atcore_float3&)material.m_diffuseColor = gfsdk_makeFloat3(1.0f, 1.0f, 1.0f);
-
- FbxProperty prop;
- FbxProperty fact;
- FbxDouble3 d3;
-
- // get ambient
- {
- fact = mat->FindProperty(FbxSurfaceMaterial::sAmbientFactor);
- material.m_ambientFactor = fact.IsValid() ? (float)fact.Get<FbxDouble>() : 0.1f;
-
- prop = mat->FindProperty(FbxSurfaceMaterial::sAmbient);
- if (prop.IsValid())
- {
- FbxDouble3 d3 = prop.Get<FbxDouble3>();
- material.m_ambientColor = gfsdk_makeFloat3((float)d3[0], (float)d3[1], (float)d3[2]);
- }
- }
-
- // get specular
- {
- fact = mat->FindProperty(FbxSurfaceMaterial::sSpecularFactor);
- material.m_specularFactor = fact.IsValid() ? (float)fact.Get<FbxDouble>() : 0.1f;
-
- fact = mat->FindProperty(FbxSurfaceMaterial::sShininess);
- material.m_shininess = fact.IsValid() ? (float)fact.Get<FbxDouble>() : 20.0f;
- }
-
- // get diffuse
- {
- fact = mat->FindProperty(FbxSurfaceMaterial::sDiffuseFactor);
- material.m_diffuseFactor = fact.IsValid() ? (float)fact.Get<FbxDouble>() : 0.5f;
-
- prop = mat->FindProperty(FbxSurfaceMaterial::sDiffuse);
- if (prop.IsValid())
- {
- FbxDouble3 d3 = prop.Get<FbxDouble3>();
- material.m_diffuseColor = gfsdk_makeFloat3((float)d3[0], (float)d3[1], (float)d3[2]);
-
- const FbxFileTexture* tex = prop.GetSrcObject<FbxFileTexture>();
- if (tex)
- strcpy(material.m_diffuseTexture, tex->GetFileName());
- }
- }
-
- // get normal map
- {
- prop = mat->FindProperty(FbxSurfaceMaterial::sNormalMap);
- if (prop.IsValid())
- {
- const FbxFileTexture* tex = prop.GetSrcObject<FbxFileTexture>();
- if (tex)
- strcpy(material.m_normalTexture, tex->GetFileName());
- }
- }
-
- matCnt++;
- }
-
- *numMaterials = matCnt;
-
- return true;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool FbxUtil::CreateMeshDescriptor(const char* meshName, MeshDesc &desc)
-{
- if (!s_FbxScene)
- return false;
-
- FbxNode* pNode = FindNodeByName(s_FbxScene, meshName);
- if (!pNode)
- return false;
-
- // read growth mesh data
- FbxMesh* pMesh = pNode->GetMesh();
- if (!pMesh)
- return false;
-
- FbxDouble3 meshColor = pMesh->Color.Get();
- desc.m_ColorRGB = gfsdk_makeFloat3(meshColor[0], meshColor[1], meshColor[2]);
-
- int cpCount = pMesh->GetControlPointsCount();
-
- int triCount = 0;
- for (int i = 0; i < pMesh->GetPolygonCount(); i++)
- {
- int psize = pMesh->GetPolygonSize(i);
- triCount += (psize - 2);
- }
-
- // allocate buffers
- desc.Allocate(cpCount, triCount);
-
- // read positions
- FbxVector4* points = pMesh->GetControlPoints();
- FbxAMatrix matrixGeo = pNode->EvaluateGlobalTransform();
- for (int i = 0; i < desc.m_NumVertices; i++)
- {
- FbxVector4 v = matrixGeo.MultT(points[i]);
- desc.m_pVertices[i] = gfsdk_makeFloat3(v.mData[0], v.mData[1], v.mData[2]);
- }
-
- memset(desc.m_pTexCoords, 0, sizeof(atcore_float2) * desc.m_NumTriangles * 3);
-
- // read uvs
- FbxLayerElementUV* leUV = pMesh->GetLayer(0)->GetUVs();
-
- FbxGeometryElementNormal *lNormals = pMesh->GetElementNormal();
- FbxGeometryElementTangent* lTangents = pMesh->GetElementTangent();
-
- int tcnt = 0;
- int vertexBase = 0;
- for (int i = 0; i < pMesh->GetPolygonCount(); i++)
- {
- int vcnt = pMesh->GetPolygonSize(i);
- for (int j = 0; j < (vcnt-2); j++)
- {
- int pIndex[3] = { 0, j+1, j+2 };
-
- // get polygon index
- for (int p = 0; p < 3; ++p)
- desc.m_pIndices[tcnt*3+p] = pMesh->GetPolygonVertex(i, pIndex[p]);
-
- // get face normal
- if (lNormals)
- {
- FbxLayerElement::EMappingMode mode = lNormals->GetMappingMode();
-
- for (int p = 0; p < 3; ++p)
- {
- int vertexId = vertexBase + pIndex[p];
- int normalId = vertexId;
- if (mode == FbxGeometryElement::eByPolygonVertex)
- {
- if (lNormals->GetReferenceMode() == FbxGeometryElement::eIndexToDirect)
- normalId = lNormals->GetIndexArray().GetAt(vertexId);
- }
- else if (mode == FbxGeometryElement::eByControlPoint)
- normalId = pMesh->GetPolygonVertex(i, pIndex[p]);
-
- const FbxVector4 &n = lNormals->GetDirectArray().GetAt(normalId);
- desc.m_pVertexNormals[tcnt*3+p] = gfsdk_makeFloat3((float)n[0], (float)n[1], (float)n[2]);
- }
- }
-
- // get face normal
- if (lTangents)
- {
- FbxLayerElement::EMappingMode mode = lTangents->GetMappingMode();
-
- for (int p = 0; p < 3; ++p)
- {
- int vertexId = vertexBase + pIndex[p];
- int tangentId = vertexId;
- if (mode == FbxGeometryElement::eByPolygonVertex)
- {
- if (lTangents->GetReferenceMode() == FbxGeometryElement::eIndexToDirect)
- tangentId = lTangents->GetIndexArray().GetAt(vertexId);
- }
- else if (mode == FbxGeometryElement::eByControlPoint)
- tangentId = pMesh->GetPolygonVertex(i, pIndex[p]);
-
- const FbxVector4 &n = lTangents->GetDirectArray().GetAt(tangentId);
- desc.m_pTangents[tcnt*3+p] = gfsdk_makeFloat3((float)n[0], (float)n[1], (float)n[2]);
- }
- }
-
- if (leUV)
- {
- int i0 = pMesh->GetTextureUVIndex(i, 0);
- int i1 = pMesh->GetTextureUVIndex(i, j+1);
- int i2 = pMesh->GetTextureUVIndex(i, j+2);
-
- FbxVector2 texCoord0 = leUV->GetDirectArray().GetAt(i0);
- FbxVector2 texCoord1 = leUV->GetDirectArray().GetAt(i1);
- FbxVector2 texCoord2 = leUV->GetDirectArray().GetAt(i2);
-
- desc.m_pTexCoords[tcnt*3+0] = gfsdk_makeFloat2(1.0f * float(texCoord0[0]), 1.0f - float(texCoord0[1]));
- desc.m_pTexCoords[tcnt*3+1] = gfsdk_makeFloat2(1.0f * float(texCoord1[0]), 1.0f - float(texCoord1[1]));
- desc.m_pTexCoords[tcnt*3+2] = gfsdk_makeFloat2(1.0f * float(texCoord2[0]), 1.0f - float(texCoord2[1]));
- }
-
- tcnt++;
- }
- vertexBase += vcnt;
- }
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-/*
-bool FbxUtil::CreateHairFromFbx(const char* guideName, const char* growthMeshName, NvHair::AssetDescriptor& hairAsset)
-{
- if (!s_FbxScene)
- return false;
-
- // read growth mesh data
- MeshDesc meshDesc;
- if (false == FbxUtil::CreateMeshDescriptor(growthMeshName, meshDesc))
- return false;
-
- FbxNode* pHairNode = FindNodeByName(s_FbxScene, guideName);
- if (!pHairNode)
- return false;
-
- FbxNode* pMeshNode = FindNodeByName(s_FbxScene, growthMeshName);
- if (!pMeshNode)
- return false;
-
- FbxSkin* pFbxSkin = GetFbxSkin(pMeshNode);
- int numBones = 1;
-
- if (pFbxSkin)
- numBones = (int)pFbxSkin->GetClusterCount();
-
- // get skin data from mesh
- int numPoints = meshDesc.m_NumVertices;
-
- atcore_float4* pMeshBoneIndices = new atcore_float4[numPoints];
- atcore_float4* pMeshBoneWeights = new atcore_float4[numPoints];
-
- GetSkinningWeights(pFbxSkin, pMeshBoneIndices, pMeshBoneWeights, numPoints);
-
- // create raw hair array
- FbxLine* pLine = pHairNode->GetLine();
- if (!pLine)
- return false;
-
- int cpCount = pLine->GetControlPointsCount();
- int curveCount = pLine->GetEndPointCount();
-
- atcore_float3* pVertices = new atcore_float3[cpCount];
- NvUInt32* pEndIndices = new NvUInt32[curveCount];
-
- FbxVector4* pFbxPoints = pLine->GetControlPoints();
- FbxArray<int>* pFbxEndIndices = pLine->GetEndPointArray();
-
- for (int i = 0; i < cpCount; i++)
- pVertices[i] = gfsdk_makeFloat3(float(pFbxPoints[i][0]), float(pFbxPoints[i][1]), float(pFbxPoints[i][2]));
-
- for (int i = 0; i < curveCount; i++)
- pEndIndices[i] = (*pFbxEndIndices)[i];
-
- // check against closest growth mesh points
- const float distThreshold = 25.0;
-
- int numValidHairs = 0;
- int numValidHairVertices = 0;
-
- int* pMeshToHairMap = new int[meshDesc.m_NumVertices];
- int* pHairToMeshMap = new int[curveCount];
- int* pHairToHairMap = new int[curveCount];
- float* pMinDistances = new float[meshDesc.m_NumVertices];
- atcore_float3* pRootVertices = new atcore_float3[curveCount];
- atcore_float3* pTriangleCenters = new atcore_float3[meshDesc.m_NumTriangles];
-
- // initialize triangle centers
- for (int i = 0; i < meshDesc.m_NumTriangles; i++)
- {
- NvUInt32 v0 = meshDesc.m_pIndices[i*3 + 0];
- NvUInt32 v1 = meshDesc.m_pIndices[i * 3 + 1];
- NvUInt32 v2 = meshDesc.m_pIndices[i * 3 + 2];
-
- atcore_float3 p0 = meshDesc.m_pVertices[v0];
- atcore_float3 p1 = meshDesc.m_pVertices[v1];
- atcore_float3 p2 = meshDesc.m_pVertices[v2];
-
- pTriangleCenters[i] = 1.0f / 3.0f * (p0 + p1 + p2);
- }
-
- // initialize mesh to hair map
- for (int i = 0; i < meshDesc.m_NumVertices; i++)
- {
- pMeshToHairMap[i] = -1;
- pMinDistances[i] = FLT_MAX;
- }
-
- // copy root vertices of input hairs
-
- for (int i = 0; i < curveCount; i++)
- {
- int root = (i == 0) ? 0 : pEndIndices[i-1]+1;
- pRootVertices[i] = pVertices[root];
- pHairToMeshMap[i] = -1;
- }
-
- // for each input hair curve, find the closest mesh vertex
- for (int i = 0; i < curveCount; i++)
- {
- atcore_float3 hp = pRootVertices[i];
-
- float minDist = FLT_MAX;
- int closestTriangle = -1;
- for (int j = 0; j < meshDesc.m_NumTriangles; j++)
- {
- atcore_float3 c = pTriangleCenters[j];
-
- float distSquared = gfsdk_lengthSquared(hp - c);
- if (distSquared < minDist)
- {
- minDist = distSquared;
- closestTriangle = j;
- }
- }
-
- if (closestTriangle >= 0)
- {
- for (int k = 0; k < 3; k++)
- {
- NvUInt32 v = meshDesc.m_pIndices[closestTriangle * 3 + k];
- atcore_float3 p = meshDesc.m_pVertices[v];
-
- float distSquared = gfsdk_lengthSquared(hp - p);
- if (distSquared < pMinDistances[v])
- {
- pMinDistances[v] = distSquared;
- pMeshToHairMap[v] = i;
- }
- }
- }
- }
-
- // prepare mapping from new hair set to mesh and old hairs
- for (int i = 0; i < meshDesc.m_NumVertices; i++)
- {
- int closestHair = pMeshToHairMap[i];
- if (closestHair < 0)
- continue;
-
- pHairToMeshMap[numValidHairs] = i;
- pHairToHairMap[numValidHairs] = closestHair;
- pMeshToHairMap[i] = numValidHairs; // update hair with new hair index
-
- int root = (closestHair == 0) ? 0 : pEndIndices[closestHair-1]+1;
- int tip = pEndIndices[closestHair];
-
- numValidHairVertices += (tip - root + 1);
- numValidHairs++;
- }
-
- // allocate new hairs
- hairAsset.m_numGuideHairs = numValidHairs;
- hairAsset.m_numVertices = numValidHairVertices;
-
- hairAsset.m_boneIndices = new atcore_float4[hairAsset.m_numGuideHairs];
- hairAsset.m_boneWeights = new atcore_float4[hairAsset.m_numGuideHairs];
-
- hairAsset.m_vertices = new atcore_float3[hairAsset.m_numVertices];
- hairAsset.m_endIndices = new NvUInt32[hairAsset.m_numGuideHairs];
- hairAsset.m_faceIndices = new NvUInt32[meshDesc.m_NumTriangles * 3];
- hairAsset.m_faceUvs = new atcore_float2[meshDesc.m_NumTriangles * 3];
-
- hairAsset.m_numBones = numBones;
- hairAsset.m_boneNames = new NvChar[NV_HAIR_MAX_STRING * hairAsset.m_numBones];
- hairAsset.m_bindPoses = new atcore_float4x4[hairAsset.m_numBones];
- hairAsset.m_boneParents = new NvInt32[hairAsset.m_numBones];
-
- if (pFbxSkin)
- GetBoneData(pFbxSkin, pMeshNode, hairAsset.m_boneNames, hairAsset.m_bindPoses);
- else
- {
- strcpy(hairAsset.m_boneNames, "Root");
- gfsdk_makeIdentity(hairAsset.m_bindPoses[0]);
- hairAsset.m_boneParents[0] = -1;
- }
-
- // copy vertex data
- int vertexCnt = 0;
-
- for (int i = 0; i < hairAsset.m_numGuideHairs; i++)
- {
- int oldHair = pHairToHairMap[i];
-
- int oldRoot = (oldHair == 0) ? 0 : pEndIndices[oldHair-1]+1;
- int oldTip = pEndIndices[oldHair];
-
- int offset = oldTip - oldRoot;
-
- int newRoot = vertexCnt;
- int newTip = vertexCnt + offset;
-
- vertexCnt += (offset + 1);
-
- hairAsset.m_endIndices[i] = newTip;
-
- int meshVertex = pHairToMeshMap[i];
- atcore_float3 meshRoot = meshDesc.m_pVertices[meshVertex];
- atcore_float3 hairRoot = pVertices[oldRoot];
-
- atcore_float3 rootOffset = meshRoot - hairRoot;
-
- for (int j = 0; j <= offset; j++)
- hairAsset.m_vertices[newRoot + j] = pVertices[oldRoot + j] + rootOffset;
-
- hairAsset.m_boneIndices[i] = gfsdk_makeFloat4(0,0,0,0);
- hairAsset.m_boneWeights[i] = gfsdk_makeFloat4(1,0,0,0);
-
- if (pFbxSkin)
- {
- hairAsset.m_boneIndices[i] = pMeshBoneIndices[meshVertex];
- hairAsset.m_boneWeights[i] = pMeshBoneWeights[meshVertex];
- }
- }
-
- // copy face indices and texture uvs
- int faceCnt = 0;
- for (int i = 0; i < meshDesc.m_NumTriangles; i++)
- {
- NvUInt32 i0 = meshDesc.m_pIndices[i * 3 + 0];
- NvUInt32 i1 = meshDesc.m_pIndices[i * 3 + 1];
- NvUInt32 i2 = meshDesc.m_pIndices[i * 3 + 2];
-
- int h0 = pMeshToHairMap[i0];
- int h1 = pMeshToHairMap[i1];
- int h2 = pMeshToHairMap[i2];
-
- if ((h0 < 0) || (h1 < 0) || (h2 < 0))
- continue; // invalid face
-
- hairAsset.m_faceIndices[ faceCnt * 3 + 0] = h0;
- hairAsset.m_faceIndices[ faceCnt * 3 + 1] = h1;
- hairAsset.m_faceIndices[ faceCnt * 3 + 2] = h2;
-
- hairAsset.m_faceUvs[ faceCnt * 3 + 0 ] = meshDesc.m_pTexCoords[i * 3 + 0];
- hairAsset.m_faceUvs[ faceCnt * 3 + 1 ] = meshDesc.m_pTexCoords[i * 3 + 1];
- hairAsset.m_faceUvs[ faceCnt * 3 + 2 ] = meshDesc.m_pTexCoords[i * 3 + 2];
-
- faceCnt++;
- }
-
- hairAsset.m_numFaces = faceCnt;
-
- delete []pMeshBoneIndices;
- delete []pMeshBoneWeights;
-
- delete []pMeshToHairMap;
- delete []pHairToMeshMap;
- delete []pHairToHairMap;
-
- return true;
-}
-*/
diff --git a/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.h b/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.h
deleted file mode 100644
index 5cbf18c..0000000
--- a/tools/ArtistTools/source/CoreLib/Anim/FbxUtil.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 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 "AnimUtil.h"
-
-
-////////////////////////////////////////////////////////////////////////////////////////
-// Helper for fbx file load
-class CORELIB_EXPORT FbxUtil
-{
-public:
-
- /// initialize fbx loader.
- static bool Initialize(const nvidia::Char* fbxFileName, nvidia::Float& fbxSceneUnit, float toScneUnit = 0.0f, bool bConvertUnit = true);
- static bool Release(void);
-
- static bool InitializeAnimationCache(AnimationCache& cache);
-
- /// Get global frame range and fps information from fbx.
- static bool GetGlobalSettings(nvidia::Float32* pStarfFrame = 0, nvidia::Float32* pEndFrame = 0, nvidia::Float32 *pFps = 0, int* upAxis = 0, char* rootBoneName = 0);
-
- /// get skinning data from the mesh node
- static bool InitializeSkinData( const nvidia::Char* meshName, SkinData& pSkinningDataToUpdate);
-
- /// create mesh descriptor from fbx mesh node
- static bool CreateMeshDescriptor(const nvidia::Char* meshName, MeshDesc &meshDesc);
-
- /// get all the renderable meshes from the fbx scene
- static bool GetMeshInfo(int* numMeshes, char** meshNames, char** parents, char** skinned);
-
- /// get mesh material info from fbx scene
- static bool GetMeshMaterials(const nvidia::Char* meshName, int *numMaterials, MeshMaterial** materials);
-
- /// get hair directly from fbx
-// static bool CreateHairFromFbx(const char* guideName, const char* growthMeshName, NvHair::AssetDescriptor &hairAsset);
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.cpp b/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.cpp
deleted file mode 100644
index 222debd..0000000
--- a/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-#include "backdoor.h"
-#include <stdio.h>
-#include <string.h>
-#include <malloc.h>
-#include <Windows.h>
-#include "Nv.h"
-
-namespace BACKDOOR
-{
-
- struct Header
- {
- int mCount;
- int mType;
- };
-
-#define MAX_BACKDOOR_PACKET 1024 // maximum size of a send/receive packet
-#define HEADER_SIZE (sizeof(Header))
-#define DATA_SIZE (MAX_BACKDOOR_PACKET - HEADER_SIZE)
-#define STRING_SIZE (DATA_SIZE - 1)
-#define MAX_ARGS 32
-#pragma warning(disable:4996)
-
- // Chagne this helper class to use the memory mapped IO API relevant to your system.
- // This implementation uses the Windows API for a memory mapped shared file system.
- class MemoryMappedFile
- {
- public:
-
- MemoryMappedFile(const char *mappingObject,unsigned int mapSize);
- ~MemoryMappedFile(void);
- void * getBaseAddress(void);
- private:
- class MemoryMappedFileImpl *mImpl;
- };
-
-
- class MemoryMappedFileImpl
- {
- public:
- HANDLE mMapFile;
- void * mHeader;
- };
-
- MemoryMappedFile::MemoryMappedFile(const char *mappingObject,unsigned int mapSize)
- {
- mImpl = (MemoryMappedFileImpl *)::malloc(sizeof(MemoryMappedFileImpl));
- mImpl->mHeader = NV_NULL;
- mImpl->mMapFile = OpenFileMappingA(FILE_MAP_ALL_ACCESS,FALSE,mappingObject);
- if ( mImpl->mMapFile == NV_NULL )
- {
- mImpl->mMapFile = CreateFileMappingA(
- INVALID_HANDLE_VALUE, // use paging file
- NV_NULL, // default security
- PAGE_READWRITE, // read/write access
- 0, // maximum object size (high-order DWORD)
- mapSize, // maximum object size (low-order DWORD)
- mappingObject);
- }
- if ( mImpl->mMapFile )
- {
- mImpl->mHeader = MapViewOfFile(mImpl->mMapFile,FILE_MAP_ALL_ACCESS,0,0,mapSize);
- }
-
- }
-
- MemoryMappedFile::~MemoryMappedFile(void)
- {
-
- if ( mImpl->mHeader )
- {
- UnmapViewOfFile(mImpl->mHeader);
- if ( mImpl->mMapFile )
- {
- CloseHandle(mImpl->mMapFile);
- }
- }
-
- ::free(mImpl);
- }
-
- void * MemoryMappedFile::getBaseAddress(void)
- {
- return mImpl->mHeader;
- }
-
-
-
-class _Backdoor : public Backdoor
-{
- MemoryMappedFile *mReceiveFile;
- MemoryMappedFile *mSendFile;
- const char *mArgv[MAX_ARGS];
- char mBuffer[MAX_BACKDOOR_PACKET];
-
- int mSendCount;
- int mReceiveCount;
-
-public:
- _Backdoor(const char *sendName, // The name of the shared memory file to act as the 'sender' stream.
- const char *receiveName) // The name of the shared memory file to act as the 'receive' message stream.
- {
- mSendCount = 0; // This is a semaphore used to signal when a new message has been sent.
- mReceiveCount = 0; // This is a semaphore used to detect if a new message has been received.
- mReceiveFile = new MemoryMappedFile(receiveName,MAX_BACKDOOR_PACKET); // Open the receive stream file
- mSendFile = new MemoryMappedFile(sendName,MAX_BACKDOOR_PACKET); // Open the send stream file
- }
-
- virtual ~_Backdoor(void)
- {
- delete mReceiveFile; // Close the receive stream file
- delete mSendFile; // Close the send stream file.
- }
-
- virtual void send(const char *fmt,...)
- {
- char wbuff[DATA_SIZE];
- wbuff[STRING_SIZE] = 0;
- _vsnprintf(wbuff,STRING_SIZE, fmt, (char *)(&fmt+1));
-
- mSendCount++; // Increment the send counter.
- size_t len = strlen(wbuff);
-
- if ( len < STRING_SIZE && mSendFile )
- {
- char *baseAddress = (char *)mSendFile->getBaseAddress(); // get the base address of the shared memory
- int *dest = (int *)baseAddress;
-
- baseAddress+=sizeof(Header);
-
- memcpy(baseAddress,wbuff,len+1); // First copy the message.
- *dest = mSendCount; // Now revised the send count semaphore so the other process knows there is a new message to processs.
- }
- }
-
- virtual const char **getInput(int &argc)
- {
- const char **ret = NV_NULL;
- argc = 0;
-
- if ( mReceiveFile )
- {
- const char *baseAddress = (const char *)mReceiveFile->getBaseAddress();
- const int *source = (const int *)baseAddress;
- baseAddress+=sizeof(Header);
- if ( *source != mReceiveCount )
- {
- mReceiveCount = *source;
- memcpy(mBuffer,baseAddress,DATA_SIZE);
-
- char *scan = mBuffer;
- while ( *scan == 32 ) scan++; // skip leading spaces
- if ( *scan ) // if not EOS
- {
- argc = 1;
- mArgv[0] = scan; // set the first argument
-
- while ( *scan && argc < MAX_ARGS) // while still data and we haven't exceeded the maximum argument count.
- {
- while ( *scan && *scan != 32 ) scan++; // scan forward to the next space
- if ( *scan == 32 ) // if we hit a space
- {
- *scan = 0; // null-terminate the argument
- scan++; // skip to the next character
- while ( *scan == 32 ) scan++; // skip any leading spaces
- if ( *scan ) // if there is still a valid non-space character process that as the next argument
- {
- mArgv[argc] = scan;
- argc++;
- }
- }
- }
- ret = mArgv;
- }
- }
- }
-
- return ret;
- }
-
- bool sendData(char* ptr, size_t size, int dataType)
- {
- if ( size > DATA_SIZE || !mSendFile )
- return false;
-
- mSendCount++; // Increment the send counter.
-
- char *baseAddress = (char *)mSendFile->getBaseAddress(); // get the base address of the shared memory
-
- Header* header = (Header*)baseAddress;
-
- header->mCount = mSendCount;
- header->mType = dataType;
-
- baseAddress+=sizeof(Header);
- memcpy(baseAddress,ptr, size);
-
- return true;
- }
-
- bool receiveData(char* ptr, size_t size, int dataType)
- {
- if ( size > DATA_SIZE || !mReceiveFile )
- return false;
-
- const char *baseAddress = (const char *)mReceiveFile->getBaseAddress();
- const int *source = (const int *)baseAddress;
-
- Header* header = (Header*)baseAddress;
- if (header->mType != dataType)
- return false;
-
- baseAddress+=sizeof(Header);
-
- if ( *source != mReceiveCount )
- {
- mReceiveCount = *source;
- memcpy(ptr, baseAddress, size);
- }
-
- return true;
- }
-
- bool checkMessage(const char* msg)
- {
- if (!mReceiveFile)
- return false;
-
- const char *baseAddress = (const char *)mReceiveFile->getBaseAddress();
- const int *source = (const int *)baseAddress;
-
- if (*source == mReceiveCount)
- return false;
-
- if ( *source != mReceiveCount )
- {
- baseAddress+=sizeof(Header);
-
- return (!strcmp(baseAddress, msg));
- }
-
- return false;
- }
-
- virtual void release(void)
- {
- delete this;
- }
-
-
-};
-
-}; // end of namespace
-
-using namespace BACKDOOR;
-
-
-Backdoor * createBackdoor(const char *sendName,const char *receiveName)
-{
- _Backdoor *ret = new _Backdoor(sendName,receiveName);
- return static_cast< Backdoor *>(ret);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.h b/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.h
deleted file mode 100644
index a8ea1ac..0000000
--- a/tools/ArtistTools/source/CoreLib/Backdoor/backdoor.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef BACKDOOR_H
-
-#define BACKDOOR_H
-
-// This is a tiny helper class that let's you easily perform communication using shared file memory between
-// two processes on the same machine. It is built to comple on Windows; but relatively minor changes
-// are necesary to make it work on other platforms; just change the memory mapped IO calls.
-//
-// This same technique would work as well if you simply opened a file on disk; though shared memory is much
-// faster.
-//
-// This is not meant to be some kind of sophisticated inter-process communciations class. Instead it's just
-// used for the very basic use case where you need to easily send simple 'commands' between two proceses.
-//
-// This code snippet comes with a console application which can be used to send commands to another process
-// and display received messaegs from that other process.
-//
-// Simply launch this console app with a command line argument indicating whether it is considered the 'server'
-// or the 'client'. You can test it by launching it twice; once as server and once as client and then send
-// chat messages back and forth.
-//
-// Written by John W. Ratcliff on February 10, 2013 and released into the public domain.
-//
-
-class Backdoor
-{
-public:
-
- virtual void send(const char *str,...) = 0; // This sends a 'command' to the other process. Uses the printf style format for convenience.
-
- // This method consumes an inomcing command from the other process and parses it into an argc/argv format.
- virtual const char **getInput(int &argc) = 0;
-
- virtual bool sendData(char* ptr, size_t size, int dataType) = 0;
-
- virtual bool receiveData(char* ptr, size_t size, int dataType) = 0;
-
- virtual bool checkMessage(const char* msg) = 0;
-
- // This method releases the Backdoor interface class.
- virtual void release(void) = 0;
-protected:
- virtual ~Backdoor(void)
- {
- }
-};
-
-Backdoor * createBackdoor(const char *sendName,const char *receiveName);
-
-
-#endif
diff --git a/tools/ArtistTools/source/CoreLib/CoreLib.cpp b/tools/ArtistTools/source/CoreLib/CoreLib.cpp
deleted file mode 100644
index ceeae6c..0000000
--- a/tools/ArtistTools/source/CoreLib/CoreLib.cpp
+++ /dev/null
@@ -1,1508 +0,0 @@
-#include <QtWidgets/QApplication>
-#include <QtCore/QTimer>
-#include <QtCore/QFile>
-#include <QtCore/QDir>
-#include <QtWidgets/QMessageBox>
-#include <QtCore/QFileInfo>
-
-#include "Nv.h"
-
-#include "AppMainWindow.h"
-#include "D3DWidget.h"
-#include "SimpleScene.h"
-#include "Automate.h"
-#include "Settings.h"
-#include "RenderInterface.h"
-#include "GlobalSettings.h"
-
-#ifndef NV_ARTISTTOOLS
-#include "FurCharacter.h"
-#include "PluginBlast.h"
-#endif // NV_ARTISTTOOLS
-
-#include "RenderPlugin.h"
-
-void SetupStyles()
-{
- //QFile styleFile( ":/AppMainWindow/ThemeDefault.qss" );
- QString appPath = QCoreApplication::applicationDirPath();
- QString themeFilePath = appPath + "/ArtistToolsTheme.qss";
- QFile styleFile;
- if (QFile::exists(themeFilePath))
- {
- styleFile.setFileName(themeFilePath);
- }
- else
- {
- styleFile.setFileName(":/AppMainWindow/ThemeDark.qss");
- }
- styleFile.open(QFile::ReadOnly);
-
- QString styleSheet(styleFile.readAll());
- QApplication::setEffectEnabled(Qt::UI_AnimateCombo, false);
- qApp->setStyleSheet(styleSheet);
-}
-
-int ShowErrorMsg(int errorCode)
-{
- const char* errorMsg = 0;
- switch (errorCode)
- {
- case 1:
- errorMsg = "Fail to create GPU device and context. "
- "Please make sure you are using an independant GPU and choose '3D App - Game Development' in the Global Settings page in its Control Panel.";
- break;
- case 2:
- errorMsg = "Fail to initialize all the shared shaders, resources, etc. "
- "Please make sure you are using an independant GPU and choose '3D App - Game Development' in the Global Settings page in its Control Panel.";
- break;
- case 3:
- errorMsg = "Fail to create render window, target, swap chains, etc. "
- "Please make sure you are using an independant GPU and choose '3D App - Game Development' in the Global Settings page in its Control Panel.";
- break;
- case 4:
- // Unable to load/start the dll.
- errorMsg = "Unable to load and/or start the Blast dll. "
- "Please make sure the appropriate hairworks dll is the same directory as the viewer executable.";
- break;
- default:
- errorMsg = "We need define one error message!";
- }
- QMessageBox messageBox;
- messageBox.information(0, "Error", errorMsg);
- return errorCode;
-}
-
-extern void CreateAppMainWindow();
-extern void ReleaseAppMainWindow();
-
-int RunApp(QApplication& app)
-{
- CreateAppMainWindow();
-
- // resolution
- int windowWidth = 0;
- int windowHeight = 0;
- std::string resolution = AppSettings::Inst().GetOptionValue("User/Resolution")->Value.Enum;
- int width, height;
- sscanf(resolution.c_str(), "%dx%d", &windowWidth, &windowHeight);
-
- // aa sample count
- int sampleCount = 8;
- if (stricmp(AppSettings::Inst().GetOptionValue("User/AA")->Value.Enum, "2X") == 0)
- {
- sampleCount = 2;
- }
- else if (stricmp(AppSettings::Inst().GetOptionValue("User/AA")->Value.Enum, "4X") == 0)
- {
- sampleCount = 4;
- }
- else if (stricmp(AppSettings::Inst().GetOptionValue("User/AA")->Value.Enum, "8X") == 0)
- {
- sampleCount = 8;
- }
- else if (stricmp(AppSettings::Inst().GetOptionValue("User/AA")->Value.Enum, "Off") == 0)
- {
- sampleCount = 1;
- }
-
- // device id
- int deviceID = (AppSettings::Inst().GetOptionValue("User/Device")->Value.Int);
- if (deviceID < 0 || deviceID > 3)
- {
- deviceID = -1; // when -1 to choose a good GPU
- }
-
- // backdoor connection mode
- int backdoor = 0;
- if (stricmp(AppSettings::Inst().GetOptionValue("User/Backdoor")->Value.String, "master") == 0)
- {
- backdoor = 1;
- }
- else if (stricmp(AppSettings::Inst().GetOptionValue("User/Backdoor")->Value.String, "slave") == 0)
- {
- backdoor = 2;
- }
-
- AppMainWindow::setConnectionMode(backdoor);
-
- SimpleScene::Inst();
-#ifdef NV_ARTISTTOOLS
- CoreLib::Inst()->SimpleScene_SimpleScene();
-#endif // NV_ARTISTTOOLS
- // initialize main window
- // HAIR-285 Viewer - new command line to start Viewer in full screen
- AppMainWindow::Inst().InitUI();
- if (windowWidth == 0)
- AppMainWindow::Inst().showFullScreen();
- else if (windowWidth<0)
- AppMainWindow::Inst().showMaximized();
- else
- AppMainWindow::Inst().resize(windowWidth, windowHeight);
-
- D3DWidget* d3dWidget = AppMainWindow::Inst().GetRenderWidget();
-
- HWND hWidget = (HWND)d3dWidget->winId();
-
- // create GPU device and context
- if (false == RenderInterface::InitDevice(deviceID))
- return ShowErrorMsg(1);
-
- // initialize all the shared shaders, resources, etc
- if (false == RenderInterface::Initialize())
- return ShowErrorMsg(2);
-
- // create render window, target, swap chains, etc.
- if (false == RenderInterface::CreateRenderWindow(hWidget, sampleCount))
- return ShowErrorMsg(3);
-
- SimpleScene* scene = SimpleScene::Inst();
- if (false == scene->Initialize(hWidget, backdoor))
- return ShowErrorMsg(4);
-
- GlobalSettings::Inst().setRenderFps(60);
-
- GlobalSettings::GetFrameTimer().start();
-
- QObject::connect(&GlobalSettings::GetFrameTimer(), SIGNAL(timeout()), d3dWidget, SLOT(Timeout()));
- QObject::connect(&app, SIGNAL(aboutToQuit()), d3dWidget, SLOT(Shutdown()));
-
- SetupStyles();
-
- AppMainWindow::Inst().show();
- AppMainWindow::Inst().update();
-
- std::string title = "";
-
-#ifdef NV_ARTISTTOOLS
- title = "ArtistTools";
-#else
- title = "Blast Viewer";
-#endif // NV_ARTISTTOOLS
-
-#ifdef _WIN64
- title.append(" x64");
-#endif
-
-#ifdef _DEBUG
- title.append(" (Debug)");
-#else
-#endif
-
- std::string strApi = RenderPlugin::Instance()->GetRenderApi();
- title.append(" ");
- title.append(strApi);
-
- switch (backdoor)
- {
- case 1:
- title.append(" (Master Mode)");
- break;
- case 2:
- title.append(" (Slave Mode)");
- break;
- }
-
- AppMainWindow::Inst().setWindowTitle(title.c_str());
-
- OptionValue* option = AppSettings::Inst().GetOptionValue("User/HideUI");
- if (option)
- {
- if (option->Value.Bool == OA_TRUE)
- {
- AppMainWindow::Inst().shortcut_expert();
- }
- }
-
-#ifndef NV_ARTISTTOOLS
- option = AppSettings::Inst().GetOptionValue("User/FurAssetPath");
- if (option && option->Value.String && strlen(option->Value.String))
- {
- const char* path = option->Value.String;
- QFileInfo fi(path);
- QByteArray dir = QDir::toNativeSeparators(fi.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fi.fileName().toLocal8Bit();
- scene->GetFurCharacter().LoadHairAsset(dir, file);
- }
-#else
- CoreLib::Inst()->CoreLib_RunApp();
-#endif // NV_ARTISTTOOLS
-
- option = AppSettings::Inst().GetOptionValue("User/ProjectPath");
- if (option && option->Value.String && strlen(option->Value.String))
- {
- const char* path = option->Value.String;
- QFileInfo fi(path);
- QByteArray dir = QDir::toNativeSeparators(fi.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fi.fileName().toLocal8Bit();
- scene->LoadProject(dir, file);
- }
- option = AppSettings::Inst().GetOptionValue("User/Play");
- if (option)
- {
- if (option->Value.Bool == OA_TRUE)
- {
- AppMainWindow::Inst().shortcut_pause();
- }
- }
-
- int ret = app.exec();
- // release GUI before releasing QApplication (and QWindowsContext) to avoid crash.
- // e.g. GWDCC-415 Blast Viewer crashes when quit after clicked any main menu.
- ReleaseAppMainWindow();
- return ret;
-}
-
-static void ShowUsage()
-{
- char message[] = {
- "FurViewer Command-line Options:\n\n"
- "Usage: FurViewer.[win64|win32].exe [file] [options]...\n\n"
- "[file]: \n"
- "\t: File to load. .blastProj, .apx or .apb are supported.\n\t ex) media/Ball/ball.blastProj\n\n"
- "[options]:\n"
- "-size <width>x<height>\n\t: Window resolution\t ex) -size 1024x768\n"
- "-aa <1|2|4|8>\n\t: MSAA anti-aliasing options. 1 for off.\t ex) -aa 4 or -aa 1\n"
- "-backdoor <master|slave>\n\t: Backdoor options\n"
- "-device <0|1|2|3>\n\t: Which GPU to use\n"
- "-noui \n\t: Set this option to hide UI\n"
- "-play \n\t: Play the default animation if it has\n"
- "-fullscreen \n\t: Start the application in full screen\n"
- "-maxscreen \n\t: Start the application in max sized screen\n"
- "-demoMode playlistname.plist \n\t: Start the application and demo the projects in a fur playlist stored in media/playlists folder.\n"
- };
- QMessageBox messageBox;
- messageBox.information(0, "Usage", message);
-}
-
-bool ParseCommandLineOptions(int argc, char* argv[])
-{
- AppSettings& settings = AppSettings::Inst();
-
- for (int idx = 1; idx < argc; ++idx)
- {
- if (!stricmp(argv[idx], "-size"))
- {
- if ((idx + 1) < argc)
- {
- oaValue value;
- value.Enum = argv[idx + 1];
- settings.SetOptionValue("User/Resolution", OA_TYPE_ENUM, &value);
- idx++; // Skip next option
- }
- }
- else if (!stricmp(argv[idx], "-fullscreen"))
- {
- // HAIR-285 Viewer - new command line to start Viewer in full screen
- oaValue value;
- value.Enum = "0x0";
- settings.SetOptionValue("User/Resolution", OA_TYPE_ENUM, &value);;
- }
- else if (!stricmp(argv[idx], "-maxscreen"))
- {
- // HAIR-285 Viewer - new command line to start Viewer in full screen
- oaValue value;
- value.Enum = "-1x0";
- settings.SetOptionValue("User/Resolution", OA_TYPE_ENUM, &value);;
- }
- else if (!stricmp(argv[idx], "-backdoor"))
- {
- if ((idx + 1) < argc)
- {
- oaValue value;
- bool isValid = true;
- if (!strcmp(argv[idx + 1], "master"))
- value.String = "master";
- else if (!strcmp(argv[idx + 1], "slave"))
- value.String = "slave";
- else
- isValid = false;
-
- if (isValid)
- settings.SetOptionValue("User/Backdoor", OA_TYPE_STRING, &value);
- idx++; // Skip next option
- }
- }
- else if (!stricmp(argv[idx], "-aa"))
- {
- if ((idx + 1) < argc)
- {
- oaValue value;
- bool isValid = true;
- if (!strcmp(argv[idx + 1], "1"))
- value.Enum = "Off";
- else if (!strcmp(argv[idx + 1], "2"))
- value.Enum = "2X";
- else if (!strcmp(argv[idx + 1], "4"))
- value.Enum = "4X";
- else if (!strcmp(argv[idx + 1], "8"))
- value.Enum = "8X";
- else
- isValid = false;
- if (isValid)
- settings.SetOptionValue("User/AA", OA_TYPE_ENUM, &value);
- idx++; // Skip next option
- }
- }
- else if (!stricmp(argv[idx], "-device"))
- {
- if ((idx + 1) < argc)
- {
- oaValue value;
- bool isValid = true;
- if (!strcmp(argv[idx + 1], "0"))
- value.Int = 0;
- else if (!strcmp(argv[idx + 1], "1"))
- value.Int = 1;
- else if (!strcmp(argv[idx + 1], "2"))
- value.Int = 2;
- else if (!strcmp(argv[idx + 1], "3"))
- value.Int = 3;
- else
- isValid = false;
- if (isValid)
- settings.SetOptionValue("User/Device", OA_TYPE_INT, &value);
- idx++; // Skip next option
- }
- }
- else if (!stricmp(argv[idx], "-noui"))
- {
- oaValue value;
- value.Bool = OA_TRUE;
- settings.SetOptionValue("User/HideUI", OA_TYPE_BOOL, &value);
- }
- else if (!stricmp(argv[idx], "-perf"))
- {
- oaValue value;
- value.Bool = OA_TRUE;
- settings.SetOptionValue("User/PerfMode", OA_TYPE_BOOL, &value);
- }
- else if (!stricmp(argv[idx], "-play"))
- {
- oaValue value;
- value.Bool = OA_TRUE;
- settings.SetOptionValue("User/Play", OA_TYPE_BOOL, &value);
- }
- else if (!stricmp(argv[idx], "-install"))
- {
- // Install mode
- // Just ignore here
- }
- else if (!stricmp(argv[idx], "-openautomate"))
- {
- // OpenAutomate mode
- // Just ignore here
- idx++; // Skip next option
- }
- else if (!stricmp(argv[idx], "-demoMode"))
- {
- //QMessageBox messageBox;
- //messageBox.information(0, "debug", argv[idx]);
- idx++; // check next arg
- if (idx < argc)
- {
- bool isValid = false;
- char* extension = strrchr(argv[idx], '.');
- if (extension)
- {
- if (!_stricmp(extension, ".plist"))
- {
- oaValue value;
- value.String = argv[idx];
- settings.SetOptionValue("User/FurDemoPlaylist", OA_TYPE_STRING, &value);
- isValid = true;
- }
- }
- }
- }
- else // Try to load the file
- {
- bool isValid = false;
- char* extension = strrchr(argv[idx], '.');
- if (extension)
- {
- if (!_stricmp(extension, ".blastProj"))
- {
- oaValue value;
- value.String = argv[idx];
- settings.SetOptionValue("User/ProjectPath", OA_TYPE_STRING, &value);
- isValid = true;
- }
- //else if (!_stricmp(extension, ".apx") || !_stricmp(extension, ".apb"))
- //{
- // oaValue value;
- // value.String = argv[idx];
- // settings.SetOptionValue("User/FurAssetPath", OA_TYPE_STRING, &value);
- // isValid = true;
- //}
- }
- if (!isValid)
- {
- // Invalid option
- return false;
- }
- }
- }
- return true;
-}
-
-typedef RenderPlugin*(*Func)(void);
-
-void GetRenderPlugins(QApplication& app, std::vector<std::string>& render_plugins)
-{
- HMODULE module = NULL;
- Func CreateFunc = NULL;
- RenderPlugin* Plugin = NULL;
-
- QDir pluginsDir(app.applicationDirPath());
- foreach(QString fileName, pluginsDir.entryList(QDir::Files)) {
-#ifdef NV_ARTISTTOOLS
- if (!fileName.startsWith("Render"))
-#else
- if (!fileName.startsWith("FurRender"))
-#endif
- {
- continue;
- }
-
-#ifdef _WIN64
-#ifdef _DEBUG
- if (!fileName.endsWith(".win64.d.dll"))
- {
- continue;
- }
-#else
- if (!fileName.endsWith(".win64.dll"))
- {
- continue;
- }
-#endif
-#else
-#ifdef _DEBUG
- if (!fileName.endsWith(".win32.d.dll"))
- {
- continue;
- }
-#else
- if (!fileName.endsWith(".win32.dll"))
- {
- continue;
- }
-#endif
-#endif
-
- QByteArray tmp = pluginsDir.absoluteFilePath(fileName).toUtf8();
- const char* pName = tmp.data();
- module = LoadLibraryA(pName);
- if (NULL == module)
- continue;
-
- CreateFunc = (Func)GetProcAddress(module, "CreateRenderPlugin");
- if (NULL == CreateFunc)
- continue;
-
- Plugin = CreateFunc();
- if (NULL != Plugin)
- {
- std::string name = Plugin->GetRenderApi();
- render_plugins.push_back(name);
- delete Plugin;
- Plugin = NULL;
- }
- }
-}
-
-
-#include "RenderPlugin.h"
-#include "CoreLib.h"
-
-#include <io.h>
-#include <stdio.h>
-#include <stdlib.h>
-#define LINE 10
-
-#ifndef NV_ARTISTTOOLS
-int CoreLib::CoreMain(int argc, char *argv[])
-#else
-int CoreLib::CoreMain(int argc, char *argv[], bool withPlugin)
-#endif
-{
-#ifdef OPEN_CONSOLE
- AllocConsole();
- freopen("CONOUT$", "w", stdout);
- freopen("CONOUT$", "w", stderr);
-#endif
-
- QApplication a(argc, argv);
-
- AppSettings::Inst().InitOptions();
-
- if (!ParseCommandLineOptions(argc, argv))
- {
- // Invalid option. Show the usage and quit
- ShowUsage();
- return 0;
- }
-#if (0) // Install mode for OpenAutomate is not tested yet
- bool isAutomateInstallMode = GetAutomateInstallModeOption(argc, argv);
- if (isAutomateInstallMode)
- {
- if (AutomateInstallApp())
- {
- QMessageBox messageBox;
- messageBox.information(0, "Info", "Install succeeded");
- }
- else
- {
- QMessageBox messageBox;
- messageBox.information(0, "Info", "Install failed. Did you run with admin privilege?");
- }
- return 0;
- }
-#endif
- std::string openAutomateOptions = GetAutomateOption(argc, argv);
- if (!openAutomateOptions.empty())
- {
- AutomateInit(openAutomateOptions.c_str());
- }
-
- std::vector<std::string> render_plugins;
- std::vector<std::string>::iterator it;
-
- FILE *pf;
- if ((_access("RenderPlugin.txt", 0)) == -1)
- {
- GetRenderPlugins(a, render_plugins);
-
- if (render_plugins.size() > 1)
- {
- pf = fopen("RenderPlugin.txt", "a");
- for (it = render_plugins.begin(); it != render_plugins.end(); it++)
- {
- fprintf(pf, "%s\n", (*it).c_str());
- }
- fclose(pf);
- }
- }
- else
- {
- pf = fopen("RenderPlugin.txt", "r");
- char buf[LINE];
- while (1) {
- memset(buf, 0, LINE);
- if (fscanf(pf, "%s", buf) == -1)
- break;
- render_plugins.push_back(buf);
- }
- fclose(pf);
- }
-
- RenderPlugin::Load(render_plugins);
-
- std::string strApi = RenderPlugin::Instance()->GetRenderApi();
- if ("" == strApi)
- {
- return -1;
- }
-
-#ifdef NV_ARTISTTOOLS
- if (withPlugin)
- {
- LoadPlugins(a);
- }
-#else
- bool loaded = PluginBlast::Create(strApi);
- if (!loaded)
- {
- return -1;
- }
-#endif
-
- return RunApp(a);
-}
-
-CoreLib::CoreLib()
-{
-
-}
-
-CoreLib::~CoreLib()
-{
-
-}
-
-CoreLib* CoreLib::Inst()
-{
- static CoreLib coreLib;
- return &coreLib;
-}
-
-#ifdef NV_ARTISTTOOLS
-#include <QtWidgets/QApplication>
-#include <QtCore/QTimer>
-#include <QtCore/QFile>
-#include <QtCore/QDir>
-#include <QtWidgets/QMessageBox>
-#include <QtCore/QFileInfo>
-
-#include "Nv.h"
-
-#include "AppMainWindow.h"
-#include "D3DWidget.h"
-#include "SimpleScene.h"
-#include "Automate.h"
-#include "Settings.h"
-#include "RenderInterface.h"
-#include "Light.h"
-
-#include <QtCore/QPluginLoader>
-void CoreLib::LoadPlugins(QApplication& app)
-{
- QDir pluginsDir(app.applicationDirPath());
- foreach(QString fileName, pluginsDir.entryList(QDir::Files)) {
- if (!fileName.startsWith("Plugin"))
- {
- continue;
- }
-
-#ifdef _WIN64
-#ifdef _DEBUG
- if (!fileName.endsWith(".win64.d.dll"))
- {
- continue;
- }
-#else
- if (!fileName.endsWith(".win64.dll"))
- {
- continue;
- }
-#endif
-#else
-#ifdef _DEBUG
- if (!fileName.endsWith(".win32.d.dll"))
- {
- continue;
- }
-#else
- if (!fileName.endsWith(".win32.dll"))
- {
- continue;
- }
-#endif
-#endif
-
- PluginInterface* pInterface;
- QByteArray tmp = pluginsDir.absoluteFilePath(fileName).toUtf8();
- const char* pName = tmp.data();
- QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
- QObject *plugin = pluginLoader.instance();
- if (plugin) {
- pInterface = qobject_cast<PluginInterface *>(plugin);
- if (pInterface)
- {
- std::string strApi = RenderPlugin::Instance()->GetRenderApi();
- bool loaded = pInterface->LoadRenderPlugin(strApi);
- if (!loaded)
- {
- continue;
- }
-
- QString name = pInterface->GetPluginName();
- m_PluginInterfaces[name] = pInterface;
- }
- }
- else
- {
- QMessageBox::critical(nullptr, "", pluginLoader.errorString());
- }
- }
-}
-
-PluginInterface* CoreLib::GetPluginInterface(QString name)
-{
- PluginInterface* pPluginInterface = 0;
- std::map<QString, PluginInterface*>::iterator it;
- it = m_PluginInterfaces.find(name);
- if (it != m_PluginInterfaces.end())
- {
- pPluginInterface = it->second;
- }
- return pPluginInterface;
-}
-
-bool CoreLib::GetBoneNames(std::vector<std::string>& BoneNames)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->GetBoneNames(BoneNames))
- break;
- }
- return true;
-}
-
-bool CoreLib::CoreLib_RunApp()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->CoreLib_RunApp())
- break;
- }
-
- return true;
-}
-
-bool CoreLib::MainToolbar_updateValues()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->MainToolbar_updateValues())
- break;
- }
- return true;
-}
-
-bool CoreLib::CurveEditor_updateValues(int _paramId, float* _values)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->CurveEditor_updateValues(_paramId, _values))
- break;
- }
- return true;
-}
-bool CoreLib::CurveEditor_onUpdateValues(int _paramId, float* _values)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->CurveEditor_onUpdateValues(_paramId, _values))
- break;
- }
- return true;
-}
-
-bool CoreLib::DisplayMeshesPanel_updateValues()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->DisplayMeshesPanel_updateValues())
- break;
- }
- return true;
-}
-bool CoreLib::DisplayMeshesPanel_EmitToggleSignal(unsigned int id, bool visible)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->DisplayMeshesPanel_EmitToggleSignal(id, visible))
- break;
- }
- return true;
-}
-
-bool CoreLib::Camera_LoadParameters(void* ptr, Camera* pCamera)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Camera_LoadParameters(ptr, pCamera))
- break;
- }
- return true;
-}
-bool CoreLib::Camera_SaveParameters(void* ptr, Camera* pCamera)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Camera_SaveParameters(ptr, pCamera))
- break;
- }
- return true;
-}
-
-bool CoreLib::Light_loadParameters(NvParameterized::Handle& handle, Light* pLight)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Light_loadParameters(handle, pLight))
- break;
- }
- return true;
-}
-
-bool CoreLib::Light_saveParameters(NvParameterized::Handle& handle, Light* pLight)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Light_saveParameters(handle, pLight))
- break;
- }
- return true;
-}
-
-bool CoreLib::Gamepad_ToggleSimulation()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_ToggleSimulation())
- break;
- }
- return true;
-}
-bool CoreLib::Gamepad_LoadSamples(QString fn)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_LoadSamples(fn))
- break;
- }
- return true;
-}
-bool CoreLib::Gamepad_ResetScene()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_ResetScene())
- break;
- }
- return true;
-}
-
-bool CoreLib::Gamepad_PlaySample()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_PlaySample())
- break;
- }
- return true;
-}
-
-bool CoreLib::GamepadHandler_ShowHair()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->GamepadHandler_ShowHair())
- break;
- }
- return true;
-}
-
-bool CoreLib::GamepadHandler_SpinWindStrength(float windStrength)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->GamepadHandler_SpinWindStrength(windStrength))
- break;
- }
- return true;
-}
-
-bool CoreLib::Gamepad_ResetAnimation()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_ResetAnimation())
- break;
- }
- return true;
-}
-
-bool CoreLib::Gamepad_PlayPauseAnimation()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->Gamepad_PlayPauseAnimation())
- break;
- }
- return true;
-}
-
-bool CoreLib::SimpleScene_SimpleScene()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_SimpleScene())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_Initialize(int backdoor)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_Initialize(backdoor))
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_Shutdown()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_Shutdown())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_Clear()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_Clear())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_Draw_DX12()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_Draw_DX12())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_Draw_DX11()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_Draw_DX11())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_FitCamera(atcore_float3& center, atcore_float3& extents)
-{
- bool valid = true;
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_FitCamera(center, extents))
- {
- valid = false;
- break;
- }
- }
- return valid;
-}
-bool CoreLib::SimpleScene_ResetUpDir(bool zup)
-{
- bool valid = true;
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_ResetUpDir(zup))
- {
- valid = false;
- break;
- }
- }
- return valid;
-}
-bool CoreLib::SimpleScene_UpdateCamera()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_UpdateCamera())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_DrawGround()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_DrawGround())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_DrawWind()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_DrawWind())
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_DrawAxis()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_DrawAxis())
- break;
- }
- return true;
-}
-void CoreLib::SimpleScene_OpenFilesByDrop(const QStringList& fileNames)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- (it->second)->SimpleScene_OpenFilesByDrop(fileNames);
- }
-}
-bool CoreLib::SimpleScene_LoadSceneFromFbx(const char* dir, const char* fbxName)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_LoadSceneFromFbx(dir, fbxName))
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_LoadProject(const char* dir, const char* file)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_LoadProject(dir, file))
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_SaveProject(const char* dir, const char* file)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_SaveProject(dir, file))
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_LoadParameters(NvParameterized::Interface* iface)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_LoadParameters(iface))
- break;
- }
- return true;
-}
-bool CoreLib::SimpleScene_SaveParameters(NvParameterized::Interface* iface)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_SaveParameters(iface))
- break;
- }
- return true;
-}
-
-bool CoreLib::SimpleScene_LoadCameraBookmarks(NvParameterized::Interface* iface)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_LoadCameraBookmarks(iface))
- break;
- }
- return true;
-}
-
-bool CoreLib::SimpleScene_SaveCameraBookmarks(NvParameterized::Interface* iface)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->SimpleScene_SaveCameraBookmarks(iface))
- break;
- }
- return true;
-}
-
-bool CoreLib::D3DWidget_resizeEvent(QResizeEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_resizeEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_paintEvent(QPaintEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_paintEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_mousePressEvent(QMouseEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_mousePressEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_mouseReleaseEvent(QMouseEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_mouseReleaseEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_mouseMoveEvent(QMouseEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_mouseMoveEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_wheelEvent(QWheelEvent * e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_wheelEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_keyPressEvent(QKeyEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_keyPressEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_keyReleaseEvent(QKeyEvent* e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_keyReleaseEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_dragEnterEvent(QDragEnterEvent *e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_dragEnterEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_dragMoveEvent(QDragMoveEvent *e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_dragMoveEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_dragLeaveEvent(QDragLeaveEvent *e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_dragLeaveEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_dropEvent(QDropEvent *e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_dropEvent(e))
- break;
- }
- return true;
-}
-bool CoreLib::D3DWidget_contextMenuEvent(QContextMenuEvent *e)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3DWidget_contextMenuEvent(e))
- break;
- }
- return true;
-}
-
-#ifdef NV_ARTISTTOOLS
-bool CoreLib::D3D11Shaders_InitializeShadersD3D11(std::map<int, D3D11RenderShader*>& ShaderMap)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->D3D11Shaders_InitializeShadersD3D11(ShaderMap))
- break;
- }
- return true;
-}
-#endif // NV_ARTISTTOOLS
-
-bool CoreLib::AppMainWindow_AppMainWindow()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_AppMainWindow())
- break;
- }
- return true;
-}
-bool CoreLib::AppMainWindow_InitMenuItems(QMenuBar* pMenuBar)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_InitMenuItems(pMenuBar))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_InitMainTab(QWidget *displayScrollAreaContents, QVBoxLayout *displayScrollAreaLayout, int idx)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_InitMainTab(displayScrollAreaContents, displayScrollAreaLayout, idx))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_InitPluginTab(QTabWidget* pTabWidget)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_InitPluginTab(pTabWidget))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_InitUI()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_InitUI())
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_updateUI()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_updateUI())
- break;
- }
- return true;
-}
-bool CoreLib::AppMainWindow_updatePluginUI()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_updatePluginUI())
- break;
- }
- return true;
-}
-bool CoreLib::AppMainWindow_processDragAndDrop(QString fname)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_processDragAndDrop(fname))
- break;
- }
- return true;
-}
-bool CoreLib::AppMainWindow_closeEvent(QCloseEvent *event)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_closeEvent(event))
- break;
- }
- return true;
-}
-
-
-bool CoreLib::menu_item_triggered(QAction* action)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_menu_item_triggered(action))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_menu_about()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_menu_about())
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_menu_opendoc()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_menu_opendoc())
- break;
- }
- return true;
-}
-#if USE_CURVE_EDITOR
-bool CoreLib::AppMainWindow_UpdateCurveEditor()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_UpdateCurveEditor())
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_ShowCurveEditor(int paramId)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_ShowCurveEditor(paramId))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute* attribute)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_onCurveAttributeChanged(attribute))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute* attribute)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_onColorAttributeChanged(attribute))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute* attribute, bool reloadColorTex, int selectedCtrlPntIndex)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_onReloadColorAttributeTexture(attribute, reloadColorTex, selectedCtrlPntIndex))
- break;
- }
- return true;
-}
-#endif
-bool CoreLib::AppMainWindow_InitToolbar(QWidget *pQWidget, QVBoxLayout* pLayout)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_InitToolbar(pQWidget, pLayout))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_shortcut_expert(bool mode)
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_shortcut_expert(mode))
- break;
- }
- return true;
-}
-
-bool CoreLib::AppMainWindow_updateMainToolbar()
-{
- std::map<QString, PluginInterface*>::iterator it;
- for (it = m_PluginInterfaces.begin(); it != m_PluginInterfaces.end(); it++)
- {
- if (!(it->second)->AppMainWindow_updateMainToolbar())
- break;
- }
- return true;
-}
-
-#endif \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/CoreLib.h b/tools/ArtistTools/source/CoreLib/CoreLib.h
deleted file mode 100644
index 740a7d0..0000000
--- a/tools/ArtistTools/source/CoreLib/CoreLib.h
+++ /dev/null
@@ -1,125 +0,0 @@
-#ifndef CORELIB_H
-#define CORELIB_H
-
-#include "corelib_global.h"
-#include "PluginInterface.h"
-#include "NvParameterized.h"
-#if USE_CURVE_EDITOR
-#include <Attribute.h>
-#endif
-
-class QCloseEvent;
-class Camera;
-class Light;
-namespace NvParameterized
-{
- class Interface;
- class Handle;
-}
-class D3D11RenderShader;
-
-class CORELIB_EXPORT CoreLib
-{
-public:
- CoreLib();
- ~CoreLib();
-
- static CoreLib* Inst();
-#ifndef NV_ARTISTTOOLS
- int CoreMain(int argc, char *argv[]);
-#else
- int CoreMain(int argc, char *argv[], bool withPlugin = true);
-
- bool CoreLib_RunApp();
- void LoadPlugins(QApplication& app);
- PluginInterface* GetPluginInterface(QString name);
-
- bool GetBoneNames(std::vector<std::string>& BoneNames);
- bool MainToolbar_updateValues();
-
- bool CurveEditor_updateValues(int _paramId, float* _values);
- bool CurveEditor_onUpdateValues(int _paramId, float* _values);
-
- bool DisplayMeshesPanel_updateValues();
- bool DisplayMeshesPanel_EmitToggleSignal(unsigned int id, bool visible);
-
- bool Camera_LoadParameters(void* ptr, Camera* pCamera);
- bool Camera_SaveParameters(void* ptr, Camera* pCamera);
- bool Light_loadParameters(NvParameterized::Handle& handle, Light* pLight);
- bool Light_saveParameters(NvParameterized::Handle& handle, Light* pLight);
-
- bool Gamepad_ToggleSimulation();
- bool Gamepad_LoadSamples(QString fn);
- bool Gamepad_ResetScene();
- bool Gamepad_PlaySample();
- bool GamepadHandler_ShowHair();
- bool GamepadHandler_SpinWindStrength(float windStrength);
- bool Gamepad_ResetAnimation();
- bool Gamepad_PlayPauseAnimation();
-
- void SimpleScene_OpenFilesByDrop(const QStringList& fileNames);
- bool SimpleScene_SimpleScene();
- bool SimpleScene_Initialize(int backdoor);
- bool SimpleScene_Shutdown();
- bool SimpleScene_Clear();
- bool SimpleScene_Draw_DX12();
- bool SimpleScene_Draw_DX11();
- bool SimpleScene_FitCamera(atcore_float3& center, atcore_float3& extents);
- bool SimpleScene_ResetUpDir(bool zup);
- bool SimpleScene_UpdateCamera();
- bool SimpleScene_DrawGround();
- bool SimpleScene_DrawWind();
- bool SimpleScene_DrawAxis();
- bool SimpleScene_LoadSceneFromFbx(const char* dir, const char* fbxName);
- bool SimpleScene_LoadProject(const char* dir, const char* file);
- bool SimpleScene_SaveProject(const char* dir, const char* file);
- bool SimpleScene_LoadParameters(NvParameterized::Interface* iface);
- bool SimpleScene_SaveParameters(NvParameterized::Interface* iface);
- bool SimpleScene_LoadCameraBookmarks(NvParameterized::Interface* iface);
- bool SimpleScene_SaveCameraBookmarks(NvParameterized::Interface* iface);
-
- bool D3DWidget_resizeEvent(QResizeEvent* e);
- bool D3DWidget_paintEvent(QPaintEvent* e);
- bool D3DWidget_mousePressEvent(QMouseEvent* e);
- bool D3DWidget_mouseReleaseEvent(QMouseEvent* e);
- bool D3DWidget_mouseMoveEvent(QMouseEvent* e);
- bool D3DWidget_wheelEvent(QWheelEvent * e);
- bool D3DWidget_keyPressEvent(QKeyEvent* e);
- bool D3DWidget_keyReleaseEvent(QKeyEvent* e);
- bool D3DWidget_dragEnterEvent(QDragEnterEvent *e);
- bool D3DWidget_dragMoveEvent(QDragMoveEvent *e);
- bool D3DWidget_dragLeaveEvent(QDragLeaveEvent *e);
- bool D3DWidget_dropEvent(QDropEvent *e);
- bool D3DWidget_contextMenuEvent(QContextMenuEvent *e);
-
- bool D3D11Shaders_InitializeShadersD3D11(std::map<int, D3D11RenderShader*>& ShaderMap);
-
- bool AppMainWindow_AppMainWindow();
- bool AppMainWindow_InitMenuItems(QMenuBar* pMenuBar);
- bool AppMainWindow_InitMainTab(QWidget *displayScrollAreaContents, QVBoxLayout *displayScrollAreaLayout, int idx);
- bool AppMainWindow_InitPluginTab(QTabWidget* pTabWidget);
- bool AppMainWindow_InitUI();
- bool AppMainWindow_updateUI();
- bool AppMainWindow_updatePluginUI();
- bool AppMainWindow_processDragAndDrop(QString fname);
- bool AppMainWindow_closeEvent(QCloseEvent *event);
- bool AppMainWindow_InitToolbar(QWidget *pQWidget, QVBoxLayout* pLayout);
- bool AppMainWindow_shortcut_expert(bool mode);
- bool AppMainWindow_updateMainToolbar();
-
- bool menu_item_triggered(QAction* action);
- bool AppMainWindow_menu_about();
- bool AppMainWindow_menu_opendoc();
-#if USE_CURVE_EDITOR
- bool AppMainWindow_UpdateCurveEditor();
- bool AppMainWindow_ShowCurveEditor(int paramId);
- bool AppMainWindow_onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute* attribute);
- bool AppMainWindow_onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute* attribute);
- bool AppMainWindow_onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute* attribute, bool reloadColorTex, int selectedCtrlPntIndex);
-#endif
-private:
- std::map<QString, PluginInterface*> m_PluginInterfaces;
-#endif // NV_ARTISTTOOLS
-};
-
-#endif // CORELIB_H
diff --git a/tools/ArtistTools/source/CoreLib/Parameters/FoundationHolder.h b/tools/ArtistTools/source/CoreLib/Parameters/FoundationHolder.h
deleted file mode 100644
index 5ec7868..0000000
--- a/tools/ArtistTools/source/CoreLib/Parameters/FoundationHolder.h
+++ /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 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 "NvErrorCallback.h"
-#include "NsGlobals.h"
-#include "NsVersionNumber.h"
-
-class DefaultErrorCallback : public nvidia::NvErrorCallback
-{
-public:
- DefaultErrorCallback(void)
- {
- }
-
- virtual void reportError(nvidia::NvErrorCode::Enum code, const char* message, const char* file, int line)
- {
- NV_UNUSED(code);
- printf("PhysX: %s : %s : %d\r\n", message, file, line);
- }
-private:
-};
-
-class DefaultAllocator : public nvidia::NvAllocatorCallback
-{
-public:
- DefaultAllocator(void)
- {
- }
-
- ~DefaultAllocator(void)
- {
- }
-
- virtual void* allocate(size_t size, const char* typeName, const char* filename, int line)
- {
- NV_UNUSED(typeName);
- NV_UNUSED(filename);
- NV_UNUSED(line);
- void *ret = ::_aligned_malloc(size, 16);
- return ret;
- }
-
- virtual void deallocate(void* ptr)
- {
- ::_aligned_free(ptr);
- }
-private:
-};
-
-
-#if 0
-class FoundationHolder
-{
- NvFoundation* mFoundation;
- FoundationHolder()
- :mFoundation(nullptr)
- {
- }
-
- ~FoundationHolder()
- {
- if (mFoundation)
- {
- // to-do
- // we should release foundation. but Hair SDK could release it first.
- //mFoundation->release();
- mFoundation = nullptr;
- }
- }
-
-public:
-
- static NvFoundation* GetFoundation()
- {
- static FoundationHolder fh;
- if (fh.mFoundation == nullptr)
- {
- static DefaultAllocator sDefaultAllocator;
- static DefaultErrorCallback sDefaultErrorCallback;
- fh.mFoundation = NvCreateFoundation(NV_FOUNDATION_VERSION, sDefaultAllocator, sDefaultErrorCallback);
- assert(fh.mFoundation != nullptr);
- }
- return fh.mFoundation;
- }
-};
-
-#else
-
-class FoundationHolder
-{
- bool m_isInitialized;
- public:
- static void GetFoundation()
- {
- static FoundationHolder s_holder;
- if (!s_holder.m_isInitialized)
- {
- static DefaultAllocator sDefaultAllocator;
- static DefaultErrorCallback sDefaultErrorCallback;
- nvidia::shdfnd::initializeSharedFoundation(NV_FOUNDATION_VERSION, sDefaultAllocator, sDefaultErrorCallback);
-
- s_holder.m_isInitialized = true;
- }
- }
- ~FoundationHolder()
- {
- //nvidia::terminateSharedFoundation();
- }
-};
-
-#endif
diff --git a/tools/ArtistTools/source/CoreLib/Parameters/HackNvParamBug.cpp b/tools/ArtistTools/source/CoreLib/Parameters/HackNvParamBug.cpp
deleted file mode 100644
index 2ee7769..0000000
--- a/tools/ArtistTools/source/CoreLib/Parameters/HackNvParamBug.cpp
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <string.h>
-
-int GetHackElementSize(const char* data)
-{
- return 0;
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Parameters/PlaylistParams.pl b/tools/ArtistTools/source/CoreLib/Parameters/PlaylistParams.pl
deleted file mode 100644
index a4618aa..0000000
--- a/tools/ArtistTools/source/CoreLib/Parameters/PlaylistParams.pl
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- header =>
- {
- className => 'PlaylistParams',
- implementStorage => 1,
-
- # Version history
- # 0.0 Initial Version
- classVersion => '0.0',
-
- hints =>
- {
- },
- },
-
- structs =>
- [
- ],
-
- parameters =>
- [
- {
- name => 'blastProjFilePaths',
- type => 'STRING',
- isArray => 1,
- arraySize => '-1',
- hints =>
- {
- shortDescription => "BlastProj file paths",
- },
- },
- ]
-}
diff --git a/tools/ArtistTools/source/CoreLib/Parameters/go.bat b/tools/ArtistTools/source/CoreLib/Parameters/go.bat
deleted file mode 100644
index 600bf18..0000000
--- a/tools/ArtistTools/source/CoreLib/Parameters/go.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-SET SRC_ROOT=..\..\..\..\..
-SET EXTERNAL_ROOT=%SRC_ROOT%\..\..\external
-SET BUILDTOOL_ROOT=%SRC_ROOT%\..\..\external
-
-@if "%PERL%"=="" set PERL=%BUILDTOOL_ROOT%\perl\5.8.8_822\bin\perl
-@%PERL% %EXTERNAL_ROOT%\NvParameterized\1.1\trunk\build\scripts\GenParameterized.pl -force PlaylistParams.pl . . \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/PluginInterface.h b/tools/ArtistTools/source/CoreLib/PluginInterface.h
deleted file mode 100644
index a86bf4d..0000000
--- a/tools/ArtistTools/source/CoreLib/PluginInterface.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef BlastInterface_H
-#define BlastInterface_H
-
-#include <QtCore/QString>
-#include <QtCore/QObject>
-#if USE_CURVE_EDITOR
-#include <Attribute.h>
-#endif
-#include <Nv/NvBlastCommon.h>
-class QMenuBar;
-class QHBoxLayout;
-class QVBoxLayout;
-class QTabWidget;
-
-class Camera;
-class Light;
-enum RenderApi;
-namespace NvParameterized
-{
- class Interface;
- class Handle;
-}
-class D3D11RenderShader;
-class QCloseEvent;
-#define NV_AT_UNUSED
-
-class QResizeEvent;
-class QPaintEvent;
-class QMouseEvent;
-class QWheelEvent;
-class QKeyEvent;
-class QDragEnterEvent;
-class QDragMoveEvent;
-class QDragLeaveEvent;
-class QDropEvent;
-class QContextMenuEvent;
-class QAction;
-
-class PluginInterface
-{
-public:
- virtual ~PluginInterface() {}
-
- virtual QString GetPluginName() = 0;
-
- virtual bool CoreLib_RunApp() = 0;
-
- virtual bool LoadRenderPlugin(std::string api) = 0;
-
- virtual bool GetBoneNames(std::vector<std::string>& BoneNames) = 0;
-
- NV_AT_UNUSED virtual bool MainToolbar_updateValues() = 0;
-
- NV_AT_UNUSED virtual bool CurveEditor_updateValues(int _paramId, float* _values) = 0;
- NV_AT_UNUSED virtual bool CurveEditor_onUpdateValues(int _paramId, float* _values) = 0;
-
- virtual bool DisplayMeshesPanel_updateValues() = 0;
- virtual bool DisplayMeshesPanel_EmitToggleSignal(unsigned int id, bool visible) = 0;
-
- virtual bool Camera_LoadParameters(void* ptr, Camera* pCamera) = 0;
- virtual bool Camera_SaveParameters(void * ptr, Camera* pCamera) = 0;
-
- virtual bool Gamepad_ToggleSimulation() = 0;
- virtual bool Gamepad_ResetScene() = 0;
- NV_AT_UNUSED virtual bool Gamepad_LoadSamples(QString fn) = 0;
- virtual bool Gamepad_PlaySample() = 0;
- virtual bool GamepadHandler_ShowHair() = 0;
- virtual bool GamepadHandler_SpinWindStrength(float windStrength) = 0;
- virtual bool Gamepad_ResetAnimation() = 0;
- virtual bool Gamepad_PlayPauseAnimation() = 0;
-
- virtual bool Light_loadParameters(NvParameterized::Handle& handle, Light* pLight) = 0;
- virtual bool Light_saveParameters(NvParameterized::Handle& handle, Light* pLight) = 0;
-
- virtual void SimpleScene_OpenFilesByDrop(const QStringList& fileNames) = 0;
- virtual bool SimpleScene_SimpleScene() = 0;
- virtual bool SimpleScene_Initialize(int backdoor) = 0;
- virtual bool SimpleScene_Shutdown() = 0;
- virtual bool SimpleScene_Clear() = 0;
- virtual bool SimpleScene_Draw_DX12() = 0;
- virtual bool SimpleScene_Draw_DX11() = 0;
- virtual bool SimpleScene_FitCamera(atcore_float3& center, atcore_float3& extents) = 0;
- virtual bool SimpleScene_ResetUpDir(bool zup) = 0;
- virtual bool SimpleScene_UpdateCamera() = 0;
- virtual bool SimpleScene_LoadSceneFromFbx(const char* dir, const char* fbxName) = 0;
- virtual bool SimpleScene_LoadProject(const char* dir, const char* file) = 0;
- virtual bool SimpleScene_SaveProject(const char* dir, const char* file) = 0;
- virtual bool SimpleScene_LoadParameters(NvParameterized::Interface* iface) = 0;
- virtual bool SimpleScene_SaveParameters(NvParameterized::Interface* iface) = 0;
- virtual bool SimpleScene_LoadCameraBookmarks(NvParameterized::Interface* iface) = 0;
- virtual bool SimpleScene_SaveCameraBookmarks(NvParameterized::Interface* iface) = 0;
- NV_AT_UNUSED virtual bool SimpleScene_DrawGround() = 0;
- NV_AT_UNUSED virtual bool SimpleScene_DrawWind() = 0;
- NV_AT_UNUSED virtual bool SimpleScene_DrawAxis() = 0;
-
- virtual bool D3DWidget_resizeEvent(QResizeEvent* e) = 0;
- virtual bool D3DWidget_paintEvent(QPaintEvent* e) = 0;
- virtual bool D3DWidget_mousePressEvent(QMouseEvent* e) = 0;
- virtual bool D3DWidget_mouseReleaseEvent(QMouseEvent* e) = 0;
- virtual bool D3DWidget_mouseMoveEvent(QMouseEvent* e) = 0;
- virtual bool D3DWidget_wheelEvent(QWheelEvent * e) = 0;
- virtual bool D3DWidget_keyPressEvent(QKeyEvent* e) = 0;
- virtual bool D3DWidget_keyReleaseEvent(QKeyEvent* e) = 0;
- virtual bool D3DWidget_dragEnterEvent(QDragEnterEvent *e) = 0;
- virtual bool D3DWidget_dragMoveEvent(QDragMoveEvent *e) = 0;
- virtual bool D3DWidget_dragLeaveEvent(QDragLeaveEvent *e) = 0;
- virtual bool D3DWidget_dropEvent(QDropEvent *e) = 0;
- virtual bool D3DWidget_contextMenuEvent(QContextMenuEvent *e) = 0;
-
- virtual bool D3D11Shaders_InitializeShadersD3D11(std::map<int, D3D11RenderShader*>& ShaderMap) = 0;
-
- virtual bool AppMainWindow_AppMainWindow() = 0;
- virtual bool AppMainWindow_InitMenuItems(QMenuBar* pMenuBar) = 0;
- virtual bool AppMainWindow_InitMainTab(QWidget *displayScrollAreaContents, QVBoxLayout *displayScrollAreaLayout, int idx) = 0;
- virtual bool AppMainWindow_InitPluginTab(QTabWidget* pTabWidget) = 0;
- virtual bool AppMainWindow_InitUI() = 0;
- virtual bool AppMainWindow_updateUI() = 0;
- virtual bool AppMainWindow_updatePluginUI() = 0;
- NV_AT_UNUSED virtual bool AppMainWindow_processDragAndDrop(QString fname) = 0;
- virtual bool AppMainWindow_closeEvent(QCloseEvent *event) = 0;
- virtual bool AppMainWindow_InitToolbar(QWidget *pQWidget, QVBoxLayout* pLayout) = 0;
- virtual bool AppMainWindow_shortcut_expert(bool mode) = 0;
- virtual bool AppMainWindow_updateMainToolbar() = 0;
-
- virtual bool AppMainWindow_menu_item_triggered(QAction* action) = 0;
- virtual bool AppMainWindow_menu_about() = 0;
- virtual bool AppMainWindow_menu_opendoc() = 0;
-#if USE_CURVE_EDITOR
- virtual bool AppMainWindow_UpdateCurveEditor() = 0;
- virtual bool AppMainWindow_ShowCurveEditor(int paramId) = 0;
- virtual bool AppMainWindow_onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute* attribute) = 0;
- virtual bool AppMainWindow_onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute* attribute) = 0;
- virtual bool AppMainWindow_onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute* attribute, bool reloadColorTex, int selectedCtrlPntIndex) = 0;
-#endif
-};
-
-QT_BEGIN_NAMESPACE
-#define PluginInterface_iid "com.nvidia.PluginInterface"
-Q_DECLARE_INTERFACE(PluginInterface, PluginInterface_iid)
-QT_END_NAMESPACE
-
-#endif \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp
deleted file mode 100644
index 4e261f1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Buffer.h"
-
-// shared path
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h
deleted file mode 100644
index d9d9730..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Buffer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d11.h"
-
-// GPU resources for texture
-struct GPUBufferD3D11 : public GPUBufferResource
-{
- ID3D11Buffer* m_pD3D11Resource;
-
-public:
- static GPUBufferResource* Create(ID3D11Buffer* pResource) {
- GPUBufferD3D11* pBuffer = new GPUBufferD3D11;
- pBuffer->m_pD3D11Resource = pResource;
- return pBuffer;
- }
-
- static ID3D11Buffer* GetResource(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D11* pD3D11Buffer = dynamic_cast<GPUBufferD3D11*>(pBuffer);
- if (!pD3D11Buffer)
- return 0;
- return pD3D11Buffer->m_pD3D11Resource;
- }
-
- ~GPUBufferD3D11()
- {
- Release();
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pD3D11Resource);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp
deleted file mode 100644
index 060a0cb..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11GPUProfiler.h"
-
-#include "D3D11RenderInterface.h"
-
-///////////////////////////////////////////////////////////////
-// factory function to create D3D11 GPU profiler
-/*
-GPUProfiler* GPUProfiler::CreateD3D11()
-{
- GPUProfiler* pProfiler = new D3D11GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-*/
-///////////////////////////////////////////////////////////////
-D3D11GPUProfiler::~D3D11GPUProfiler()
-{
- Release();
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::Initialize()
-{
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
-
- m_pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- D3D11_QUERY_DESC desc;
- memset(&desc, 0, sizeof(D3D11_QUERY_DESC));
- desc.Query = D3D11_QUERY_TIMESTAMP_DISJOINT;
- desc.MiscFlags = 0;
-
- pDevice->CreateQuery(&desc, &m_pQueryDisjoint);
-
- desc.Query = D3D11_QUERY_TIMESTAMP;
-
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- pDevice->CreateQuery(&desc, &m_pQueryStart[i]);
- pDevice->CreateQuery(&desc, &m_pQueryEnd[i]);
- }
- m_enable = true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::Release()
-{
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- SAFE_RELEASE(m_pQueryStart[i]);
- SAFE_RELEASE(m_pQueryEnd[i]);
- }
-
- SAFE_RELEASE(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::StartProfile(int id)
-{
- if (!m_enable) return;
-
- ID3D11Query* pQuery = m_pQueryStart[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::EndProfile(int id)
-{
- if (!m_enable) return;
-
- ID3D11Query* pQuery = m_pQueryEnd[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::StartFrame()
-{
- if (!m_enable) return;
-
- m_pContext->Begin(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D11GPUProfiler::EndFrame()
-{
- if (!m_enable) return;
-
- m_pContext->End(m_pQueryDisjoint);
-
- while(m_pContext->GetData(m_pQueryDisjoint, &m_disjointData, sizeof(D3D11_QUERY_DATA_TIMESTAMP_DISJOINT), 0) != S_OK);
-}
-
-///////////////////////////////////////////////////////////////
-float D3D11GPUProfiler::GetProfileData(int id)
-{
- if (!m_enable)
- return 0.0f;
-
- UINT64 startTime = 0;
- while(m_pContext->GetData(m_pQueryStart[id], &startTime, sizeof(UINT64), 0) != S_OK);
-
- UINT64 endTime = 0;
- while(m_pContext->GetData(m_pQueryEnd[id], &endTime, sizeof(UINT64), 0) != S_OK);
-
- float frequency = static_cast<float>(m_disjointData.Frequency);
- return (endTime - startTime) / frequency * 1000.0f;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h
deleted file mode 100644
index 4c5b32f..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11GPUProfiler.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "GPUProfiler.h"
-
-#define MAX_QUERY_COUNT 64
-struct D3D11GPUProfiler : public GPUProfiler
-{
-public:
- ~D3D11GPUProfiler();
-
- void Initialize();
- void Release();
- void StartProfile(int id);
- void EndProfile(int id);
- void StartFrame();
- void EndFrame();
- float GetProfileData(int id);
-
-protected:
- ID3D11Query* m_pQueryDisjoint;
- ID3D11Query* m_pQueryStart[MAX_QUERY_COUNT];
- ID3D11Query* m_pQueryEnd[MAX_QUERY_COUNT];
- D3D11_QUERY_DATA_TIMESTAMP_DISJOINT m_disjointData;
- ID3D11DeviceContext* m_pContext;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp
deleted file mode 100644
index 292de1a..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.cpp
+++ /dev/null
@@ -1,910 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11RenderInterface.h"
-
-#include "D3D11TextureResource.h"
-#include "D3D11Shaders.h"
-#include "D3D11Buffer.h"
-#include "Nv.h"
-#ifdef USE_11ON12_WRAPPER
-#include "D3D11on12Wrapper.h"
-#endif // USE_11ON12_WRAPPER
-namespace RenderInterfaceD3D11
-{
- using namespace RenderInterface;
-
- ID3D11SamplerState* m_pSamplerStates[SAMPLER_TYPE_END];
- ID3D11BlendState* m_pBlendStates[BLEND_STATE_END];
- ID3D11DepthStencilState* m_pDepthStencilStates[DEPTH_STENCIL_STATE_END];
- ID3D11RasterizerState* m_pRasterizerStates[RASTERIZER_STATE_END];
-
-#ifdef USE_11ON12_WRAPPER
-#else
- ID3D11DeviceContext* g_d3dDeviceContext = 0;
- ID3D11Device* g_d3dDevice = 0;
- IDXGIFactory1* g_pDXGIFactory1 = 0;
- IDXGIDevice* g_dxgiDevice = 0;
- IDXGIAdapter * g_pAdapter = 0;
-#endif // USE_11ON12_WRAPPER
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11DeviceContext* GetDeviceContext()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDeviceContext();
-#else
- return g_d3dDeviceContext;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11Device* GetDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDevice11();
-#else
- return g_d3dDevice;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIFactory1* GetDXGIFactory()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetDXGIFactory();
-#else
- return g_pDXGIFactory1;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIDevice* GetDXGIDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return nullptr;
-#else
- return g_dxgiDevice;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-IDXGIAdapter* GetAdapter()
-{
-#ifdef USE_11ON12_WRAPPER
- return D3D11on12Wrapper::GetAdapter();
-#else
- return g_pAdapter;
-#endif // USE_11ON12_WRAPPER
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool IsNvDeviceID(UINT id)
-{
- return id == 0x10DE;
-}
-
-IDXGIAdapter* FindAdapter(IDXGIFactory* IDXGIFactory_0001, const WCHAR* targetName, bool& isNv)
-{
- IDXGIAdapter* targetAdapter = nullptr;
- std::vector<IDXGIAdapter*> adapters;
- // check current adapter first. EnumAdapters could fail on some device
- IDXGIAdapter* pAdapter = nullptr;
- ID3D11Device* pD3dDevice = nullptr;
- ID3D11DeviceContext* pD3dDeviceContext = nullptr;
- DWORD createDeviceFlags = D3D11_CREATE_DEVICE_DEBUG;
- D3D_FEATURE_LEVEL fl;
- // This following code is the robust way to get all possible feature levels while handling DirectX 11.0 systems:
- // please read https://blogs.msdn.microsoft.com/chuckw/2014/02/05/anatomy-of-direct3d-11-create-device/
- D3D_FEATURE_LEVEL lvl[] = { D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_11_0,
- D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0,
- D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1 };
- HRESULT hr = D3D11CreateDevice(nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr,
- createDeviceFlags, lvl, _countof(lvl),
- D3D11_SDK_VERSION, &pD3dDevice, &fl, &pD3dDeviceContext);
- if (pD3dDevice)
- {
- IDXGIDevice* dxgiDevice = nullptr;
- hr = pD3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
- if (SUCCEEDED(hr))
- {
- hr = dxgiDevice->GetAdapter(&pAdapter);
- if (pAdapter)
- {
- adapters.push_back(pAdapter);
- }
- SAFE_RELEASE(dxgiDevice);
- }
- SAFE_RELEASE(pD3dDeviceContext);
- SAFE_RELEASE(pD3dDevice);
- }
-
- // Enum Adapters
- unsigned int adapterNo = 0;
- HRESULT hres = S_OK;
- while (SUCCEEDED(hres = IDXGIFactory_0001->EnumAdapters(adapterNo, (IDXGIAdapter**)&pAdapter)))
- {
- adapters.push_back(pAdapter);
- adapterNo++;
- }
- if (wcslen(targetName) != 0)
- {
- // find the adapter with specified name
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- DXGI_ADAPTER_DESC aDesc;
- pAdapter->GetDesc(&aDesc);
- std::wstring aName = aDesc.Description;
- if (aName.find(targetName) != std::string::npos)
- {
- targetAdapter = pAdapter;
- isNv = IsNvDeviceID(aDesc.VendorId);
- }
- }
- }
- else
- {
- // no name specified, find one NV adapter
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- DXGI_ADAPTER_DESC aDesc;
- pAdapter->GetDesc(&aDesc);
- std::wstring aName = aDesc.Description;
- if (IsNvDeviceID(aDesc.VendorId))
- {
- targetAdapter = pAdapter;
- isNv = true;
- }
- }
- }
- if (targetAdapter == nullptr)
- targetAdapter = adapters[0];
- for (int i = 0; i < adapters.size(); ++i)
- {
- IDXGIAdapter* pAdapter = adapters[i];
- if(pAdapter != targetAdapter)
- {
- pAdapter->Release();
- }
- }
-
- return targetAdapter;
-}
-
-HRESULT UseGoodGPUDevice()
-{
-#ifdef USE_11ON12_WRAPPER
- return S_OK;
-#else
- // create factory
- if (g_pDXGIFactory1 == NV_NULL)
- {
- HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&g_pDXGIFactory1));
- if (FAILED(hr))
- return hr;
- }
-
- DWORD createDeviceFlags = D3D11_CREATE_DEVICE_SINGLETHREADED; // 0; // I changed only this line.
-#ifdef _DEBUG
- createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
- bool bNVAdapter = false;
- WCHAR* pwName = L"";
- g_pAdapter = FindAdapter(g_pDXGIFactory1, pwName, bNVAdapter);
-
-#ifdef _DEBUG
- DXGI_ADAPTER_DESC adapterDesc;
- g_pAdapter->GetDesc(&adapterDesc);
- std::wstring adapterName = adapterDesc.Description;
-#endif
-
- D3D_FEATURE_LEVEL fl = D3D_FEATURE_LEVEL_9_1;
- HRESULT hr = 0;
-
- hr = D3D11CreateDevice(g_pAdapter, D3D_DRIVER_TYPE_UNKNOWN, nullptr,
- createDeviceFlags, 0, 0,
- D3D11_SDK_VERSION, &g_d3dDevice, &fl, &g_d3dDeviceContext);
-
- if (g_d3dDevice == nullptr)
- {
- // here is the codes to make it run on a WARP device(Windows DirectX CPU - based emulation).
- if (g_pAdapter)
- {
- g_pAdapter->Release();
- g_pAdapter = nullptr;
- }
- hr = D3D11CreateDevice(g_pAdapter, D3D_DRIVER_TYPE_WARP, nullptr,
- createDeviceFlags, 0, 0,
- D3D11_SDK_VERSION, &g_d3dDevice, &fl, &g_d3dDeviceContext);
- }
-
- if(g_d3dDevice)
- {
- IDXGIDevice* dxgiDevice = nullptr;
- hr = g_d3dDevice->QueryInterface(__uuidof(IDXGIDevice), reinterpret_cast<void**>(&dxgiDevice));
- if (SUCCEEDED(hr))
- {
- g_dxgiDevice = dxgiDevice;
- if (g_pAdapter == nullptr)
- {
- // when running on WARP device, need find out adapter.
- hr = dxgiDevice->GetAdapter(&g_pAdapter);
- }
- return hr;
- }
- else
- {
- SAFE_RELEASE(g_d3dDevice);
- SAFE_RELEASE(g_pAdapter);
- SAFE_RELEASE(g_pDXGIFactory1);
- }
- }
- return hr;
-#endif // USE_11ON12_WRAPPER
-}
-
-bool InitDevice(int deviceID)
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::InitDevice();
-#else
- if (deviceID == -1)
- {
- HRESULT hResult = UseGoodGPUDevice();
- if (FAILED(hResult))
- return false;
-
- return true;
- }
-
- D3D_FEATURE_LEVEL featureLvl;
-
- // create factory
- if (g_pDXGIFactory1 == NV_NULL)
- {
- HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&g_pDXGIFactory1));
- if (FAILED(hr))
- return false;
- }
-
- // create adapter for selected device
- if (g_pAdapter == NV_NULL)
- {
- HRESULT hr = g_pDXGIFactory1->EnumAdapters(deviceID, &g_pAdapter);
- if (FAILED(hr))
- return false;
- }
-
- UINT deviceFlags = D3D11_CREATE_DEVICE_SINGLETHREADED;
-#ifdef _DEBUG
- deviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
-
- // create device
- HRESULT hResult = D3D11CreateDevice(
- g_pAdapter,
- D3D_DRIVER_TYPE_UNKNOWN, //D3D_DRIVER_TYPE_HARDWARE,
- 0,
- deviceFlags,
- NV_NULL,
- 0,
- D3D11_SDK_VERSION,
- &g_d3dDevice,
- &featureLvl,
- &g_d3dDeviceContext);
-
- if(FAILED(hResult))
- return false;
-#endif // USE_11ON12_WRAPPER
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- if (!GetDevice() || !GetDeviceContext())
- return false;
-
- D3D11_COMPARISON_FUNC depthFunc = D3D11_COMPARISON_LESS;
-
- InitializeShadersD3D11();
- InitializeRenderStates();
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- DestroyShadersD3D11();
- ClearRenderStates();
-
- // release d3d resources
- IDXGIFactory1* pDxgiFactory = GetDXGIFactory();
- SAFE_RELEASE(pDxgiFactory);
-
- IDXGIAdapter* pAdapter = GetAdapter();
- SAFE_RELEASE(pAdapter);
-
- IDXGIDevice* pDXGIDevice = GetDXGIDevice();
- SAFE_RELEASE(pDXGIDevice);
-
- ID3D11DeviceContext* pContext = GetDeviceContext();
- SAFE_RELEASE(pContext);
-
- ID3D11Device* pDevice = GetDevice();
-#if defined(DEBUG) || defined(_DEBUG)
- // output d3d leak
- ID3D11Debug *d3dDebug;
- HRESULT hr = pDevice->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast<void**>(&d3dDebug));
- if (SUCCEEDED(hr))
- {
- hr = d3dDebug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL);
- }
- if (d3dDebug != nullptr)
- d3dDebug->Release();
-#endif
-
- SAFE_RELEASE(pDevice);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void InitializeRenderStates()
-{
- ID3D11Device* pDevice = GetDevice();
- if (!pDevice)
- return;
-
- /////////////////////////////////////////////////////////////////////////////////////////
- // alpha blending state descriptors
- /////////////////////////////////////////////////////////////////////////////////////////
-
- // alpha blending enabled
- {
- D3D11_BLEND_DESC desc;
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D11_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = true;
- rtDesc.SrcBlend = D3D11_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D11_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D11_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D11_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D11_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- pDevice->CreateBlendState(&desc, &m_pBlendStates[BLEND_STATE_ALPHA]);
- }
-
- // no alpha blending
- {
- D3D11_BLEND_DESC desc;
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D11_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = false;
- rtDesc.SrcBlend = D3D11_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D11_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D11_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D11_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D11_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- pDevice->CreateBlendState(&desc, &m_pBlendStates[BLEND_STATE_NONE]);
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // depth and stencil
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D11_DEPTH_STENCIL_DESC depthTestDesc;
- {
- depthTestDesc.DepthEnable = true;
- depthTestDesc.DepthFunc = D3D11_COMPARISON_LESS;
- depthTestDesc.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ALL;
- depthTestDesc.StencilEnable = false;
- depthTestDesc.StencilReadMask = 0xff;
- depthTestDesc.StencilWriteMask = 0xff;
- }
-
- pDevice->CreateDepthStencilState(&depthTestDesc, &m_pDepthStencilStates[DEPTH_STENCIL_DEPTH_TEST]);
-
- D3D11_DEPTH_STENCIL_DESC depthNone;
- {
- depthNone.DepthEnable = false;
- depthNone.DepthFunc = D3D11_COMPARISON_LESS;
- depthNone.DepthWriteMask = D3D11_DEPTH_WRITE_MASK_ZERO;
- depthNone.StencilEnable = false;
- depthNone.StencilReadMask = 0xff;
- depthNone.StencilWriteMask = 0xff;
- }
-
- pDevice->CreateDepthStencilState(&depthNone, &m_pDepthStencilStates[DEPTH_STENCIL_DEPTH_NONE]);
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // rasterizer
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D11_RASTERIZER_DESC rsDesc;
-
- // solid cull front
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_FRONT;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_FRONT]);
- };
-
- // solid cull back
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_BACK;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_BACK]);
- }
-
- // solid cull none
- {
- rsDesc.FillMode = D3D11_FILL_SOLID;
- rsDesc.CullMode = D3D11_CULL_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_FILL_CULL_NONE]);
-
- }
-
- // wireframe cull none
- {
- rsDesc.FillMode = D3D11_FILL_WIREFRAME;
- rsDesc.CullMode = D3D11_CULL_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = 0;
- rsDesc.DepthBias = 0;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ScissorEnable = 0;
- };
-
- pDevice->CreateRasterizerState(&rsDesc, &m_pRasterizerStates[RASTERIZER_STATE_WIRE]);
-
- // samplers
-
- D3D11_SAMPLER_DESC linearSamplerDesc[1] = {
- D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT,
- D3D11_TEXTURE_ADDRESS_WRAP,
- D3D11_TEXTURE_ADDRESS_WRAP,
- D3D11_TEXTURE_ADDRESS_WRAP,
- 0.0, 0, D3D11_COMPARISON_NEVER, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, D3D11_FLOAT32_MAX,
- };
- pDevice->CreateSamplerState(linearSamplerDesc, &m_pSamplerStates[SAMPLER_TYPE_LINEAR]);
-
- // create point clamp sampler for PCF sampling for hair
- D3D11_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D11_FILTER_MIN_MAG_MIP_POINT,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- D3D11_TEXTURE_ADDRESS_CLAMP,
- 0.0, 0, D3D11_COMPARISON_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D11_FLOAT32_MAX,
- };
- pDevice->CreateSamplerState(pointClampSamplerDesc, &m_pSamplerStates[SAMPLER_TYPE_POINTCLAMP]);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearRenderStates()
-{
- for (int i = 0; i < RASTERIZER_STATE_END; i++)
- SAFE_RELEASE(m_pRasterizerStates[i]);
-
- for (int i = 0; i < DEPTH_STENCIL_STATE_END; i++)
- SAFE_RELEASE(m_pDepthStencilStates[i]);
-
- for (int i = 0; i < SAMPLER_TYPE_END; i++)
- SAFE_RELEASE(m_pSamplerStates[i]);
-
- for (int i = 0; i < BLEND_STATE_END; i++)
- SAFE_RELEASE(m_pBlendStates[i]);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindVertexShaderResources( int startSlot, int numSRVs, ID3D11ShaderResourceView** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->VSSetShaderResources( startSlot, numSRVs, ppSRVs);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindPixelShaderResources( int startSlot, int numSRVs, ID3D11ShaderResourceView** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->PSSetShaderResources( startSlot, numSRVs, ppSRVs);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindVertexShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- for (int i = startSlot; i < (startSlot + numSRVs); i++)
- {
- ID3D11ShaderResourceView* pSRV = D3D11TextureResource::GetResource(ppSRVs[i]);
- pDeviceContext->VSSetShaderResources( i, 1, &pSRV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void BindPixelShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- for (int i = startSlot; i < (startSlot + numSRVs); i++)
- {
- ID3D11ShaderResourceView* pSRV = D3D11TextureResource::GetResource(ppSRVs[i]);
- pDeviceContext->PSSetShaderResources( i, 1, &pSRV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearPixelShaderResources( int startSlot, int numSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- // clean up
- ID3D11ShaderResourceView* ppSRVNull[128];
- memset(&ppSRVNull, 0, sizeof(ID3D11ShaderResourceView*)*128);
-
- pDeviceContext->PSSetShaderResources( startSlot, numSRVs, ppSRVNull);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearVertexShaderResources( int startSlot, int numSRVs)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- // clean up
- ID3D11ShaderResourceView* ppSRVNull[128];
- memset(&ppSRVNull, 0, sizeof(ID3D11ShaderResourceView*)*128);
-
- pDeviceContext->VSSetShaderResources( startSlot, numSRVs, ppSRVNull);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ClearInputLayout()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetInputLayout(nullptr);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleStrip()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleList()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyLineList()
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_LINELIST );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- ID3D11Buffer* pD3D11Buffer = GPUBufferD3D11::GetResource(pBuffer);
- if (!pD3D11Buffer)
- return;
-
- pDeviceContext->IASetVertexBuffers( 0, 1, &pD3D11Buffer, &stride, &offset );
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void ApplySampler(int slot, RenderInterface::SAMPLER_TYPE st)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->PSSetSamplers(slot, 1, &m_pSamplerStates[st] );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->OMSetDepthStencilState(m_pDepthStencilStates[state], 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->RSSetState(m_pRasterizerStates[state]);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE st)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- float zerov[] = {0,0,0,0};
-
- pDeviceContext->OMSetBlendState(m_pBlendStates[st], zerov, 0xffffffff);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void SetViewport(const RenderInterface::Viewport& vp)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- D3D11_VIEWPORT d3dViewport;
-
- d3dViewport.TopLeftX = vp.TopLeftX;
- d3dViewport.TopLeftY = vp.TopLeftY;
-
- d3dViewport.Width = vp.Width;
- d3dViewport.Height = vp.Height;
-
- d3dViewport.MinDepth = vp.MinDepth;
- d3dViewport.MaxDepth = vp.MaxDepth;
-
- pDeviceContext->RSSetViewports(1, &d3dViewport);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(RenderInterface::Viewport& vp)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- UINT numViewports = 1;
- D3D11_VIEWPORT d3dViewport;
- pDeviceContext->RSGetViewports(&numViewports, &d3dViewport);
-
- vp.TopLeftX = d3dViewport.TopLeftX;
- vp.TopLeftY = d3dViewport.TopLeftY;
-
- vp.Width = d3dViewport.Width;
- vp.Height = d3dViewport.Height;
-
- vp.MinDepth = d3dViewport.MinDepth;
- vp.MaxDepth = d3dViewport.MaxDepth;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Draw(unsigned int vertexCount, unsigned int startCount)
-{
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->Draw(vertexCount, startCount);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// gpu buffer management
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11Buffer* CreateD3D11Buffer(
- D3D11_USAGE Usage, UINT ByteWidth, UINT StructureByteStride,
- UINT BindFlags, UINT MiscFlags,
- UINT CPUAccessFlags, void *pSysMem)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- D3D11_BUFFER_DESC desc;
-
- desc.Usage = Usage;
- desc.ByteWidth = ByteWidth;
- desc.StructureByteStride = StructureByteStride;
- desc.BindFlags = BindFlags;
- desc.MiscFlags = MiscFlags;
- desc.CPUAccessFlags = CPUAccessFlags;
-
- D3D11_SUBRESOURCE_DATA InitData;
-
- InitData.pSysMem = pSysMem;
- InitData.SysMemPitch = 0;
- InitData.SysMemSlicePitch = 0;
-
- ID3D11Buffer* pBuffer = 0;
-
- HRESULT hr = pSysMem ? pDevice->CreateBuffer( &desc, &InitData, &pBuffer)
- : pDevice->CreateBuffer( &desc, 0, &pBuffer);
-
- if( FAILED(hr) )
- return 0;
-
- return pBuffer;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-ID3D11ShaderResourceView*
-CreateD3D11ShaderResourceView(
- ID3D11Buffer* pBuffer,
- DXGI_FORMAT Format,
- D3D11_SRV_DIMENSION ViewDimension,
- UINT NumElements,
- UINT FirstElement = 0
- )
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- ID3D11ShaderResourceView* pSRV = 0;
-
- D3D11_SHADER_RESOURCE_VIEW_DESC desc;
- {
- desc.Format = Format;
- desc.ViewDimension = ViewDimension;
- desc.Buffer.FirstElement = FirstElement;
- desc.Buffer.NumElements = NumElements;
- }
-
- pDevice->CreateShaderResourceView( pBuffer, &desc, &pSRV);
-
- return pSRV;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- ID3D11Buffer* pD3D11Buffer = CreateD3D11Buffer(D3D11_USAGE_DEFAULT,
- ByteWidth, 0, D3D11_BIND_VERTEX_BUFFER, 0, 0, pSysMem);
-
- return GPUBufferD3D11::Create(pD3D11Buffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem)
-{
- unsigned int byteWidth = numElements * stride;
-
- ID3D11Buffer* pBuffer = CreateD3D11Buffer(
- D3D11_USAGE_DEFAULT, byteWidth, 0,
- D3D11_BIND_SHADER_RESOURCE, 0, 0, pSysMem);
-
- // create SRV for bone indices
- ID3D11ShaderResourceView* pSRV = CreateD3D11ShaderResourceView(
- pBuffer,
- DXGI_FORMAT_R32G32B32A32_FLOAT,
- D3D11_SRV_DIMENSION_BUFFER,
- numElements);
-
- SAFE_RELEASE(pBuffer); // dec ref count as this is not explicitly used later
-
- return D3D11TextureResource::Create(pSRV);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// create read only shader resource buffer
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth)
-{
- ID3D11Buffer* pBuffer = GPUBufferD3D11::GetResource(pDevicePtr);
- if (!pBuffer)
- return;
-
- ID3D11DeviceContext* pDeviceContext = GetDeviceContext();
- if (!pDeviceContext)
- return;
-
- pDeviceContext->UpdateSubresource(pBuffer, 0, NV_NULL, pSysMem, ByteWidth, 0);
-}
-
-} // end namespace
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h
deleted file mode 100644
index e5f3c02..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderInterface.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "RenderInterface.h"
-
-#include "RenderPlugin.h"
-
-#ifdef NV_ARTISTTOOLS
-enum HAIR_SHADER_TYPE
-{
- SHADER_TYPE_HAIR_SHADER_DEFAULT = RenderInterface::SHADER_TYPE_SIMPLE_COLOR + 1,
- SHADER_TYPE_HAIR_SHADER_SHADOW,
-};
-#endif
-
-// abstract interface to D3D calls
-namespace RenderInterfaceD3D11
-{
- CORERENDER_EXPORT bool InitDevice(int deviceID);
- CORERENDER_EXPORT bool Initialize();
- CORERENDER_EXPORT void Shutdown();
-
- CORERENDER_EXPORT ID3D11DeviceContext* GetDeviceContext();
- CORERENDER_EXPORT ID3D11Device* GetDevice();
- IDXGIFactory1* GetDXGIFactory();
- IDXGIAdapter* GetAdapter();
-
- CORERENDER_EXPORT void InitializeRenderStates();
- CORERENDER_EXPORT void ClearRenderStates();
-
- CORERENDER_EXPORT void ApplySampler(int slot, RenderInterface::SAMPLER_TYPE st);
- CORERENDER_EXPORT void ApplyDepthStencilState(RenderInterface::DEPTH_STENCIL_STATE st);
- CORERENDER_EXPORT void ApplyRasterizerState(RenderInterface::RASTERIZER_STATE st);
- CORERENDER_EXPORT void ApplyBlendState(RenderInterface::BLEND_STATE st);
-
- CORERENDER_EXPORT void GetViewport(RenderInterface::Viewport& vp);
- CORERENDER_EXPORT void SetViewport(const RenderInterface::Viewport& vp);
-
- CORERENDER_EXPORT void BindVertexShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- CORERENDER_EXPORT void BindPixelShaderResources( int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
-
- CORERENDER_EXPORT void ClearVertexShaderResources( int startSlot, int numSRVs);
- CORERENDER_EXPORT void ClearPixelShaderResources( int startSlot, int numSRVs);
-
- CORERENDER_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem);
- CORERENDER_EXPORT GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem );
-
- CORERENDER_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- CORERENDER_EXPORT void ClearInputLayout();
-
- CORERENDER_EXPORT void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
-
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleStrip();
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleList();
- CORERENDER_EXPORT void SetPrimitiveTopologyLineList();
-
-
- CORERENDER_EXPORT void Draw(unsigned int vertexCount, unsigned int startCount = 0);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp
deleted file mode 100644
index 3a4d27e..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "D3D11RenderShader.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11Wrapper.h"
-#include "Nv.h"
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader::D3D11RenderShader() :
- m_pVertexShader(0),
- m_pPixelShader(0),
- m_pInputLayout(0)
-{
- for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- {
- m_pParamBuffers[i] = nullptr;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader::~D3D11RenderShader()
-{
- SAFE_RELEASE(m_pVertexShader);
- SAFE_RELEASE(m_pPixelShader);
- SAFE_RELEASE(m_pInputLayout);
-
- for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- SAFE_RELEASE(m_pParamBuffers[i]);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader* D3D11RenderShader::Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0, UINT cbufferSize1,
- D3D11_INPUT_ELEMENT_DESC* pElemDesc, UINT numElements)
-{
- D3D11RenderShader* pShader = new D3D11RenderShader;
-
- pShader->CreateVSFromBlob(pVSBlob, vsBlobSize, pElemDesc, numElements);
- pShader->CreatePSFromBlob(pPSBlob, psBlobSize);
-
- if (cbufferSize0 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize0, 0);
- SET_D3D_DEBUG_NAME(pShader->getParamBuffer(0), name);
- }
-
- if (cbufferSize1 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize1, 1);
- SET_D3D_DEBUG_NAME(pShader->getParamBuffer(1), name);
- }
-
- if (pShader->getVertexShader())
- SET_D3D_DEBUG_NAME(pShader->getVertexShader(), name);
-
- if (pShader->getPixelShader())
- SET_D3D_DEBUG_NAME(pShader->getPixelShader(), name);
-
- if (pShader->getInputLayout())
- SET_D3D_DEBUG_NAME(pShader->getInputLayout(), name);
-
- return pShader;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreateVSFromBlob(
- void* pBlob, size_t blobSize,
- D3D11_INPUT_ELEMENT_DESC *desc, int elemCount)
-{
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- if (!pBlob || (blobSize == 0))
- return false;
-
- SAFE_RELEASE(m_pVertexShader);
- SAFE_RELEASE(m_pInputLayout);
-
- HRESULT res = pDevice->CreateVertexShader(pBlob, blobSize, NV_NULL, &m_pVertexShader);
-
- if(FAILED(res)) return false;
-
- if (desc)
- {
- res = pDevice->CreateInputLayout(desc, elemCount,
- pBlob, blobSize, &m_pInputLayout);
-
- if(FAILED(res)) return false;
- }
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreatePSFromBlob(void* pBlob, size_t blobSize)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- if (!pBlob || (blobSize == 0))
- return false;
-
- SAFE_RELEASE(m_pPixelShader);
-
- HRESULT res = pDevice->CreatePixelShader(pBlob, blobSize, NV_NULL, &m_pPixelShader);
-
- if (FAILED(res))
- return false;
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::SetConstantBuffer()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- //for (int i = 0; i < D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT; i++)
- for (int i = 0; i < 2; i++)
- {
- pContext->PSSetConstantBuffers(i, 1, &m_pParamBuffers[i]);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::MakeCurrent()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (m_pInputLayout)
- pContext->IASetInputLayout(m_pInputLayout);
- else
- pContext->IASetInputLayout(NV_NULL);
-
-
- if (m_pVertexShader)
- {
- pContext->VSSetShader( m_pVertexShader, NV_NULL, 0);
- if (m_pParamBuffers[0])
- pContext->VSSetConstantBuffers(0, 1, &m_pParamBuffers[0]);
- }
-
- if (m_pPixelShader)
- {
- pContext->PSSetShader( m_pPixelShader, NV_NULL, 0);
- if (m_pParamBuffers[0])
- pContext->PSSetConstantBuffers(0, 1, &m_pParamBuffers[0]);
- if (m_pParamBuffers[1])
- pContext->PSSetConstantBuffers(1, 1, &m_pParamBuffers[1]);
- }
-
- pContext->GSSetShader( 0, 0, 0);
- pContext->DSSetShader( 0, 0, 0);
- pContext->HSSetShader( 0, 0, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::Disable()
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- pContext->IASetInputLayout(NV_NULL);
-
- pContext->VSSetShader( 0, NV_NULL, 0);
- pContext->PSSetShader( 0, NV_NULL, 0);
- pContext->GSSetShader( 0, 0, 0);
- pContext->DSSetShader( 0, 0, 0);
- pContext->HSSetShader( 0, 0, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderShader::CreateParamBuffer( UINT sizeBuffer, UINT slot )
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- SAFE_RELEASE(m_pParamBuffers[slot]);
-
- D3D11_BUFFER_DESC Desc;
- {
- Desc.Usage = D3D11_USAGE_DYNAMIC;
- Desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
- Desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
- Desc.MiscFlags = 0;
- Desc.ByteWidth = sizeBuffer;
- }
-
- HRESULT hr = pDevice->CreateBuffer( &Desc, NV_NULL, &m_pParamBuffers[slot] );
- if( FAILED(hr) )
- false;
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void* D3D11RenderShader::MapParam(UINT slot)
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (!m_pParamBuffers[slot] || !pContext)
- return 0;
-
- D3D11_MAPPED_SUBRESOURCE mappedResource;
- HRESULT hr = pContext->Map(m_pParamBuffers[slot], 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
-
- if ( FAILED(hr))
- return 0;
-
- return mappedResource.pData;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderShader::UnmapParam( UINT slot )
-{
- ID3D11DeviceContext* pContext = RenderInterfaceD3D11::GetDeviceContext();
-
- if (pContext && m_pParamBuffers[slot])
- pContext->Unmap( m_pParamBuffers[slot], 0);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h
deleted file mode 100644
index 1aad045..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RenderShader.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-#include "RenderPlugin.h"
-
-class CORERENDER_EXPORT D3D11RenderShader
-{
-public:
- D3D11RenderShader();
- ~D3D11RenderShader();
-
- static D3D11RenderShader* Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0 = 0, UINT cbufferSize1 = 0,
- D3D11_INPUT_ELEMENT_DESC* pElemDesc = 0, UINT numElements = 0);
-
- void MakeCurrent();
- void Disable();
- void SetConstantBuffer();
-
- void* MapParam(UINT slot = 0);
- void UnmapParam(UINT slot = 0);
-
- ID3D11VertexShader* getVertexShader() { return m_pVertexShader; }
- ID3D11PixelShader* getPixelShader() { return m_pPixelShader; }
- ID3D11InputLayout* getInputLayout() { return m_pInputLayout; }
- ID3D11Buffer* getParamBuffer(UINT slot = 0) { return m_pParamBuffers[slot]; }
-
-protected:
- bool CreateVSFromBlob(void* pBlob, size_t blobSize,
- D3D11_INPUT_ELEMENT_DESC *desc, int elemCount);
- bool CreatePSFromBlob(void* pBlob, size_t blobSize);
- bool CreateParamBuffer(UINT sizeBuffer, UINT slot = 0);
-
-private:
-
- ID3D11VertexShader* m_pVertexShader;
- ID3D11PixelShader* m_pPixelShader;
- ID3D11InputLayout* m_pInputLayout;
- ID3D11Buffer* m_pParamBuffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp
deleted file mode 100644
index 1274ed5..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11RendererWindow.h"
-
-#include "windows.h"
-
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-
-#include "D3D11RenderInterface.h"
-#include "Nv.h"
-#ifdef USE_11ON12_WRAPPER
-#include "D3D11on12Wrapper.h"
-#endif // USE_11ON12_WRAPPER
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderWindow::D3D11RenderWindow() :
- m_sampleCount(8)
- , m_sampleQuality(0)
-#ifdef USE_11ON12_WRAPPER
-#else
- , m_pDXGISwapChain(NV_NULL)
- , m_pD3D11BackBuffer(NV_NULL)
- , m_pD3D11DepthBuffer(NV_NULL)
- , m_pD3D11RenderTargetView(NV_NULL)
- , m_pD3D11DepthStencilView(NV_NULL)
-#endif // USE_11ON12_WRAPPER
-{
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderWindow::~D3D11RenderWindow()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderWindow::Create( HWND hWnd, unsigned int nSamples )
-{
-#ifdef USE_11ON12_WRAPPER
-#else
- if (m_pD3D11BackBuffer != NV_NULL || m_pD3D11RenderTargetView != NV_NULL)
- Free();
-#endif // USE_11ON12_WRAPPER
-
- ID3D11Device *pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return false;
-
- ID3D11DeviceContext* pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pDeviceContext)
- return false;
-
- if(nSamples > D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT)
- nSamples = D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT;
-
- m_sampleCount = nSamples;
- m_sampleQuality = 0;
- if(nSamples > 1)
- {
- pDevice->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM, nSamples, &m_sampleQuality);
- assert(m_sampleQuality > 0);
- m_sampleQuality--;
- }
-
- RECT rc;
- GetClientRect((HWND)hWnd, &rc);
- int wBuf = rc.right - rc.left;
- int hBuf = rc.bottom- rc.top;
-
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::InitSwapchain(wBuf, hBuf, hWnd);
-#else
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- {
- memset(&swapChainDesc, 0, sizeof(DXGI_SWAP_CHAIN_DESC));
- swapChainDesc.BufferDesc.Width = wBuf;
- swapChainDesc.BufferDesc.Height= hBuf;
- swapChainDesc.BufferDesc.Format= DXGI_FORMAT_R8G8B8A8_UNORM;
- swapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
- swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
- swapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
- swapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
-
- swapChainDesc.BufferCount = 1;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
- swapChainDesc.OutputWindow = (HWND)hWnd;
- swapChainDesc.SampleDesc.Count = m_sampleCount;
- swapChainDesc.SampleDesc.Quality = m_sampleQuality;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
- swapChainDesc.Windowed = true;
- }
-
- // Create the swap chain
- IDXGIFactory1* pDXGIFactory = RenderInterfaceD3D11::GetDXGIFactory();
- HRESULT res = pDXGIFactory->CreateSwapChain(pDevice, &swapChainDesc, &m_pDXGISwapChain);
- if (FAILED(res)) return false;
-#endif // USE_11ON12_WRAPPER
-
- // create DXUT text rendering class
- m_pDialogResourceManager = new CDXUTDialogResourceManager;
- m_pDialogResourceManager->OnD3D11CreateDevice(pDevice, pDeviceContext);
- m_pTextHelper = new CDXUTTextHelper( pDevice, pDeviceContext, m_pDialogResourceManager, 15 );
-
- CreateRenderTarget();
- Resize(wBuf, hBuf);
- return true;// SUCCEEDED(res);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Free()
-{
- FreeBuffer();
-
- SAFE_DELETE(m_pTextHelper);
-
-#ifdef USE_11ON12_WRAPPER
-#else
- SAFE_RELEASE(m_pDXGISwapChain);
-#endif // USE_11ON12_WRAPPER
-
- if (m_pDialogResourceManager)
- {
- m_pDialogResourceManager->OnD3D11DestroyDevice();
- SAFE_DELETE(m_pDialogResourceManager);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::FreeBuffer()
-{
-#ifdef USE_11ON12_WRAPPER
-#else
- SAFE_RELEASE(m_pD3D11RenderTargetView);
- SAFE_RELEASE(m_pD3D11BackBuffer);
- SAFE_RELEASE(m_pD3D11DepthStencilView);
- SAFE_RELEASE(m_pD3D11DepthBuffer);
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Present()
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::EndScene();
-#else
- assert(m_pDXGISwapChain);
-
- if(m_pDXGISwapChain)
- {
- //m_pDXGISwapChain->Present(1, 0); // present in vsync
- m_pDXGISwapChain->Present(0, 0); // present in vsync off
- }
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D11RenderWindow::Clear(float r, float g, float b)
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::BeginScene();
- D3D11on12Wrapper::ClearScene(r, g, b);
-#else
- const float clearColor[4] = {r, g, b, 1.0f};
-
- ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- pD3DContext->ClearRenderTargetView(m_pD3D11RenderTargetView, clearColor);
- pD3DContext->ClearDepthStencilView(m_pD3D11DepthStencilView, D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL, 1.0f, 0);
-#endif // USE_11ON12_WRAPPER
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D11RenderWindow::Resize(int w, int h)
-{
- assert(w > 0 && h > 0);
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- HRESULT res0 = m_pDXGISwapChain->GetDesc(&swapChainDesc);
- if (w == (LONG)swapChainDesc.BufferDesc.Width &&
- h == (LONG)swapChainDesc.BufferDesc.Height)
- return true;
-
-#ifdef USE_11ON12_WRAPPER
-#else
- //ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- //ID3D11RenderTargetView *nullRTV = NULL;
- //pD3DContext->OMSetRenderTargets(1, &nullRTV, NULL);
- FreeBuffer();
- swapChainDesc.BufferDesc.Width = w;
- swapChainDesc.BufferDesc.Height = h;
- //HRESULT res = m_pDXGISwapChain->ResizeBuffers(1, w, h, DXGI_FORMAT_R8G8B8A8_UNORM, 0);
- HRESULT res = m_pDXGISwapChain->ResizeBuffers(swapChainDesc.BufferCount, swapChainDesc.BufferDesc.Width,
- swapChainDesc.BufferDesc.Height, swapChainDesc.BufferDesc.Format,
- swapChainDesc.Flags);
- assert(SUCCEEDED(res));
-#endif
- return CreateRenderTarget();
-}
-
-bool D3D11RenderWindow::CreateRenderTarget()
-{
-#ifdef USE_11ON12_WRAPPER
- D3D11on12Wrapper::ResizeScene(w, h);
-#else
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- // Retrieve the 2D back buffer
- HRESULT res = m_pDXGISwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&m_pD3D11BackBuffer);
- assert(SUCCEEDED(res));
-
- D3D11_TEXTURE2D_DESC descTex2D;
- m_pD3D11BackBuffer->GetDesc(&descTex2D);
-
- // Create the render target view
- D3D11_RENDER_TARGET_VIEW_DESC descRenderTargetView;
- {
- memset(&descRenderTargetView, 0, sizeof(D3D11_RENDER_TARGET_VIEW_DESC));
- descRenderTargetView.Format = descTex2D.Format;
- descRenderTargetView.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS; // -MS dimension to support MSAA
- descRenderTargetView.Texture2D.MipSlice = 0;
- }
-
- res = pDevice->CreateRenderTargetView(m_pD3D11BackBuffer, &descRenderTargetView, &m_pD3D11RenderTargetView);
-
- assert(SUCCEEDED(res));
-
- DXGI_SWAP_CHAIN_DESC swapChainDesc;
- HRESULT res0 = m_pDXGISwapChain->GetDesc(&swapChainDesc);
- // Create the depth/stencil buffer and view
- D3D11_TEXTURE2D_DESC depthStencilDesc;
-
- depthStencilDesc.Width = swapChainDesc.BufferDesc.Width;
- depthStencilDesc.Height = swapChainDesc.BufferDesc.Height;
- depthStencilDesc.MipLevels = 1;
- depthStencilDesc.ArraySize = 1;
- depthStencilDesc.Format = DXGI_FORMAT_R24G8_TYPELESS;
- depthStencilDesc.SampleDesc.Count = m_sampleCount;
- depthStencilDesc.SampleDesc.Quality = m_sampleQuality;
- depthStencilDesc.Usage = D3D11_USAGE_DEFAULT;
- depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE;
- depthStencilDesc.CPUAccessFlags = 0;
- depthStencilDesc.MiscFlags = 0;
-
- res = pDevice->CreateTexture2D(&depthStencilDesc, 0, &m_pD3D11DepthBuffer);
- assert(SUCCEEDED(res));
-
- D3D11_DEPTH_STENCIL_VIEW_DESC descDepthStencilView;
- memset(&descDepthStencilView, 0, sizeof(D3D11_DEPTH_STENCIL_VIEW_DESC));
- descDepthStencilView.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- descDepthStencilView.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; // -MS dimension to support MSAA
- descDepthStencilView.Texture2D.MipSlice = 0;
-
- res = pDevice->CreateDepthStencilView(m_pD3D11DepthBuffer, &descDepthStencilView, &m_pD3D11DepthStencilView);
- assert(SUCCEEDED(res));
-
- m_Width = swapChainDesc.BufferDesc.Width;
- m_Height= swapChainDesc.BufferDesc.Height;
-
- /////////////////////////////////////////
- if (m_pDialogResourceManager)
- {
- DXGI_SURFACE_DESC backbufferDesc;
- backbufferDesc.Width = descTex2D.Width;
- backbufferDesc.Height = descTex2D.Height;
- backbufferDesc.Format = descTex2D.Format;
- backbufferDesc.SampleDesc = descTex2D.SampleDesc;
-
- m_pDialogResourceManager->OnD3D11ResizedSwapChain(pDevice, &backbufferDesc);
- }
-
- // assume always the current render window, bind to render context immediately
- ID3D11DeviceContext* pD3DContext = RenderInterfaceD3D11::GetDeviceContext();
- pD3DContext->OMSetRenderTargets(1, &m_pD3D11RenderTargetView, m_pD3D11DepthStencilView);
-
- // set the viewport transform
- D3D11_VIEWPORT vp;
- {
- vp.TopLeftX = 0;
- vp.TopLeftY = 0;
- vp.Width = (float)m_Width;
- vp.Height = (float)m_Height;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
- pD3DContext->RSSetViewports(1, &vp);
-#endif // USE_11ON12_WRAPPER
-
- return true;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h
deleted file mode 100644
index 88d5c8f..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11RendererWindow.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include <d3d11.h>
-
-// DXUT stuffs for text rendering
-class CDXUTDialogResourceManager;
-class CDXUTTextHelper;
-
-struct D3D11RenderWindow
-{
-public:
- D3D11RenderWindow();
- ~D3D11RenderWindow();
-
- bool Create(HWND hWnd, unsigned int nSamples = 1);
- bool Resize(int w, int h);
- void Present();
- void Clear(float r, float g, float b);
- bool CreateRenderTarget();
-
- // sample desc
- UINT m_sampleCount;
- UINT m_sampleQuality;
-#ifdef USE_11ON12_WRAPPER
-#else
- int m_Height, m_Width;
-
- IDXGISwapChain* m_pDXGISwapChain;
- ID3D11Texture2D* m_pD3D11BackBuffer;
- ID3D11Texture2D* m_pD3D11DepthBuffer;
- ID3D11RenderTargetView* m_pD3D11RenderTargetView;
- ID3D11DepthStencilView* m_pD3D11DepthStencilView;
-#endif // USE_11ON12_WRAPPER
-
- CDXUTDialogResourceManager* m_pDialogResourceManager;
- CDXUTTextHelper* m_pTextHelper;
-
-private:
- void Free();
- void FreeBuffer();
-
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp
deleted file mode 100644
index f3e210b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Shaders.h"
-
-#include "MeshShaderParam.h"
-#include "LightShaderParam.h"
-
-#include "D3D11RenderShader.h"
-
-using namespace RenderInterface;
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Common shader settings
-//static D3D11RenderShader* g_pShaders[SHADER_TYPE_END];
-static std::map<int, D3D11RenderShader*> g_pShaders;
-
-namespace BodyShaderBlobs
-{
- #include "Shaders/BodyShader_VS.h"
- #include "Shaders/BodyShader_PS.h"
-}
-
-namespace BodyShadowBlobs
-{
- #include "Shaders/BodyShadow_VS.h"
- #include "Shaders/BodyShadow_PS.h"
-}
-
-namespace ScreenQuadBlobs
-{
- #include "Shaders/ScreenQuad_VS.h"
- #include "Shaders/ScreenQuad_PS.h"
-}
-
-namespace ScreenQuadColorBlobs
-{
- #include "Shaders/ScreenQuadColor_VS.h"
- #include "Shaders/ScreenQuadColor_PS.h"
-}
-
-namespace VisualizeShadowBlobs
-{
- #include "Shaders/VisualizeShadow_VS.h"
- #include "Shaders/VisualizeShadow_PS.h"
-}
-
-namespace ColorBlobs
-{
- #include "Shaders/Color_VS.h"
- #include "Shaders/Color_PS.h"
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool InitializeShadersD3D11()
-{
- D3D11_INPUT_ELEMENT_DESC layoutBodyRender[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "VERTEX_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "FACE_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 36, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 48, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "VERTEX_ID", 0, DXGI_FORMAT_R32_FLOAT, 0, 56, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- };
-
- UINT numElements = sizeof(layoutBodyRender)/sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_MESH_RENDERING] = D3D11RenderShader::Create( "MeshRenderShader",
- (void*)BodyShaderBlobs::g_vs_main, sizeof(BodyShaderBlobs::g_vs_main),
- (void*)BodyShaderBlobs::g_ps_main, sizeof(BodyShaderBlobs::g_ps_main),
- sizeof(MeshShaderParam), 0,
- &layoutBodyRender[0], numElements);
-
- g_pShaders[SHADER_TYPE_MESH_SHADOW] = D3D11RenderShader::Create( "MeshShadowShader",
- (void*)BodyShadowBlobs::g_vs_main, sizeof(BodyShadowBlobs::g_vs_main),
- (void*)BodyShadowBlobs::g_ps_main, sizeof(BodyShadowBlobs::g_ps_main),
- sizeof(MeshShadowShaderParam), 0,
- &layoutBodyRender[0], numElements);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD] = D3D11RenderShader::Create( "ScreenQuadShader",
- (void*)ScreenQuadBlobs::g_vs_main, sizeof(ScreenQuadBlobs::g_vs_main),
- (void*)ScreenQuadBlobs::g_ps_main, sizeof(ScreenQuadBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD_COLOR] = D3D11RenderShader::Create( "ScreenQuadColorShader",
- (void*)ScreenQuadColorBlobs::g_vs_main, sizeof(ScreenQuadColorBlobs::g_vs_main),
- (void*)ScreenQuadColorBlobs::g_ps_main, sizeof(ScreenQuadColorBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_VISUALIZE_SHADOW] = D3D11RenderShader::Create( "VisualizeShadowShader",
- (void*)VisualizeShadowBlobs::g_vs_main, sizeof(VisualizeShadowBlobs::g_vs_main),
- (void*)VisualizeShadowBlobs::g_ps_main, sizeof(VisualizeShadowBlobs::g_ps_main),
- sizeof(ShadowVizParam));
-
- D3D11_INPUT_ELEMENT_DESC layout_Position_And_Color[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
- };
- UINT numElements2 = sizeof(layout_Position_And_Color)/sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_SIMPLE_COLOR] = D3D11RenderShader::Create( "Color",
- (void*)ColorBlobs::g_vs_main, sizeof(ColorBlobs::g_vs_main),
- (void*)ColorBlobs::g_ps_main, sizeof(ColorBlobs::g_ps_main),
- sizeof(SimpleShaderParam), 0,
- &layout_Position_And_Color[0], numElements2);
-
- return true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) { if (x) delete x; x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-void DestroyShadersD3D11()
-{
- for (int i = 0; i < g_pShaders.size(); i++)
- {
- D3D11RenderShader*& pShader = g_pShaders[i];
- if (pShader)
- {
- delete pShader;
- pShader = 0;
- }
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D11RenderShader* GetShaderD3D11(SHADER_TYPE st)
-{
- return g_pShaders[st];
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyShaderD3D11(SHADER_TYPE st)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- pD3D11Shader->MakeCurrent();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void DisableShaderD3D11(RenderInterface::SHADER_TYPE st)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- pD3D11Shader->Disable();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParamD3D11(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- D3D11RenderShader* pD3D11Shader = GetShaderD3D11(st);
- if (!pD3D11Shader)
- return;
-
- void* mappedParam = pD3D11Shader->MapParam(slot);
-
- memcpy(mappedParam, pSysMem, bytes);
-
- pD3D11Shader->UnmapParam(slot);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h
deleted file mode 100644
index b1d4929..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Shaders.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderInterface.h"
-
-#include "RenderPlugin.h"
-
-///////////////////////////////////////////////////////////////////
-// default shaders
-///////////////////////////////////////////////////////////////////
-CORERENDER_EXPORT bool InitializeShadersD3D11();
-CORERENDER_EXPORT void DestroyShadersD3D11();
-
-CORERENDER_EXPORT void ApplyShaderD3D11(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void DisableShaderD3D11(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void CopyShaderParamD3D11(RenderInterface::SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp
deleted file mode 100644
index 90e30b2..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11ShadowMap.h"
-
-#include "RenderResources.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11TextureResource.h"
-
-namespace
-{
-//////////////////////////////////////////////////////////////////////////////////////////////////
-D3D11_TEXTURE2D_DESC CreateD3D11TextureDesc(
- DXGI_FORMAT Format, UINT Width, UINT Height,
- UINT BindFlags, UINT SampleCount = 1, D3D11_USAGE Usage = D3D11_USAGE_DEFAULT, UINT CPUAccessFlags = 0,
- UINT MiscFlags = 0, UINT ArraySize = 1, UINT MipLevels = 1)
-{
-
- D3D11_TEXTURE2D_DESC desc;
-
- desc.Format = Format;
- desc.Width = Width;
- desc.Height = Height;
-
- desc.ArraySize = ArraySize;
- desc.MiscFlags = MiscFlags;
- desc.MipLevels = MipLevels;
-
- desc.SampleDesc.Count = SampleCount;
- desc.SampleDesc.Quality = 0;
- desc.BindFlags = BindFlags;
- desc.Usage = Usage;
- desc.CPUAccessFlags = CPUAccessFlags;
-
- return desc;
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-D3D11_DEPTH_STENCIL_VIEW_DESC CreateD3D11DSVDesc(
- DXGI_FORMAT Format, D3D11_DSV_DIMENSION ViewDimension,
- UINT Flags = 0, UINT MipSlice = 0)
-{
- D3D11_DEPTH_STENCIL_VIEW_DESC desc;
-
- desc.Format = Format;
- desc.ViewDimension = ViewDimension;
- desc.Flags = Flags;
- desc.Texture2D.MipSlice = MipSlice;
-
- return desc;
-}
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D11ShadowMap::D3D11ShadowMap(int resolution)
-{
- m_pShadowTexture = nullptr;
- m_pShadowRTV = nullptr;
- m_pShadowSRV = nullptr;
-
- m_pDepthTexture = nullptr;
- m_pDepthDSV = nullptr;
-
- ID3D11Device* pd3dDevice = RenderInterfaceD3D11::GetDevice();
- if (!pd3dDevice)
- return;
-
- {
- m_viewport.Width = float(resolution);
- m_viewport.Height = float(resolution);
- m_viewport.MinDepth = 0;
- m_viewport.MaxDepth = 1;
- m_viewport.TopLeftX = 0;
- m_viewport.TopLeftY = 0;
- }
-
- HRESULT hr;
-
- // create shadow render target
- {
- D3D11_TEXTURE2D_DESC texDesc = CreateD3D11TextureDesc(
- DXGI_FORMAT_R32_FLOAT, UINT(m_viewport.Width), UINT(m_viewport.Height),
- D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE);
-
- hr = pd3dDevice->CreateTexture2D( &texDesc, NULL, &m_pShadowTexture );
- hr = pd3dDevice->CreateShaderResourceView( m_pShadowTexture, NULL, &m_pShadowSRV );
- hr = pd3dDevice->CreateRenderTargetView(m_pShadowTexture, NULL, &m_pShadowRTV);
-
- m_shadowResource.m_pD3D11Resource = m_pShadowSRV;
- }
-
- // create shadow depth stencil
- {
- D3D11_TEXTURE2D_DESC texDesc = CreateD3D11TextureDesc(
- DXGI_FORMAT_R32_TYPELESS, UINT(m_viewport.Width), UINT(m_viewport.Height),
- D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE);
-
- hr = pd3dDevice->CreateTexture2D( &texDesc, NULL, &m_pDepthTexture );
-
- D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc = CreateD3D11DSVDesc(
- DXGI_FORMAT_D32_FLOAT, D3D11_DSV_DIMENSION_TEXTURE2D);
-
- hr = pd3dDevice->CreateDepthStencilView(m_pDepthTexture, &dsvDesc, &m_pDepthDSV);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D11ShadowMap::~D3D11ShadowMap()
-{
- Release();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::Release()
-{
- SAFE_RELEASE(m_pShadowTexture);
- SAFE_RELEASE(m_pShadowRTV);
- SAFE_RELEASE(m_pShadowSRV);
- SAFE_RELEASE(m_pDepthTexture);
- SAFE_RELEASE(m_pDepthDSV);
-
- m_shadowResource.m_pD3D11Resource = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* D3D11ShadowMap::GetShadowSRV()
-{
- return &m_shadowResource;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool D3D11ShadowMap::isValid()
-{
- return m_pShadowTexture && m_pShadowRTV && m_pShadowSRV && m_pDepthTexture && m_pDepthDSV;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::BeginRendering(float clearDepth)
-{
- if (!isValid())
- return;
-
- ID3D11DeviceContext* pd3dContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pd3dContext)
- return;
-
- pd3dContext->OMGetRenderTargets(1, &m_pPreviousRTV, &m_pPreviousDSV);
- m_numPreviousViewports = 1;
- pd3dContext->RSGetViewports(&m_numPreviousViewports, m_previousViewport);
-
- pd3dContext->OMSetRenderTargets( 1, &m_pShadowRTV, m_pDepthDSV);
- pd3dContext->RSSetViewports(1, &m_viewport);
-
- float ClearColor[4] = { clearDepth, clearDepth, clearDepth, clearDepth};
-
- pd3dContext->ClearRenderTargetView( m_pShadowRTV, ClearColor );
- pd3dContext->ClearDepthStencilView( m_pDepthDSV, D3D11_CLEAR_DEPTH, 1.0, 0 );
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D11ShadowMap::EndRendering()
-{
- if (!isValid())
- return;
-
- ID3D11DeviceContext* pd3dContext = RenderInterfaceD3D11::GetDeviceContext();
- if (!pd3dContext)
- return;
-
- pd3dContext->OMSetRenderTargets(0, NULL, NULL);
-
- if (m_pPreviousRTV)
- {
- pd3dContext->OMSetRenderTargets(1, &m_pPreviousRTV, m_pPreviousDSV);
- m_pPreviousRTV->Release();
- if (m_pPreviousDSV) m_pPreviousDSV->Release();
- }
-
- if (m_numPreviousViewports)
- pd3dContext->RSSetViewports(m_numPreviousViewports, m_previousViewport);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h
deleted file mode 100644
index fc9fe79..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11ShadowMap.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "ShadowMap.h"
-
-#include "d3d11.h"
-#include "D3D11TextureResource.h"
-
-class GPUShaderResource;
-class D3D11TextureResource;
-
-struct D3D11ShadowMap : public ShadowMap
-{
- D3D11_VIEWPORT m_viewport;
-
- ID3D11Texture2D* m_pShadowTexture;
- ID3D11RenderTargetView* m_pShadowRTV;
- ID3D11ShaderResourceView* m_pShadowSRV;
-
- ID3D11Texture2D* m_pDepthTexture;
- ID3D11DepthStencilView* m_pDepthDSV;
- ID3D11ShaderResourceView* m_pDepthSRV;
-
- D3D11TextureResource m_shadowResource;
-
-public:
- D3D11ShadowMap(int resolution );
- ~D3D11ShadowMap();
-
- void Release();
- void BeginRendering(float clearDepth);
- void EndRendering();
-
- GPUShaderResource* GetShadowSRV();
-
-protected:
-
- bool isValid();
-
- ID3D11RenderTargetView* m_pPreviousRTV;
- ID3D11DepthStencilView* m_pPreviousDSV;
- UINT m_numPreviousViewports;
- D3D11_VIEWPORT m_previousViewport[D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp
deleted file mode 100644
index 2a8f7ee..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11TextureResource.h"
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h
deleted file mode 100644
index 91d6539..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11TextureResource.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d11.h"
-
-// GPU resources for texture
-struct D3D11TextureResource : public GPUShaderResource
-{
- ID3D11ShaderResourceView* m_pD3D11Resource;
-
-public:
- static GPUShaderResource* Create(ID3D11ShaderResourceView* pResource) {
- D3D11TextureResource* pBuffer = new D3D11TextureResource;
- pBuffer->m_pD3D11Resource = pResource;
- return pBuffer;
- }
-
- static ID3D11ShaderResourceView* GetResource(GPUShaderResource* pBuffer)
- {
- D3D11TextureResource* pD3D11Buffer = dynamic_cast<D3D11TextureResource*>(pBuffer);
- if (!pD3D11Buffer)
- return 0;
- return pD3D11Buffer->m_pD3D11Resource;
- }
-
- ~D3D11TextureResource()
- {
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pD3D11Resource);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp
deleted file mode 100644
index b13c8e3..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.cpp
+++ /dev/null
@@ -1,333 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Util.h"
-
-#include "D3D11Shaders.h"
-#include "D3D11RenderShader.h"
-
-#include "D3DX10tex.h"
-#include "D3DX11tex.h"
-
-#include "D3D11Wrapper.h"
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-#include "D3D11RendererWindow.h"
-#include "SimpleRenderable.h"
-//#include "MeshShaderParam.h"
-#include "D3D11RenderInterface.h"
-#include "D3D11TextureResource.h"
-
-namespace D3D11Util
-{
- using namespace RenderInterface;
-
- // D3D hook to render window
- D3D11RenderWindow* g_pRenderWindow = 0;
-
-///////////////////////////////////////////////////////////////////////////////
-#include "../../../../../../external/stb_image/stb_image.c"
-
-GPUShaderResource*
-CreateTextureSRV(const char* texturename)
-{
- ID3D11Device* pDevice = RenderInterfaceD3D11::GetDevice();
- if (!pDevice)
- return 0;
-
- D3DX11_IMAGE_LOAD_INFO texLoadInfo;
-
- texLoadInfo.MipLevels = 8;
- texLoadInfo.MipFilter = D3DX10_FILTER_TRIANGLE;
- texLoadInfo.Filter = D3DX10_FILTER_TRIANGLE;
-
- ID3D11Resource *pRes = 0;
-
- HRESULT hr;
- D3DX11CreateTextureFromFileA(pDevice, texturename, &texLoadInfo, NULL, &pRes, &hr);
-
- ID3D11Texture2D* texture = NULL;
-
- if (!pRes)
- {
- // Try stb_image for .TGA
- int width = 0;
- int height = 0;
- int numComponents = 0;
- unsigned char *pSTBIRes = stbi_load(texturename, &width, &height, &numComponents, 4);
-
- if (!pSTBIRes)
- return 0;
-
- const int requestedMipLevels = texLoadInfo.MipLevels;
-
- D3D11_SUBRESOURCE_DATA* initData = new D3D11_SUBRESOURCE_DATA[requestedMipLevels];
- ZeroMemory(initData, sizeof(D3D11_SUBRESOURCE_DATA)*requestedMipLevels);
-
- struct Pixel
- {
- unsigned char rgba[4];
- };
-
- // prepare target buffer just large enough to include all the mip levels
- Pixel* targets = new Pixel[width*height*2];
-
- // copy the first mip level
- memcpy(targets, pSTBIRes, width*height*4);
-
- // now it's OK to delete the original
- if (pSTBIRes)
- stbi_image_free(pSTBIRes);
-
- // current mip level width and height
- int mipWidth = width;
- int mipHeight = height;
-
- // actual mip levels
- int mipLevels = 0;
-
- // current data
- Pixel* source = targets;
- Pixel* target = nullptr;
-
- for (int idx = 0; idx < requestedMipLevels; ++idx)
- {
- // set initData
- initData[idx].pSysMem = source;
- initData[idx].SysMemPitch = mipWidth*4;
- mipLevels++;
-
- // skip generating mip for 1x1
- if ((mipWidth == 1) && (mipHeight == 1))
- break;
-
- // skip generating mip for the last level
- if (idx == (requestedMipLevels-1))
- break;
-
- // buffer for the next mip level
- target = &source[mipWidth*mipHeight];
-
- const int prevWidth = mipWidth; // previous mip's width
-
- // generate the next mip level
- mipWidth = max(1, mipWidth >> 1);
- mipHeight = max(1, mipHeight >> 1);
-
- Pixel samples[4];
-
- for (int y = 0; y < mipHeight; ++y)
- {
- for (int x = 0; x < mipWidth; ++x)
- {
- const int px = x*2; // x in previous mip
- const int py = y*2; // y in previous mip
-
- samples[0] = source[py*prevWidth + px]; // left top
- samples[1] = source[py*prevWidth + px+1]; // right top
- samples[2] = source[(py+1)*prevWidth + px]; // left bottom
- samples[3] = source[(py+1)*prevWidth + px+1]; // right bottom
-
- // for each component
- for (int comp = 0; comp < 4; ++comp)
- {
- // do the linear box filter for lower mip level
- target[y*mipWidth + x].rgba[comp] = (samples[0].rgba[comp] + samples[1].rgba[comp] + samples[2].rgba[comp] + samples[3].rgba[comp])/4;
- }
- }
- }
-
- // update source
- source = target;
- }
-
- D3D11_TEXTURE2D_DESC desc;
- ZeroMemory(&desc, sizeof(D3D11_TEXTURE2D_DESC));
- desc.ArraySize = 1;
- desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
- desc.CPUAccessFlags = 0;
- desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- desc.Height = height;
- desc.Width = width;
- desc.MipLevels = mipLevels;
- desc.MiscFlags = 0;
- desc.SampleDesc.Count = 1;
- desc.SampleDesc.Quality = 0;
- desc.Usage = D3D11_USAGE_DEFAULT;
-
- HRESULT ret = pDevice->CreateTexture2D(&desc, initData, &texture);
-
- delete initData;
- delete targets;
-
- if (ret != S_OK)
- return 0;
- }
- else
- {
- pRes->QueryInterface(__uuidof( ID3D11Texture2D ), (LPVOID*)&texture);
- }
-
- D3D11_TEXTURE2D_DESC desc;
- texture->GetDesc( &desc );
-
- ID3D11ShaderResourceView* pTextureSRV = 0;
-
- D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc;
- ZeroMemory( &SRVDesc, sizeof(SRVDesc) );
- SRVDesc.Format = desc.Format;
- SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
- SRVDesc.Texture2D.MostDetailedMip = 0;
- SRVDesc.Texture2D.MipLevels = desc.MipLevels;
- pDevice->CreateShaderResourceView(texture, &SRVDesc, &pTextureSRV);
-
- if (texture) texture->Release();
-
- if (pRes)
- pRes->Release();
-
- return D3D11TextureResource::Create(pTextureSRV);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- IDXGIAdapter* pAdapter = RenderInterfaceD3D11::GetAdapter();
- if (!pAdapter)
- return false;
-
- auto adapterDescription = DXGI_ADAPTER_DESC();
- pAdapter->GetDesc(&adapterDescription);
-
- WCHAR* pDescStr = adapterDescription.Description;
- float memInGB = float(adapterDescription.DedicatedVideoMemory) / 1e9f;
- swprintf_s(str, 1000, L"%s(%.1fGb)\n", pDescStr, memInGB);
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- SAFE_DELETE(g_pRenderWindow);
-
- g_pRenderWindow = new D3D11RenderWindow;
- return g_pRenderWindow->Create(hWnd, nSamples);
-}
-
-D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles)
-{
- deviceHandles.pAdapter = RenderInterfaceD3D11::GetAdapter();
- deviceHandles.pFactory = RenderInterfaceD3D11::GetDXGIFactory();
- deviceHandles.pDevice = RenderInterfaceD3D11::GetDevice();
- deviceHandles.pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
-
- deviceHandles.pDXGISwapChain = g_pRenderWindow->m_pDXGISwapChain;
- deviceHandles.pD3D11BackBuffer = g_pRenderWindow->m_pD3D11BackBuffer;
- deviceHandles.pD3D11RenderTargetView = g_pRenderWindow->m_pD3D11RenderTargetView;
- deviceHandles.pD3D11DepthBuffer = g_pRenderWindow->m_pD3D11DepthBuffer;
- deviceHandles.pD3D11DepthStencilView = g_pRenderWindow->m_pD3D11DepthStencilView;
- return deviceHandles;
-}
-
-void DestroyRenderWindow()
-{
- SAFE_DELETE(g_pRenderWindow);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- if (!g_pRenderWindow)
- return false;
-
- return g_pRenderWindow->Resize(w,h);
-}
-
-void PresentRenderWindow()
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Present();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Clear(r,g,b);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->Begin();
-}
-
-void TxtHelperEnd()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->End();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetInsertionPos(x, y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetForegroundColor(DirectX::XMFLOAT4(r,g,b,a));
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->DrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h
deleted file mode 100644
index 8a9176e..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Util.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-#include "RenderPlugin.h"
-
-class GPUShaderResource;
-class IDXGISwapChain;
-
-namespace D3D11Util
-{
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
- bool CreateRenderWindow(HWND hWnd, int nSamples);
- void DestroyRenderWindow();
- bool ResizeRenderWindow(int w, int h);
- void PresentRenderWindow();
- void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
- GPUShaderResource* CreateTextureSRV(const char* texturename);
-
- ///////////////////////////////////////////////////////////////////
- CORERENDER_EXPORT bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- CORERENDER_EXPORT void TxtHelperBegin();
- CORERENDER_EXPORT void TxtHelperEnd();
- CORERENDER_EXPORT void TxtHelperSetInsertionPos(int x, int y);
- CORERENDER_EXPORT void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- CORERENDER_EXPORT void TxtHelperDrawTextLine(wchar_t* str);
-
-
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp
deleted file mode 100644
index 5a117f1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D11Wrapper.h"
-
-namespace D3DWrapper
-{
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h
deleted file mode 100644
index 0d752d8..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/D3D11Wrapper.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "d3d11.h"
-
-namespace D3DWrapper
-{
- inline void SetDebugName(ID3D11DeviceChild* pResource, const char *name)
- {
- if (pResource) pResource->SetPrivateData( WKPDID_D3DDebugObjectName, strlen(name), name);
- }
-}
-
-#define SET_D3D_DEBUG_NAME(x, name) D3DWrapper::SetDebugName(x, name);
-#define SET_D3D_DEBUG_NAME_VAR(x) D3DWrapper::SetDebugName(x, #x);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp
deleted file mode 100644
index 93d3fdf..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-#include "RenderPluginDx11.h"
-
-#include "D3D11RenderInterface.h"
-#include "D3D11Util.h"
-#include "D3D11Shaders.h"
-#include "D3D11GPUProfiler.h"
-#include "D3D11ShadowMap.h"
-
-RenderPlugin* CreateRenderPlugin(void)
-{
- return new RenderPluginDx11;
-}
-
-RenderPluginDx11::RenderPluginDx11()
-{
- m_RenderApi = "Dx11";
-}
-
-RenderPluginDx11::~RenderPluginDx11()
-{
-}
-
-// interface
-bool RenderPluginDx11::InitDevice(int deviceID)
-{
- return RenderInterfaceD3D11::InitDevice(deviceID);
-}
-
-bool RenderPluginDx11::Initialize()
-{
- return RenderInterfaceD3D11::Initialize();
-}
-
-void RenderPluginDx11::Shutdown()
-{
- D3D11Util::DestroyRenderWindow();
- RenderInterfaceD3D11::Shutdown();
-}
-
-void RenderPluginDx11::CopyToDevice(GPUBufferResource *pDevicePtr,
- void* pSysMem, unsigned int ByteWidth)
-{
- RenderInterfaceD3D11::CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-void RenderPluginDx11::ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderInterfaceD3D11::ApplyDepthStencilState(state);
-}
-
-void RenderPluginDx11::ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderInterfaceD3D11::ApplyRasterizerState(state);
-}
-
-void RenderPluginDx11::ApplySampler(int slot, SAMPLER_TYPE state)
-{
- RenderInterfaceD3D11::ApplySampler(slot, state);
-}
-
-void RenderPluginDx11::ApplyBlendState(BLEND_STATE state)
-{
- RenderInterfaceD3D11::ApplyBlendState(state);
-}
-
-void RenderPluginDx11::GetViewport(Viewport& vp)
-{
- RenderInterfaceD3D11::GetViewport(vp);
-}
-
-void RenderPluginDx11::SetViewport(const Viewport& vp)
-{
- RenderInterfaceD3D11::SetViewport(vp);
-}
-
-void RenderPluginDx11::BindVertexShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
- RenderInterfaceD3D11::BindVertexShaderResources(startSlot, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx11::BindPixelShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
- RenderInterfaceD3D11::BindPixelShaderResources(startSlot, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx11::ClearVertexShaderResources(int startSlot, int numSRVs)
-{
- RenderInterfaceD3D11::ClearVertexShaderResources(startSlot, numSRVs);
-}
-
-void RenderPluginDx11::ClearPixelShaderResources(int startSlot, int numSRVs)
-{
- RenderInterfaceD3D11::ClearPixelShaderResources(startSlot, numSRVs);
-}
-
-void RenderPluginDx11::ClearInputLayout()
-{
- RenderInterfaceD3D11::ClearInputLayout();
-}
-
-void RenderPluginDx11::SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- RenderInterfaceD3D11::SetVertexBuffer(pBuffer, stride, offset);
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyTriangleStrip()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyTriangleStrip();
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyTriangleList()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyTriangleList();
-}
-
-void RenderPluginDx11::SetPrimitiveTopologyLineList()
-{
- RenderInterfaceD3D11::SetPrimitiveTopologyLineList();
-}
-
-void RenderPluginDx11::Draw(unsigned int vertexCount, unsigned int startCount)
-{
- RenderInterfaceD3D11::Draw(vertexCount, startCount);
-}
-
-GPUBufferResource* RenderPluginDx11::CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem)
-{
- return RenderInterfaceD3D11::CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-GPUShaderResource* RenderPluginDx11::CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- return RenderInterfaceD3D11::CreateShaderResource(stride, numElements, pSysMem);
-}
-
-void RenderPluginDx11::ApplyForShadow(int ForShadow)
-{
-}
-
-void RenderPluginDx11::SwitchToDX11()
-{
-}
-
-void RenderPluginDx11::FlushDX11()
-{
-}
-
-void RenderPluginDx11::FlushDX12()
-{
-}
-
-void RenderPluginDx11::ApplyPrimitiveTopologyLine()
-{
-}
-
-void RenderPluginDx11::ApplyPrimitiveTopologyTriangle()
-{
-}
-
-void RenderPluginDx11::SubmitGpuWork()
-{
-}
-
-void RenderPluginDx11::WaitForGpu()
-{
-}
-
-// util
-bool RenderPluginDx11::CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return D3D11Util::CreateRenderWindow(hWnd, nSamples);
-}
-
-bool RenderPluginDx11::ResizeRenderWindow(int w, int h)
-{
- return D3D11Util::ResizeRenderWindow(w, h);
-}
-
-void RenderPluginDx11::PresentRenderWindow()
-{
- D3D11Util::PresentRenderWindow();
-}
-
-void RenderPluginDx11::ClearRenderWindow(float r, float g, float b)
-{
- D3D11Util::ClearRenderWindow(r, g, b);
-}
-
-bool RenderPluginDx11::GetDeviceInfoString(wchar_t *str)
-{
- return D3D11Util::GetDeviceInfoString(str);
-}
-
-GPUShaderResource* RenderPluginDx11::CreateTextureSRV(const char* texturename)
-{
- return D3D11Util::CreateTextureSRV(texturename);
-}
-
-void RenderPluginDx11::TxtHelperBegin()
-{
- D3D11Util::TxtHelperBegin();
-}
-
-void RenderPluginDx11::TxtHelperEnd()
-{
- D3D11Util::TxtHelperEnd();
-}
-
-void RenderPluginDx11::TxtHelperSetInsertionPos(int x, int y)
-{
- D3D11Util::TxtHelperSetInsertionPos(x, y);
-}
-
-void RenderPluginDx11::TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- D3D11Util::TxtHelperSetForegroundColor(r, g, b, a);
-}
-
-void RenderPluginDx11::TxtHelperDrawTextLine(wchar_t* str)
-{
- D3D11Util::TxtHelperDrawTextLine(str);
-}
-
-// shader
-bool RenderPluginDx11::InitializeShaders()
-{
- return InitializeShadersD3D11();
-}
-
-void RenderPluginDx11::DestroyShaders()
-{
- DestroyShadersD3D11();
-}
-
-void RenderPluginDx11::ApplyShader(SHADER_TYPE st)
-{
- ApplyShaderD3D11(st);
-}
-
-void RenderPluginDx11::DisableShader(SHADER_TYPE st)
-{
- DisableShaderD3D11(st);
-}
-
-void RenderPluginDx11::BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx11::CopyShaderParam(SHADER_TYPE st,
- void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- CopyShaderParamD3D11(st, pSysMem, bytes, slot);
-}
-
-// GPUProfiler
-GPUProfiler* RenderPluginDx11::CreateGPUProfiler()
-{
- GPUProfiler* pProfiler = new D3D11GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-
-// ShadowMap
-ShadowMap* RenderPluginDx11::CreateShadowMap(int resolution)
-{
- return new D3D11ShadowMap(resolution);
-}
-
-// D3D12RenderContext
-void RenderPluginDx11::PreRender()
-{
-}
-
-void RenderPluginDx11::PostRender()
-{
-}
-
-// GPUMeshResources
-
-#include "MeshData.h"
-#include "AnimUtil.h"
-
-GPUMeshResources* RenderPluginDx11::GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData)
-{
- GPUMeshResources* resources = new GPUMeshResources;
-
- int numIndices = pMeshData->m_NumIndices;
- int numVertices = pMeshData->m_NumVertices;
-
- resources->m_pVertexBuffer = CreateVertexBuffer(
- sizeof(MeshData::MeshVertex) * numIndices, pMeshData->m_pMeshVertices);
-
- resources->m_pBoneIndicesSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneIndices);
-
- resources->m_pBoneWeightsSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneWeights);
-
- return resources;
-}
-
-void RenderPluginDx11::GPUMeshResourcesRelease(GPUMeshResources* pResource)
-{
- SAFE_RELEASE(pResource->m_pVertexBuffer);
- SAFE_RELEASE(pResource->m_pBoneIndicesSRV);
- SAFE_RELEASE(pResource->m_pBoneWeightsSRV);
-}
-
-D3DHandles& RenderPluginDx11::GetDeviceHandles(D3DHandles& deviceHandles)
-{
- return D3D11Util::GetDeviceHandles(deviceHandles);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h b/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h
deleted file mode 100644
index a43eb94..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D11/RenderPluginDx11.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma once
-
-#include "RenderPlugin.h"
-
-extern "C" CORERENDER_EXPORT RenderPlugin* CreateRenderPlugin(void);
-
-class CORERENDER_EXPORT RenderPluginDx11 : public RenderPlugin
-{
-public:
- RenderPluginDx11();
- ~RenderPluginDx11();
-
- // interface
- virtual bool InitDevice(int deviceID);
- virtual bool Initialize();
- virtual void Shutdown();
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- virtual void ApplyRasterizerState(RASTERIZER_STATE state);
- virtual void ApplySampler(int slot, SAMPLER_TYPE st);
- virtual void ApplyBlendState(BLEND_STATE st);
- virtual void GetViewport(Viewport& vp);
- virtual void SetViewport(const Viewport& vp);
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs);
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs);
- virtual void ClearInputLayout();
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
- virtual void SetPrimitiveTopologyTriangleStrip();
- virtual void SetPrimitiveTopologyTriangleList();
- virtual void SetPrimitiveTopologyLineList();
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0);
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0);
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL);
- virtual void ApplyForShadow(int ForShadow);
- virtual void SwitchToDX11();
- virtual void FlushDX11();
- virtual void FlushDX12();
- virtual void ApplyPrimitiveTopologyLine();
- virtual void ApplyPrimitiveTopologyTriangle();
- virtual void SubmitGpuWork();
- virtual void WaitForGpu();
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples);
- virtual bool ResizeRenderWindow(int w, int h);
- virtual void PresentRenderWindow();
- virtual void ClearRenderWindow(float r, float g, float b);
- virtual bool GetDeviceInfoString(wchar_t *str);
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename);
- virtual void TxtHelperBegin();
- virtual void TxtHelperEnd();
- virtual void TxtHelperSetInsertionPos(int x, int y);
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- virtual void TxtHelperDrawTextLine(wchar_t* str);
-
- // shader
- virtual bool InitializeShaders();
- virtual void DestroyShaders();
- virtual void ApplyShader(SHADER_TYPE st);
- virtual void DisableShader(SHADER_TYPE st);
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler();
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution);
-
- // D3D12RenderContext
- virtual void PreRender();
- virtual void PostRender();
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData);
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource);
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp
deleted file mode 100644
index 0421792..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Buffer.h"
-
-// shared path
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h
deleted file mode 100644
index ccf636b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Buffer.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include <d3d12.h>
-
-// GPU resources for texture
-struct GPUBufferD3D12 : public GPUBufferResource
-{
- ID3D12Resource* m_pBuffer;
- UINT m_pBufferSize;
-
- D3D12_VERTEX_BUFFER_VIEW m_vertexBufferView;
-
-public:
- static GPUBufferResource* Create(ID3D12Resource* pResource, int nSize) {
- GPUBufferD3D12* pBuffer = new GPUBufferD3D12;
- pBuffer->m_pBuffer = pResource;
- pBuffer->m_pBufferSize = nSize;
- return pBuffer;
- }
-
- static ID3D12Resource* GetResource(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D12* pD3D12Buffer = dynamic_cast<GPUBufferD3D12*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
- return pD3D12Buffer->m_pBuffer;
- }
-
- static D3D12_VERTEX_BUFFER_VIEW* GetVertexView(GPUBufferResource* pBuffer)
- {
- GPUBufferD3D12* pD3D12Buffer = dynamic_cast<GPUBufferD3D12*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
-
- pD3D12Buffer->m_vertexBufferView.BufferLocation = pD3D12Buffer->m_pBuffer->GetGPUVirtualAddress();
- pD3D12Buffer->m_vertexBufferView.StrideInBytes = 0;
- pD3D12Buffer->m_vertexBufferView.SizeInBytes = pD3D12Buffer->m_pBufferSize;
- return &pD3D12Buffer->m_vertexBufferView;
- }
-
- ~GPUBufferD3D12()
- {
- Release();
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pBuffer);
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp
deleted file mode 100644
index b434c3c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12GPUProfiler.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12RenderContext.h"
-///////////////////////////////////////////////////////////////
-// factory function to create D3D12 GPU profiler
-/*
-GPUProfiler* GPUProfiler::CreateD3D12()
-{
- GPUProfiler* pProfiler = new D3D12GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-*/
-
-///////////////////////////////////////////////////////////////
-D3D12GPUProfiler::~D3D12GPUProfiler()
-{
- Release();
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::Initialize()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
-
- /*
- ID3D12Device* pDevice12 = pContext->GetDevice();
-
- D3D12_QUERY_HEAP_DESC queryHeapDesc = {};
- queryHeapDesc.Count = MAX_QUERY_COUNT * 2;
- queryHeapDesc.Type = D3D12_QUERY_HEAP_TYPE_TIMESTAMP;
- ThrowIfFailed(pDevice12->CreateQueryHeap(&queryHeapDesc, IID_PPV_ARGS(&query_heap)));
-
- D3D12_HEAP_PROPERTIES heap_prop;
- heap_prop.Type = D3D12_HEAP_TYPE_DEFAULT;
- heap_prop.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
- heap_prop.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
- heap_prop.CreationNodeMask = 0;
- heap_prop.VisibleNodeMask = 0;
-
- D3D12_RESOURCE_DESC res_desc;
- res_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
- res_desc.Alignment = 0;
- res_desc.Width = sizeof(UINT64) * 2;
- res_desc.Height = 1;
- res_desc.DepthOrArraySize = 1;
- res_desc.MipLevels = 1;
- res_desc.Format = DXGI_FORMAT_UNKNOWN;
- res_desc.SampleDesc.Count = 1;
- res_desc.SampleDesc.Quality = 0;
- res_desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR;
- res_desc.Flags = D3D12_RESOURCE_FLAG_NONE;
-
- ThrowIfFailed(pDevice12->CreateCommittedResource(&heap_prop, D3D12_HEAP_FLAG_NONE,
- &res_desc, D3D12_RESOURCE_STATE_COMMON, nullptr,
- IID_ID3D12Resource, reinterpret_cast<void**>(&query_result)));
-
- heap_prop.Type = D3D12_HEAP_TYPE_READBACK;
- ThrowIfFailed(pDevice12->CreateCommittedResource(&heap_prop, D3D12_HEAP_FLAG_NONE,
- &res_desc, D3D12_RESOURCE_STATE_COPY_DEST, nullptr,
- IID_ID3D12Resource, reinterpret_cast<void**>(&query_result_readback)));
- */
-
- m_pContext = pContext->GetDeviceContext();
-
- D3D11_QUERY_DESC desc;
- memset(&desc, 0, sizeof(D3D11_QUERY_DESC));
- desc.Query = D3D11_QUERY_TIMESTAMP_DISJOINT;
- desc.MiscFlags = 0;
-
- ID3D11Device* pDevice = pContext->GetDevice11();
- pDevice->CreateQuery(&desc, &m_pQueryDisjoint);
-
- desc.Query = D3D11_QUERY_TIMESTAMP;
-
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- pDevice->CreateQuery(&desc, &m_pQueryStart[i]);
- pDevice->CreateQuery(&desc, &m_pQueryEnd[i]);
- }
- m_enable = true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::Release()
-{
- for (int i = 0; i < MAX_QUERY_COUNT; i++)
- {
- SAFE_RELEASE(m_pQueryStart[i]);
- SAFE_RELEASE(m_pQueryEnd[i]);
- }
-
- SAFE_RELEASE(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::StartProfile(int id)
-{
- if (!m_enable) return;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- pCommandList->EndQuery(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2);
- */
-
- ID3D11Query* pQuery = m_pQueryStart[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::EndProfile(int id)
-{
- if (!m_enable) return;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- pCommandList->EndQuery(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2 + 1);
- */
-
- ID3D11Query* pQuery = m_pQueryEnd[id];
- m_pContext->End(pQuery);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::StartFrame()
-{
- if (!m_enable) return;
-
- m_pContext->Begin(m_pQueryDisjoint);
-}
-
-///////////////////////////////////////////////////////////////
-void D3D12GPUProfiler::EndFrame()
-{
- if (!m_enable) return;
-
- m_pContext->End(m_pQueryDisjoint);
-
- while(m_pContext->GetData(m_pQueryDisjoint, &m_disjointData, sizeof(D3D11_QUERY_DATA_TIMESTAMP_DISJOINT), 0) != S_OK);
-}
-
-///////////////////////////////////////////////////////////////
-float D3D12GPUProfiler::GetProfileData(int id)
-{
- if (!m_enable)
- return 0.0f;
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- UINT64 times[2];
- D3D12_RESOURCE_BARRIER barrier;
- barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
- barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
- barrier.Transition.pResource = query_result;
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COMMON;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
- barrier.Transition.Subresource = 0;
- pCommandList->ResourceBarrier(1, &barrier);
-
- pCommandList->ResolveQueryData(query_heap, D3D12_QUERY_TYPE_TIMESTAMP, id * 2, 2, query_result, 0);
-
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_SOURCE;
- pCommandList->ResourceBarrier(1, &barrier);
-
- pCommandList->CopyResource(query_result_readback, query_result);
-
- barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_SOURCE;
- barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COMMON;
- pCommandList->ResourceBarrier(1, &barrier);
-
- void* pData;
- ThrowIfFailed(query_result_readback->Map(0, 0, &pData));
- memcpy(times, pData, sizeof(UINT64) * 2);
- query_result_readback->Unmap(0, 0);
- */
-
- UINT64 startTime = 0;
- while(m_pContext->GetData(m_pQueryStart[id], &startTime, sizeof(UINT64), 0) != S_OK);
-
- UINT64 endTime = 0;
- while(m_pContext->GetData(m_pQueryEnd[id], &endTime, sizeof(UINT64), 0) != S_OK);
-
- float frequency = static_cast<float>(m_disjointData.Frequency);
- return (endTime - startTime) / frequency * 1000.0f;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h
deleted file mode 100644
index 721b8a9..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12GPUProfiler.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-/*
-#include <d3d12.h>
-*/
-#include "GPUProfiler.h"
-
-#define MAX_QUERY_COUNT 64
-struct D3D12GPUProfiler : public GPUProfiler
-{
-public:
- ~D3D12GPUProfiler();
-
- void Initialize();
- void Release();
- void StartProfile(int id);
- void EndProfile(int id);
- void StartFrame();
- void EndFrame();
- float GetProfileData(int id);
-
-protected:
- ID3D11Query* m_pQueryDisjoint;
- ID3D11Query* m_pQueryStart[MAX_QUERY_COUNT];
- ID3D11Query* m_pQueryEnd[MAX_QUERY_COUNT];
- D3D11_QUERY_DATA_TIMESTAMP_DISJOINT m_disjointData;
- ID3D11DeviceContext* m_pContext;
- /*
- ID3D12QueryHeap* query_heap;
- ID3D12Resource* query_result;
- ID3D12Resource* query_result_readback;
- */
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp
deleted file mode 100644
index 8202139..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.cpp
+++ /dev/null
@@ -1,564 +0,0 @@
-#include "D3D12RenderContext.h"
-
-const int nBufferCount = 2;
-//const int nBufferCount = 5;
-
-int nRenderTargetIndex = 1;
-//int nRenderTargetIndex = 4;
-
-D3D12RenderContext::D3D12RenderContext()
-{
- m_sampleCount = 1;
-}
-
-D3D12RenderContext::~D3D12RenderContext()
-{
-}
-
-D3D12RenderContext* D3D12RenderContext::Instance()
-{
- static D3D12RenderContext ri;
- return &ri;
-}
-
-void GetHardwareAdapter(IDXGIFactory2* pFactory, IDXGIAdapter1** ppAdapter)
-{
- IDXGIAdapter1* pAdapter = nullptr;
- *ppAdapter = nullptr;
-
- for (UINT adapterIndex = 0; DXGI_ERROR_NOT_FOUND != pFactory->EnumAdapters1(adapterIndex, &pAdapter); ++adapterIndex)
- {
- DXGI_ADAPTER_DESC1 desc;
- pAdapter->GetDesc1(&desc);
-
- if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE)
- {
- // Don't select the Basic Render Driver adapter.
- // If you want a software adapter, pass in "/warp" on the command line.
- continue;
- }
-
- // Check to see if the adapter supports Direct3D 12, but don't create the
- // actual device yet.
- if (SUCCEEDED(D3D12CreateDevice(pAdapter, D3D_FEATURE_LEVEL_11_0, _uuidof(ID3D12Device), nullptr)))
- {
- break;
- }
- }
-
- *ppAdapter = pAdapter;
-}
-
-void D3D12RenderContext::InitDevice()
-{
- UINT d3d11DeviceFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
-#if defined(_DEBUG)
- // Enable the D3D11 debug layer.
- d3d11DeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
- // Enable the D3D12 debug layer.
- {
- ComPtr<ID3D12Debug> debugController;
- if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController))))
- {
- debugController->EnableDebugLayer();
- }
- }
-#endif
-
- ThrowIfFailed(CreateDXGIFactory1(IID_PPV_ARGS(&m_factory)));
-
- GetHardwareAdapter(m_factory.Get(), &m_adapter);
-
- auto adapterDescription = DXGI_ADAPTER_DESC();
- m_adapter->GetDesc(&adapterDescription);
-
- D3D12CreateDevice(m_adapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device));
- if (nullptr == m_device)
- {
- ComPtr<IDXGIAdapter> warpAdapter;
- ThrowIfFailed(m_factory->EnumWarpAdapter(IID_PPV_ARGS(&warpAdapter)));
- ThrowIfFailed(D3D12CreateDevice(warpAdapter.Get(), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS(&m_device)));
- }
-
- // Describe and create the command queue.
- D3D12_COMMAND_QUEUE_DESC queueDesc = {};
- queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
- queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
-
- ThrowIfFailed(m_device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&m_commandQueue)));
-
- ThrowIfFailed(D3D11On12CreateDevice(
- m_device.Get(),
- d3d11DeviceFlags, nullptr, 0,
- reinterpret_cast<IUnknown**>(m_commandQueue.GetAddressOf()), 1, 0,
- &m_d3d11Device,
- &m_d3d11DeviceContext,
- nullptr ));
-
- ThrowIfFailed(m_d3d11Device.As(&m_d3d11On12Device));
-}
-
-void D3D12RenderContext::InitSwapchain(int nWidth, int nHeight, HWND hWnd)
-{
- // Describe and create the swap chain.
- DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
- swapChainDesc.BufferCount = nBufferCount;
- swapChainDesc.BufferDesc.Width = nWidth;
- swapChainDesc.BufferDesc.Height = nHeight;
- swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
- swapChainDesc.OutputWindow = hWnd;
- swapChainDesc.SampleDesc.Count = 1;
- swapChainDesc.Windowed = TRUE;
-
- ComPtr<IDXGISwapChain> swapChain;
- ThrowIfFailed(m_factory->CreateSwapChain(
- m_commandQueue.Get(), // Swap chain needs the queue so that it can force a flush on it.
- &swapChainDesc,
- &swapChain
- ));
-
- ThrowIfFailed(swapChain.As(&m_swapChain));
-
- // This sample does not support fullscreen transitions.
- // ThrowIfFailed(m_factory->MakeWindowAssociation(hWnd, DXGI_MWA_NO_ALT_ENTER));
-
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
-
- // Create the command list.
- ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));
-
- m_pCurrentRenderTarget = new D3D12RenderTarget(0, nBufferCount);
- m_pCurrentRenderTarget->OnCreate(nWidth, nHeight);
- m_pCurrentRenderTarget->SetClearColor(0.5, 0.5, 0.5);
- m_RenderTargetMap[0] = m_pCurrentRenderTarget;
-
- m_pD3D11RenderTargetView = new ID3D11RenderTargetView*[nBufferCount];
- m_wrappedBackBuffers = new ID3D11Resource*[nBufferCount];
- for (int n = 0; n < nBufferCount; n++)
- {
- m_pD3D11RenderTargetView[n] = nullptr;
- m_wrappedBackBuffers[n] = nullptr;
- }
-
- PostCreate();
-}
-
-#ifndef Safe_Release
-#define Safe_Release(p) { if (p) { p->Release(); (p) = nullptr; } }
-#endif // !Safe_Delete
-
-void D3D12RenderContext::ResizeSwapchain(int width, int height)
-{
- D3D12RenderTarget* rt = m_RenderTargetMap[0];
-
- for (int n = 0; n < nBufferCount; n++)
- {
- Safe_Release(m_pD3D11RenderTargetView[n]);
- Safe_Release(m_wrappedBackBuffers[n]);
- }
- m_d3d11DeviceContext->Flush();
-
- rt->OnDestroy();
-
- ThrowIfFailed(m_swapChain->ResizeBuffers(nBufferCount, width, height, DXGI_FORMAT_R8G8B8A8_UNORM, 0));
-
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- rt->OnResize(width, height);
-
- for (int n = 0; n < nBufferCount; n++)
- {
- ID3D11On12Device* pDevice11On12 = GetDevice11On12();
-
- D3D11_RESOURCE_FLAGS d3d11Flags = { D3D11_BIND_RENDER_TARGET };
- ThrowIfFailed(pDevice11On12->CreateWrappedResource(
- rt->GetTexture(n, false),
- &d3d11Flags,
- D3D12_RESOURCE_STATE_RENDER_TARGET,
- D3D12_RESOURCE_STATE_PRESENT,
- IID_PPV_ARGS(&m_wrappedBackBuffers[n])));
-
- ThrowIfFailed(m_d3d11Device->CreateRenderTargetView(m_wrappedBackBuffers[n],
- NULL, &m_pD3D11RenderTargetView[n]));
- }
-}
-
-void D3D12RenderContext::PostCreate()
-{
- m_srvUavHeap.Init(m_device.Get(), 256, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV, D3D12_DESCRIPTOR_HEAP_FLAG_NONE);
-
- {
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
- }
-
- {
- ThrowIfFailed(m_device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_fence)));
- m_fenceValue = 1;
-
- // Create an event handle to use for frame synchronization.
- m_fenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
- if (m_fenceEvent == nullptr)
- {
- ThrowIfFailed(HRESULT_FROM_WIN32(GetLastError()));
- }
-
- WaitForGpu();
- }
-}
-
-void D3D12RenderContext::OnDestroy()
-{
- WaitForGpu();
- if (nullptr != m_fenceEvent)
- {
- CloseHandle(m_fenceEvent);
- m_fenceEvent = nullptr;
- }
-
-#if 0
- ID3D12DebugDevice* debugInterface;
- if (SUCCEEDED(m_device.Get()->QueryInterface(&debugInterface)))
- {
- debugInterface->ReportLiveDeviceObjects(D3D12_RLDO_DETAIL | D3D12_RLDO_IGNORE_INTERNAL);
- debugInterface->Release();
- }
-#endif // 0
-}
-
-void D3D12RenderContext::PreRender()
-{
- ThrowIfFailed(m_commandAllocator->Reset());
- ThrowIfFailed(m_commandList->Reset(m_commandAllocator.Get(), nullptr));
-}
-
-void D3D12RenderContext::PostRender()
-{
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
-
- OnGpuWorkSubmitted(m_commandQueue.Get());
-
- WaitForGpu();
-}
-
-void D3D12RenderContext::SubmitGpuWork()
-{
- ThrowIfFailed(m_commandList->Close());
- ID3D12CommandList* ppCommandLists[] = { m_commandList.Get() };
- m_commandQueue->ExecuteCommandLists(_countof(ppCommandLists), ppCommandLists);
-
- ThrowIfFailed(m_commandList->Reset(m_commandAllocator.Get(), nullptr));
-
- OnGpuWorkSubmitted(m_commandQueue.Get());
-}
-
-
-void D3D12RenderContext::Flush()
-{
- m_pCurrentRenderTarget->PostRender();
- PostRender();
- PreRender();
- m_pCurrentRenderTarget->PreRender();
-}
-
-void D3D12RenderContext::Present()
-{
- ThrowIfFailed(m_swapChain->Present(1, 0));
- //ThrowIfFailed(m_swapChain->Present(0, 0));
- m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
-
- //OnGpuWorkSubmitted(m_commandQueue.Get(), true);
- //WaitForGpu();
-}
-
-int D3D12RenderContext::AllocRenderTargetIndex()
-{
- return nRenderTargetIndex++;
-}
-
-
-void D3D12RenderContext::AddGpuInterface(GpuInterface* gpuIntf)
-{
- m_gpuInterfaces.push_back(gpuIntf);
-}
-
-
-void D3D12RenderContext::OnGpuWorkSubmitted(ID3D12CommandQueue* queue)
-{
- std::vector<GpuInterface*>::const_iterator cur = m_gpuInterfaces.begin();
- std::vector<GpuInterface*>::const_iterator end = m_gpuInterfaces.end();
-
- for (; cur != end; cur++)
- {
- (*cur)->onGpuWorkSubmitted(queue);
- }
-}
-
-void D3D12RenderContext::UpdateGpuWorkCompleted()
-{
- std::vector<GpuInterface*>::const_iterator cur = m_gpuInterfaces.begin();
- std::vector<GpuInterface*>::const_iterator end = m_gpuInterfaces.end();
-
- for (; cur != end; cur++)
- {
- (*cur)->updateGpuWorkCompleted();
- }
-}
-
-D3D12RenderTarget* D3D12RenderContext::CreateRenderTarget(int renderTargetIndex, int nWidth, int nHeight)
-{
- D3D12RenderTarget* pRenderTarget = new D3D12RenderTarget(renderTargetIndex);
- pRenderTarget->OnCreate(nWidth, nHeight);
- m_RenderTargetMap[renderTargetIndex] = pRenderTarget;
- return pRenderTarget;
-}
-
-ID3D12Resource* D3D12RenderContext::GetTexture(int renderTargetIndex, int index)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- ID3D12Resource* pTexture = pRenderTarget->GetTexture(index);
- return pTexture;
-}
-
-void D3D12RenderContext::SetViewport(D3D12_VIEWPORT& vp)
-{
- m_pCurrentRenderTarget->m_viewport = vp;
- m_commandList->RSSetViewports(1, &vp);
-}
-
-void D3D12RenderContext::GetViewport(D3D12_VIEWPORT& vp)
-{
- vp = m_pCurrentRenderTarget->m_viewport;
-}
-
-D3D12_RESOURCE_DESC D3D12RenderContext::GetBackBufferDesc()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- ID3D12Resource* pResource = pRenderTarget->GetTexture();
- return pResource->GetDesc();
-}
-
-void D3D12RenderContext::SwitchToDX11()
-{
- ReleaseRenderTarget();
- PostRender();
-
- if (nullptr == m_wrappedBackBuffers[m_frameIndex])
- {
- return;
- }
-
- m_d3d11On12Device->AcquireWrappedResources(&m_wrappedBackBuffers[m_frameIndex], 1);
-
- m_d3d11DeviceContext->OMSetRenderTargets(1, &m_pD3D11RenderTargetView[m_frameIndex], nullptr);
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- D3D11_VIEWPORT vp;
- {
- vp.TopLeftX = 0;
- vp.TopLeftY = 0;
- vp.Width = (float)pRenderTarget->m_viewport.Width;
- vp.Height = (float)pRenderTarget->m_viewport.Height;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
- m_d3d11DeviceContext->RSSetViewports(1, &vp);
-}
-
-void D3D12RenderContext::FlushDX11()
-{
- if (nullptr == m_wrappedBackBuffers[m_frameIndex])
- {
- return;
- }
-
- m_d3d11On12Device->ReleaseWrappedResources(&m_wrappedBackBuffers[m_frameIndex], 1);
- m_d3d11DeviceContext->Flush();
-}
-
-ID3D12Resource* D3D12RenderContext::GetDepthStencilResource()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetDepthStencilResource();
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::GetRenderTargetViewHandle()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetRenderTargetViewHandle();
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::GetDepthStencilViewHandle()
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[0];
- return pRenderTarget->GetDepthStencilViewHandle();
-}
-
-void D3D12RenderContext::AcquireRenderTarget(bool doClear, int renderTargetIndex)
-{
- m_pCurrentRenderTarget = m_RenderTargetMap[renderTargetIndex];
- m_pCurrentRenderTarget->PreRender(doClear);
-}
-
-void D3D12RenderContext::ReleaseRenderTarget(int renderTargetIndex)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- pRenderTarget->PostRender();
-}
-
-void D3D12RenderContext::SetClearColor(int renderTargetIndex, float r, float g, float b, float a, float depth, float stencil)
-{
- D3D12RenderTarget* pRenderTarget = m_RenderTargetMap[renderTargetIndex];
- pRenderTarget->SetClearColor(r, g, b, a, depth, stencil);
-}
-
-void D3D12RenderContext::WaitForGpu()
-{
- const UINT64 fence = m_fenceValue;
- ThrowIfFailed(m_commandQueue->Signal(m_fence.Get(), fence));
- m_fenceValue++;
-
- // Wait until the previous frame is finished.
- if (m_fence->GetCompletedValue() < fence)
- {
- ThrowIfFailed(m_fence->SetEventOnCompletion(fence, m_fenceEvent));
- WaitForSingleObject(m_fenceEvent, INFINITE);
- }
-}
-
-void D3D12RenderContext::InitBuffer(NVHairReadOnlyBuffer& buffer)
-{
- buffer.Init(&m_srvUavHeap);
-}
-
-void D3D12RenderContext::DestroyBuffer(NVHairReadOnlyBuffer& buffer)
-{
- buffer.Release();
-}
-
-CD3DX12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::NVHairINT_CreateD3D12ReadOnlyBuffer(
- UINT stride,
- UINT numElements,
- NVHairReadOnlyBuffer* pReadOnlyBuffer,
- void* pSysMem)
-{
- ID3D12Device* pd3dDevice = m_device.Get();
- ID3D12GraphicsCommandList* pCommandList = m_commandList.Get();
-
- UINT bufferSize = numElements * stride;
-
- HRESULT hr;
- hr = pd3dDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(bufferSize),
- D3D12_RESOURCE_STATE_COPY_DEST,
- nullptr,
- IID_PPV_ARGS(pReadOnlyBuffer->m_pBuffer.ReleaseAndGetAddressOf()));
-
- hr = pd3dDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(bufferSize),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(pReadOnlyBuffer->m_pBufferUpload.ReleaseAndGetAddressOf()));
-
- D3D12_SUBRESOURCE_DATA data = {};
- data.pData = reinterpret_cast<UINT8*>(pSysMem);
- data.RowPitch = bufferSize;
- data.SlicePitch = data.RowPitch;
-
- PreRender();
- UpdateSubresources<1>(pCommandList, pReadOnlyBuffer->m_pBuffer.Get(), pReadOnlyBuffer->m_pBufferUpload.Get(), 0, 0, 1, &data);
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pReadOnlyBuffer->m_pBuffer.Get(), D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
- PostRender();
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(pReadOnlyBuffer->m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), pReadOnlyBuffer->m_srvIndex, pReadOnlyBuffer->m_pSrvUavHeap->m_sizeDescriptor);
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = DXGI_FORMAT_UNKNOWN;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
- srvDesc.Buffer.FirstElement = 0;
- srvDesc.Buffer.NumElements = numElements;
- srvDesc.Buffer.StructureByteStride = stride;
- srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
- pd3dDevice->CreateShaderResourceView(pReadOnlyBuffer->m_pBuffer.Get(), &srvDesc, srvHandle);
-
- return srvHandle;
-}
-
-CD3DX12_CPU_DESCRIPTOR_HANDLE D3D12RenderContext::NVHairINT_CreateD3D12Texture(ID3D12Resource* pTexture, int& nIndexInHeap)
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = {};
-
- if (!pTexture)
- return handle;
-
- ID3D12Device* pDevice = m_device.Get();
- if (!pDevice)
- return handle;
-
- nIndexInHeap = m_srvUavHeap.allocate();
- if(nIndexInHeap == -1)
- return handle;
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(m_srvUavHeap.m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(),
- nIndexInHeap, m_srvUavHeap.m_sizeDescriptor);
-
- D3D12_RESOURCE_DESC desc = pTexture->GetDesc();
-
- D3D12_SHADER_RESOURCE_VIEW_DESC srvDesc = {};
- srvDesc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
- srvDesc.Format = desc.Format;
- srvDesc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
- srvDesc.Texture2D.MipLevels = 1;
-
- pDevice->CreateShaderResourceView(pTexture, &srvDesc, srvHandle);
-
- return srvHandle;
-}
-
-void D3D12RenderContext::NVHairINT_DestroyD3D12Texture(int& nIndexInHeap)
-{
- if (nIndexInHeap != -1)
- {
- m_srvUavHeap.deallocate(nIndexInHeap);
- }
-}
-
-void D3D12RenderContext::SetSampleCount(int nSampleCount)
-{
- m_sampleCount = 1;
-
- if (nSampleCount > D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT)
- nSampleCount = D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT;
-
- if (nSampleCount > 1)
- {
- D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS qualityLevels;
- qualityLevels.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- qualityLevels.Flags = D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE;
- qualityLevels.NumQualityLevels = 0;
- qualityLevels.SampleCount = nSampleCount;
-
- ID3D12Device *pDevice = GetDevice();
- pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &qualityLevels, sizeof(qualityLevels));
-
- if (qualityLevels.NumQualityLevels > 0)
- {
- m_sampleCount = qualityLevels.SampleCount;
- }
- }
-}
-
-int D3D12RenderContext::GetSampleCount()
-{
- return m_sampleCount;
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h
deleted file mode 100644
index 2e0b393..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderContext.h
+++ /dev/null
@@ -1,254 +0,0 @@
-#pragma once
-
-#include "D3D12RenderTarget.h"
-#include "RenderPlugin.h"
-
-#include "d3dx12.h"
-#include <wrl.h>
-using namespace Microsoft::WRL;
-
-struct NVHairHeap
-{
- ComPtr<ID3D12DescriptorHeap> m_pHeap;
- UINT m_sizeHeap;
- UINT m_currentIndex;
- UINT m_sizeDescriptor;
- std::vector<UINT> m_availableIndexes;
-
- void Init(ID3D12Device* pd3dDevice, UINT size, D3D12_DESCRIPTOR_HEAP_TYPE type, D3D12_DESCRIPTOR_HEAP_FLAGS flags)
- {
- HRESULT hr;
-
- D3D12_DESCRIPTOR_HEAP_DESC srvHeapDesc = {};
- srvHeapDesc.NumDescriptors = size;
- srvHeapDesc.Flags = flags;
- srvHeapDesc.Type = type;
- hr = pd3dDevice->CreateDescriptorHeap(&srvHeapDesc, IID_PPV_ARGS(m_pHeap.ReleaseAndGetAddressOf()));
-
- if (SUCCEEDED(hr))
- {
- m_sizeHeap = size;
- m_sizeDescriptor = pd3dDevice->GetDescriptorHandleIncrementSize(type);
- }
- else
- {
- m_sizeHeap = 0;
- m_sizeDescriptor = 0;
- }
- m_currentIndex = 0;
- m_availableIndexes.clear();
- }
-
- UINT allocate()
- {
- int availables = m_availableIndexes.size();
- if (availables > 0)
- {
- UINT index = m_availableIndexes[availables - 1];
- m_availableIndexes.pop_back();
- return index;
- }
- UINT index = m_currentIndex++;
- if (m_sizeHeap > m_currentIndex)
- return index;
- return (UINT)-1;
- }
-
- void deallocate(UINT availableIndex)
- {
- m_availableIndexes.push_back(availableIndex);
- }
-
- void Release()
- {
- if (m_pHeap) m_pHeap = nullptr;
- m_sizeHeap = 0;
- m_currentIndex = 0;
- m_sizeDescriptor = 0;
- m_availableIndexes.clear();
- }
-};
-
-struct NVHairVertexBuffer
-{
- ComPtr<ID3D12Resource> m_pBuffer;
- ComPtr<ID3D12Resource> m_pBufferUpload;
- D3D12_VERTEX_BUFFER_VIEW m_vertexBufferView;
- NVHairHeap* m_pSrvUavHeap;
- UINT m_uavIndex;
-
- void Init(NVHairHeap* pHeap)
- {
- m_pBuffer = nullptr;
- m_pBufferUpload = nullptr;
- memset(&m_vertexBufferView, 0, sizeof(D3D12_VERTEX_BUFFER_VIEW));
- m_pSrvUavHeap = pHeap;
-
- m_uavIndex = m_pSrvUavHeap->allocate();
- }
-
- D3D12_CPU_DESCRIPTOR_HANDLE getUavCpuHandle()
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE uavHandle(m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), m_uavIndex, m_pSrvUavHeap->m_sizeDescriptor);
- return uavHandle;
- }
-
- void Release()
- {
- if (m_pBuffer) m_pBuffer = nullptr;
- if (m_pBufferUpload) m_pBufferUpload = nullptr;
- memset(&m_vertexBufferView, 0, sizeof(D3D12_VERTEX_BUFFER_VIEW));
- if (m_pSrvUavHeap) m_pSrvUavHeap = nullptr;
- m_uavIndex = (UINT)-1;
- }
-};
-
-struct NVHairReadOnlyBuffer
-{
- ComPtr<ID3D12Resource> m_pBuffer;
- ComPtr<ID3D12Resource> m_pBufferUpload;
- NVHairHeap* m_pSrvUavHeap;
- UINT m_srvIndex;
-
- void Init(NVHairHeap* pHeap)
- {
- m_pBuffer = nullptr;
- m_pBufferUpload = nullptr;
- m_pSrvUavHeap = pHeap;
-
- m_srvIndex = m_pSrvUavHeap->allocate();
- }
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE getSrvCpuHandle()
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE srvHandle(m_pSrvUavHeap->m_pHeap.Get()->GetCPUDescriptorHandleForHeapStart(), m_srvIndex, m_pSrvUavHeap->m_sizeDescriptor);
- return srvHandle;
- }
-
- void Release()
- {
- m_pSrvUavHeap->deallocate(m_srvIndex);
-
- if (m_pBuffer) m_pBuffer = nullptr;
- if (m_pBufferUpload) m_pBufferUpload = nullptr;
- if (m_pSrvUavHeap) m_pSrvUavHeap = nullptr;
- m_srvIndex = (UINT)-1;
- }
-};
-
-class CORERENDER_EXPORT D3D12RenderContext
-{
-public:
- ~D3D12RenderContext();
- static D3D12RenderContext* Instance();
-
- class GpuInterface
- {
- public:
- virtual void onGpuWorkSubmitted(ID3D12CommandQueue* queue) = 0;
- virtual void updateGpuWorkCompleted() = 0;
- virtual ~GpuInterface() {}
- };
-
- typedef void (*GpuWorkSubmitFunc)(ID3D12CommandQueue* queue, void* data);
- typedef void (*GpuUpdateCompletedFunc)(void* data);
-
- void InitDevice();
- void InitSwapchain(int width, int height, HWND hWnd);
- void ResizeSwapchain(int width, int height);
- void PostCreate();
-
- void OnDestroy();
-
- void PreRender();
- void PostRender();
- void Flush();
-
- void SubmitGpuWork();
- void WaitForGpu();
-
- void UpdateGpuWorkCompleted();
-
- void Present();
-
- int AllocRenderTargetIndex();
- D3D12RenderTarget* CreateRenderTarget(int renderTargetIndex, int nWidth, int nHeight);
- void SetClearColor(int renderTargetIndex, float r, float g, float b, float a = 1.0, float depth = 1.0, float stencil = 0.0);
- void AcquireRenderTarget(bool doClear = false, int renderTargetIndex = 0);
- void ReleaseRenderTarget(int renderTargetIndex = 0);
- ID3D12Resource* GetTexture(int renderTargetIndex, int index = 0);
- void SetViewport(D3D12_VIEWPORT& vp);
- void GetViewport(D3D12_VIEWPORT& vp);
-
- ID3D12Device* GetDevice() { return m_device.Get(); }
- ID3D12GraphicsCommandList* GetGraphicsCommandList() { return m_commandList.Get(); }
- ID3D12CommandQueue* GetCommandQueue() const { return m_commandQueue.Get(); }
-
- IDXGISwapChain3* GetSwapChain() { return m_swapChain.Get(); }
- UINT GetFrameIndex() { return m_frameIndex; }
-
- ID3D11Device* GetDevice11() { return m_d3d11Device.Get(); }
- ID3D11On12Device* GetDevice11On12() { return m_d3d11On12Device.Get(); }
- ID3D11DeviceContext* GetDeviceContext() { return m_d3d11DeviceContext.Get(); }
-
- D3D12_RESOURCE_DESC GetBackBufferDesc();
- void SwitchToDX11();
- void FlushDX11();
-
- ID3D12Resource* GetDepthStencilResource();
- D3D12_CPU_DESCRIPTOR_HANDLE GetRenderTargetViewHandle();
- D3D12_CPU_DESCRIPTOR_HANDLE GetDepthStencilViewHandle();
-
- void InitBuffer(NVHairReadOnlyBuffer& buffer);
- void DestroyBuffer(NVHairReadOnlyBuffer& buffer);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE NVHairINT_CreateD3D12ReadOnlyBuffer(
- UINT stride,
- UINT numElements,
- NVHairReadOnlyBuffer* pReadOnlyBuffer,
- void* pSysMem);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE NVHairINT_CreateD3D12Texture(ID3D12Resource* pTexture, int& nIndexInHeap);
- void NVHairINT_DestroyD3D12Texture(int& nIndexInHeap);
-
- void SetSampleCount(int nSampleCount);
- int GetSampleCount();
-
- void AddGpuInterface(GpuInterface* intf);
-
-private:
- void OnGpuWorkSubmitted(ID3D12CommandQueue* queue);
-
- D3D12RenderContext();
-
- ComPtr<IDXGIFactory4> m_factory;
- ComPtr<IDXGIAdapter1> m_adapter;
-
- ComPtr<ID3D12Device> m_device;
- ComPtr<ID3D12CommandQueue> m_commandQueue;
- ComPtr<ID3D12CommandAllocator> m_commandAllocator;
- ComPtr<ID3D12GraphicsCommandList> m_commandList;
- ComPtr<IDXGISwapChain3> m_swapChain;
-
- ComPtr<ID3D11Device> m_d3d11Device;
- ComPtr<ID3D11On12Device> m_d3d11On12Device;
- ComPtr<ID3D11DeviceContext> m_d3d11DeviceContext;
- ID3D11Resource** m_wrappedBackBuffers;
- ID3D11RenderTargetView** m_pD3D11RenderTargetView;
-
- UINT m_frameIndex;
- HANDLE m_fenceEvent;
- ComPtr<ID3D12Fence> m_fence;
- UINT64 m_fenceValue;
-
- D3D12RenderTarget* m_pCurrentRenderTarget;
- map<int, D3D12RenderTarget*> m_RenderTargetMap;
-
- std::vector<GpuInterface*> m_gpuInterfaces;
-
- NVHairHeap m_srvUavHeap;
-
- // sample desc
- UINT m_sampleCount;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp
deleted file mode 100644
index 2346683..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.cpp
+++ /dev/null
@@ -1,467 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12RenderInterface.h"
-
-#include "D3D12TextureResource.h"
-#include "D3D12Shaders.h"
-#include "D3D12Buffer.h"
-
-#include "D3D12RenderContext.h"
-
-namespace RenderInterfaceD3D12
-{
- using namespace RenderInterface;
-
- D3D12_BLEND_DESC m_BlendStates[BLEND_STATE_END];
- D3D12_DEPTH_STENCIL_DESC m_DepthStencilStates[DEPTH_STENCIL_STATE_END];
- D3D12_RASTERIZER_DESC m_RasterizerStates[RASTERIZER_STATE_END];
-
- D3D12RenderContext *pRenderContext = D3D12RenderContext::Instance();
-
- SHADER_TYPE m_ShaderType;
- RenderShaderStateKey m_ShaderStateKey;
-
- map<RenderShaderStateKey, RenderShaderState*> m_RenderShaderStates;
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-bool InitDevice(int deviceID)
-{
- pRenderContext->InitDevice();
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- if (!pRenderContext)
- return false;
-
- InitializeShadersD3D12();
- InitializeRenderStates();
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- DestroyShadersD3D12();
-}
-
-RenderShaderState* GetShaderState()
-{
- RenderShaderState* pShaderState = nullptr;
- map<RenderShaderStateKey, RenderShaderState*>::iterator it = m_RenderShaderStates.find(m_ShaderStateKey);
- if (it != m_RenderShaderStates.end())
- {
- pShaderState = it->second;
- }
- else
- {
- pShaderState = new RenderShaderState;
- pShaderState->BlendState = m_BlendStates[m_ShaderStateKey.BlendState];
- pShaderState->DepthStencilState = m_DepthStencilStates[m_ShaderStateKey.DepthStencilState];
- pShaderState->RasterizerState = m_RasterizerStates[m_ShaderStateKey.RasterizerState];
- pShaderState->PrimitiveTopologyType = m_ShaderStateKey.PrimitiveTopologyType;
- if (m_ShaderStateKey.ForShadow)
- {
- pShaderState->RTVFormat = DXGI_FORMAT_R32_FLOAT;
- pShaderState->DSVFormat = DXGI_FORMAT_D32_FLOAT;
- }
- else
- {
- pShaderState->RTVFormat = DXGI_FORMAT_R8G8B8A8_UNORM;
- pShaderState->DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT;
- pShaderState->SampleCount = D3D12RenderContext::Instance()->GetSampleCount();
- }
-
- m_RenderShaderStates[m_ShaderStateKey] = pShaderState;
- }
- return pShaderState;
-}
-//////////////////////////////////////////////////////////////////////////////////////
-void InitializeRenderStates()
-{
- /////////////////////////////////////////////////////////////////////////////////////////
- // alpha blending state descriptors
- /////////////////////////////////////////////////////////////////////////////////////////
-
- // alpha blending enabled
- {
- D3D12_BLEND_DESC desc = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D12_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = true;
- rtDesc.SrcBlend = D3D12_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D12_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D12_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D12_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D12_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- m_BlendStates[BLEND_STATE_ALPHA] = desc;
- }
-
- // no alpha blending
- {
- D3D12_BLEND_DESC desc = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- desc.AlphaToCoverageEnable = false;
- desc.IndependentBlendEnable = false;
-
- D3D12_RENDER_TARGET_BLEND_DESC &rtDesc = desc.RenderTarget[0];
- {
- rtDesc.BlendEnable = false;
- rtDesc.SrcBlend = D3D12_BLEND_SRC_ALPHA;
- rtDesc.DestBlend = D3D12_BLEND_INV_SRC_ALPHA;
- rtDesc.BlendOp = D3D12_BLEND_OP_ADD;
- rtDesc.SrcBlendAlpha = D3D12_BLEND_ZERO;
- rtDesc.DestBlendAlpha = D3D12_BLEND_ONE;
- rtDesc.BlendOpAlpha = D3D12_BLEND_OP_ADD;
- rtDesc.RenderTargetWriteMask = 0x0f;
- }
- m_BlendStates[BLEND_STATE_NONE] = desc;
- }
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // depth and stencil
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D12_DEPTH_STENCIL_DESC depthTestDesc = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- {
- depthTestDesc.DepthEnable = true;
- depthTestDesc.DepthFunc = D3D12_COMPARISON_FUNC_LESS;
- depthTestDesc.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
- depthTestDesc.StencilEnable = false;
- depthTestDesc.StencilReadMask = 0xff;
- depthTestDesc.StencilWriteMask = 0xff;
- }
-
- m_DepthStencilStates[DEPTH_STENCIL_DEPTH_TEST] = depthTestDesc;
-
- D3D12_DEPTH_STENCIL_DESC depthNone = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- {
- depthNone.DepthEnable = false;
- depthNone.DepthFunc = D3D12_COMPARISON_FUNC_LESS;
- depthNone.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ZERO;
- depthNone.StencilEnable = false;
- depthNone.StencilReadMask = 0xff;
- depthNone.StencilWriteMask = 0xff;
- }
-
- m_DepthStencilStates[DEPTH_STENCIL_DEPTH_NONE] = depthNone;
-
- //////////////////////////////////////////////////////////////////////////////////////////////
- // rasterizer
- ///////////////////////////////////////////////////////////////////////////////////////////////
- D3D12_RASTERIZER_DESC rsDesc = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT);
-
- // solid cull front
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_FRONT;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_FRONT] = rsDesc;
- };
-
- // solid cull back
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_BACK;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_BACK] = rsDesc;
- }
-
- // solid cull none
- {
- rsDesc.FillMode = D3D12_FILL_MODE_SOLID;
- rsDesc.CullMode = D3D12_CULL_MODE_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = true;
- rsDesc.DepthBias = 10;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
-
- m_RasterizerStates[RASTERIZER_STATE_FILL_CULL_NONE] = rsDesc;
- }
-
- // wireframe cull none
- {
- rsDesc.FillMode = D3D12_FILL_MODE_WIREFRAME;
- rsDesc.CullMode = D3D12_CULL_MODE_NONE;
- rsDesc.AntialiasedLineEnable = false;
- rsDesc.MultisampleEnable = true;
- rsDesc.FrontCounterClockwise = 0;
- rsDesc.DepthBias = 0;
- rsDesc.DepthBiasClamp = 0;
- rsDesc.SlopeScaledDepthBias = 0;
- rsDesc.DepthClipEnable = true;
- rsDesc.ForcedSampleCount = 0;
- };
-
- m_RasterizerStates[RASTERIZER_STATE_WIRE] = rsDesc;
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleStrip()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyTriangleList()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetPrimitiveTopologyLineList()
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_LINELIST);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////
-void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- D3D12_VERTEX_BUFFER_VIEW* vertexView = GPUBufferD3D12::GetVertexView(pBuffer);
- if (!vertexView)
- return;
-
- vertexView->StrideInBytes = stride;
- ID3D12GraphicsCommandList* m_commandList = pRenderContext->GetGraphicsCommandList();
- m_commandList->IASetVertexBuffers(0, 1, vertexView);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- m_ShaderStateKey.DepthStencilState = state;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- m_ShaderStateKey.RasterizerState = state;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE state)
-{
- m_ShaderStateKey.BlendState = state;
-}
-
-void ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType)
-{
- m_ShaderStateKey.PrimitiveTopologyType = PrimitiveTopologyType;
-}
-
-void ApplyForShadow(int ForShadow)
-{
- m_ShaderStateKey.ForShadow = ForShadow;
-}
-
-void SwitchToDX11()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->SwitchToDX11();
-}
-
-void FlushDX11()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->FlushDX11();
-}
-
-void FlushDX12()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->Flush();
-}
-
-void SubmitGpuWork()
-{
- D3D12RenderContext::Instance()->SubmitGpuWork();
-}
-
-void WaitForGpu()
-{
- D3D12RenderContext* context = D3D12RenderContext::Instance();
- context->WaitForGpu();
- context->UpdateGpuWorkCompleted();
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void SetViewport(const RenderInterface::Viewport& vp)
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
-
- D3D12_VIEWPORT d3dViewport;
-
- d3dViewport.TopLeftX = vp.TopLeftX;
- d3dViewport.TopLeftY = vp.TopLeftY;
-
- d3dViewport.Width = vp.Width;
- d3dViewport.Height = vp.Height;
-
- d3dViewport.MinDepth = vp.MinDepth;
- d3dViewport.MaxDepth = vp.MaxDepth;
-
- pRenderContext->SetViewport(d3dViewport);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(RenderInterface::Viewport& vp)
-{
- D3D12_VIEWPORT d3dViewport;
- pRenderContext->GetViewport(d3dViewport);
-
- vp.TopLeftX = d3dViewport.TopLeftX;
- vp.TopLeftY = d3dViewport.TopLeftY;
-
- vp.Width = d3dViewport.Width;
- vp.Height = d3dViewport.Height;
-
- vp.MinDepth = d3dViewport.MinDepth;
- vp.MaxDepth = d3dViewport.MaxDepth;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Draw(unsigned int vertexCount, unsigned int startCount)
-{
- ID3D12GraphicsCommandList* pCommandList = pRenderContext->GetGraphicsCommandList();
- pCommandList->DrawInstanced(vertexCount, 1, startCount, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return false;
-
- ID3D12Resource* pBuffer = nullptr;
- ThrowIfFailed(pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(ByteWidth),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&pBuffer)));
- if (nullptr == pBuffer)
- {
- return false;
- }
-
- void* pData;
- ThrowIfFailed(pBuffer->Map(0, nullptr, &pData));
- memcpy(pData, pSysMem, ByteWidth);
- pBuffer->Unmap(0, nullptr);
-
- return GPUBufferD3D12::Create(pBuffer, ByteWidth);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return false;
-
- ID3D12Device* pDevice = pContext->GetDevice();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- pContext->NVHairINT_CreateD3D12ReadOnlyBuffer(stride, numElements, pReadOnlyBuffer, pSysMem);
-
- int nIndexInHeap = -1;
- return D3D12TextureResource::Create(pReadOnlyBuffer->m_pBuffer.Get(), pReadOnlyBuffer->getSrvCpuHandle(), nIndexInHeap);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// create read only shader resource buffer
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pGPUBuffer, void* pSysMem, unsigned int ByteWidth)
-{
- ID3D12Resource* pBuffer = GPUBufferD3D12::GetResource(pGPUBuffer);
- if (!pBuffer)
- return;
-
- void* pData;
- ThrowIfFailed(pBuffer->Map(0, nullptr, &pData));
- memcpy(pData, pSysMem, ByteWidth);
- pBuffer->Unmap(0, nullptr);
-
- /*
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return;
-
- ID3D12Device* pDevice = pContext->GetDevice();
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
-
- D3D12_SUBRESOURCE_DATA data = {};
- data.pData = reinterpret_cast<UINT8*>(pSysMem);
- data.RowPitch = ByteWidth;
- data.SlicePitch = data.RowPitch;
-
- ID3D12Resource* m_pBufferUpload = GPUBufferD3D12::GetResourceUpload(pGPUBuffer, pDevice, ByteWidth);
-
- UpdateSubresources<1>(pCommandList, pBuffer, m_pBufferUpload, 0, 0, 1, &data);
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pBuffer,
- D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
- */
-}
-} // end namespace
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h
deleted file mode 100644
index 8168936..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderInterface.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-#include <d3d11.h>
-#include <d3d12.h>
-#include <dxgi1_4.h>
-#include "RenderInterface.h"
-#include "RenderPlugin.h"
-class RenderShaderState;
-// abstract interface to D3D calls
-namespace RenderInterfaceD3D12
-{
- CORERENDER_EXPORT bool InitDevice(int deviceID);
- CORERENDER_EXPORT bool Initialize();
- CORERENDER_EXPORT void Shutdown();
-
- RenderShaderState* GetShaderState();
- void InitializeRenderStates();
-
- CORERENDER_EXPORT void ApplyDepthStencilState(RenderInterface::DEPTH_STENCIL_STATE st);
- CORERENDER_EXPORT void ApplyRasterizerState(RenderInterface::RASTERIZER_STATE st);
- CORERENDER_EXPORT void ApplyBlendState(RenderInterface::BLEND_STATE st);
- CORERENDER_EXPORT void ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType);
- CORERENDER_EXPORT void ApplyForShadow(int ForShadow);
- CORERENDER_EXPORT void SwitchToDX11();
- CORERENDER_EXPORT void FlushDX11();
- CORERENDER_EXPORT void FlushDX12();
- CORERENDER_EXPORT void SubmitGpuWork();
- CORERENDER_EXPORT void WaitForGpu();
-
- CORERENDER_EXPORT void GetViewport(RenderInterface::Viewport& vp);
- CORERENDER_EXPORT void SetViewport(const RenderInterface::Viewport& vp);
-
- CORERENDER_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem);
- CORERENDER_EXPORT GPUShaderResource* CreateShaderResource( unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer);
-
- CORERENDER_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- CORERENDER_EXPORT void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
-
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleStrip();
- CORERENDER_EXPORT void SetPrimitiveTopologyTriangleList();
- CORERENDER_EXPORT void SetPrimitiveTopologyLineList();
-
-
- CORERENDER_EXPORT void Draw(unsigned int vertexCount, unsigned int startCount = 0);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp
deleted file mode 100644
index f115349..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.cpp
+++ /dev/null
@@ -1,384 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "D3D12RenderShader.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12Wrapper.h"
-#include "D3D12RenderContext.h"
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader::D3D12RenderShader()
-{
- m_vertexShader = 0;
- m_vertexShaderSize = 0;
- m_pixelShader = 0;
- m_pixelShaderSize = 0;
-
- m_inputElementDescs = 0;
- m_inputElementDescsNum = 0;
-
- m_pRootSignature = 0;
-
- m_scuHeap = 0;
- m_scuDescriptorSize = 0;
-
- m_samplerHeap = 0;
- m_samplerDescriptorSize = 0;
-
- m_PipelineStates.clear();
-
- for (int i = 0; i < 2; i++)
- {
- m_ConstantBuffer[i] = nullptr;
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader::~D3D12RenderShader()
-{
- for (int i = 0; i < 1; i++)
- {
- SAFE_RELEASE(m_ConstantBuffer[i]);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader* D3D12RenderShader::Create(
- const char *name,
- void* vertexShader, size_t vertexShaderSize, void* pixelShader, size_t pixelShaderSize,
- UINT cbufferSize0, UINT cbufferSize1,
- D3D12_INPUT_ELEMENT_DESC* pElemDesc, UINT numElements,
- int ShaderResourceNum, int UnorderedAccessNum, int SamplerNum)
-{
- D3D12RenderContext* pAdapter = D3D12RenderContext::Instance();
- ID3D12Device* m_device = pAdapter->GetDevice();
-
- D3D12RenderShader* pShader = new D3D12RenderShader;
-
- int sizeofuint = sizeof(UINT8);
- pShader->m_vertexShaderSize = vertexShaderSize;
- if (vertexShaderSize > 0)
- {
- pShader->m_vertexShader = new UINT8[vertexShaderSize / sizeofuint];
- memcpy(pShader->m_vertexShader, vertexShader, vertexShaderSize);
- }
- pShader->m_pixelShaderSize = pixelShaderSize;
- if (pixelShaderSize > 0)
- {
- pShader->m_pixelShader = new UINT8[pixelShaderSize / sizeofuint];
- memcpy(pShader->m_pixelShader, pixelShader, pixelShaderSize);
- }
-
- pShader->m_inputElementDescsNum = numElements;
- pShader->m_inputElementDescs = pElemDesc;
-
- CD3DX12_DESCRIPTOR_RANGE ranges[3];
- CD3DX12_ROOT_PARAMETER rootParameters[2];
-
- int rangesindex = 0;
- int rootParametersindex = 0;
-
- if (ShaderResourceNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, ShaderResourceNum, 0);
- }
- int ConstantBufferNum = 0;
- if (cbufferSize0 > 0)
- {
- ConstantBufferNum++;
- }
- if (cbufferSize1 > 0)
- {
- ConstantBufferNum++;
- }
- if (ConstantBufferNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_CBV, ConstantBufferNum, 0);
- }
- if (UnorderedAccessNum > 0)
- {
- ranges[rangesindex++].Init(D3D12_DESCRIPTOR_RANGE_TYPE_UAV, UnorderedAccessNum, 0);
- }
- if (rangesindex > 0)
- {
- rootParameters[rootParametersindex++].InitAsDescriptorTable(rangesindex, &ranges[0], D3D12_SHADER_VISIBILITY_ALL);
- }
-
- if (SamplerNum > 0)
- {
- ranges[rangesindex].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, SamplerNum, 0);
- rootParameters[rootParametersindex++].InitAsDescriptorTable(1, &ranges[rangesindex], D3D12_SHADER_VISIBILITY_ALL);
- }
-
- D3D12_ROOT_SIGNATURE_FLAGS rootSignatureFlags =
- D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS |
- D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS;
- CD3DX12_ROOT_SIGNATURE_DESC rootSignatureDesc;
- rootSignatureDesc.Init(rootParametersindex, rootParameters, 0, nullptr, rootSignatureFlags);
-
- ComPtr<ID3DBlob> signature;
- ComPtr<ID3DBlob> error;
- ThrowIfFailed(D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
- ThrowIfFailed(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&pShader->m_pRootSignature)));
-
- int numSCU = ShaderResourceNum + ConstantBufferNum + UnorderedAccessNum;
- if (numSCU > 0)
- {
- D3D12_DESCRIPTOR_HEAP_DESC scuHeapDesc = {};
- scuHeapDesc.NumDescriptors = numSCU;
- scuHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
- scuHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&scuHeapDesc, IID_PPV_ARGS(&pShader->m_scuHeap)));
- pShader->m_scuDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
-
- if (ConstantBufferNum > 0)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE scuHandle(pShader->m_scuHeap->GetCPUDescriptorHandleForHeapStart(),
- ShaderResourceNum, pShader->m_scuDescriptorSize);
-
- if (cbufferSize0 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize0, 0);
-
- // Describe and create a constant buffer view.
- D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
- // CB size is required to be 256-byte aligned.
- cbvDesc.SizeInBytes = (cbufferSize0 + 255) & ~255;
- cbvDesc.BufferLocation = pShader->m_ConstantBuffer[0]->GetGPUVirtualAddress();
- m_device->CreateConstantBufferView(&cbvDesc, scuHandle);
- scuHandle.Offset(pShader->m_scuDescriptorSize);
- }
- if (cbufferSize1 > 0)
- {
- pShader->CreateParamBuffer(cbufferSize1, 1);
-
- // Describe and create a constant buffer view.
- D3D12_CONSTANT_BUFFER_VIEW_DESC cbvDesc = {};
- // CB size is required to be 256-byte aligned.
- cbvDesc.SizeInBytes = (cbufferSize1 + 255) & ~255;
- cbvDesc.BufferLocation = pShader->m_ConstantBuffer[1]->GetGPUVirtualAddress();
- m_device->CreateConstantBufferView(&cbvDesc, scuHandle);
- }
- }
- }
-
- if (SamplerNum > 0)
- {
- D3D12_DESCRIPTOR_HEAP_DESC samplerHeapDesc = {};
- samplerHeapDesc.NumDescriptors = SamplerNum;
- samplerHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER;
- samplerHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&samplerHeapDesc, IID_PPV_ARGS(&pShader->m_samplerHeap)));
- pShader->m_samplerDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER);
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE samplerHandle(pShader->m_samplerHeap->GetCPUDescriptorHandleForHeapStart());
-
- if(SamplerNum == 1)
- {
- D3D12_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(pointClampSamplerDesc, samplerHandle);
- }
- else if(SamplerNum == 2)
- {
- D3D12_SAMPLER_DESC linearSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- D3D12_TEXTURE_ADDRESS_MODE_WRAP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(linearSamplerDesc, samplerHandle);
- samplerHandle.Offset(pShader->m_samplerDescriptorSize);
-
- D3D12_SAMPLER_DESC pointClampSamplerDesc[1] = {
- D3D12_FILTER_MIN_MAG_MIP_POINT,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- D3D12_TEXTURE_ADDRESS_MODE_CLAMP,
- 0.0, 0, D3D12_COMPARISON_FUNC_NEVER,
- 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, D3D12_FLOAT32_MAX,
- };
- m_device->CreateSampler(pointClampSamplerDesc, samplerHandle);
- }
- }
-
- return pShader;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::SetConstantBuffer()
-{
- return;
-}
-
-ID3D12PipelineState* D3D12RenderShader::GetPipelineState(RenderShaderState* pShaderState)
-{
- ID3D12PipelineState* pPipelineState = nullptr;
- map<RenderShaderState*, ID3D12PipelineState*>::iterator it = m_PipelineStates.find(pShaderState);
- if (it == m_PipelineStates.end())
- {
- D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
- psoDesc.InputLayout = { m_inputElementDescs, m_inputElementDescsNum };
- psoDesc.pRootSignature = m_pRootSignature;
- psoDesc.VS = { reinterpret_cast<UINT8*>(m_vertexShader), m_vertexShaderSize };
- psoDesc.PS = { reinterpret_cast<UINT8*>(m_pixelShader), m_pixelShaderSize };
- psoDesc.BlendState = pShaderState->BlendState;
- psoDesc.RasterizerState = pShaderState->RasterizerState;
- psoDesc.DepthStencilState = pShaderState->DepthStencilState;
- psoDesc.SampleMask = UINT_MAX;
- psoDesc.PrimitiveTopologyType = pShaderState->PrimitiveTopologyType;
- psoDesc.NumRenderTargets = 1;
- psoDesc.RTVFormats[0] = pShaderState->RTVFormat;
- psoDesc.DSVFormat = pShaderState->DSVFormat;
- psoDesc.SampleDesc.Count = pShaderState->SampleCount;
-
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- ThrowIfFailed(pDevice->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&pPipelineState)));
-
- m_PipelineStates[pShaderState] = pPipelineState;
- }
- else
- {
- pPipelineState = it->second;
- }
- return pPipelineState;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::MakeCurrent()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- ID3D12GraphicsCommandList* m_commandList = pContext->GetGraphicsCommandList();
-
- RenderShaderState* pShaderState = RenderInterfaceD3D12::GetShaderState();
- if (nullptr == pShaderState)
- {
- return;
- }
-
- ID3D12PipelineState* pPipelineState = GetPipelineState(pShaderState);
-
- m_commandList->SetGraphicsRootSignature(m_pRootSignature);
- m_commandList->SetPipelineState(pPipelineState);
-
- vector<ID3D12DescriptorHeap*> heaps;
- if (nullptr != m_scuHeap)
- {
- heaps.push_back(m_scuHeap);
- }
- if (nullptr != m_samplerHeap)
- {
- heaps.push_back(m_samplerHeap);
- }
- if (heaps.size() > 0)
- {
- m_commandList->SetDescriptorHeaps(heaps.size(), heaps.data());
- }
- int heapindex = 0;
- if (nullptr != m_scuHeap)
- {
- m_commandList->SetGraphicsRootDescriptorTable(heapindex++, m_scuHeap->GetGPUDescriptorHandleForHeapStart());
- }
- if (nullptr != m_samplerHeap)
- {
- m_commandList->SetGraphicsRootDescriptorTable(heapindex++, m_samplerHeap->GetGPUDescriptorHandleForHeapStart());
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::Disable()
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderShader::CreateParamBuffer( UINT sizeBuffer, UINT slot )
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return false;
-
- SAFE_RELEASE(m_ConstantBuffer[slot]);
-
- ThrowIfFailed(pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(sizeBuffer),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&m_ConstantBuffer[slot])));
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void* D3D12RenderShader::MapParam(UINT slot)
-{
- if (!m_ConstantBuffer[slot])
- return 0;
-
- void* pData;
- ThrowIfFailed(m_ConstantBuffer[slot]->Map(0, nullptr, &pData));
- return pData;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderShader::UnmapParam( UINT slot )
-{
- if (!m_ConstantBuffer[slot])
- return;
-
- m_ConstantBuffer[slot]->Unmap(0, nullptr);
-}
-
-void D3D12RenderShader::BindShaderResource(UINT slot, CD3DX12_CPU_DESCRIPTOR_HANDLE& handle)
-{
- ID3D12Device* pDevice = D3D12RenderContext::Instance()->GetDevice();
- if (!pDevice)
- return;
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE destHandle(m_scuHeap->GetCPUDescriptorHandleForHeapStart(), slot, m_scuDescriptorSize);
- if (handle.ptr != 0)
- {
- pDevice->CopyDescriptorsSimple(1, destHandle, handle, D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
- }
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h
deleted file mode 100644
index d43783c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderShader.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d11.h>
-#include <d3d12.h>
-
-#include "D3D12RenderTarget.h"
-
-class D3D12RenderShader
-{
-public:
- D3D12RenderShader();
- ~D3D12RenderShader();
-
- static D3D12RenderShader* Create(
- const char *name,
- void* pVSBlob, size_t vsBlobSize,
- void* pPSBlob, size_t psBlobSize,
- UINT cbufferSize0 = 0, UINT cbufferSize1 = 0,
- D3D12_INPUT_ELEMENT_DESC* pElemDesc = 0, UINT numElements = 0,
- int ShaderResourceNum = 0, int UnorderedAccessNum = 0, int SamplerNum = 0);
-
- void MakeCurrent();
- void Disable();
- void SetConstantBuffer();
-
- void* MapParam(UINT slot = 0);
- void UnmapParam(UINT slot = 0);
-
- void BindShaderResource(UINT slot, CD3DX12_CPU_DESCRIPTOR_HANDLE& handle);
-
-protected:
- bool CreateParamBuffer(UINT sizeBuffer, UINT slot = 0);
-
-private:
- ID3D12PipelineState* GetPipelineState(RenderShaderState* pShaderState);
-
- void* m_vertexShader;
- SIZE_T m_vertexShaderSize;
- void* m_pixelShader;
- SIZE_T m_pixelShaderSize;
-
- D3D12_INPUT_ELEMENT_DESC* m_inputElementDescs;
- UINT m_inputElementDescsNum;
-
- ID3D12RootSignature* m_pRootSignature;
-
- ID3D12DescriptorHeap* m_scuHeap;
- int m_scuDescriptorSize;
-
- ID3D12Resource* m_ConstantBuffer[2];
-
- ID3D12DescriptorHeap* m_samplerHeap;
- int m_samplerDescriptorSize;
-
- map<RenderShaderState*, ID3D12PipelineState*> m_PipelineStates;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp
deleted file mode 100644
index 301cad6..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.cpp
+++ /dev/null
@@ -1,371 +0,0 @@
-#include "D3D12RenderTarget.h"
-#include "D3D12RenderContext.h"
-
-D3D12RenderTarget::D3D12RenderTarget(int renderTargetIndex, int nRenderTargetCount)
-{
- m_RenderTargetIndex = renderTargetIndex;
-
- m_RenderTargetCount = nRenderTargetCount;
-
- m_BackBuffers = nullptr;
- m_RenderTargets = nullptr;
- m_DepthStencil = nullptr;
-
- m_pRenderContext = D3D12RenderContext::Instance();
-
- if (m_RenderTargetCount > 0)
- {
- m_BackBuffers = new ID3D12Resource*[m_RenderTargetCount];
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_BackBuffers[n] = nullptr;
- }
-
- m_RenderTargets = new ID3D12Resource*[m_RenderTargetCount];
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_RenderTargets[n] = nullptr;
- }
- }
-
- if (renderTargetIndex == 0)
- {
- m_rtvClearValue.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
- m_rtvClearValue.Color[0] = 0.0;
- m_rtvClearValue.Color[1] = 0.0;
- m_rtvClearValue.Color[2] = 0.0;
- m_rtvClearValue.Color[3] = 1.0;
- }
- else
- {
- m_rtvClearValue.Format = DXGI_FORMAT_R32_FLOAT;
- m_rtvClearValue.Color[0] = FLT_MAX;
- m_rtvClearValue.Color[1] = FLT_MAX;
- m_rtvClearValue.Color[2] = FLT_MAX;
- m_rtvClearValue.Color[3] = FLT_MAX;
- }
-
- if (renderTargetIndex == 0)
- {
- m_dsvClearValue.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
- }
- else
- {
- m_dsvClearValue.Format = DXGI_FORMAT_D32_FLOAT;
- }
- m_dsvClearValue.DepthStencil.Depth = 1.0f;
- m_dsvClearValue.DepthStencil.Stencil = 0;
-}
-
-D3D12RenderTarget::~D3D12RenderTarget()
-{
- if (nullptr != m_BackBuffers)
- {
- delete[] m_BackBuffers;
- m_BackBuffers = nullptr;
- }
-
- if (nullptr != m_RenderTargets)
- {
- delete[] m_RenderTargets;
- m_RenderTargets = nullptr;
- }
-}
-
-ID3D12Resource* D3D12RenderTarget::GetDepthStencilResource()
-{
- return m_DepthStencil;
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderTarget::GetRenderTargetViewHandle()
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
- return rtvHandle;
-}
-
-D3D12_CPU_DESCRIPTOR_HANDLE D3D12RenderTarget::GetDepthStencilViewHandle()
-{
- CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle(m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- return dsvHandle;
-}
-
-void D3D12RenderTarget::CreateResource(int nWidth, int nHeight)
-{
- ID3D12Device* m_device = m_pRenderContext->GetDevice();
- int nSampleCount = m_pRenderContext->GetSampleCount();
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
-
- if (m_RenderTargetIndex == 0)
- {
- IDXGISwapChain3* m_swapChain = m_pRenderContext->GetSwapChain();
-
- // Create a RTV for each frame.
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- ThrowIfFailed(m_swapChain->GetBuffer(n, IID_PPV_ARGS(&m_BackBuffers[n])));
-
- if (nSampleCount > 1)
- {
- // If we are multi-sampling - create a render target separate from the back buffer
- CD3DX12_HEAP_PROPERTIES heapProps(D3D12_HEAP_TYPE_DEFAULT);
- D3D12_RESOURCE_DESC desc = m_BackBuffers[n]->GetDesc();
-
- desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
- desc.SampleDesc.Count = nSampleCount;
- desc.SampleDesc.Quality = 0;
- desc.Alignment = 0;
-
- ThrowIfFailed(m_device->CreateCommittedResource(&heapProps, D3D12_HEAP_FLAG_NONE, &desc, D3D12_RESOURCE_STATE_RENDER_TARGET,
- &m_rtvClearValue, IID_PPV_ARGS(&m_RenderTargets[n])));
- }
- else
- {
- // The render targets and back buffers are the same thing
- m_RenderTargets[n] = m_BackBuffers[n];
- }
-
- m_device->CreateRenderTargetView(m_RenderTargets[n], nullptr, rtvHandle);
- rtvHandle.Offset(1, m_rtvDescriptorSize);
- }
-
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_dsvClearValue.Format,
- nWidth, nHeight, 1, 1, nSampleCount, 0,
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
-
- ThrowIfFailed(m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT), // No need to read/write by CPU
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_DEPTH_WRITE,
- &m_dsvClearValue,
- IID_PPV_ARGS(&m_DepthStencil)));
-
- D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc = {};
- dsvDesc.ViewDimension = nSampleCount <= 1 ? D3D12_DSV_DIMENSION_TEXTURE2D : D3D12_DSV_DIMENSION_TEXTURE2DMS;
- dsvDesc.Format = m_dsvClearValue.Format;
- dsvDesc.Texture2D.MipSlice = 0;
- dsvDesc.Flags = D3D12_DSV_FLAG_NONE;
- m_device->CreateDepthStencilView(m_DepthStencil, &dsvDesc, m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- }
- }
- else
- {
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_rtvClearValue.Format,
- nWidth, nHeight, 1, 1, 1, 0,
- D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET);
-
- D3D12_RENDER_TARGET_VIEW_DESC rtvDesc = {};
- rtvDesc.Format = m_rtvClearValue.Format;
- rtvDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D;
- rtvDesc.Texture2D.MipSlice = 0;
- rtvDesc.Texture2D.PlaneSlice = 0;
-
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_RENDER_TARGET,
- &m_rtvClearValue,
- IID_PPV_ARGS(&m_RenderTargets[n]));
- m_device->CreateRenderTargetView(m_RenderTargets[n], &rtvDesc, rtvHandle);
- rtvHandle.Offset(1, m_rtvDescriptorSize);
- }
- }
-
- {
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(m_dsvClearValue.Format,
- nWidth, nHeight, 1, 1, 1, 0,
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL);
-
- m_device->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_DEPTH_WRITE,
- &m_dsvClearValue,
- IID_PPV_ARGS(&m_DepthStencil));
-
- D3D12_DEPTH_STENCIL_VIEW_DESC dsvDesc = {};
- dsvDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D;
- dsvDesc.Format = m_dsvClearValue.Format;
- dsvDesc.Texture2D.MipSlice = 0;
- dsvDesc.Flags = D3D12_DSV_FLAG_NONE;
- m_device->CreateDepthStencilView(m_DepthStencil, &dsvDesc, m_dsvHeap.Get()->GetCPUDescriptorHandleForHeapStart());
- }
- }
-}
-
-void D3D12RenderTarget::OnCreate(int nWidth, int nHeight)
-{
- ID3D12Device* m_device = m_pRenderContext->GetDevice();
-
- // Create descriptor heaps.
- {
- // Describe and create a render target view (RTV) descriptor heap.
- D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {};
- rtvHeapDesc.NumDescriptors = m_RenderTargetCount;
- rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
- rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_rtvHeap)));
-
- m_rtvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
-
- // Describe and create a render target view (RTV) descriptor heap.
- D3D12_DESCRIPTOR_HEAP_DESC dsvHeapDesc = {};
- dsvHeapDesc.NumDescriptors = 1;
- dsvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_DSV;
- dsvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
- ThrowIfFailed(m_device->CreateDescriptorHeap(&dsvHeapDesc, IID_PPV_ARGS(&m_dsvHeap)));
-
- m_dsvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_DSV);
- }
-
- OnResize(nWidth, nHeight);
-}
-
-void D3D12RenderTarget::OnResize(int nWidth, int nHeight)
-{
- CreateResource(nWidth, nHeight);
-
- // viewport and scissor rect
- {
- memset(&m_viewport, 0, sizeof(m_viewport));
- m_viewport.Width = nWidth;
- m_viewport.Height = nHeight;
- m_viewport.MaxDepth = 1.0;
-
- memset(&m_scissorRect, 0, sizeof(m_scissorRect));
- m_scissorRect.right = nWidth;
- m_scissorRect.bottom = nHeight;
- }
-}
-
-void D3D12RenderTarget::OnDestroy()
-{
- for (int n = 0; n < m_RenderTargetCount; n++)
- {
- Safe_Release(m_RenderTargets[n]);
-
- if (m_pRenderContext->GetSampleCount() > 1)
- {
- Safe_Release(m_BackBuffers[n]);
- }
- }
- Safe_Release(m_DepthStencil);
-}
-
-void D3D12RenderTarget::PreRender(bool doClear)
-{
- ID3D12GraphicsCommandList* m_commandList = m_pRenderContext->GetGraphicsCommandList();
- m_commandList->RSSetViewports(1, &m_viewport);
- m_commandList->RSSetScissorRects(1, &m_scissorRect);
-
- int numSamples = 1;
- UINT m_frameIndex = 0;
- D3D12_RESOURCE_STATES state = D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
- if (m_RenderTargetIndex == 0)
- {
- numSamples = m_pRenderContext->GetSampleCount();
- m_frameIndex = m_pRenderContext->GetFrameIndex();
- if (numSamples <= 1)
- {
- state = D3D12_RESOURCE_STATE_PRESENT;
- }
- else
- {
- state = D3D12_RESOURCE_STATE_RESOLVE_SOURCE;
- }
- }
-
- ID3D12Resource* pRenderTarget = m_RenderTargets[m_frameIndex];
-
- m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(pRenderTarget, state, D3D12_RESOURCE_STATE_RENDER_TARGET));
-
- CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
- CD3DX12_CPU_DESCRIPTOR_HANDLE dsvHandle(m_dsvHeap->GetCPUDescriptorHandleForHeapStart());
- m_commandList->OMSetRenderTargets(1, &rtvHandle, FALSE, &dsvHandle);
-
- if (doClear)
- {
- m_commandList->ClearRenderTargetView(rtvHandle, m_rtvClearValue.Color, 0, nullptr);
- m_commandList->ClearDepthStencilView(dsvHandle, D3D12_CLEAR_FLAG_DEPTH,
- m_dsvClearValue.DepthStencil.Depth, m_dsvClearValue.DepthStencil.Stencil, 0, nullptr);
- }
-}
-
-void D3D12RenderTarget::PostRender()
-{
- ID3D12GraphicsCommandList* m_commandList = m_pRenderContext->GetGraphicsCommandList();
-
- int numSamples = 1;
- UINT m_frameIndex = 0;
- D3D12_RESOURCE_STATES state = D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
- if (m_RenderTargetIndex == 0)
- {
- numSamples = m_pRenderContext->GetSampleCount();
- m_frameIndex = m_pRenderContext->GetFrameIndex();
- state = D3D12_RESOURCE_STATE_PRESENT;
- }
-
- if (numSamples <= 1)
- {
- ID3D12Resource* renderTarget = m_RenderTargets[m_frameIndex];
- CD3DX12_RESOURCE_BARRIER barrier(CD3DX12_RESOURCE_BARRIER::Transition(renderTarget, D3D12_RESOURCE_STATE_RENDER_TARGET, state));
- m_commandList->ResourceBarrier(1, &barrier);
- }
- else
- {
- ID3D12Resource* backBuffer = m_BackBuffers[m_frameIndex];
- ID3D12Resource* renderTarget = m_RenderTargets[m_frameIndex];
-
- // Barriers to wait for the render target, and the backbuffer to be in correct state
- {
- D3D12_RESOURCE_BARRIER barriers[] =
- {
- CD3DX12_RESOURCE_BARRIER::Transition(renderTarget, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_RESOLVE_SOURCE),
- CD3DX12_RESOURCE_BARRIER::Transition(backBuffer, D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RESOLVE_DEST),
- };
- m_commandList->ResourceBarrier(2, barriers);
- }
- // Do the resolve...
- m_commandList->ResolveSubresource(backBuffer, 0, renderTarget, 0, m_rtvClearValue.Format);
- // Barrier until can present
- {
- CD3DX12_RESOURCE_BARRIER barrier(CD3DX12_RESOURCE_BARRIER::Transition(backBuffer, D3D12_RESOURCE_STATE_RESOLVE_DEST, D3D12_RESOURCE_STATE_PRESENT));
- m_commandList->ResourceBarrier(1, &barrier);
- }
- }
-}
-
-void D3D12RenderTarget::SetClearColor(float r, float g, float b, float a, float depth, float stencil)
-{
- m_rtvClearValue.Color[0] = r;
- m_rtvClearValue.Color[1] = g;
- m_rtvClearValue.Color[2] = b;
- m_rtvClearValue.Color[3] = a;
-
- m_dsvClearValue.DepthStencil.Depth = depth;
- m_dsvClearValue.DepthStencil.Stencil = stencil;
-}
-
-ID3D12Resource* D3D12RenderTarget::GetTexture(int nIndex, bool bRenderTarget)
-{
- if (nIndex < 0 || nIndex > m_RenderTargetCount)
- return nullptr;
-
- if (bRenderTarget)
- {
- return m_RenderTargets[nIndex];
- }
- else
- {
- return m_BackBuffers[nIndex];
- }
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h
deleted file mode 100644
index 8ae0b7d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RenderTarget.h
+++ /dev/null
@@ -1,110 +0,0 @@
-#pragma once
-
-class D3D12RenderContext;
-
-#include "RenderInterface.h"
-using namespace RenderInterface;
-
-#include <d3d12.h>
-#include <d3d11on12.h>
-#include <dxgi1_4.h>
-#include <D3Dcompiler.h>
-#include <DirectXMath.h>
-#include "d3dx12.h"
-#include <string>
-#include <vector>
-#include <map>
-#include <wrl.h>
-#include <shellapi.h>
-using namespace std;
-using namespace DirectX;
-using namespace Microsoft::WRL;
-
-#ifndef Safe_Delete
-#define Safe_Delete(p) { if (p) { delete (p); (p) = nullptr; } }
-#endif // !Safe_Delete
-#ifndef Safe_Release
-#define Safe_Release(p) { if (p) { p->Release(); (p) = nullptr; } }
-#endif // !Safe_Delete
-
-inline void ThrowIfFailed(HRESULT hr)
-{
- if (FAILED(hr))
- {
- throw;
- }
-}
-
-typedef struct RenderShaderStateKey
-{
- BLEND_STATE BlendState = BLEND_STATE_NONE;
- RASTERIZER_STATE RasterizerState = RASTERIZER_STATE_FILL_CULL_NONE;
- DEPTH_STENCIL_STATE DepthStencilState = DEPTH_STENCIL_DEPTH_TEST;
- D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
- int ForShadow = 0;
-
- bool operator <(const RenderShaderStateKey &other) const
- {
- int key = (((BlendState * 10 + RasterizerState) * 10 + DepthStencilState) * 10 + PrimitiveTopologyType) * 10 + ForShadow;
- int otherkey = (((other.BlendState * 10 + other.RasterizerState) * 10 + other.DepthStencilState) * 10 + other.PrimitiveTopologyType) * 10 + other.ForShadow;
- return key < otherkey;
- }
-} RenderShaderStateKey;
-
-typedef struct RenderShaderState
-{
- D3D12_BLEND_DESC BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT);
- D3D12_RASTERIZER_DESC RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT);
- D3D12_DEPTH_STENCIL_DESC DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT);
- D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
- DXGI_FORMAT RTVFormat = DXGI_FORMAT_R8G8B8A8_UNORM;
- DXGI_FORMAT DSVFormat = DXGI_FORMAT_D24_UNORM_S8_UINT;
- int SampleCount = 1;
-} RenderShaderState;
-
-class D3D12RenderTarget
-{
-public:
- D3D12RenderTarget(int renderTargetIndex, int nRenderTargetCount = 1);
- ~D3D12RenderTarget();
-
- void OnCreate(int nWidth, int nHeight);
- void OnResize(int nWidth, int nHeight);
- void OnDestroy();
-
- void PreRender(bool doClear = false);
- void PostRender();
-
- void SetClearColor(float r, float g, float b, float a = 1.0, float depth = 1.0, float stencil = 0.0);
-
- ID3D12Resource* GetTexture(int nIndex = 0, bool bRenderTarget = true);
-
- D3D12_VIEWPORT m_viewport;
-
- ID3D12Resource* GetDepthStencilResource();
- D3D12_CPU_DESCRIPTOR_HANDLE GetRenderTargetViewHandle();
- D3D12_CPU_DESCRIPTOR_HANDLE GetDepthStencilViewHandle();
-
-private:
- void CreateResource(int nWidth, int nHeight);
-
- int m_RenderTargetIndex;
- int m_RenderTargetCount;
-
- ID3D12Resource** m_BackBuffers;
- ID3D12Resource** m_RenderTargets;
- ID3D12Resource* m_DepthStencil;
-
- ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
- UINT m_rtvDescriptorSize;
- ComPtr<ID3D12DescriptorHeap> m_dsvHeap;
- UINT m_dsvDescriptorSize;
-
- D3D12_RECT m_scissorRect;
-
- D3D12RenderContext* m_pRenderContext;
-
- D3D12_CLEAR_VALUE m_rtvClearValue;
- D3D12_CLEAR_VALUE m_dsvClearValue;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp
deleted file mode 100644
index b640ebd..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12RendererWindow.h"
-
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12RenderContext.h"
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderWindow::D3D12RenderWindow()
-{
- m_pRenderContext = D3D12RenderContext::Instance();
-
- m_pDialogResourceManager = 0;
- m_pTextHelper = 0;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderWindow::~D3D12RenderWindow()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderWindow::Create( HWND hWnd, unsigned int nSamples )
-{
- m_pRenderContext->SetSampleCount(nSamples);
-
- RECT rc;
- GetClientRect((HWND)hWnd, &rc);
- int wBuf = rc.right - rc.left;
- int hBuf = rc.bottom- rc.top;
-
- ID3D11Device *pDevice = m_pRenderContext->GetDevice11();
- ID3D11DeviceContext* pDeviceContext = m_pRenderContext->GetDeviceContext();
- if (nullptr != pDevice && nullptr != pDeviceContext)
- {
- m_pDialogResourceManager = new CDXUTDialogResourceManager;
- m_pDialogResourceManager->OnD3D11CreateDevice(pDevice, pDeviceContext);
- m_pTextHelper = new CDXUTTextHelper(pDevice, pDeviceContext, m_pDialogResourceManager, 15);
- }
-
- m_pRenderContext->InitSwapchain(wBuf, hBuf, hWnd);
- Resize(wBuf, hBuf);
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Free()
-{
- FreeBuffer();
-
- SAFE_DELETE(m_pTextHelper);
-
- if (m_pDialogResourceManager)
- {
- m_pDialogResourceManager->OnD3D11DestroyDevice();
- SAFE_DELETE(m_pDialogResourceManager);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::FreeBuffer()
-{
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Present()
-{
-// m_pRenderContext->ReleaseRenderTarget();
-
-// m_pRenderContext->PostRender();
-
- m_pRenderContext->Present();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void D3D12RenderWindow::Clear(float r, float g, float b)
-{
- m_pRenderContext->PreRender();
-
- m_pRenderContext->SetClearColor(0, r, g, b);
- m_pRenderContext->AcquireRenderTarget(true);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool D3D12RenderWindow::Resize( int w, int h )
-{
- assert(w > 0 && h > 0);
-
- m_pRenderContext->ResizeSwapchain(w, h);
-
- if (m_pDialogResourceManager)
- {
- ID3D11Device *pDevice = m_pRenderContext->GetDevice11();
- D3D12_RESOURCE_DESC descTex2D = m_pRenderContext->GetBackBufferDesc();
-
- DXGI_SURFACE_DESC backbufferDesc;
- backbufferDesc.Width = descTex2D.Width;
- backbufferDesc.Height = descTex2D.Height;
- backbufferDesc.Format = descTex2D.Format;
- backbufferDesc.SampleDesc = descTex2D.SampleDesc;
-
- m_pDialogResourceManager->OnD3D11ResizedSwapChain(pDevice, &backbufferDesc);
- }
-
- return true;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h
deleted file mode 100644
index abd5d9b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12RendererWindow.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <d3d12.h>
-class D3D12RenderContext;
-// DXUT stuffs for text rendering
-class CDXUTDialogResourceManager;
-class CDXUTTextHelper;
-
-struct D3D12RenderWindow
-{
-public:
- D3D12RenderWindow();
- ~D3D12RenderWindow();
-
- bool Create(HWND hWnd, unsigned int nSamples = 1);
- bool Resize(int w, int h);
- void Present();
- void Clear(float r, float g, float b);
-
- CDXUTDialogResourceManager* m_pDialogResourceManager;
- CDXUTTextHelper* m_pTextHelper;
-
-private:
- void Free();
- void FreeBuffer();
-
- D3D12RenderContext* m_pRenderContext;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp
deleted file mode 100644
index 0c07409..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Shaders.h"
-
-#include "MeshShaderParam.h"
-#include "LightShaderParam.h"
-
-//#include <Nv/Blast/NvHairSdk.h>
-#include "D3D12RenderShader.h"
-#include "D3D12RenderContext.h"
-#include "D3D12TextureResource.h"
-using namespace RenderInterface;
-
-D3D12_INPUT_ELEMENT_DESC layoutBodyRender[] =
-{
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "VERTEX_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "FACE_NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 24, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 36, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 48, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "VERTEX_ID", 0, DXGI_FORMAT_R32_FLOAT, 0, 56, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
-};
-
-D3D12_INPUT_ELEMENT_DESC layout_Position_And_Color[] =
-{
- { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
- { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
-};
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Common shader settings
-//static D3D12RenderShader* g_pShaders[SHADER_TYPE_END];
-static std::map<int, D3D12RenderShader*> g_pShaders;
-/*
-namespace BodyShaderBlobs
-{
- #include "Shaders/BodyShader_VS.h"
- #include "Shaders/BodyShader_PS.h"
-}
-
-namespace BodyShadowBlobs
-{
- #include "Shaders/BodyShadow_VS.h"
- #include "Shaders/BodyShadow_PS.h"
-}
-
-namespace ScreenQuadBlobs
-{
- #include "Shaders/ScreenQuad_VS.h"
- #include "Shaders/ScreenQuad_PS.h"
-}
-
-namespace ScreenQuadColorBlobs
-{
- #include "Shaders/ScreenQuadColor_VS.h"
- #include "Shaders/ScreenQuadColor_PS.h"
-}
-
-namespace VisualizeShadowBlobs
-{
- #include "Shaders/VisualizeShadow_VS.h"
- #include "Shaders/VisualizeShadow_PS.h"
-}
-
-namespace ColorBlobs
-{
- #include "Shaders/Color_VS.h"
- #include "Shaders/Color_PS.h"
-}
-*/
-//////////////////////////////////////////////////////////////////////////
-bool InitializeShadersD3D12()
-{
- /*
- UINT numElements = sizeof(layoutBodyRender) / sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_MESH_RENDERING] = D3D12RenderShader::Create("MeshRenderShader",
- (void*)BodyShaderBlobs::g_vs_main, sizeof(BodyShaderBlobs::g_vs_main),
- (void*)BodyShaderBlobs::g_ps_main, sizeof(BodyShaderBlobs::g_ps_main),
- sizeof(MeshShaderParam), 0,
- &layoutBodyRender[0], numElements,
- 10, 0, 2);
-
- g_pShaders[SHADER_TYPE_MESH_SHADOW] = D3D12RenderShader::Create("MeshShadowShader",
- (void*)BodyShadowBlobs::g_vs_main, sizeof(BodyShadowBlobs::g_vs_main),
- (void*)BodyShadowBlobs::g_ps_main, sizeof(BodyShadowBlobs::g_ps_main),
- sizeof(MeshShadowShaderParam), 0,
- &layoutBodyRender[0], numElements,
- 2);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD] = D3D12RenderShader::Create("ScreenQuadShader",
- (void*)ScreenQuadBlobs::g_vs_main, sizeof(ScreenQuadBlobs::g_vs_main),
- (void*)ScreenQuadBlobs::g_ps_main, sizeof(ScreenQuadBlobs::g_ps_main),
- 0, 0,
- 0, 0,
- 1, 0, 1);
-
- g_pShaders[SHADER_TYPE_SCREEN_QUAD_COLOR] = D3D12RenderShader::Create("ScreenQuadColorShader",
- (void*)ScreenQuadColorBlobs::g_vs_main, sizeof(ScreenQuadColorBlobs::g_vs_main),
- (void*)ScreenQuadColorBlobs::g_ps_main, sizeof(ScreenQuadColorBlobs::g_ps_main));
-
- g_pShaders[SHADER_TYPE_VISUALIZE_SHADOW] = D3D12RenderShader::Create("VisualizeShadowShader",
- (void*)VisualizeShadowBlobs::g_vs_main, sizeof(VisualizeShadowBlobs::g_vs_main),
- (void*)VisualizeShadowBlobs::g_ps_main, sizeof(VisualizeShadowBlobs::g_ps_main),
- sizeof(ShadowVizParam), 0,
- 0, 0,
- 1, 0, 1);
-
- UINT numElements2 = sizeof(layout_Position_And_Color) / sizeof(D3D11_INPUT_ELEMENT_DESC);
-
- g_pShaders[SHADER_TYPE_SIMPLE_COLOR] = D3D12RenderShader::Create("Color",
- (void*)ColorBlobs::g_vs_main, sizeof(ColorBlobs::g_vs_main),
- (void*)ColorBlobs::g_ps_main, sizeof(ColorBlobs::g_ps_main),
- sizeof(SimpleShaderParam), 0,
- &layout_Position_And_Color[0], numElements2);
-
- g_pShaders[SHADER_TYPE_HAIR_SHADER_DEFAULT] = D3D12RenderShader::Create(
- "hairShaderDefault", 0, 0,
- (void*)BlastShaderBlobs::g_ps_main, sizeof(BlastShaderBlobs::g_ps_main),
- sizeof(NvHair::ShaderConstantBuffer),
- sizeof(LightShaderParam)
- );
-
- g_pShaders[SHADER_TYPE_HAIR_SHADER_SHADOW] = D3D12RenderShader::Create(
- "hairShadow", 0, 0,
- (void*)BlastShadowBlobs::g_ps_main, sizeof(BlastShadowBlobs::g_ps_main),
- sizeof(NvHair::ShaderConstantBuffer),
- 0);
- */
- return true;
-}
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) { if (x) delete x; x = 0; }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-void DestroyShadersD3D12()
-{
- for (int i = 0; i < g_pShaders.size(); i++)
- {
- D3D12RenderShader*& pShader = g_pShaders[i];
- if (pShader)
- {
- delete pShader;
- pShader = 0;
- }
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-D3D12RenderShader* GetShaderD3D12(SHADER_TYPE st)
-{
- return g_pShaders[st];
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyShaderD3D12(SHADER_TYPE st)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- pD3D12Shader->MakeCurrent();
-}
-
-void BindShaderResourcesD3D12(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- for (int i = 0; i < numSRVs; i++)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = D3D12TextureResource::GetHandle(ppSRVs[i]);
- pD3D12Shader->BindShaderResource(i, handle);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void DisableShaderD3D12(RenderInterface::SHADER_TYPE st)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- pD3D12Shader->Disable();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParamD3D12(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- D3D12RenderShader* pD3D12Shader = GetShaderD3D12(st);
- if (!pD3D12Shader)
- return;
-
- void* mappedParam = pD3D12Shader->MapParam(slot);
-
- memcpy(mappedParam, pSysMem, bytes);
-
- pD3D12Shader->UnmapParam(slot);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h
deleted file mode 100644
index 29b0e1b..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Shaders.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderInterface.h"
-#include "RenderPlugin.h"
-///////////////////////////////////////////////////////////////////
-// default shaders
-///////////////////////////////////////////////////////////////////
-CORERENDER_EXPORT bool InitializeShadersD3D12();
-CORERENDER_EXPORT void DestroyShadersD3D12();
-
-CORERENDER_EXPORT void ApplyShaderD3D12(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void DisableShaderD3D12(RenderInterface::SHADER_TYPE st);
-CORERENDER_EXPORT void BindShaderResourcesD3D12(RenderInterface::SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
-CORERENDER_EXPORT void CopyShaderParamD3D12(RenderInterface::SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp
deleted file mode 100644
index 342c6f3..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12ShadowMap.h"
-
-#include "RenderResources.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12TextureResource.h"
-#include "D3D12RenderContext.h"
-
-//////////////////////////////////////////////////////////////////////////////
-D3D12ShadowMap::D3D12ShadowMap(int resolution)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- m_nIndex = pContext->AllocRenderTargetIndex();
- m_pRenderTarget = pContext->CreateRenderTarget(m_nIndex, resolution, resolution);
- ID3D12Resource* pTexture = pContext->GetTexture(m_nIndex);
- int nIndexInHeap = -1;
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = pContext->NVHairINT_CreateD3D12Texture(pTexture, nIndexInHeap);
- m_ShadowResource.m_pResource = pTexture;
- m_ShadowResource.m_Handle = handle;
- m_ShadowResource.m_nIndexInHeap = nIndexInHeap;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-D3D12ShadowMap::~D3D12ShadowMap()
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->NVHairINT_DestroyD3D12Texture(m_ShadowResource.m_nIndexInHeap);
-
- Release();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::Release()
-{
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* D3D12ShadowMap::GetShadowSRV()
-{
- return &m_ShadowResource;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool D3D12ShadowMap::isValid()
-{
- return m_pRenderTarget != nullptr;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::BeginRendering(float clearDepth)
-{
- if (!isValid())
- return;
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->ReleaseRenderTarget();
-
- pContext->AcquireRenderTarget(true, m_nIndex);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void D3D12ShadowMap::EndRendering()
-{
- if (!isValid())
- return;
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->ReleaseRenderTarget(m_nIndex);
-
- pContext->AcquireRenderTarget();
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h
deleted file mode 100644
index dabf9a1..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12ShadowMap.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "ShadowMap.h"
-
-#include <d3d11.h>
-#include <d3d12.h>
-#include "D3D12TextureResource.h"
-
-#include "DXUT.h" // DXUT header
-#include "d3dx12.h"
-
-#include "D3D12RenderTarget.h"
-
-using namespace Microsoft::WRL;
-
-class GPUShaderResource;
-class D3D12TextureResource;
-
-struct D3D12ShadowMap : public ShadowMap
-{
- D3D12TextureResource m_ShadowResource;
-
- D3D12RenderTarget* m_pRenderTarget;
-
-public:
- D3D12ShadowMap(int resolution );
- ~D3D12ShadowMap();
-
- void Release();
- void BeginRendering(float clearDepth);
- void EndRendering();
-
- GPUShaderResource* GetShadowSRV();
-
-protected:
-
- bool isValid();
- int m_nIndex;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp
deleted file mode 100644
index 0247895..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12TextureResource.h"
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h
deleted file mode 100644
index b6c7584..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12TextureResource.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "RenderResources.h"
-
-#include "d3d12.h"
-#include "d3dx12.h"
-
-// GPU resources for texture
-struct D3D12TextureResource : public GPUShaderResource
-{
- ID3D12Resource* m_pResource;
- CD3DX12_CPU_DESCRIPTOR_HANDLE m_Handle;
- int m_nIndexInHeap;
-
-public:
- static GPUShaderResource* Create(
- ID3D12Resource* pResource,
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle,
- int nIndexInHeap) {
- D3D12TextureResource* pBuffer = new D3D12TextureResource;
- pBuffer->m_pResource = pResource;
- pBuffer->m_Handle = handle;
- pBuffer->m_nIndexInHeap = nIndexInHeap;
- return pBuffer;
- }
-
- static ID3D12Resource* GetResource(GPUShaderResource* pBuffer)
- {
- D3D12TextureResource* pD3D12Buffer = dynamic_cast<D3D12TextureResource*>(pBuffer);
- if (!pD3D12Buffer)
- return 0;
- return pD3D12Buffer->m_pResource;
- }
-
- static CD3DX12_CPU_DESCRIPTOR_HANDLE GetHandle(GPUShaderResource* pBuffer)
- {
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = {};
- D3D12TextureResource* pD3D12Buffer = dynamic_cast<D3D12TextureResource*>(pBuffer);
- if (pD3D12Buffer)
- handle = pD3D12Buffer->m_Handle;
- else
- handle.ptr = 0;
- return handle;
- }
-
- D3D12TextureResource()
- {
- m_pResource = 0;
- }
-
- void Release()
- {
- SAFE_RELEASE(m_pResource);
- }
-
- ~D3D12TextureResource()
- {
- Release();
- }
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp
deleted file mode 100644
index 695bb41..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include <DirectXTex.h>
-#include "D3D12Util.h"
-
-#include "D3D12Shaders.h"
-#include "D3D12RenderShader.h"
-
-#include "D3DX10tex.h"
-#include "D3DX11tex.h"
-
-#include "D3D12Wrapper.h"
-#include "DXUT.h"
-#include "DXUTgui.h"
-#include "sdkmisc.h"
-#include "D3D12RendererWindow.h"
-#include "SimpleRenderable.h"
-//#include "MeshShaderParam.h"
-#include "D3D12RenderInterface.h"
-#include "D3D12TextureResource.h"
-#include "D3D12RenderContext.h"
-namespace D3D12Util
-{
- using namespace RenderInterface;
-
- // D3D hook to render window
- D3D12RenderWindow* g_pRenderWindow = 0;
-
-///////////////////////////////////////////////////////////////////////////////
-GPUShaderResource*
- CreateTextureSRV(const char* texturename)
-{
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- if (!pContext)
- return 0;
- ID3D12Device* pDevice = pContext->GetDevice();
- if (!pDevice)
- return 0;
- ID3D12GraphicsCommandList* pCommandList = pContext->GetGraphicsCommandList();
- if (!pCommandList)
- return 0;
-
- unsigned char *pSTBIRes = 0;
- int width = 0;
- int height = 0;
-
- size_t nu = strlen(texturename);
- size_t n = (size_t)MultiByteToWideChar(CP_ACP, 0, (const char *)texturename, (int)nu, NULL, 0);
- wchar_t* pwstr = new wchar_t[n];
- MultiByteToWideChar(CP_ACP, 0, (const char *)texturename, (int)nu, pwstr, (int)n);
- pwstr[n] = 0;
-
- TexMetadata texMetadata;
- ScratchImage scratchImage;
- HRESULT loaded = LoadFromTGAFile(pwstr, &texMetadata, scratchImage);
-
- if (loaded != S_OK)
- {
- loaded = LoadFromWICFile(pwstr, TEX_FILTER_DEFAULT | WIC_FLAGS_ALL_FRAMES, &texMetadata, scratchImage);
- }
-
- if (loaded != S_OK)
- {
- loaded = LoadFromDDSFile(pwstr, DDS_FLAGS_NONE, &texMetadata, scratchImage);
- }
-
- if (loaded == S_OK)
- {
- pSTBIRes = scratchImage.GetPixels();
- width = texMetadata.width;
- height = texMetadata.height;
- }
-
- if (!pSTBIRes)
- return 0;
-
- int numMipMaps = 0;
- {
- int mipWidth = width;
- int mipHeight = height;
- while (mipWidth > 1 || mipHeight > 1)
- {
- numMipMaps++;
- mipWidth >>= 1;
- mipHeight >>= 1;
-
- if ((mipWidth * sizeof(uint32_t)) < D3D12_TEXTURE_DATA_PITCH_ALIGNMENT)
- break;
- }
- }
-
- std::vector<D3D12_PLACED_SUBRESOURCE_FOOTPRINT> layouts(numMipMaps);
- std::vector<uint64_t> row_sizes_in_bytes(numMipMaps);
- std::vector<uint32_t> num_rows(numMipMaps);
-
- auto resourceDesc = CD3DX12_RESOURCE_DESC::Tex2D(
- DXGI_FORMAT_R8G8B8A8_UNORM, width, height, 1, (UINT16)numMipMaps, 1, 0, D3D12_RESOURCE_FLAG_NONE,
- D3D12_TEXTURE_LAYOUT_UNKNOWN, 0);
-
- uint64_t required_size = 0;
- pDevice->GetCopyableFootprints(&resourceDesc, 0, numMipMaps, 0, &layouts[0], &num_rows[0], &row_sizes_in_bytes[0], &required_size);
-
- HRESULT hr;
- ID3D12Resource* mTextureUpload;
- ID3D12Resource* mTexture;
-
- hr = pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
- D3D12_HEAP_FLAG_NONE,
- &resourceDesc,
- D3D12_RESOURCE_STATE_COPY_DEST,
- nullptr,
- IID_PPV_ARGS(&mTexture));
- mTexture->SetName(L"Texture");
- hr = pDevice->CreateCommittedResource(
- &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
- D3D12_HEAP_FLAG_NONE,
- &CD3DX12_RESOURCE_DESC::Buffer(required_size),
- D3D12_RESOURCE_STATE_GENERIC_READ,
- nullptr,
- IID_PPV_ARGS(&mTextureUpload));
- mTextureUpload->SetName(L"TextureUpload");
-
- const int requestedMipLevels = numMipMaps;
- D3D12_SUBRESOURCE_DATA* initData = new D3D12_SUBRESOURCE_DATA[requestedMipLevels];
- ZeroMemory(initData, sizeof(D3D12_SUBRESOURCE_DATA)*requestedMipLevels);
-
- struct Pixel
- {
- unsigned char rgba[4];
- };
-
- // prepare target buffer just large enough to include all the mip levels
- Pixel* targets = new Pixel[width*height * 2];
-
- // copy the first mip level
- memcpy(targets, pSTBIRes, width*height * 4);
-
- // current mip level width and height
- int mipWidth = width;
- int mipHeight = height;
-
- // actual mip levels
- int mipLevels = 0;
-
- // current data
- Pixel* source = targets;
- Pixel* target = nullptr;
-
- for (int idx = 0; idx < requestedMipLevels; ++idx)
- {
- // set initData
- initData[idx].pData = source;
- initData[idx].RowPitch = mipWidth * 4;
- mipLevels++;
-
- // skip generating mip for 1x1
- if ((mipWidth == 1) && (mipHeight == 1))
- break;
-
- // skip generating mip for the last level
- if (idx == (requestedMipLevels - 1))
- break;
-
- // buffer for the next mip level
- target = &source[mipWidth*mipHeight];
-
- const int prevWidth = mipWidth; // previous mip's width
-
- // generate the next mip level
- mipWidth = max(1, mipWidth >> 1);
- mipHeight = max(1, mipHeight >> 1);
-
- Pixel samples[4];
-
- for (int y = 0; y < mipHeight; ++y)
- {
- for (int x = 0; x < mipWidth; ++x)
- {
- const int px = x * 2; // x in previous mip
- const int py = y * 2; // y in previous mip
-
- samples[0] = source[py*prevWidth + px]; // left top
- samples[1] = source[py*prevWidth + px + 1]; // right top
- samples[2] = source[(py + 1)*prevWidth + px]; // left bottom
- samples[3] = source[(py + 1)*prevWidth + px + 1]; // right bottom
-
- // for each component
- for (int comp = 0; comp < 4; ++comp)
- {
- // do the linear box filter for lower mip level
- target[y*mipWidth + x].rgba[comp] = (samples[0].rgba[comp] + samples[1].rgba[comp] + samples[2].rgba[comp] + samples[3].rgba[comp]) / 4;
- }
- }
- }
-
- // update source
- source = target;
- }
-
- uint8_t* p;
- mTextureUpload->Map(0, nullptr, reinterpret_cast<void**>(&p));
- for (uint32_t i = 0; i < numMipMaps; ++i)
- {
- memcpy(p + layouts[i].Offset, initData[i].pData, layouts[i].Footprint.RowPitch * num_rows[i]);
- }
- mTextureUpload->Unmap(0, nullptr);
-
- for (uint32_t i = 0; i < numMipMaps; ++i)
- {
- D3D12_TEXTURE_COPY_LOCATION src;
- src.pResource = mTextureUpload;
- src.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
- src.PlacedFootprint = layouts[i];
-
- D3D12_TEXTURE_COPY_LOCATION dst;
- dst.pResource = mTexture;
- dst.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
- dst.SubresourceIndex = i;
- pCommandList->CopyTextureRegion(&dst, 0, 0, 0, &src, nullptr);
- }
- pCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(mTexture, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE));
-
- delete initData;
- delete targets;
-
- int nIndexInHeap = -1;
- CD3DX12_CPU_DESCRIPTOR_HANDLE handle = pContext->NVHairINT_CreateD3D12Texture(mTexture, nIndexInHeap);
- return D3D12TextureResource::Create(mTexture, handle, nIndexInHeap);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- ID3D11Device* pDevice = nullptr;// RenderInterfaceD3D12::GetDevice();
- if (!pDevice)
- return false;
-
- {
- IDXGIDevice1 *pDXGIDevice1 = NULL;
- pDevice->QueryInterface(__uuidof(IDXGIDevice1), reinterpret_cast<void **>(&pDXGIDevice1));
-
- IDXGIAdapter1 *pDXGIAdapter1 = NULL;
- pDXGIDevice1->GetParent(__uuidof(IDXGIAdapter1), reinterpret_cast<void **>(&pDXGIAdapter1));
-
- if (pDXGIAdapter1)
- {
- auto adapterDescription = DXGI_ADAPTER_DESC1();
- pDXGIAdapter1->GetDesc1(&adapterDescription);
-
- WCHAR* pDescStr = adapterDescription.Description;
- float memInGB = float(adapterDescription.DedicatedVideoMemory) / 1e9f;
- swprintf_s(str, 1000, L"%s(%.1fGb)\n", pDescStr, memInGB);
- }
- }
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- SAFE_DELETE(g_pRenderWindow);
-
- g_pRenderWindow = new D3D12RenderWindow;
- return g_pRenderWindow->Create(hWnd, nSamples);
-}
-
-D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles)
-{
- /*
- deviceHandles.pAdapter = RenderInterfaceD3D11::GetAdapter();
- deviceHandles.pFactory = RenderInterfaceD3D11::GetDXGIFactory();
- deviceHandles.pDevice = RenderInterfaceD3D11::GetDevice();
- deviceHandles.pDeviceContext = RenderInterfaceD3D11::GetDeviceContext();
-
- deviceHandles.pDXGISwapChain = g_pRenderWindow->m_pDXGISwapChain;
- deviceHandles.pD3D11BackBuffer = g_pRenderWindow->m_pD3D11BackBuffer;
- deviceHandles.pD3D11RenderTargetView = g_pRenderWindow->m_pD3D11RenderTargetView;
- deviceHandles.pD3D11DepthBuffer = g_pRenderWindow->m_pD3D11DepthBuffer;
- deviceHandles.pD3D11DepthStencilView = g_pRenderWindow->m_pD3D11DepthStencilView;
- */
- return deviceHandles;
-}
-
-void DestroyRenderWindow()
-{
- SAFE_DELETE(g_pRenderWindow);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- if (!g_pRenderWindow)
- return false;
-
- return g_pRenderWindow->Resize(w,h);
-}
-
-void PresentRenderWindow()
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Present();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- if (!g_pRenderWindow)
- return;
-
- g_pRenderWindow->Clear(r,g,b);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->Begin();
-}
-
-void TxtHelperEnd()
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->End();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetInsertionPos(x, y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->SetForegroundColor(DirectX::XMFLOAT4(r,g,b,a));
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- if (!g_pRenderWindow || !g_pRenderWindow->m_pTextHelper)
- return;
-
- g_pRenderWindow->m_pTextHelper->DrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h
deleted file mode 100644
index f83b063..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Util.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include <d3d12.h>
-
-#include "RenderPlugin.h"
-
-class GPUShaderResource;
-
-namespace D3D12Util
-{
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
- bool CreateRenderWindow(HWND hWnd, int nSamples);
- void DestroyRenderWindow();
- bool ResizeRenderWindow(int w, int h);
- void PresentRenderWindow();
- void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
- GPUShaderResource* CreateTextureSRV(const char* texturename);
-
- ///////////////////////////////////////////////////////////////////
- bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- void TxtHelperBegin();
- void TxtHelperEnd();
- void TxtHelperSetInsertionPos(int x, int y);
- void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- void TxtHelperDrawTextLine(wchar_t* str);
-
-
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp
deleted file mode 100644
index b534a36..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "D3D12Wrapper.h"
-
-namespace D3DWrapper
-{
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h
deleted file mode 100644
index dc81e34..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/D3D12Wrapper.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <d3d11.h>
-
-namespace D3DWrapper
-{
- inline void SetDebugName(ID3D11DeviceChild* pResource, const char *name)
- {
- if (pResource) pResource->SetPrivateData( WKPDID_D3DDebugObjectName, strlen(name), name);
- }
-}
-
-#define SET_D3D_DEBUG_NAME(x, name) D3DWrapper::SetDebugName(x, name);
-#define SET_D3D_DEBUG_NAME_VAR(x) D3DWrapper::SetDebugName(x, #x);
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp b/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp
deleted file mode 100644
index 9945d7c..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-#include "RenderPluginDx12.h"
-
-#include "D3D12RenderInterface.h"
-#include "D3D12Util.h"
-#include "D3D12Shaders.h"
-#include "D3D12GPUProfiler.h"
-#include "D3D12ShadowMap.h"
-#include "D3D12RenderContext.h"
-
-RenderPlugin* CreateRenderPlugin(void)
-{
- return new RenderPluginDx12;
-}
-
-RenderPluginDx12::RenderPluginDx12()
-{
- m_RenderApi = "Dx12";
-}
-
-RenderPluginDx12::~RenderPluginDx12()
-{
-}
-
-// interface
-bool RenderPluginDx12::InitDevice(int deviceID)
-{
- return RenderInterfaceD3D12::InitDevice(deviceID);
-}
-
-bool RenderPluginDx12::Initialize()
-{
- return RenderInterfaceD3D12::Initialize();
-}
-
-void RenderPluginDx12::Shutdown()
-{
- D3D12Util::DestroyRenderWindow();
- RenderInterfaceD3D12::Shutdown();
-}
-
-void RenderPluginDx12::CopyToDevice(GPUBufferResource *pDevicePtr,
- void* pSysMem, unsigned int ByteWidth)
-{
- RenderInterfaceD3D12::CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-void RenderPluginDx12::ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderInterfaceD3D12::ApplyDepthStencilState(state);
-}
-
-void RenderPluginDx12::ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderInterfaceD3D12::ApplyRasterizerState(state);
-}
-
-void RenderPluginDx12::ApplySampler(int slot, SAMPLER_TYPE state)
-{
-}
-
-void RenderPluginDx12::ApplyBlendState(BLEND_STATE state)
-{
- RenderInterfaceD3D12::ApplyBlendState(state);
-}
-
-void RenderPluginDx12::GetViewport(Viewport& vp)
-{
- RenderInterfaceD3D12::GetViewport(vp);
-}
-
-void RenderPluginDx12::SetViewport(const Viewport& vp)
-{
- RenderInterfaceD3D12::SetViewport(vp);
-}
-
-void RenderPluginDx12::BindVertexShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx12::BindPixelShaderResources(int startSlot,
- int numSRVs, GPUShaderResource** ppSRVs)
-{
-}
-
-void RenderPluginDx12::ClearVertexShaderResources(int startSlot, int numSRVs)
-{
-}
-
-void RenderPluginDx12::ClearPixelShaderResources(int startSlot, int numSRVs)
-{
-}
-
-void RenderPluginDx12::ClearInputLayout()
-{
-}
-
-void RenderPluginDx12::SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset)
-{
- RenderInterfaceD3D12::SetVertexBuffer(pBuffer, stride, offset);
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyTriangleStrip()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyTriangleStrip();
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyTriangleList()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyTriangleList();
-}
-
-void RenderPluginDx12::SetPrimitiveTopologyLineList()
-{
- RenderInterfaceD3D12::SetPrimitiveTopologyLineList();
-}
-
-void RenderPluginDx12::Draw(unsigned int vertexCount, unsigned int startCount)
-{
- RenderInterfaceD3D12::Draw(vertexCount, startCount);
-}
-
-GPUBufferResource* RenderPluginDx12::CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem)
-{
- return RenderInterfaceD3D12::CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-GPUShaderResource* RenderPluginDx12::CreateShaderResource(unsigned int stride,
- unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer)
-{
- return RenderInterfaceD3D12::CreateShaderResource(stride, numElements, pSysMem, pReadOnlyBuffer);
-}
-
-void RenderPluginDx12::ApplyForShadow(int ForShadow)
-{
- RenderInterfaceD3D12::ApplyForShadow(ForShadow);
-}
-
-void RenderPluginDx12::SwitchToDX11()
-{
- RenderInterfaceD3D12::SwitchToDX11();
-}
-
-void RenderPluginDx12::FlushDX11()
-{
- RenderInterfaceD3D12::FlushDX11();
-}
-
-void RenderPluginDx12::FlushDX12()
-{
- RenderInterfaceD3D12::FlushDX12();
-}
-
-void RenderPluginDx12::ApplyPrimitiveTopologyLine()
-{
- RenderInterfaceD3D12::ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE);
-}
-
-void RenderPluginDx12::ApplyPrimitiveTopologyTriangle()
-{
- RenderInterfaceD3D12::ApplyPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE);
-}
-
-void RenderPluginDx12::SubmitGpuWork()
-{
- RenderInterfaceD3D12::SubmitGpuWork();
-}
-
-void RenderPluginDx12::WaitForGpu()
-{
- RenderInterfaceD3D12::WaitForGpu();
-}
-
-// util
-bool RenderPluginDx12::CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return D3D12Util::CreateRenderWindow(hWnd, nSamples);
-}
-
-bool RenderPluginDx12::ResizeRenderWindow(int w, int h)
-{
- return D3D12Util::ResizeRenderWindow(w, h);
-}
-
-void RenderPluginDx12::PresentRenderWindow()
-{
- D3D12Util::PresentRenderWindow();
-}
-
-void RenderPluginDx12::ClearRenderWindow(float r, float g, float b)
-{
- D3D12Util::ClearRenderWindow(r, g, b);
-}
-
-bool RenderPluginDx12::GetDeviceInfoString(wchar_t *str)
-{
- return D3D12Util::GetDeviceInfoString(str);
-}
-
-GPUShaderResource* RenderPluginDx12::CreateTextureSRV(const char* texturename)
-{
- return D3D12Util::CreateTextureSRV(texturename);
-}
-
-void RenderPluginDx12::TxtHelperBegin()
-{
- D3D12Util::TxtHelperBegin();
-}
-
-void RenderPluginDx12::TxtHelperEnd()
-{
- D3D12Util::TxtHelperEnd();
-}
-
-void RenderPluginDx12::TxtHelperSetInsertionPos(int x, int y)
-{
- D3D12Util::TxtHelperSetInsertionPos(x, y);
-}
-
-void RenderPluginDx12::TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- D3D12Util::TxtHelperSetForegroundColor(r, g, b, a);
-}
-
-void RenderPluginDx12::TxtHelperDrawTextLine(wchar_t* str)
-{
- D3D12Util::TxtHelperDrawTextLine(str);
-}
-
-// shader
-bool RenderPluginDx12::InitializeShaders()
-{
- return InitializeShadersD3D12();
-}
-
-void RenderPluginDx12::DestroyShaders()
-{
- DestroyShadersD3D12();
-}
-
-void RenderPluginDx12::ApplyShader(SHADER_TYPE st)
-{
- ApplyShaderD3D12(st);
-}
-
-void RenderPluginDx12::DisableShader(SHADER_TYPE st)
-{
- DisableShaderD3D12(st);
-}
-
-void RenderPluginDx12::BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs)
-{
- BindShaderResourcesD3D12(st, numSRVs, ppSRVs);
-}
-
-void RenderPluginDx12::CopyShaderParam(SHADER_TYPE st,
- void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- CopyShaderParamD3D12(st, pSysMem, bytes, slot);
-}
-
-// GPUProfiler
-GPUProfiler* RenderPluginDx12::CreateGPUProfiler()
-{
- GPUProfiler* pProfiler = new D3D12GPUProfiler;
- pProfiler->Initialize();
- return pProfiler;
-}
-
-// ShadowMap
-ShadowMap* RenderPluginDx12::CreateShadowMap(int resolution)
-{
- return new D3D12ShadowMap(resolution);
-}
-
-// D3D12RenderContext
-void RenderPluginDx12::PreRender()
-{
- D3D12RenderContext::Instance()->PreRender();
-}
-
-void RenderPluginDx12::PostRender()
-{
- D3D12RenderContext::Instance()->PostRender();
-}
-
-// GPUMeshResources
-#include "MeshData.h"
-#include "AnimUtil.h"
-
-class GPUMeshResourcesDx12 : public GPUMeshResources
-{
-public:
- NVHairReadOnlyBuffer m_BoneIndicesBuffer;
- NVHairReadOnlyBuffer m_BoneWeightsBuffer;
-};
-
-GPUMeshResources* RenderPluginDx12::GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData)
-{
- GPUMeshResources* resources = new GPUMeshResourcesDx12;
-
- int numIndices = pMeshData->m_NumIndices;
- int numVertices = pMeshData->m_NumVertices;
-
- resources->m_pVertexBuffer = CreateVertexBuffer(
- sizeof(MeshData::MeshVertex) * numIndices, pMeshData->m_pMeshVertices);
-
- GPUMeshResourcesDx12* resourceDx12 = (GPUMeshResourcesDx12*)resources;
- if (NULL != resourceDx12)
- {
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->InitBuffer(resourceDx12->m_BoneIndicesBuffer);
- pContext->InitBuffer(resourceDx12->m_BoneWeightsBuffer);
- resources->m_pBoneIndicesSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneIndices, &resourceDx12->m_BoneIndicesBuffer);
- resources->m_pBoneWeightsSRV = CreateShaderResource(
- sizeof(atcore_float4), numVertices, skinData.m_pBoneWeights, &resourceDx12->m_BoneWeightsBuffer);
- }
-
- return resources;
-}
-
-void RenderPluginDx12::GPUMeshResourcesRelease(GPUMeshResources* pResource)
-{
- SAFE_RELEASE(pResource->m_pVertexBuffer);
- SAFE_RELEASE(pResource->m_pBoneIndicesSRV);
- SAFE_RELEASE(pResource->m_pBoneWeightsSRV);
-
- GPUMeshResourcesDx12* pResourceDx12 = (GPUMeshResourcesDx12*)pResource;
- if (NULL == pResourceDx12)
- {
- return;
- }
-
- D3D12RenderContext* pContext = D3D12RenderContext::Instance();
- pContext->DestroyBuffer(pResourceDx12->m_BoneIndicesBuffer);
- pContext->DestroyBuffer(pResourceDx12->m_BoneWeightsBuffer);
-}
-
-D3DHandles& RenderPluginDx12::GetDeviceHandles(D3DHandles& deviceHandles)
-{
- return D3D12Util::GetDeviceHandles(deviceHandles);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h b/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h
deleted file mode 100644
index a88dfbf..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/D3D12/RenderPluginDx12.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma once
-
-#include "RenderPlugin.h"
-
-extern "C" CORERENDER_EXPORT RenderPlugin* CreateRenderPlugin(void);
-
-class CORERENDER_EXPORT RenderPluginDx12 : public RenderPlugin
-{
-public:
- RenderPluginDx12();
- ~RenderPluginDx12();
-
- // interface
- virtual bool InitDevice(int deviceID);
- virtual bool Initialize();
- virtual void Shutdown();
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- virtual void ApplyRasterizerState(RASTERIZER_STATE state);
- virtual void ApplySampler(int slot, SAMPLER_TYPE st);
- virtual void ApplyBlendState(BLEND_STATE st);
- virtual void GetViewport(Viewport& vp);
- virtual void SetViewport(const Viewport& vp);
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs);
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs);
- virtual void ClearInputLayout();
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0);
- virtual void SetPrimitiveTopologyTriangleStrip();
- virtual void SetPrimitiveTopologyTriangleList();
- virtual void SetPrimitiveTopologyLineList();
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0);
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0);
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL);
- virtual void ApplyForShadow(int ForShadow);
- virtual void SwitchToDX11();
- virtual void FlushDX11();
- virtual void FlushDX12();
- virtual void ApplyPrimitiveTopologyLine();
- virtual void ApplyPrimitiveTopologyTriangle();
- virtual void SubmitGpuWork();
- virtual void WaitForGpu();
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples);
- virtual bool ResizeRenderWindow(int w, int h);
- virtual void PresentRenderWindow();
- virtual void ClearRenderWindow(float r, float g, float b);
- virtual bool GetDeviceInfoString(wchar_t *str);
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename);
- virtual void TxtHelperBegin();
- virtual void TxtHelperEnd();
- virtual void TxtHelperSetInsertionPos(int x, int y);
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- virtual void TxtHelperDrawTextLine(wchar_t* str);
-
- // shader
- virtual bool InitializeShaders();
- virtual void DestroyShaders();
- virtual void ApplyShader(SHADER_TYPE st);
- virtual void DisableShader(SHADER_TYPE st);
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs);
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler();
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution);
-
- // D3D12RenderContext
- virtual void PreRender();
- virtual void PostRender();
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData);
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource);
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles);
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp b/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp
deleted file mode 100644
index 08a3497..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "GPUProfiler.h"
-
-#include "RenderPlugin.h"
-
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) {if(x){delete x; x=nullptr;}}
-#endif
-
-GPUProfiler* g_pGPUProfiler = 0;
-
-void GPUProfiler_Initialize()
-{
- g_pGPUProfiler = RenderPlugin::Instance()->CreateGPUProfiler();
-}
-
-void GPUProfiler_Shutdown()
-{
- SAFE_DELETE(g_pGPUProfiler);
-}
-
-void GPUProfiler_Enable(bool b)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->Enable(b);
-}
-
-void GPUProfiler_StartFrame()
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->StartFrame();
-}
-
-void GPUProfiler_EndFrame()
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->EndFrame();
-}
-
-void GPUProfiler_StartProfile(int id)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->StartProfile(id);
-}
-
-void GPUProfiler_EndProfile(int id)
-{
- if (g_pGPUProfiler)
- g_pGPUProfiler->EndProfile(id);
-}
-
-float GPUProfiler_GetProfileData(int id)
-{
- if (!g_pGPUProfiler)
- return 0;
-
- return g_pGPUProfiler->GetProfileData(id);
-}
-
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h b/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h
deleted file mode 100644
index 65bb602..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GPUProfiler.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "corelib_global.h"
-
-struct CORELIB_EXPORT GPUProfiler
-{
- bool m_enable;
-
-public:
- // define base class virtual destructor to make sure child classes call destructor right.
- virtual ~GPUProfiler() {}
-
- void Enable(bool b) { m_enable = b; }
-
- virtual void Initialize() = 0;
- virtual void Release() = 0;
- virtual void StartFrame() = 0;
- virtual void EndFrame() = 0;
- virtual void StartProfile(int id) = 0;
- virtual void EndProfile(int id) = 0;
- virtual float GetProfileData(int id) = 0;
-};
-
-// helper functions
-CORELIB_EXPORT void GPUProfiler_Initialize();
-CORELIB_EXPORT void GPUProfiler_Enable(bool);
-CORELIB_EXPORT void GPUProfiler_Shutdown();
-CORELIB_EXPORT void GPUProfiler_StartFrame();
-CORELIB_EXPORT void GPUProfiler_EndFrame();
-CORELIB_EXPORT void GPUProfiler_StartProfile(int id);
-CORELIB_EXPORT void GPUProfiler_EndProfile(int id);
-CORELIB_EXPORT float GPUProfiler_GetProfileData(int id);
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h
deleted file mode 100644
index 4a6ea37..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/BoneGeometryData.h
+++ /dev/null
@@ -1,305 +0,0 @@
-const int num_faces = 100;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[100*3*8] = {
-0.250000, -0.951057, -0.181636, 0.000000, 0.900000, 0.277578, -0.881468, -0.382053,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, 0.277578, -0.881468, -0.382053,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, 0.277578, -0.881468, -0.382053,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, -0.000000, -0.881468, -0.472244,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.000000, -0.881468, -0.472244,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.000000, -0.881468, -0.472244,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.277578, -0.881468, -0.382053,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.277578, -0.881468, -0.382053,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.277578, -0.881468, -0.382053,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.449130, -0.881468, -0.145931,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.449130, -0.881468, -0.145931,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.449130, -0.881468, -0.145931,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.449130, -0.881468, 0.145931,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.449130, -0.881468, 0.145931,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.449130, -0.881468, 0.145931,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.277578, -0.881468, 0.382053,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, -0.277578, -0.881468, 0.382053,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, -0.277578, -0.881468, 0.382053,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, 0.000000, -0.881468, 0.472244,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.000000, -0.881468, 0.472244,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.000000, -0.881468, 0.472244,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.277578, -0.881468, 0.382053,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.277578, -0.881468, 0.382053,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.277578, -0.881468, 0.382053,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.449130, -0.881468, 0.145931,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.449130, -0.881468, 0.145931,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.449131, -0.881468, 0.145931,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.449131, -0.881468, -0.145931,
-0.250000, -0.951057, -0.181636, 1.000000, 0.900000, 0.449131, -0.881468, -0.145931,
-0.475528, -0.809017, -0.345492, 1.000000, 0.800000, 0.449131, -0.881468, -0.145931,
-0.475528, -0.809017, -0.345492, 0.000000, 0.800000, 0.425919, -0.689152, -0.586227,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, 0.425919, -0.689152, -0.586227,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, 0.425919, -0.689152, -0.586227,
-0.181636, -0.809017, -0.559017, 0.100000, 0.800000, -0.000000, -0.689152, -0.724617,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.000000, -0.689152, -0.724617,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.000000, -0.689152, -0.724617,
--0.181636, -0.809017, -0.559017, 0.200000, 0.800000, -0.425919, -0.689152, -0.586228,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.425919, -0.689152, -0.586228,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.425919, -0.689152, -0.586228,
--0.475528, -0.809017, -0.345491, 0.300000, 0.800000, -0.689152, -0.689152, -0.223919,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.689152, -0.689152, -0.223919,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.689152, -0.689152, -0.223919,
--0.587785, -0.809017, 0.000000, 0.400000, 0.800000, -0.689152, -0.689152, 0.223919,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.689152, -0.689152, 0.223919,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.689152, -0.689152, 0.223919,
--0.475528, -0.809017, 0.345492, 0.500000, 0.800000, -0.425919, -0.689152, 0.586228,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, -0.425919, -0.689152, 0.586228,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, -0.425919, -0.689152, 0.586228,
--0.181636, -0.809017, 0.559017, 0.600000, 0.800000, 0.000000, -0.689152, 0.724617,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.000000, -0.689152, 0.724617,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.000000, -0.689152, 0.724617,
-0.181636, -0.809017, 0.559017, 0.700000, 0.800000, 0.425919, -0.689152, 0.586227,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.425919, -0.689152, 0.586227,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.425919, -0.689152, 0.586227,
-0.475528, -0.809017, 0.345491, 0.800000, 0.800000, 0.689152, -0.689152, 0.223919,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.689152, -0.689152, 0.223919,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.689152, -0.689152, 0.223919,
-0.587785, -0.809017, 0.000000, 0.900000, 0.800000, 0.689152, -0.689152, -0.223919,
-0.475528, -0.809017, -0.345492, 1.000000, 0.800000, 0.689152, -0.689152, -0.223919,
-0.654509, -0.587785, -0.475528, 1.000000, 0.700000, 0.689152, -0.689152, -0.223919,
-0.654509, -0.587785, -0.475528, 0.000000, 0.700000, 0.528952, -0.436083, -0.728040,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, 0.528952, -0.436083, -0.728040,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, 0.528952, -0.436083, -0.728040,
-0.250000, -0.587785, -0.769421, 0.100000, 0.700000, -0.000000, -0.436083, -0.899906,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.000000, -0.436083, -0.899906,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.000000, -0.436083, -0.899906,
--0.250000, -0.587785, -0.769421, 0.200000, 0.700000, -0.528952, -0.436083, -0.728040,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.528952, -0.436083, -0.728040,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.528952, -0.436083, -0.728040,
--0.654509, -0.587785, -0.475528, 0.300000, 0.700000, -0.855862, -0.436083, -0.278086,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.855862, -0.436083, -0.278086,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.855862, -0.436083, -0.278086,
--0.809017, -0.587785, 0.000000, 0.400000, 0.700000, -0.855862, -0.436083, 0.278086,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.855862, -0.436083, 0.278086,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.855862, -0.436083, 0.278086,
--0.654509, -0.587785, 0.475528, 0.500000, 0.700000, -0.528952, -0.436083, 0.728040,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, -0.528952, -0.436083, 0.728039,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, -0.528952, -0.436083, 0.728039,
--0.250000, -0.587785, 0.769421, 0.600000, 0.700000, 0.000000, -0.436083, 0.899906,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.000000, -0.436083, 0.899906,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.000000, -0.436083, 0.899906,
-0.250000, -0.587785, 0.769421, 0.700000, 0.700000, 0.528952, -0.436083, 0.728039,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.528952, -0.436083, 0.728040,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.528952, -0.436083, 0.728040,
-0.654509, -0.587785, 0.475528, 0.800000, 0.700000, 0.855862, -0.436083, 0.278086,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.855862, -0.436083, 0.278086,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.855862, -0.436083, 0.278086,
-0.809017, -0.587785, 0.000000, 0.900000, 0.700000, 0.855862, -0.436084, -0.278086,
-0.654509, -0.587785, -0.475528, 1.000000, 0.700000, 0.855862, -0.436084, -0.278086,
-0.769421, -0.309017, -0.559017, 1.000000, 0.600000, 0.855862, -0.436084, -0.278086,
-0.769421, -0.309017, -0.559017, 0.000000, 0.600000, 0.581228, -0.148952, -0.799992,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, 0.581228, -0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, 0.581228, -0.148952, -0.799992,
-0.293893, -0.309017, -0.904509, 0.100000, 0.600000, -0.000000, -0.148952, -0.988844,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.000000, -0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.000000, -0.148952, -0.988844,
--0.293893, -0.309017, -0.904509, 0.200000, 0.600000, -0.581228, -0.148952, -0.799992,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.581228, -0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.581228, -0.148952, -0.799992,
--0.769421, -0.309017, -0.559017, 0.300000, 0.600000, -0.940447, -0.148952, -0.305570,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.940447, -0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, -0.148952, -0.305570,
--0.951057, -0.309017, 0.000000, 0.400000, 0.600000, -0.940447, -0.148952, 0.305570,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.940447, -0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.940447, -0.148952, 0.305570,
--0.769421, -0.309017, 0.559017, 0.500000, 0.600000, -0.581228, -0.148952, 0.799992,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, -0.581228, -0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, -0.581228, -0.148952, 0.799992,
--0.293893, -0.309017, 0.904509, 0.600000, 0.600000, 0.000000, -0.148952, 0.988844,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.000000, -0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.000000, -0.148952, 0.988844,
-0.293893, -0.309017, 0.904509, 0.700000, 0.600000, 0.581228, -0.148952, 0.799992,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.581228, -0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.581228, -0.148952, 0.799992,
-0.769421, -0.309017, 0.559017, 0.800000, 0.600000, 0.940447, -0.148952, 0.305570,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.940447, -0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, -0.148952, 0.305570,
-0.951057, -0.309017, 0.000000, 0.900000, 0.600000, 0.940447, -0.148952, -0.305570,
-0.769421, -0.309017, -0.559017, 1.000000, 0.600000, 0.940447, -0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 1.000000, 0.500000, 0.940447, -0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 0.000000, 0.500000, 0.581228, 0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, 0.581228, 0.148952, -0.799992,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, 0.581228, 0.148952, -0.799992,
-0.309017, 0.000000, -0.951057, 0.100000, 0.500000, -0.000000, 0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.000000, 0.148952, -0.988844,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.000000, 0.148952, -0.988844,
--0.309017, 0.000000, -0.951057, 0.200000, 0.500000, -0.581228, 0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.581228, 0.148952, -0.799992,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.581228, 0.148952, -0.799992,
--0.809017, 0.000000, -0.587785, 0.300000, 0.500000, -0.940447, 0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, 0.148952, -0.305570,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.940447, 0.148952, -0.305570,
--1.000000, 0.000000, 0.000000, 0.400000, 0.500000, -0.940447, 0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.940447, 0.148952, 0.305570,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.940447, 0.148952, 0.305570,
--0.809017, 0.000000, 0.587785, 0.500000, 0.500000, -0.581228, 0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, -0.581228, 0.148952, 0.799992,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, -0.581228, 0.148952, 0.799992,
--0.309017, 0.000000, 0.951057, 0.600000, 0.500000, 0.000000, 0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.000000, 0.148952, 0.988844,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.000000, 0.148952, 0.988844,
-0.309017, 0.000000, 0.951057, 0.700000, 0.500000, 0.581228, 0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.581228, 0.148952, 0.799992,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.581228, 0.148952, 0.799992,
-0.809017, 0.000000, 0.587785, 0.800000, 0.500000, 0.940447, 0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, 0.148952, 0.305570,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.940447, 0.148952, 0.305570,
-1.000000, 0.000000, 0.000000, 0.900000, 0.500000, 0.940447, 0.148952, -0.305570,
-0.809017, 0.000000, -0.587785, 1.000000, 0.500000, 0.940447, 0.148952, -0.305570,
-0.769421, 0.309017, -0.559017, 1.000000, 0.400000, 0.940447, 0.148952, -0.305569,
-0.769421, 0.309017, -0.559017, 0.000000, 0.400000, 0.528952, 0.436083, -0.728040,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, 0.528952, 0.436083, -0.728040,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, 0.528952, 0.436083, -0.728040,
-0.293893, 0.309017, -0.904509, 0.100000, 0.400000, -0.000000, 0.436083, -0.899906,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.000000, 0.436083, -0.899906,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.000000, 0.436083, -0.899906,
--0.293893, 0.309017, -0.904509, 0.200000, 0.400000, -0.528952, 0.436083, -0.728039,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.528952, 0.436083, -0.728039,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.528952, 0.436083, -0.728039,
--0.769421, 0.309017, -0.559017, 0.300000, 0.400000, -0.855862, 0.436083, -0.278086,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.855862, 0.436083, -0.278086,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.855862, 0.436083, -0.278086,
--0.951057, 0.309017, 0.000000, 0.400000, 0.400000, -0.855862, 0.436083, 0.278086,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.855862, 0.436083, 0.278086,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.855862, 0.436083, 0.278086,
--0.769421, 0.309017, 0.559017, 0.500000, 0.400000, -0.528952, 0.436083, 0.728039,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, -0.528952, 0.436083, 0.728039,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, -0.528952, 0.436083, 0.728039,
--0.293893, 0.309017, 0.904509, 0.600000, 0.400000, 0.000000, 0.436083, 0.899906,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.000000, 0.436083, 0.899906,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.000000, 0.436083, 0.899906,
-0.293893, 0.309017, 0.904509, 0.700000, 0.400000, 0.528952, 0.436083, 0.728040,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.528952, 0.436083, 0.728040,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.528952, 0.436083, 0.728040,
-0.769421, 0.309017, 0.559017, 0.800000, 0.400000, 0.855862, 0.436083, 0.278086,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.855862, 0.436083, 0.278086,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.855862, 0.436083, 0.278086,
-0.951057, 0.309017, 0.000000, 0.900000, 0.400000, 0.855862, 0.436084, -0.278086,
-0.769421, 0.309017, -0.559017, 1.000000, 0.400000, 0.855862, 0.436084, -0.278086,
-0.654509, 0.587785, -0.475528, 1.000000, 0.300000, 0.855862, 0.436084, -0.278086,
-0.654509, 0.587785, -0.475528, 0.000000, 0.300000, 0.425919, 0.689152, -0.586227,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, 0.425919, 0.689152, -0.586227,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, 0.425919, 0.689152, -0.586227,
-0.250000, 0.587785, -0.769421, 0.100000, 0.300000, -0.000000, 0.689152, -0.724617,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.000000, 0.689152, -0.724617,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.000000, 0.689152, -0.724617,
--0.250000, 0.587785, -0.769421, 0.200000, 0.300000, -0.425919, 0.689152, -0.586227,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.425919, 0.689152, -0.586227,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.425919, 0.689152, -0.586227,
--0.654509, 0.587785, -0.475528, 0.300000, 0.300000, -0.689152, 0.689152, -0.223919,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.689152, 0.689152, -0.223919,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.689152, 0.689152, -0.223919,
--0.809017, 0.587785, 0.000000, 0.400000, 0.300000, -0.689152, 0.689152, 0.223919,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.689152, 0.689152, 0.223919,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.689152, 0.689152, 0.223919,
--0.654509, 0.587785, 0.475528, 0.500000, 0.300000, -0.425919, 0.689152, 0.586228,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, -0.425919, 0.689152, 0.586228,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, -0.425919, 0.689152, 0.586228,
--0.250000, 0.587785, 0.769421, 0.600000, 0.300000, 0.000000, 0.689152, 0.724617,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.000000, 0.689152, 0.724617,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.000000, 0.689152, 0.724617,
-0.250000, 0.587785, 0.769421, 0.700000, 0.300000, 0.425919, 0.689152, 0.586227,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.425919, 0.689152, 0.586227,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.425919, 0.689152, 0.586227,
-0.654509, 0.587785, 0.475528, 0.800000, 0.300000, 0.689152, 0.689152, 0.223919,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.689152, 0.689152, 0.223919,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.689152, 0.689152, 0.223919,
-0.809017, 0.587785, 0.000000, 0.900000, 0.300000, 0.689152, 0.689152, -0.223919,
-0.654509, 0.587785, -0.475528, 1.000000, 0.300000, 0.689152, 0.689152, -0.223919,
-0.475528, 0.809017, -0.345492, 1.000000, 0.200000, 0.689152, 0.689152, -0.223919,
-0.475528, 0.809017, -0.345492, 0.000000, 0.200000, 0.277578, 0.881468, -0.382053,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, 0.277578, 0.881468, -0.382053,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, 0.277578, 0.881468, -0.382053,
-0.181636, 0.809017, -0.559017, 0.100000, 0.200000, -0.000000, 0.881468, -0.472244,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.000000, 0.881468, -0.472244,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.000000, 0.881468, -0.472244,
--0.181636, 0.809017, -0.559017, 0.200000, 0.200000, -0.277578, 0.881468, -0.382053,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.277578, 0.881468, -0.382053,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.277578, 0.881468, -0.382053,
--0.475528, 0.809017, -0.345491, 0.300000, 0.200000, -0.449130, 0.881468, -0.145931,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.449130, 0.881468, -0.145931,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.449130, 0.881468, -0.145931,
--0.587785, 0.809017, 0.000000, 0.400000, 0.200000, -0.449130, 0.881468, 0.145931,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.449130, 0.881468, 0.145931,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.449131, 0.881468, 0.145931,
--0.475528, 0.809017, 0.345492, 0.500000, 0.200000, -0.277578, 0.881468, 0.382053,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, -0.277578, 0.881468, 0.382053,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, -0.277578, 0.881468, 0.382053,
--0.181636, 0.809017, 0.559017, 0.600000, 0.200000, 0.000000, 0.881468, 0.472244,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.000000, 0.881468, 0.472244,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.000000, 0.881468, 0.472244,
-0.181636, 0.809017, 0.559017, 0.700000, 0.200000, 0.277578, 0.881468, 0.382053,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.277578, 0.881468, 0.382053,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.277578, 0.881468, 0.382053,
-0.475528, 0.809017, 0.345491, 0.800000, 0.200000, 0.449131, 0.881468, 0.145931,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.449131, 0.881468, 0.145931,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.449130, 0.881468, 0.145931,
-0.587785, 0.809017, 0.000000, 0.900000, 0.200000, 0.449131, 0.881468, -0.145931,
-0.475528, 0.809017, -0.345492, 1.000000, 0.200000, 0.449131, 0.881468, -0.145931,
-0.250000, 0.951057, -0.181636, 1.000000, 0.100000, 0.449131, 0.881468, -0.145931,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, 0.096557, -0.986415, -0.132899,
-0.250000, -0.951057, -0.181636, 0.000000, 0.900000, 0.096557, -0.986415, -0.132899,
-0.000000, -1.000000, 0.000000, 0.050000, 1.000000, 0.096557, -0.986415, -0.132899,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.000000, -0.986415, -0.164272,
-0.095491, -0.951057, -0.293893, 0.100000, 0.900000, -0.000000, -0.986415, -0.164272,
-0.000000, -1.000000, 0.000000, 0.150000, 1.000000, -0.000000, -0.986415, -0.164272,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.096557, -0.986415, -0.132899,
--0.095492, -0.951057, -0.293893, 0.200000, 0.900000, -0.096557, -0.986415, -0.132899,
-0.000000, -1.000000, 0.000000, 0.250000, 1.000000, -0.096557, -0.986415, -0.132899,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.156233, -0.986415, -0.050763,
--0.250000, -0.951057, -0.181636, 0.300000, 0.900000, -0.156233, -0.986415, -0.050763,
-0.000000, -1.000000, 0.000000, 0.350000, 1.000000, -0.156233, -0.986415, -0.050763,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.156233, -0.986415, 0.050763,
--0.309017, -0.951057, 0.000000, 0.400000, 0.900000, -0.156233, -0.986415, 0.050763,
-0.000000, -1.000000, 0.000000, 0.450000, 1.000000, -0.156233, -0.986415, 0.050763,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, -0.096557, -0.986415, 0.132899,
--0.250000, -0.951057, 0.181636, 0.500000, 0.900000, -0.096557, -0.986415, 0.132899,
-0.000000, -1.000000, 0.000000, 0.550000, 1.000000, -0.096557, -0.986415, 0.132899,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.000000, -0.986415, 0.164272,
--0.095491, -0.951057, 0.293893, 0.600000, 0.900000, 0.000000, -0.986415, 0.164272,
-0.000000, -1.000000, 0.000000, 0.650000, 1.000000, 0.000000, -0.986415, 0.164272,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.096557, -0.986415, 0.132899,
-0.095492, -0.951057, 0.293893, 0.700000, 0.900000, 0.096557, -0.986415, 0.132899,
-0.000000, -1.000000, 0.000000, 0.750000, 1.000000, 0.096557, -0.986415, 0.132899,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.156233, -0.986415, 0.050763,
-0.250000, -0.951057, 0.181636, 0.800000, 0.900000, 0.156233, -0.986415, 0.050763,
-0.000000, -1.000000, 0.000000, 0.850000, 1.000000, 0.156233, -0.986415, 0.050763,
-0.250000, -0.951057, -0.181636, 1.000000, 0.900000, 0.156233, -0.986415, -0.050763,
-0.309017, -0.951057, 0.000000, 0.900000, 0.900000, 0.156233, -0.986415, -0.050763,
-0.000000, -1.000000, 0.000000, 0.950000, 1.000000, 0.156233, -0.986415, -0.050763,
-0.250000, 0.951057, -0.181636, 0.000000, 0.100000, 0.096557, 0.986415, -0.132899,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, 0.096557, 0.986415, -0.132899,
-0.000000, 1.000000, 0.000000, 0.050000, 0.000000, 0.096557, 0.986415, -0.132899,
-0.095491, 0.951057, -0.293893, 0.100000, 0.100000, -0.000000, 0.986415, -0.164272,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.000000, 0.986415, -0.164272,
-0.000000, 1.000000, 0.000000, 0.150000, 0.000000, -0.000000, 0.986415, -0.164272,
--0.095492, 0.951057, -0.293893, 0.200000, 0.100000, -0.096557, 0.986415, -0.132899,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.096557, 0.986415, -0.132899,
-0.000000, 1.000000, 0.000000, 0.250000, 0.000000, -0.096557, 0.986415, -0.132899,
--0.250000, 0.951057, -0.181636, 0.300000, 0.100000, -0.156233, 0.986415, -0.050763,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.156233, 0.986415, -0.050763,
-0.000000, 1.000000, 0.000000, 0.350000, 0.000000, -0.156233, 0.986415, -0.050763,
--0.309017, 0.951057, 0.000000, 0.400000, 0.100000, -0.156233, 0.986415, 0.050763,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.156233, 0.986415, 0.050763,
-0.000000, 1.000000, 0.000000, 0.450000, 0.000000, -0.156233, 0.986415, 0.050763,
--0.250000, 0.951057, 0.181636, 0.500000, 0.100000, -0.096557, 0.986415, 0.132899,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, -0.096557, 0.986415, 0.132899,
-0.000000, 1.000000, 0.000000, 0.550000, 0.000000, -0.096557, 0.986415, 0.132899,
--0.095491, 0.951057, 0.293893, 0.600000, 0.100000, 0.000000, 0.986415, 0.164272,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.000000, 0.986415, 0.164272,
-0.000000, 1.000000, 0.000000, 0.650000, 0.000000, 0.000000, 0.986415, 0.164272,
-0.095492, 0.951057, 0.293893, 0.700000, 0.100000, 0.096557, 0.986415, 0.132899,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.096557, 0.986415, 0.132899,
-0.000000, 1.000000, 0.000000, 0.750000, 0.000000, 0.096557, 0.986415, 0.132899,
-0.250000, 0.951057, 0.181636, 0.800000, 0.100000, 0.156233, 0.986415, 0.050763,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.156233, 0.986415, 0.050763,
-0.000000, 1.000000, 0.000000, 0.850000, 0.000000, 0.156233, 0.986415, 0.050763,
-0.309017, 0.951057, 0.000000, 0.900000, 0.100000, 0.156233, 0.986415, -0.050763,
-0.250000, 0.951057, -0.181636, 1.000000, 0.100000, 0.156233, 0.986415, -0.050763,
-0.000000, 1.000000, 0.000000, 0.950000, 0.000000, 0.156233, 0.986415, -0.050763,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h
deleted file mode 100644
index ed21841..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/LightGeometryData.h
+++ /dev/null
@@ -1,269 +0,0 @@
-const int num_faces = 88;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[88*3*8] = {
-2.977119, 2.977121, -34.306633, 0.375000, 0.687500, 0.177861, 0.429396, -0.885429,
-0.000000, 4.210287, -34.306633, 0.406250, 0.687500, 0.177861, 0.429396, -0.885429,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, 0.177861, 0.429396, -0.885429,
-0.000000, 4.210287, -34.306633, 0.406250, 0.687500, -0.177861, 0.429396, -0.885429,
--2.977119, 2.977121, -34.306633, 0.437500, 0.687500, -0.177861, 0.429396, -0.885429,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.177861, 0.429396, -0.885429,
--2.977119, 2.977121, -34.306633, 0.437500, 0.687500, -0.429395, 0.177862, -0.885430,
--4.210285, 0.000002, -34.306633, 0.468750, 0.687500, -0.429395, 0.177862, -0.885430,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.429395, 0.177862, -0.885429,
--4.210285, 0.000002, -34.306633, 0.468750, 0.687500, -0.429395, -0.177862, -0.885430,
--2.977119, -2.977118, -34.306633, 0.500000, 0.687500, -0.429395, -0.177862, -0.885430,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.429395, -0.177862, -0.885430,
--2.977119, -2.977118, -34.306633, 0.500000, 0.687500, -0.177861, -0.429395, -0.885429,
-0.000000, -4.210283, -34.306633, 0.531250, 0.687500, -0.177861, -0.429395, -0.885429,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, -0.177861, -0.429395, -0.885429,
-0.000000, -4.210283, -34.306633, 0.531250, 0.687500, 0.177862, -0.429395, -0.885429,
-2.977120, -2.977118, -34.306633, 0.562500, 0.687500, 0.177862, -0.429395, -0.885429,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.177862, -0.429395, -0.885429,
-2.977120, -2.977118, -34.306633, 0.562500, 0.687500, 0.429395, -0.177862, -0.885430,
-4.210286, 0.000002, -34.306633, 0.593750, 0.687500, 0.429395, -0.177862, -0.885430,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.429395, -0.177862, -0.885429,
-4.210286, 0.000002, -34.306633, 0.593750, 0.687500, 0.429395, 0.177862, -0.885429,
-2.977119, 2.977121, -34.306633, 0.625000, 0.687500, 0.429395, 0.177862, -0.885429,
-6.423971, 6.423968, -31.942669, 0.625000, 0.640508, 0.429395, 0.177862, -0.885429,
--4.210285, 0.000002, -34.306633, 0.343750, 0.843750, -0.124125, -0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.124125, -0.051414, -0.990934,
--2.977119, -2.977118, -34.306633, 0.389515, 0.733265, -0.124125, -0.051414, -0.990934,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.791070, 0.327672, -0.516564,
-7.679888, 7.679888, -10.002398, 0.625000, 0.499530, 0.791071, 0.327672, -0.516564,
-12.349342, 12.349340, 0.110407, 0.625000, 0.311560, 0.791070, 0.327672, -0.516564,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.791071, -0.327672, -0.516564,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.791070, -0.327672, -0.516564,
-17.464600, 0.000000, 0.110407, 0.593750, 0.311560, 0.791070, -0.327672, -0.516564,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, 0.327672, -0.791071, -0.516564,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.327672, -0.791071, -0.516564,
-12.349343, -12.349342, 0.110407, 0.562500, 0.311560, 0.327672, -0.791071, -0.516564,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.327672, -0.791071, -0.516564,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, -0.327672, -0.791071, -0.516564,
-0.000001, -17.464596, 0.110407, 0.531250, 0.311560, -0.327672, -0.791071, -0.516564,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.791071, -0.327672, -0.516564,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.791071, -0.327672, -0.516564,
--12.349340, -12.349340, 0.110407, 0.500000, 0.311560, -0.791071, -0.327672, -0.516564,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.791071, 0.327672, -0.516564,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.791071, 0.327672, -0.516564,
--17.464596, 0.000000, 0.110407, 0.468750, 0.311560, -0.791071, 0.327672, -0.516564,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, -0.327672, 0.791071, -0.516564,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.327672, 0.791071, -0.516564,
--12.349340, 12.349340, 0.110407, 0.437500, 0.311560, -0.327672, 0.791071, -0.516564,
-7.679888, 7.679888, -10.002398, 0.375000, 0.499530, 0.327672, 0.791071, -0.516564,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, 0.327672, 0.791071, -0.516564,
-0.000001, 17.464598, 0.110407, 0.406250, 0.311560, 0.327672, 0.791071, -0.516564,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.923880, 0.382683, 0.000000,
-7.679888, 7.679889, -29.138687, 0.625000, 0.593515, 0.923880, 0.382683, 0.000000,
-7.679888, 7.679888, -10.002398, 0.625000, 0.499530, 0.923880, 0.382683, 0.000000,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.923880, -0.382683, 0.000000,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.923880, -0.382683, 0.000000,
-10.861003, 0.000000, -10.002398, 0.593750, 0.499530, 0.923880, -0.382683, 0.000000,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, 0.382683, -0.923880, 0.000000,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.382683, -0.923880, 0.000000,
-7.679889, -7.679889, -10.002397, 0.562500, 0.499530, 0.382683, -0.923880, 0.000000,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.382683, -0.923880, 0.000000,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, -0.382683, -0.923880, 0.000000,
-0.000000, -10.861002, -10.002398, 0.531250, 0.499530, -0.382683, -0.923880, 0.000000,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.923880, -0.382683, 0.000000,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.923880, -0.382683, 0.000000,
--7.679888, -7.679888, -10.002398, 0.500000, 0.499530, -0.923880, -0.382683, 0.000000,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.923880, 0.382683, 0.000000,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.923880, 0.382683, 0.000000,
--10.861002, 0.000000, -10.002398, 0.468750, 0.499530, -0.923880, 0.382683, 0.000000,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, -0.382683, 0.923880, -0.000000,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.382683, 0.923880, -0.000000,
--7.679888, 7.679888, -10.002398, 0.437500, 0.499530, -0.382683, 0.923880, -0.000000,
-7.679888, 7.679889, -29.138687, 0.375000, 0.593515, 0.382683, 0.923880, -0.000000,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, 0.382683, 0.923880, -0.000000,
-0.000000, 10.861002, -10.002398, 0.406250, 0.499530, 0.382683, 0.923880, -0.000000,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.797373, 0.330283, -0.505083,
-6.423971, 6.423968, -31.942669, 0.625000, 0.640508, 0.797373, 0.330283, -0.505083,
-7.679888, 7.679889, -29.138687, 0.625000, 0.593515, 0.797373, 0.330283, -0.505083,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.797373, -0.330283, -0.505083,
-9.084865, -0.000001, -31.942669, 0.593750, 0.640508, 0.797373, -0.330283, -0.505083,
-10.861003, -0.000001, -29.138687, 0.593750, 0.593515, 0.797373, -0.330283, -0.505083,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, 0.330283, -0.797373, -0.505083,
-6.423971, -6.423972, -31.942667, 0.562500, 0.640508, 0.330283, -0.797373, -0.505083,
-7.679889, -7.679891, -29.138687, 0.562500, 0.593515, 0.330283, -0.797373, -0.505083,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.330283, -0.797373, -0.505083,
-0.000000, -9.084865, -31.942671, 0.531250, 0.640508, -0.330283, -0.797373, -0.505083,
-0.000000, -10.861003, -29.138685, 0.531250, 0.593515, -0.330283, -0.797373, -0.505083,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.797373, -0.330283, -0.505083,
--6.423970, -6.423972, -31.942667, 0.500000, 0.640508, -0.797374, -0.330282, -0.505083,
--7.679888, -7.679889, -29.138689, 0.500000, 0.593515, -0.797374, -0.330282, -0.505083,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.797373, 0.330283, -0.505083,
--9.084864, -0.000001, -31.942669, 0.468750, 0.640508, -0.797373, 0.330283, -0.505083,
--10.861002, -0.000001, -29.138687, 0.468750, 0.593515, -0.797373, 0.330283, -0.505083,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, -0.330282, 0.797373, -0.505084,
--6.423970, 6.423968, -31.942669, 0.437500, 0.640508, -0.330282, 0.797373, -0.505084,
--7.679888, 7.679889, -29.138687, 0.437500, 0.593515, -0.330282, 0.797373, -0.505084,
-6.423971, 6.423968, -31.942669, 0.375000, 0.640508, 0.330282, 0.797373, -0.505084,
-0.000000, 9.084861, -31.942669, 0.406250, 0.640508, 0.330282, 0.797373, -0.505084,
-0.000000, 10.860999, -29.138687, 0.406250, 0.593515, 0.330282, 0.797373, -0.505084,
-2.977119, 2.977121, -34.306633, 0.610485, 0.954235, 0.124125, 0.051414, -0.990934,
-4.210286, 0.000002, -34.306633, 0.656250, 0.843750, 0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.124125, -0.051414, -0.990934,
-4.210286, 0.000002, -34.306633, 0.656250, 0.843750, 0.124125, -0.051414, -0.990934,
-2.977120, -2.977118, -34.306633, 0.610485, 0.733265, 0.124125, -0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.051415, -0.124125, -0.990934,
-2.977120, -2.977118, -34.306633, 0.610485, 0.733265, 0.051415, -0.124125, -0.990934,
-0.000000, -4.210283, -34.306633, 0.500000, 0.687500, 0.051415, -0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.051414, -0.124125, -0.990934,
-0.000000, -4.210283, -34.306633, 0.500000, 0.687500, -0.051414, -0.124125, -0.990934,
--2.977119, -2.977118, -34.306633, 0.389515, 0.733265, -0.051414, -0.124125, -0.990934,
--2.977119, 2.977121, -34.306633, 0.389515, 0.954235, -0.124125, 0.051414, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.124125, 0.051414, -0.990934,
--4.210285, 0.000002, -34.306633, 0.343750, 0.843750, -0.124125, 0.051414, -0.990934,
-0.000000, 4.210287, -34.306633, 0.500000, 1.000000, -0.051414, 0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, -0.051414, 0.124125, -0.990934,
--2.977119, 2.977121, -34.306633, 0.389515, 0.954235, -0.051414, 0.124125, -0.990934,
-2.977119, 2.977121, -34.306633, 0.610485, 0.954235, 0.051414, 0.124125, -0.990934,
-0.000000, 0.000002, -34.834015, 0.500000, 0.843750, 0.051414, 0.124125, -0.990934,
-0.000000, 4.210287, -34.306633, 0.500000, 1.000000, 0.051414, 0.124125, -0.990934,
-12.349342, 12.349340, 0.110407, 0.610485, 0.045765, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 0.110407, 0.500000, 0.000000, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, 0.382683, 0.923880, 0.000000,
-0.000001, 17.464598, 0.110407, 0.500000, 0.000000, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 0.110407, 0.389515, 0.045765, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, -0.382683, 0.923880, -0.000000,
--12.349340, 12.349340, 0.110407, 0.389515, 0.045765, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 0.110407, 0.343750, 0.156250, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, -0.923880, 0.382683, 0.000000,
--17.464596, 0.000000, 0.110407, 0.343750, 0.156250, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 0.110407, 0.389515, 0.266735, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, -0.923880, -0.382683, 0.000000,
--12.349340, -12.349340, 0.110407, 0.389515, 0.266735, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464596, 0.110407, 0.500000, 0.312500, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, -0.382683, -0.923880, -0.000002,
-0.000001, -17.464596, 0.110407, 0.500000, 0.312500, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 0.110407, 0.610485, 0.266735, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, 0.382683, -0.923880, -0.000002,
-12.349343, -12.349342, 0.110407, 0.610485, 0.266735, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 0.110407, 0.656250, 0.156250, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, 0.923880, -0.382683, 0.000000,
-17.464600, 0.000000, 0.110407, 0.656250, 0.156250, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 0.110407, 0.610485, 0.045765, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, 0.923880, 0.382683, 0.000000,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, -0.117337, -0.283277, 0.951833,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, -0.117337, -0.283277, 0.951833,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, -0.117337, -0.283277, 0.951833,
-0.000001, 17.464598, 1.144262, 0.500000, 0.000000, 0.117337, -0.283277, 0.951833,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, 0.117337, -0.283277, 0.951833,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.117337, -0.283277, 0.951833,
--12.349340, 12.349340, 1.144262, 0.389515, 0.045765, 0.283277, -0.117337, 0.951833,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, 0.283277, -0.117337, 0.951833,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.283277, -0.117337, 0.951833,
--17.464596, 0.000000, 1.144262, 0.343750, 0.156250, 0.283277, 0.117337, 0.951833,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, 0.283277, 0.117337, 0.951833,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.283277, 0.117337, 0.951833,
--12.349340, -12.349340, 1.144262, 0.389515, 0.266735, 0.117337, 0.283277, 0.951833,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, 0.117337, 0.283277, 0.951833,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, 0.117337, 0.283277, 0.951833,
-0.000001, -17.464600, 1.144262, 0.500000, 0.312500, -0.117337, 0.283277, 0.951833,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, -0.117337, 0.283277, 0.951833,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.117337, 0.283277, 0.951833,
-12.349343, -12.349342, 1.144262, 0.610485, 0.266735, -0.283277, 0.117337, 0.951833,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, -0.283277, 0.117337, 0.951833,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.283277, 0.117337, 0.951833,
-17.464600, 0.000000, 1.144262, 0.656250, 0.156250, -0.283277, -0.117337, 0.951833,
-12.349342, 12.349340, 1.144262, 0.610485, 0.045765, -0.283277, -0.117337, 0.951833,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.283277, -0.117337, 0.951833,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.301379, -0.124836, 0.945297,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.301379, -0.124836, 0.945297,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, -0.301379, -0.124836, 0.945297,
-11.126455, 11.126453, 0.629568, 0.610485, 0.045765, -0.124835, -0.301379, 0.945297,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, -0.124835, -0.301379, 0.945297,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, -0.124835, -0.301379, 0.945297,
-0.000001, 15.735191, 0.629568, 0.500000, 0.000000, 0.124835, -0.301379, 0.945297,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.124835, -0.301379, 0.945297,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, 0.124835, -0.301379, 0.945297,
--11.126453, 11.126453, 0.629568, 0.389515, 0.045765, 0.301379, -0.124835, 0.945297,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.301379, -0.124835, 0.945297,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, 0.301379, -0.124835, 0.945297,
--15.735189, 0.000000, 0.629568, 0.343750, 0.156250, 0.301379, 0.124835, 0.945297,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.301379, 0.124835, 0.945297,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, 0.301379, 0.124835, 0.945297,
--11.126453, -11.126453, 0.629568, 0.389515, 0.266735, 0.124836, 0.301379, 0.945297,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, 0.124835, 0.301379, 0.945297,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, 0.124836, 0.301379, 0.945297,
-0.000001, -15.735191, 0.629568, 0.500000, 0.312500, -0.124835, 0.301379, 0.945297,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.124835, 0.301379, 0.945297,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, -0.124835, 0.301379, 0.945297,
-11.126457, -11.126455, 0.629568, 0.610485, 0.266735, -0.301379, 0.124835, 0.945297,
-15.735193, 0.000000, 0.629568, 0.656250, 0.156250, -0.301379, 0.124835, 0.945297,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, -0.301379, 0.124835, 0.945297,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, 0.923878, 0.382687, 0.000000,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, 0.923878, 0.382687, 0.000000,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.890349, 0.368798, -0.266959,
-1.172339, 1.172337, -3.858527, 0.610485, 0.045765, 0.382687, 0.923878, 0.000000,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, 0.382687, 0.923878, 0.000000,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, 0.368799, 0.890348, -0.266960,
-0.000001, 1.657940, -3.858527, 0.500000, 0.000000, -0.382687, 0.923878, -0.000000,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, -0.382687, 0.923878, -0.000000,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.368799, 0.890348, -0.266959,
--1.172335, 1.172337, -3.858527, 0.389515, 0.045765, -0.923878, 0.382687, -0.000000,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, -0.923878, 0.382687, -0.000000,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, 0.368798, -0.266960,
--1.657938, 0.000000, -3.858527, 0.343750, 0.156250, -0.923878, -0.382687, -0.000000,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, -0.923878, -0.382687, -0.000000,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.890348, -0.368798, -0.266959,
--1.172335, -1.172337, -3.858527, 0.389515, 0.266735, -0.382687, -0.923878, -0.000000,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, -0.382687, -0.923878, -0.000000,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, -0.368799, -0.890348, -0.266960,
-0.000001, -1.657940, -3.858527, 0.500000, 0.312500, 0.382687, -0.923878, 0.000000,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, 0.382687, -0.923878, 0.000000,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.368799, -0.890348, -0.266959,
-1.172339, -1.172337, -3.858527, 0.610485, 0.266735, 0.923878, -0.382687, 0.000000,
-1.657941, 0.000000, -3.858527, 0.656250, 0.156250, 0.923878, -0.382687, 0.000000,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, -0.368798, -0.266960,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, 0.368798, -0.266960,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.890349, 0.368798, -0.266959,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.916255, 0.379530, 0.128197,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.890349, -0.368798, -0.266959,
-1.657941, 0.000000, 18.507620, 0.656250, 0.156250, 0.890348, -0.368798, -0.266960,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, -0.379530, 0.128199,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, 0.368799, -0.890348, -0.266960,
-1.172338, -1.172337, 18.507620, 0.610485, 0.266735, 0.368799, -0.890348, -0.266959,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.379530, -0.916255, 0.128197,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.368799, -0.890348, -0.266959,
-0.000001, -1.657940, 18.507620, 0.500000, 0.312500, -0.368799, -0.890348, -0.266960,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, -0.379530, -0.916255, 0.128199,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, -0.368798, -0.266960,
--1.172336, -1.172337, 18.507620, 0.389515, 0.266735, -0.890348, -0.368798, -0.266959,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.916255, -0.379530, 0.128197,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.890348, 0.368798, -0.266959,
--1.657939, 0.000000, 18.507620, 0.343750, 0.156250, -0.890348, 0.368798, -0.266960,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, 0.379530, 0.128199,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, -0.368799, 0.890348, -0.266960,
--1.172336, 1.172337, 18.507620, 0.389515, 0.045765, -0.368799, 0.890348, -0.266959,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.379530, 0.916255, 0.128197,
-1.172338, 1.172337, 18.507620, 0.610485, 0.045765, 0.368799, 0.890348, -0.266959,
-0.000001, 1.657940, 18.507620, 0.500000, 0.000000, 0.368799, 0.890348, -0.266960,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, 0.379530, 0.916255, 0.128199,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.916255, -0.379530, 0.128197,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, -0.379530, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.831594, -0.344462, 0.435657,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, 0.379530, -0.916255, 0.128199,
-3.204545, -3.204544, 18.507618, 0.610485, 0.266735, 0.379530, -0.916255, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.344462, -0.831594, 0.435657,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.379530, -0.916255, 0.128197,
-0.000000, -4.531925, 18.507618, 0.500000, 0.312500, -0.379530, -0.916255, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.344462, -0.831594, 0.435657,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, -0.379530, 0.128199,
--3.204544, -3.204544, 18.507618, 0.389515, 0.266735, -0.916255, -0.379530, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.831594, -0.344462, 0.435657,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.916255, 0.379530, 0.128197,
--4.531927, 0.000000, 18.507618, 0.343750, 0.156250, -0.916254, 0.379530, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.831594, 0.344462, 0.435657,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, -0.379530, 0.916255, 0.128199,
--3.204544, 3.204544, 18.507618, 0.389515, 0.045765, -0.379530, 0.916255, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, -0.344462, 0.831594, 0.435657,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.379530, 0.916255, 0.128197,
-0.000000, 4.531925, 18.507618, 0.500000, 0.000000, 0.379530, 0.916255, 0.128199,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.344462, 0.831594, 0.435657,
-4.531928, 0.000000, 18.507618, 0.656250, 0.156250, 0.916255, 0.379530, 0.128199,
-3.204545, 3.204544, 18.507618, 0.610485, 0.045765, 0.916255, 0.379530, 0.128197,
-0.000000, 0.000000, 27.158279, 0.500000, 0.156250, 0.831594, 0.344462, 0.435657,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h b/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h
deleted file mode 100644
index 3d1390a..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/GeometryData/WindGeometryData.h
+++ /dev/null
@@ -1,2513 +0,0 @@
-const int num_faces = 836;
-
-// pos.xyz, uv.uv, normal.xyz
-float vertices[836*3*8] = {
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, -0.570521, -0.819696, 0.051023,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.002737, 4.997122, -28.191074, 0.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.002737, 4.921762, -29.530731, 0.000000, 0.966243, -0.582241, 0.811733, -0.045666,
--1.002737, 5.199909, -26.333269, 0.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 4.997122, -28.191074, 0.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.336982, 4.293425, -28.133030, 0.500000, 0.922656, -0.999926, -0.012083, 0.001603,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.002737, 5.640600, -24.050657, 0.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.002737, 5.199909, -26.333269, 0.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 6.429670, -21.436577, 0.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 5.640600, -24.050657, 0.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.336982, 4.951294, -23.914915, 0.500000, 0.775297, -0.999837, -0.017439, 0.004781,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.002737, 7.484703, -18.704168, 0.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.002737, 6.429670, -21.436577, 0.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 8.723274, -16.066572, 0.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 7.484703, -18.704168, 0.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.336982, 6.802818, -18.519814, 0.500000, 0.547971, -0.999946, -0.009100, 0.005070,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.002737, 10.001389, -13.505806, 0.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.002737, 8.723274, -16.066572, 0.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 11.175043, -11.003893, 0.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.002737, 10.001389, -13.505806, 0.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.336982, 9.314625, -13.332255, 0.500000, 0.282904, -0.999983, 0.005125, -0.002905,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.003346, 12.054029, -8.797724, 0.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.002737, 11.175043, -11.003893, 0.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.005175, 12.448139, -7.124194, 0.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.003346, 12.054029, -8.797724, 0.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.337592, 11.355911, -8.670841, 0.583333, -0.069211, -0.999594, 0.026023, -0.011609,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.006394, 11.114811, -5.517140, 1.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.340640, 11.818584, -5.617008, 1.166667, -0.809096, -0.999853, 0.017074, 0.001872,
--1.340640, 11.818584, -5.617008, 1.166667, -0.809096, -0.999853, 0.017074, 0.001872,
--1.006394, 12.522362, -5.716876, 1.333333, -1.447277, -0.566040, 0.824377, 0.001632,
--1.005175, 12.448139, -7.124194, 0.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.002737, 11.560024, -0.158328, 0.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.003346, 12.142200, -2.567771, 0.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.337592, 11.435898, -2.488622, 0.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.337592, 11.435898, -2.488622, 0.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.003346, 10.729588, -2.409474, 1.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.002737, 10.886791, 2.566613, 0.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.002737, 11.560024, -0.158328, 0.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 10.314148, 5.254678, 0.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.886791, 2.566613, 0.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.336982, 10.194935, 2.646095, 0.500000, -0.671927, -0.999975, -0.006839, -0.001674,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.002737, 10.024443, 7.827566, 0.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.002737, 10.314148, 5.254678, 0.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.200031, 10.206976, 0.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.024443, 7.827566, 0.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.336982, 9.384014, 7.968127, 0.500000, -1.016250, -0.999385, -0.034959, -0.002597,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.002737, 10.783842, 12.373039, 0.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.002737, 10.200031, 10.206976, 0.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 11.718807, 14.305887, 0.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 10.783842, 12.373039, 0.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.336982, 10.239292, 12.641662, 0.500000, -1.349954, -0.999218, -0.036495, 0.015192,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.002737, 12.901150, 15.938179, 0.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.002737, 11.718807, 14.305887, 0.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 14.227100, 17.202572, 0.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 12.901150, 15.938179, 0.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.336982, 12.495934, 16.355419, 0.500000, -1.679268, -0.999037, -0.033130, 0.028753,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.002737, 15.688553, 18.126600, 0.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.002737, 14.227100, 17.202572, 0.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 17.277420, 18.737804, 0.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 15.688553, 18.126600, 0.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.336982, 15.450417, 18.654261, 0.500000, -1.988039, -0.998886, -0.021466, 0.042031,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.002737, 18.963112, 19.009758, 0.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.002737, 17.277420, 18.737804, 0.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 20.715042, 18.916035, 0.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 18.963112, 19.009758, 0.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.336982, 18.926823, 19.584188, 0.500000, -2.305904, -0.998704, -0.001978, 0.050855,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.002737, 22.528088, 18.387989, 0.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.002737, 20.715042, 18.916035, 0.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 24.397125, 17.356983, 0.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 22.528088, 18.387989, 0.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.336982, 22.719658, 18.922981, 0.500000, -2.646001, -0.998523, 0.022590, 0.049420,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.002737, 26.120163, 15.851318, 0.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.002737, 24.397125, 17.356983, 0.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 27.495193, 13.899298, 0.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 26.120163, 15.851318, 0.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.336982, 26.551086, 16.221825, 0.500000, -3.038383, -0.998387, 0.041476, 0.038776,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.002737, 28.234837, 11.594271, 0.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.002737, 27.495193, 13.899298, 0.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 28.051701, 9.029581, 0.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 28.234837, 11.594271, 0.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.336982, 28.829937, 11.681159, 0.500000, -3.421010, -0.997287, 0.072725, 0.011376,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.002737, 27.272324, 6.583387, 0.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.002737, 28.051701, 9.029581, 0.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 26.223228, 4.633848, 0.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 27.272324, 6.583387, 0.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.336982, 27.897224, 6.377859, 0.500000, -3.741288, -0.999306, 0.035287, -0.011950,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.002737, 25.192875, 3.192066, 0.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.002737, 26.223228, 4.633848, 0.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 24.600067, 1.327282, 1.166667, -2.723639, -0.595697, -0.491752, -0.635079,
--0.742768, 24.296909, 1.783397, 1.333333, -1.447277, -0.428917, -0.894621, -0.125234,
--1.002737, 24.469711, 2.269146, 0.666667, -2.691582, -0.583534, -0.710408, 0.393458,
--1.002737, 24.469711, 2.269146, 0.666667, -2.691582, -0.583534, -0.710408, 0.393458,
--1.002737, 25.192875, 3.192066, 0.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.336982, 25.778152, 2.814326, 0.583333, -3.762508, -0.999924, 0.011227, -0.005182,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--0.742768, 25.130249, 1.141007, 1.000000, -4.000000, -0.424007, 0.088516, -0.901323,
--1.002737, 24.600067, 1.327282, 1.166667, -2.723639, -0.595697, -0.491752, -0.635079,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.570521, -0.819696, 0.051023,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, -0.570521, -0.819696, 0.051023,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 3.589727, -28.074986, 1.000000, 0.922656, -0.569426, -0.818637, 0.074745,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-0.000000, 3.355162, -28.055641, 1.500000, 0.922656, -0.000000, -0.995829, 0.091245,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
--1.002737, 3.807196, -26.139326, 1.000000, 0.859409, -0.566467, -0.814177, 0.127399,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 4.261988, -23.779169, 1.000000, 0.775297, -0.564634, -0.800896, 0.199384,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-0.000000, 4.032219, -23.733923, 1.500000, 0.775297, 0.000000, -0.970479, 0.241185,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
--1.002737, 5.061195, -21.104027, 1.000000, 0.669113, -0.566458, -0.779905, 0.266220,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 6.120935, -18.335461, 1.000000, 0.547971, -0.566613, -0.758528, 0.321845,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-0.000000, 5.893641, -18.274008, 1.500000, 0.547971, -0.000000, -0.920850, 0.389917,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
--1.002737, 7.357327, -15.695049, 1.000000, 0.418984, -0.568348, -0.740553, 0.358555,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.002737, 8.627859, -13.158705, 1.000000, 0.282904, -0.571429, -0.737705, 0.359528,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-0.000000, 8.398937, -13.100854, 1.500000, 0.282904, 0.000000, -0.898731, 0.438502,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--1.002737, 9.790028, -10.702334, 1.000000, 0.140482, -0.576949, -0.747604, 0.328966,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.003346, 10.657795, -8.543959, 1.020833, -0.009381, -0.588551, -0.767718, 0.253411,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
--0.000610, 10.425087, -8.501664, 1.500000, 0.010562, 0.000044, -0.949091, 0.315003,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-0.999079, 11.114811, -5.517140, 2.000000, -0.170915, 0.582792, -0.812607, -0.004817,
--0.003657, 10.880220, -5.483850, 1.500000, -0.170915, -0.000127, -0.999975, -0.007088,
--0.003657, 10.880220, -5.483850, 1.500000, -0.170915, -0.000127, -0.999975, -0.007088,
--1.006394, 11.114811, -5.517140, 1.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.005175, 11.045135, -6.901599, 1.083333, -0.167786, -0.591577, -0.797310, 0.119726,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.003346, 10.729588, -2.409474, 1.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--0.000610, 10.494156, -2.383091, 1.500000, -0.336720, 0.000040, -0.977947, -0.208854,
--0.000610, 10.494156, -2.383091, 1.500000, -0.336720, 0.000040, -0.977947, -0.208854,
-1.002127, 10.729588, -2.409474, 2.000000, -0.336720, 0.568931, -0.804350, -0.171283,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
--1.002737, 10.154959, -0.010050, 1.000000, -0.503387, -0.554465, -0.809442, -0.193318,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 9.503082, 2.725576, 1.000000, -0.671927, -0.543427, -0.820485, -0.177458,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-0.000000, 9.272461, 2.752070, 1.500000, -0.671927, -0.000000, -0.977791, -0.209581,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
--1.002737, 8.971350, 5.457178, 1.000000, -0.844213, -0.532911, -0.837943, -0.117722,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 8.743584, 8.108688, 1.000000, -1.016250, -0.522039, -0.852900, 0.006099,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-0.000000, 8.530107, 8.155542, 1.500000, -1.016250, 0.000000, -0.999937, 0.011225,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
--1.002737, 9.003599, 10.604042, 1.000000, -1.184038, -0.512969, -0.841946, 0.167304,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 9.694744, 12.910284, 1.000000, -1.349954, -0.500990, -0.803388, 0.321833,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-0.000000, 9.513226, 12.999825, 1.500000, -1.349954, 0.000000, -0.927387, 0.374104,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
--1.002737, 10.760361, 14.994465, 1.000000, -1.516370, -0.490912, -0.740187, 0.459488,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 12.090717, 16.772659, 1.000000, -1.679268, -0.484165, -0.653669, 0.581636,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-0.000000, 11.955647, 16.911739, 1.500000, -1.679268, 0.000000, -0.746148, 0.665780,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
--1.002737, 13.576077, 18.160946, 1.000000, -1.834628, -0.481336, -0.535363, 0.694048,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 15.212280, 19.181923, 1.000000, -1.988039, -0.480827, -0.389724, 0.785443,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-0.000000, 15.132900, 19.357809, 1.500000, -1.988039, 0.000001, -0.443892, 0.896080,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
--1.002737, 16.995155, 19.858189, 1.000000, -2.145087, -0.479530, -0.225145, 0.848151,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 18.890533, 20.158619, 1.000000, -2.305904, -0.477686, -0.044014, 0.877427,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-0.000000, 18.878441, 20.350098, 1.500000, -2.305904, 0.000000, -0.050074, 0.998746,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
--1.002737, 20.864250, 20.052088, 1.000000, -2.470621, -0.474232, 0.150976, 0.867358,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 22.911228, 19.457972, 1.000000, -2.646001, -0.471248, 0.342725, 0.812690,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-0.000000, 22.975082, 19.636301, 1.500000, -2.646001, 0.000000, 0.388135, 0.921603,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
--1.002737, 25.026405, 18.295650, 1.000000, -2.838810, -0.470077, 0.507995, 0.721781,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 26.982025, 16.592329, 1.000000, -3.038383, -0.470672, 0.656259, 0.589739,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-0.000000, 27.125668, 16.715830, 1.500000, -3.038383, 0.000001, 0.743876, 0.668318,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
--1.002737, 28.550339, 14.375221, 1.000000, -3.234054, -0.475606, 0.784875, 0.397203,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 29.425041, 11.768046, 1.000000, -3.421010, -0.486094, 0.865825, 0.118573,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-0.000000, 29.623409, 11.797009, 1.500000, -3.421010, 0.000000, 0.990552, 0.137137,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
--1.002737, 29.299828, 8.894522, 1.000000, -3.594440, -0.508085, 0.850361, -0.136877,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
--1.002737, 28.522129, 6.172330, 1.000000, -3.741287, -0.527924, 0.793569, -0.302563,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-0.000000, 28.730427, 6.103821, 1.500000, -3.741288, 0.000000, 0.935308, -0.353834,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
--1.002737, 27.439381, 4.019153, 1.000000, -3.848496, -0.545786, 0.725589, -0.419091,
-0.000000, 25.158775, 0.885566, 1.500000, -4.000000, 0.000000, 0.098978, -0.995090,
--0.742768, 25.130249, 1.141007, 1.000000, -4.000000, -0.424007, 0.088516, -0.901323,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 25.606094, 1.426226, 1.083333, -3.808398, -0.572183, 0.564519, -0.594916,
--1.002737, 26.363422, 2.436586, 1.020833, -3.882167, -0.561369, 0.675750, -0.477732,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-0.000000, 26.558514, 2.310673, 1.500000, -3.922053, 0.000001, 0.817607, -0.575776,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-0.742768, 25.130249, 1.141007, 2.000000, -4.000000, 0.424007, 0.088516, -0.901323,
-0.000000, 25.158775, 0.885566, 1.500000, -4.000000, 0.000000, 0.098978, -0.995090,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, 0.582240, 0.811733, -0.045667,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.570521, -0.819696, 0.051023,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 3.589725, -28.074989, 2.000000, 0.922656, 0.569426, -0.818637, 0.074745,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.336982, 4.293425, -28.133030, 2.500000, 0.922656, 0.999926, -0.012083, 0.001603,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.002737, 3.807196, -26.139326, 2.000000, 0.859409, 0.566467, -0.814178, 0.127399,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 4.261988, -23.779171, 2.000000, 0.775297, 0.564634, -0.800896, 0.199384,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.336982, 4.951294, -23.914915, 2.500000, 0.775297, 0.999837, -0.017439, 0.004781,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.002737, 5.061195, -21.104025, 2.000000, 0.669113, 0.566458, -0.779905, 0.266220,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 6.120935, -18.335461, 2.000000, 0.547971, 0.566613, -0.758528, 0.321845,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.336982, 6.802818, -18.519814, 2.500000, 0.547971, 0.999946, -0.009100, 0.005070,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.002737, 7.357327, -15.695049, 2.000000, 0.418984, 0.568348, -0.740553, 0.358555,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.002737, 8.627859, -13.158705, 2.000000, 0.282904, 0.571429, -0.737705, 0.359528,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.336982, 9.314625, -13.332256, 2.500000, 0.282904, 0.999983, 0.005126, -0.002905,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.002737, 9.790028, -10.702334, 2.000000, 0.140482, 0.576977, -0.747533, 0.329077,
-1.333325, 11.818588, -5.617008, 2.500000, -0.170915, 0.999852, 0.017082, 0.001868,
-0.999079, 11.114811, -5.517140, 2.000000, -0.170915, 0.582792, -0.812607, -0.004817,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.000299, 11.045135, -6.901599, 2.000000, -0.088013, 0.591516, -0.797171, 0.120947,
-1.002127, 10.657795, -8.543959, 2.000000, 0.010562, 0.588607, -0.767452, 0.254084,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.336373, 11.355911, -8.670841, 2.500000, 0.010562, 0.999602, 0.026239, -0.010414,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-0.999079, 12.522362, -5.716876, 3.000000, -0.170915, 0.565733, 0.824587, 0.001687,
-1.333325, 11.818588, -5.617008, 2.500000, -0.170915, 0.999852, 0.017082, 0.001868,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002127, 10.729588, -2.409474, 2.000000, -0.336720, 0.568931, -0.804350, -0.171283,
-1.336373, 11.435898, -2.488622, 2.500000, -0.336720, 0.999684, 0.024018, 0.007427,
-1.336373, 11.435898, -2.488622, 2.500000, -0.336720, 0.999684, 0.024018, 0.007427,
-1.002127, 12.142200, -2.567771, 3.000000, -0.336720, 0.545588, 0.819894, 0.173516,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.002737, 10.154957, -0.010050, 2.000000, -0.503387, 0.554487, -0.809403, -0.193422,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 9.503082, 2.725576, 2.000000, -0.671927, 0.543427, -0.820485, -0.177458,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.336982, 10.194935, 2.646095, 2.500000, -0.671927, 0.999975, -0.006839, -0.001674,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.002737, 8.971350, 5.457179, 2.000000, -0.844213, 0.532911, -0.837943, -0.117722,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 8.743584, 8.108689, 2.000000, -1.016250, 0.522039, -0.852900, 0.006099,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.336982, 9.384014, 7.968127, 2.500000, -1.016250, 0.999385, -0.034959, -0.002597,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.002737, 9.003599, 10.604041, 2.000000, -1.184038, 0.512969, -0.841946, 0.167304,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 9.694744, 12.910284, 2.000000, -1.349954, 0.500990, -0.803388, 0.321833,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.336982, 10.239292, 12.641662, 2.500000, -1.349954, 0.999218, -0.036495, 0.015192,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.002737, 10.760361, 14.994465, 2.000000, -1.516370, 0.490912, -0.740187, 0.459488,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 12.090717, 16.772659, 2.000000, -1.679268, 0.484165, -0.653669, 0.581636,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.336982, 12.495934, 16.355419, 2.500000, -1.679268, 0.999037, -0.033131, 0.028753,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.002737, 13.576080, 18.160946, 2.000000, -1.834628, 0.481336, -0.535363, 0.694048,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 15.212280, 19.181923, 2.000000, -1.988039, 0.480828, -0.389724, 0.785442,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.336982, 15.450417, 18.654261, 2.500000, -1.988039, 0.998886, -0.021467, 0.042031,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.002737, 16.995155, 19.858189, 2.000000, -2.145087, 0.479530, -0.225145, 0.848151,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 18.890533, 20.158619, 2.000000, -2.305904, 0.477686, -0.044014, 0.877427,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.336982, 18.926823, 19.584188, 2.500000, -2.305904, 0.998704, -0.001978, 0.050856,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.002737, 20.864250, 20.052088, 2.000000, -2.470621, 0.474231, 0.150976, 0.867359,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 22.911228, 19.457972, 2.000000, -2.646001, 0.471248, 0.342725, 0.812690,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.336982, 22.719658, 18.922981, 2.500000, -2.646001, 0.998523, 0.022591, 0.049420,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.002737, 25.026405, 18.295650, 2.000000, -2.838810, 0.470077, 0.507995, 0.721781,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 26.982021, 16.592329, 2.000000, -3.038383, 0.470672, 0.656258, 0.589740,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.336982, 26.551086, 16.221825, 2.500000, -3.038383, 0.998387, 0.041476, 0.038776,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.002737, 28.550339, 14.375221, 2.000000, -3.234054, 0.475606, 0.784875, 0.397204,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 29.425041, 11.768046, 2.000000, -3.421010, 0.486093, 0.865826, 0.118573,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.336982, 28.829941, 11.681159, 2.500000, -3.421010, 0.997287, 0.072725, 0.011376,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.002737, 29.299828, 8.894522, 2.000000, -3.594440, 0.508084, 0.850362, -0.136877,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 28.522129, 6.172330, 2.000000, -3.741287, 0.527923, 0.793569, -0.302564,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.336982, 27.897228, 6.377859, 2.500000, -3.741288, 0.999306, 0.035287, -0.011950,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.002737, 27.439377, 4.019153, 2.000000, -3.848496, 0.545786, 0.725589, -0.419091,
-1.002737, 24.600067, 1.327282, 2.500000, -4.000000, 0.595697, -0.491752, -0.635079,
-0.742768, 25.130249, 1.141007, 2.000000, -4.000000, 0.424007, 0.088516, -0.901323,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 25.606094, 1.426226, 2.000000, -3.967943, 0.572183, 0.564519, -0.594916,
-1.002737, 26.363422, 2.436586, 2.000000, -3.922053, 0.561369, 0.675750, -0.477732,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.336982, 25.778152, 2.814326, 2.500000, -3.922053, 0.999924, 0.011227, -0.005182,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-0.742768, 24.296909, 1.783397, 3.000000, -4.000000, 0.428917, -0.894621, -0.125234,
-1.002737, 24.600067, 1.327282, 2.500000, -4.000000, 0.595697, -0.491752, -0.635079,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, -0.582241, 0.811733, -0.045666,
--1.002737, 4.997122, -28.191074, 4.000000, 0.932486, -0.582174, 0.810005, -0.070467,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, 0.582240, 0.811733, -0.045667,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 4.997122, -28.191074, 3.000000, 0.922656, 0.582175, 0.810004, -0.070467,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
-0.000000, 5.231688, -28.210423, 3.500000, 0.922656, 0.000000, 0.996270, -0.086288,
--1.002737, 4.997122, -28.191074, 4.000000, 0.932486, -0.582174, 0.810005, -0.070467,
--1.002737, 5.199909, -26.333269, 4.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 5.199909, -26.333269, 4.000000, 0.859409, -0.582690, 0.803052, -0.124820,
--1.002737, 5.640600, -24.050657, 4.000000, 0.786333, -0.583127, 0.787897, -0.197941,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-1.002737, 5.199909, -26.333269, 3.000000, 0.859409, 0.582690, 0.803052, -0.124820,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 5.640600, -24.050657, 3.000000, 0.775297, 0.583127, 0.787897, -0.197941,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
-0.000000, 5.870369, -24.095905, 3.500000, 0.775297, 0.000000, 0.969755, -0.244081,
--1.002737, 5.640600, -24.050657, 4.000000, 0.786333, -0.583127, 0.787897, -0.197941,
--1.002737, 6.429670, -21.436577, 4.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 6.429670, -21.436577, 4.000000, 0.669113, -0.579786, 0.770207, -0.265761,
--1.002737, 7.484703, -18.704168, 4.000000, 0.551894, -0.576888, 0.751118, -0.320970,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-1.002737, 6.429670, -21.436577, 3.000000, 0.669113, 0.579786, 0.770207, -0.265761,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 7.484703, -18.704170, 3.000000, 0.547971, 0.576888, 0.751119, -0.320970,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
-0.000000, 7.711994, -18.765621, 3.500000, 0.547971, -0.000000, 0.919277, -0.393611,
--1.002737, 7.484703, -18.704168, 4.000000, 0.551894, -0.576888, 0.751118, -0.320970,
--1.002737, 8.723274, -16.066572, 4.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 8.723274, -16.066572, 4.000000, 0.418984, -0.570577, 0.739144, -0.357922,
--1.002737, 10.001389, -13.505806, 4.000000, 0.286075, -0.565597, 0.742253, -0.359389,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-1.002737, 8.723274, -16.066572, 3.000000, 0.418984, 0.570576, 0.739144, -0.357922,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.002737, 10.001389, -13.505806, 3.000000, 0.282904, 0.565597, 0.742254, -0.359389,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
-0.000000, 10.230309, -13.563657, 3.500000, 0.282904, -0.000000, 0.900257, -0.435359,
--1.002737, 10.001389, -13.505806, 4.000000, 0.286075, -0.565597, 0.742253, -0.359389,
--1.002737, 11.175043, -11.003893, 4.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.002737, 11.175043, -11.003893, 4.000000, 0.140482, -0.562513, 0.757929, -0.330337,
--1.003346, 12.054029, -8.797724, 4.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
-1.002737, 11.175043, -11.003893, 3.000000, 0.140482, 0.562569, 0.757951, -0.330192,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.002127, 12.054029, -8.797724, 2.958333, -0.009381, 0.560195, 0.787255, -0.257702,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--0.000610, 12.286734, -8.840019, 3.333333, -0.069211, 0.000044, 0.950614, -0.310377,
--1.003346, 12.054029, -8.797724, 4.000000, -0.005111, -0.560047, 0.787144, -0.258362,
--1.005175, 12.448139, -7.124194, 2.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.005175, 12.448139, -7.124194, 2.666667, -0.726194, -0.564732, 0.815815, -0.124590,
--1.006394, 12.522362, -5.716876, 1.333333, -1.447277, -0.566040, 0.824377, 0.001632,
--0.003657, 12.756954, -5.750165, 2.166667, -0.809096, -0.000126, 1.000000, 0.000870,
--0.003657, 12.756954, -5.750165, 2.166667, -0.809096, -0.000126, 1.000000, 0.000870,
-0.999079, 12.522362, -5.716876, 3.000000, -0.170915, 0.565733, 0.824587, 0.001687,
-1.000299, 12.448139, -7.124194, 2.833333, -0.167786, 0.564659, 0.816023, -0.123558,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002127, 12.142200, -2.567771, 3.000000, -0.336720, 0.545588, 0.819894, 0.173516,
--0.000610, 12.377636, -2.594154, 3.500000, -0.336720, 0.000041, 0.978486, 0.206311,
--0.000610, 12.377636, -2.594154, 3.500000, -0.336720, 0.000041, 0.978486, 0.206311,
--1.003346, 12.142200, -2.567771, 4.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.002737, 11.560024, -0.158328, 4.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 11.560024, -0.158328, 4.000000, -0.503387, -0.548128, 0.812439, 0.198744,
--1.002737, 10.886791, 2.566613, 4.000000, -0.670054, -0.549613, 0.814083, 0.187601,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-1.002737, 11.560024, -0.158328, 3.000000, -0.503387, 0.548192, 0.812432, 0.198592,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.886791, 2.566613, 3.000000, -0.671927, 0.549613, 0.814083, 0.187601,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
-0.000000, 11.117409, 2.540119, 3.500000, -0.671927, 0.000000, 0.974103, 0.226104,
--1.002737, 10.886791, 2.566613, 4.000000, -0.670054, -0.549613, 0.814083, 0.187601,
--1.002737, 10.314148, 5.254678, 4.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.314148, 5.254678, 4.000000, -0.844213, -0.550065, 0.824042, 0.135588,
--1.002737, 10.024443, 7.827566, 4.000000, -1.018373, -0.552727, 0.833125, 0.019881,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-1.002737, 10.314148, 5.254678, 3.000000, -0.844213, 0.550065, 0.824042, 0.135587,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 10.024445, 7.827566, 3.000000, -1.016250, 0.552727, 0.833125, 0.019881,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
-0.000000, 10.237921, 7.780712, 3.500000, -1.016250, -0.000000, 0.999593, 0.028523,
--1.002737, 10.024443, 7.827566, 4.000000, -1.018373, -0.552727, 0.833125, 0.019881,
--1.002737, 10.200031, 10.206976, 4.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.200031, 10.206976, 4.000000, -1.184038, -0.545898, 0.826469, -0.137636,
--1.002737, 10.783842, 12.373039, 4.000000, -1.349704, -0.535040, 0.792292, -0.293266,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-1.002737, 10.200031, 10.206976, 3.000000, -1.184038, 0.545898, 0.826469, -0.137636,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 10.783842, 12.373039, 3.000000, -1.349954, 0.535040, 0.792292, -0.293267,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
-0.000000, 10.965359, 12.283498, 3.500000, -1.349954, -0.000000, 0.938935, -0.344095,
--1.002737, 10.783842, 12.373039, 4.000000, -1.349704, -0.535040, 0.792292, -0.293266,
--1.002737, 11.718807, 14.305887, 4.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 11.718807, 14.305887, 4.000000, -1.516370, -0.524951, 0.731928, -0.434405,
--1.002737, 12.901150, 15.938179, 4.000000, -1.683037, -0.520176, 0.645820, -0.558867,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-1.002737, 11.718807, 14.305887, 3.000000, -1.516370, 0.524951, 0.731928, -0.434405,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 12.901150, 15.938179, 3.000000, -1.679268, 0.520177, 0.645820, -0.558867,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
-0.000000, 13.036221, 15.799099, 3.500000, -1.679268, 0.000000, 0.757369, -0.652987,
--1.002737, 12.901150, 15.938179, 4.000000, -1.683037, -0.520176, 0.645820, -0.558867,
--1.002737, 14.227100, 17.202572, 4.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 14.227100, 17.202572, 4.000000, -1.834628, -0.519663, 0.527798, -0.671848,
--1.002737, 15.688553, 18.126600, 4.000000, -1.986219, -0.519424, 0.384311, -0.763219,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-1.002737, 14.227100, 17.202572, 3.000000, -1.834628, 0.519663, 0.527798, -0.671848,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 15.688553, 18.126600, 3.000000, -1.988039, 0.519424, 0.384311, -0.763219,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
-0.000000, 15.767933, 17.950714, 3.500000, -1.988039, 0.000000, 0.450479, -0.892787,
--1.002737, 15.688553, 18.126600, 4.000000, -1.986219, -0.519424, 0.384311, -0.763219,
--1.002737, 17.277420, 18.737804, 4.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 17.277420, 18.737804, 4.000000, -2.145087, -0.519855, 0.222506, -0.824768,
--1.002737, 18.963112, 19.009758, 4.000000, -2.303954, -0.519106, 0.044200, -0.853567,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-1.002737, 17.277420, 18.737804, 3.000000, -2.145087, 0.519855, 0.222506, -0.824768,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 18.963112, 19.009758, 3.000000, -2.305904, 0.519106, 0.044200, -0.853567,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
-0.000000, 18.975204, 18.818281, 3.500000, -2.305904, -0.000000, 0.051821, -0.998656,
--1.002737, 18.963112, 19.009758, 4.000000, -2.303954, -0.519106, 0.044200, -0.853567,
--1.002737, 20.715042, 18.916035, 4.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 20.715042, 18.916035, 4.000000, -2.470621, -0.518180, -0.147145, -0.842519,
--1.002737, 22.528088, 18.387989, 4.000000, -2.637287, -0.514483, -0.334572, -0.789537,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-1.002737, 20.715042, 18.916035, 3.000000, -2.470621, 0.518180, -0.147145, -0.842519,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 22.528091, 18.387989, 3.000000, -2.646001, 0.514483, -0.334572, -0.789537,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
-0.000000, 22.464233, 18.209660, 3.500000, -2.646001, -0.000000, -0.390600, -0.920561,
--1.002737, 22.528088, 18.387989, 4.000000, -2.637287, -0.514483, -0.334572, -0.789537,
--1.002737, 24.397125, 17.356983, 4.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 24.397125, 17.356983, 4.000000, -2.838810, -0.512162, -0.495528, -0.701529,
--1.002737, 26.120163, 15.851318, 4.000000, -3.040334, -0.515999, -0.637877, -0.571716,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-1.002737, 24.397125, 17.356983, 3.000000, -2.838810, 0.512162, -0.495528, -0.701529,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 26.120163, 15.851318, 3.000000, -3.038383, 0.515999, -0.637877, -0.571716,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
-0.000000, 25.976517, 15.727814, 3.500000, -3.038383, -0.000000, -0.744667, -0.667436,
--1.002737, 26.120163, 15.851318, 4.000000, -3.040334, -0.515999, -0.637877, -0.571716,
--1.002737, 27.495193, 13.899298, 4.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 27.495193, 13.899298, 4.000000, -3.234054, -0.529173, -0.759785, -0.377761,
--1.002737, 28.234837, 11.594271, 4.000000, -3.427773, -0.549861, -0.829859, -0.094800,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-1.002737, 27.495193, 13.899298, 3.000000, -3.234054, 0.529173, -0.759785, -0.377761,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 28.234837, 11.594270, 3.000000, -3.421010, 0.549862, -0.829858, -0.094800,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
-0.000000, 28.036469, 11.565307, 3.500000, -3.421010, -0.000000, -0.993846, -0.110776,
--1.002737, 28.234837, 11.594271, 4.000000, -3.427773, -0.549861, -0.829859, -0.094800,
--1.002737, 28.051701, 9.029581, 4.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 28.051701, 9.029581, 4.000000, -3.594440, -0.552394, -0.818572, 0.157487,
--1.002737, 27.272324, 6.583387, 4.000000, -3.761107, -0.563170, -0.762896, 0.317537,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-1.002737, 28.051701, 9.029581, 3.000000, -3.594440, 0.552395, -0.818570, 0.157487,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-1.002737, 27.272324, 6.583387, 3.000000, -3.741287, 0.563171, -0.762895, 0.317537,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
-0.000000, 27.064018, 6.651896, 3.500000, -3.741288, 0.000000, -0.921832, 0.387591,
--1.002737, 27.272324, 6.583387, 4.000000, -3.761107, -0.563170, -0.762896, 0.317537,
--1.002737, 26.223228, 4.633848, 4.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 26.223228, 4.633848, 4.000000, -3.848496, -0.571231, -0.699650, 0.429169,
--1.002737, 25.192875, 3.192066, 4.000000, -3.935886, -0.573805, -0.657830, 0.487860,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-1.002737, 26.223228, 4.633848, 3.000000, -3.848496, 0.571231, -0.699649, 0.429169,
-0.000000, 24.041351, 1.768998, 3.500000, -4.000000, 0.000000, -0.991299, -0.131630,
-0.742768, 24.296909, 1.783397, 3.000000, -4.000000, 0.428917, -0.894621, -0.125234,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 24.469711, 2.269146, 3.000000, -3.967943, 0.583534, -0.710408, 0.393458,
-1.002737, 25.192875, 3.192066, 3.000000, -3.922053, 0.573805, -0.657830, 0.487860,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
-0.000000, 24.997784, 3.317980, 3.500000, -3.922053, -0.000000, -0.801896, 0.597463,
--1.002737, 25.192875, 3.192066, 4.000000, -3.935886, -0.573805, -0.657830, 0.487860,
--1.002737, 24.469711, 2.269146, 4.000000, -3.967943, -0.583534, -0.710408, 0.393458,
--1.002737, 24.469711, 2.269146, 4.000000, -3.967943, -0.583534, -0.710408, 0.393458,
--0.742768, 24.296909, 1.783397, 4.000000, -4.000000, -0.428917, -0.894621, -0.125234,
-0.000000, 24.041351, 1.768998, 3.500000, -4.000000, 0.000000, -0.991299, -0.131630,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, -0.576236, -0.817066, 0.018853,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.002737, 0.153999, -30.965355, 0.000000, 0.945709, -0.580105, 0.814042, -0.028521,
--1.002737, 0.129889, -32.334755, 0.000000, 0.972854, -0.578352, 0.815661, -0.014359,
--1.002737, 0.245815, -29.027195, 0.000000, 0.884407, -0.580554, 0.811733, -0.063605,
--1.002737, 0.153999, -30.965355, 0.000000, 0.945709, -0.580105, 0.814042, -0.028521,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.336982, -0.552929, -30.921089, 0.500000, 0.937170, -0.999978, -0.006540, 0.000687,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.002737, 0.496042, -26.601746, 0.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.002737, 0.245815, -29.027195, 0.000000, 0.884407, -0.580554, 0.811733, -0.063605,
--1.002737, 0.995396, -23.770485, 0.000000, 0.718491, -0.583417, 0.789634, -0.190008,
--1.002737, 0.496042, -26.601746, 0.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.336982, -0.199492, -26.493555, 0.500000, 0.812277, -0.999928, -0.011914, 0.001651,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.000716, 1.899328, -20.774343, 0.000000, 0.613877, -0.578823, 0.757196, -0.302684,
--1.002737, 0.995396, -23.770485, 0.000000, 0.718491, -0.583417, 0.789634, -0.190008,
--0.994652, 3.363289, -17.854239, 1.500000, 0.568689, -0.554925, 0.739714, -0.380633,
--1.000716, 1.899328, -20.774343, 0.000000, 0.613877, -0.578823, 0.757196, -0.302684,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.334961, 1.211163, -20.628946, 0.687500, 0.612715, -0.999676, -0.020934, 0.014474,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--0.990610, 3.544037, -14.721523, 1.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--1.324855, 4.237772, -14.807808, 2.000000, 0.395355, -0.999804, 0.015791, -0.011962,
--1.324855, 4.237772, -14.807808, 2.000000, 0.395355, -0.999804, 0.015791, -0.011962,
--0.990610, 4.931509, -14.894089, 3.000000, 0.523501, -0.544986, 0.762408, -0.348891,
--0.994652, 3.363289, -17.854239, 1.500000, 0.568689, -0.554925, 0.739714, -0.380633,
--1.002737, 6.556976, -6.071414, 0.000000, -0.308178, -0.553122, 0.818963, 0.152824,
--1.000716, 6.770885, -8.754030, 0.000000, -0.079458, -0.549751, 0.833161, -0.060139,
--1.334961, 6.071638, -8.749280, 0.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.334961, 6.071638, -8.749280, 0.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.000716, 5.372389, -8.744530, 1.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.002737, 5.785589, -3.493792, 0.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.002737, 6.556976, -6.071414, 0.000000, -0.308178, -0.553122, 0.818963, 0.152824,
--1.002737, 4.735826, -0.785002, 0.000000, -0.767833, -0.563593, 0.774459, 0.287360,
--1.002737, 5.785589, -3.493792, 0.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.336982, 5.093796, -3.594290, 0.500000, -0.537451, -0.999877, 0.014256, 0.006545,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.002737, 3.758350, 1.971984, 0.000000, -0.998770, -0.573360, 0.788967, 0.220880,
--1.002737, 4.735826, -0.785002, 0.000000, -0.767833, -0.563593, 0.774459, 0.287360,
--1.002737, 3.203825, 4.694192, 1.500000, -0.960717, -0.573166, 0.812586, 0.105755,
--1.002737, 3.758350, 1.971984, 0.000000, -0.998770, -0.573360, 0.788967, 0.220880,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.336982, 3.076645, 1.877820, 0.687500, -0.955495, -0.999725, -0.022213, -0.007478,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 1.707661, 7.456823, 1.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.336982, 2.380295, 7.427917, 2.000000, -1.114440, -0.999670, -0.025705, 0.000199,
--1.336982, 2.380295, 7.427917, 2.000000, -1.114440, -0.999670, -0.025705, 0.000199,
--1.002737, 3.052929, 7.399012, 3.000000, -0.922665, -0.571504, 0.820505, -0.012461,
--1.002737, 3.203825, 4.694192, 1.500000, -0.960717, -0.573166, 0.812586, 0.105755,
--1.022346, 4.637777, 15.286472, 1.333333, -1.667888, -0.574184, 0.765044, -0.291584,
--1.007639, 3.836994, 12.751901, 0.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--1.341885, 3.176014, 12.915927, 0.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.341885, 3.176014, 12.915927, 0.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.007639, 2.515034, 13.079953, 1.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.032151, 4.412262, 18.174877, 1.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.366396, 5.044981, 17.903212, 1.833333, -1.749232, -0.999757, -0.019426, 0.010462,
--1.366396, 5.044981, 17.903212, 1.833333, -1.749232, -0.999757, -0.019426, 0.010462,
--1.032151, 5.677700, 17.631544, 2.666667, -1.722117, -0.577835, 0.723604, -0.377496,
--1.022346, 4.637777, 15.286472, 1.333333, -1.667888, -0.574184, 0.765044, -0.291584,
--1.002737, 8.987209, 23.827108, 0.500000, -2.000000, -0.690086, 0.408969, 0.597098,
--0.742768, 9.282909, 23.329664, 0.000000, -2.000000, -0.487251, 0.872639, 0.032983,
--1.002737, 9.038933, 22.663582, 0.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.002737, 9.038933, 22.663582, 0.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.007639, 8.160118, 21.422651, 0.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.341885, 7.556932, 21.789433, 0.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.341885, 7.556932, 21.789433, 0.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.007639, 6.953747, 22.156216, 1.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--0.742768, 8.411285, 23.925793, 1.000000, -2.000000, -0.485429, -0.281111, 0.827850,
--1.002737, 8.987209, 23.827108, 0.500000, -2.000000, -0.690086, 0.408969, 0.597098,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.576237, -0.817066, 0.018853,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, -0.576236, -0.817066, 0.018853,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -1.259859, -30.876823, 1.000000, 0.937170, -0.573164, -0.818796, 0.032517,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-0.000000, -1.495502, -30.862072, 1.500000, 0.937170, 0.000000, -0.999196, 0.040090,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
--1.002737, -1.156864, -28.875961, 1.000000, 0.884407, -0.570246, -0.818776, 0.066533,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--1.002737, -0.895025, -26.385366, 1.000000, 0.812277, -0.568649, -0.814249, 0.116778,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-0.000000, -1.126870, -26.349302, 1.500000, 0.812277, 0.000000, -0.989855, 0.142082,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
--1.002737, -0.385786, -23.498796, 1.000000, 0.718491, -0.565019, -0.802220, 0.192863,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--1.000716, 0.522999, -20.483551, 1.046875, 0.600702, -0.555184, -0.771596, 0.310500,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-0.002021, 0.293610, -20.435085, 1.500000, 0.596697, -0.000089, -0.928581, 0.371129,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.014864, 3.544037, -14.721523, 2.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-0.012127, 3.312792, -14.692760, 1.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-0.012127, 3.312792, -14.692760, 1.500000, 0.267209, 0.000169, -0.904592, 0.426279,
--0.990610, 3.544037, -14.721523, 1.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--0.994652, 1.983473, -17.606916, 1.187500, 0.456561, -0.553223, -0.737418, 0.387504,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.000716, 5.372389, -8.744530, 1.000000, -0.079458, -0.594849, -0.801661, 0.059106,
-0.002021, 5.139305, -8.742946, 1.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-0.002021, 5.139305, -8.742946, 1.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-1.004758, 5.372389, -8.744530, 2.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
--1.002737, 5.163677, -6.177338, 1.000000, -0.308178, -0.587361, -0.794674, -0.153298,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 4.402004, -3.694788, 1.000000, -0.537451, -0.571136, -0.774985, -0.270559,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-0.000000, 4.171406, -3.728287, 1.500000, -0.537451, 0.000000, -0.943782, -0.330570,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
--1.002737, 3.362402, -1.013249, 1.000000, -0.767833, -0.559574, -0.778227, -0.285025,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.002737, 2.394936, 1.783656, 1.046875, -0.973474, -0.550621, -0.806194, -0.216490,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-0.000000, 2.167702, 1.752268, 1.500000, -0.979466, -0.000000, -0.966229, -0.257685,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.707661, 7.456823, 2.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-0.000000, 1.483450, 7.466458, 1.500000, -1.306215, 0.000000, -0.999837, 0.018050,
-0.000000, 1.483450, 7.466458, 1.500000, -1.306215, 0.000000, -0.999837, 0.018050,
--1.002737, 1.707661, 7.456823, 1.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.002737, 1.849670, 4.612304, 1.187500, -1.128520, -0.548005, -0.830422, -0.100446,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
--1.007639, 2.515034, 13.079953, 1.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--0.004902, 2.294706, 13.134627, 1.500000, -1.613659, 0.000247, -0.968748, 0.248048,
--0.004902, 2.294706, 13.134627, 1.500000, -1.613659, 0.000247, -0.968748, 0.248048,
-0.997835, 2.515034, 13.079953, 2.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.973323, 4.412262, 18.174875, 2.000000, -1.776346, 0.554281, -0.740975, 0.379115,
--0.029414, 4.201355, 18.265430, 1.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--0.029414, 4.201355, 18.265430, 1.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--1.032151, 4.412262, 18.174877, 1.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.022346, 3.341311, 15.726742, 1.166667, -1.691614, -0.553953, -0.781075, 0.288198,
-0.000000, 8.401409, 24.234768, 1.500000, -2.000000, -0.000001, -0.291501, 0.956571,
--0.742768, 8.411285, 23.925793, 1.000000, -2.000000, -0.485429, -0.281111, 0.827850,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.002737, 7.854620, 23.452549, 1.000000, -1.969517, -0.579230, -0.604597, 0.546768,
--1.007639, 6.953747, 22.156216, 1.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--0.004902, 6.752687, 22.278475, 1.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--0.004902, 6.752687, 22.278475, 1.500000, -1.939034, 0.000369, -0.822635, 0.568570,
-0.997835, 6.953747, 22.156214, 2.000000, -1.939034, 0.572743, -0.675634, 0.464203,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-0.742768, 8.411285, 23.925795, 2.000000, -2.000000, 0.485428, -0.281111, 0.827851,
-0.000000, 8.401409, 24.234768, 1.500000, -2.000000, -0.000001, -0.291501, 0.956571,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.578352, 0.815661, -0.014359,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.576237, -0.817066, 0.018853,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -1.259859, -30.876823, 2.000000, 0.937170, 0.573164, -0.818795, 0.032517,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.336982, -0.552929, -30.921089, 2.500000, 0.937170, 0.999978, -0.006539, 0.000687,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.002737, -1.156864, -28.875965, 2.000000, 0.884407, 0.570246, -0.818775, 0.066533,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.002737, -0.895025, -26.385365, 2.000000, 0.812277, 0.568649, -0.814249, 0.116778,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.336982, -0.199492, -26.493555, 2.500000, 0.812277, 0.999928, -0.011914, 0.001651,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.002737, -0.385786, -23.498796, 2.000000, 0.718491, 0.564910, -0.802377, 0.192532,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.004758, 0.522999, -20.483551, 2.000000, 0.596697, 0.555081, -0.772140, 0.309331,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.339004, 1.211163, -20.628948, 2.500000, 0.596697, 0.999699, -0.021427, 0.011933,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.014864, 4.931509, -14.894089, 3.000000, 0.267209, 0.545447, 0.762198, -0.348629,
-1.349109, 4.237772, -14.807808, 2.500000, 0.267209, 0.999805, 0.015731, -0.011963,
-1.349109, 4.237772, -14.807808, 2.500000, 0.267209, 0.999805, 0.015731, -0.011963,
-1.014864, 3.544037, -14.721523, 2.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-1.010821, 1.983473, -17.606916, 2.000000, 0.440543, 0.553586, -0.738015, 0.385845,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.004758, 5.372389, -8.744530, 2.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-1.339004, 6.071638, -8.749280, 2.500000, -0.079458, 0.999013, 0.044275, -0.003633,
-1.339004, 6.071638, -8.749280, 2.500000, -0.079458, 0.999013, 0.044275, -0.003633,
-1.004758, 6.770885, -8.754030, 3.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.002737, 5.163681, -6.177338, 2.000000, -0.308178, 0.587260, -0.794834, -0.152858,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.002737, 4.402004, -3.694788, 2.000000, -0.537451, 0.571136, -0.774985, -0.270560,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.336982, 5.093796, -3.594290, 2.500000, -0.537451, 0.999877, 0.014256, 0.006545,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.002737, 3.362402, -1.013249, 2.000000, -0.767833, 0.559574, -0.778227, -0.285025,
-1.336982, 2.380295, 7.427917, 2.500000, -1.306215, 0.999670, -0.025705, 0.000199,
-1.002737, 1.707661, 7.456823, 2.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 1.849670, 4.612304, 2.000000, -1.152493, 0.548005, -0.830422, -0.100446,
-1.002737, 2.394936, 1.783656, 2.000000, -0.979466, 0.550621, -0.806194, -0.216490,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.336982, 3.076645, 1.877820, 2.500000, -0.979466, 0.999725, -0.022213, -0.007478,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.052929, 7.399012, 3.000000, -1.306215, 0.571504, 0.820504, -0.012461,
-1.336982, 2.380295, 7.427917, 2.500000, -1.306215, 0.999670, -0.025705, 0.000199,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-0.997835, 2.515034, 13.079953, 2.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-1.332080, 3.176014, 12.915927, 2.500000, -1.613659, 0.999801, -0.018232, 0.008046,
-1.332080, 3.176014, 12.915927, 2.500000, -1.613659, 0.999801, -0.018232, 0.008046,
-0.997834, 3.836994, 12.751901, 3.000000, -1.613659, 0.571655, 0.794480, -0.204969,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.973323, 5.677700, 17.631544, 3.000000, -1.776346, 0.576561, 0.724323, -0.378066,
-1.307569, 5.044981, 17.903212, 2.500000, -1.776346, 0.999751, -0.019683, 0.010530,
-1.307569, 5.044981, 17.903212, 2.500000, -1.776346, 0.999751, -0.019683, 0.010530,
-0.973323, 4.412262, 18.174875, 2.000000, -1.776346, 0.554281, -0.740975, 0.379115,
-0.983128, 3.341311, 15.726744, 2.000000, -1.695003, 0.553551, -0.779630, 0.292845,
-1.002737, 8.987209, 23.827108, 2.500000, -2.000000, 0.690085, 0.408969, 0.597099,
-0.742768, 8.411285, 23.925795, 2.000000, -2.000000, 0.485428, -0.281111, 0.827851,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-1.002737, 7.854620, 23.452549, 2.000000, -1.969517, 0.580173, -0.605657, 0.544591,
-0.997835, 6.953747, 22.156214, 2.000000, -1.939034, 0.572743, -0.675634, 0.464203,
-1.332080, 7.556932, 21.789433, 2.500000, -1.939034, 0.999977, -0.005048, -0.004524,
-1.332080, 7.556932, 21.789433, 2.500000, -1.939034, 0.999977, -0.005048, -0.004524,
-0.997834, 8.160118, 21.422651, 3.000000, -1.939034, 0.574744, 0.665807, -0.475784,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-0.742768, 9.282909, 23.329664, 3.000000, -2.000000, 0.487250, 0.872639, 0.032983,
-1.002737, 8.987209, 23.827108, 2.500000, -2.000000, 0.690085, 0.408969, 0.597099,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.578352, 0.815661, -0.014359,
--1.002737, 0.153999, -30.965355, 3.000000, 0.523501, -0.580105, 0.814042, -0.028521,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.578352, 0.815661, -0.014359,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.153999, -30.965355, 2.906250, 0.897588, 0.580105, 0.814042, -0.028521,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
-0.000000, 0.389645, -30.980114, 3.125000, 0.778842, -0.000000, 0.999403, -0.034561,
--1.002737, 0.153999, -30.965355, 3.000000, 0.523501, -0.580105, 0.814042, -0.028521,
--1.002737, 0.245815, -29.027195, 3.500000, 0.673303, -0.580554, 0.811733, -0.063605,
--1.002737, 0.245815, -29.027195, 3.500000, 0.673303, -0.580554, 0.811733, -0.063605,
--1.002737, 0.496042, -26.601746, 4.000000, 0.823105, -0.581048, 0.805721, -0.114877,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-1.002737, 0.245815, -29.027195, 2.937500, 0.858019, 0.580554, 0.811733, -0.063605,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-1.002737, 0.496042, -26.601746, 2.968750, 0.804268, 0.581048, 0.805721, -0.114877,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
-0.000000, 0.727886, -26.637808, 3.375000, 0.780241, 0.000000, 0.990007, -0.141020,
--1.002737, 0.496042, -26.601746, 4.000000, 0.823105, -0.581048, 0.805721, -0.114877,
--1.002737, 0.995396, -23.770485, 3.500000, 0.673303, -0.583417, 0.789634, -0.190008,
--1.002737, 0.995396, -23.770485, 3.500000, 0.673303, -0.583417, 0.789634, -0.190008,
--1.000716, 1.899328, -20.774343, 3.000000, 0.523501, -0.578823, 0.757196, -0.302684,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-1.002737, 0.995396, -23.770485, 2.937500, 0.712843, 0.583294, 0.789623, -0.190427,
-0.012127, 5.162754, -14.922852, 3.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-1.014864, 4.931509, -14.894089, 3.000000, 0.267209, 0.545447, 0.762198, -0.348629,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.010821, 3.363289, -17.854240, 2.875000, 0.450913, 0.554791, 0.739026, -0.382161,
-1.004758, 1.899328, -20.774343, 2.890625, 0.592229, 0.578470, 0.756840, -0.304248,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
-0.002021, 2.128716, -20.822807, 3.062500, 0.578824, -0.000086, 0.927679, -0.373379,
--1.000716, 1.899328, -20.774343, 3.000000, 0.523501, -0.578823, 0.757196, -0.302684,
--0.994652, 3.363289, -17.854239, 3.000000, 0.523501, -0.554925, 0.739714, -0.380633,
--0.994652, 3.363289, -17.854239, 3.000000, 0.523501, -0.554925, 0.739714, -0.380633,
--0.990610, 4.931509, -14.894089, 3.000000, 0.523501, -0.544986, 0.762408, -0.348891,
-0.012127, 5.162754, -14.922852, 3.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.004758, 6.770885, -8.754030, 3.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-0.002021, 7.003967, -8.755614, 3.000000, -0.501061, -0.000102, 0.997541, -0.070087,
-0.002021, 7.003967, -8.755614, 3.000000, -0.501061, -0.000102, 0.997541, -0.070087,
--1.000716, 6.770885, -8.754030, 3.000000, -0.922665, -0.549751, 0.833161, -0.060139,
--1.002737, 6.556976, -6.071414, 3.500000, -0.729781, -0.553122, 0.818963, 0.152824,
--1.002737, 6.556976, -6.071414, 3.500000, -0.729781, -0.553122, 0.818963, 0.152824,
--1.002737, 5.785589, -3.493792, 4.000000, -0.536897, -0.556039, 0.785897, 0.270530,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-1.002737, 6.556976, -6.071414, 2.937500, -0.360878, 0.552962, 0.818993, 0.153246,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 5.785589, -3.493792, 2.968750, -0.549437, 0.556039, 0.785897, 0.270530,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
-0.000000, 6.016188, -3.460293, 3.375000, -0.585395, -0.000000, 0.945916, 0.324411,
--1.002737, 5.785589, -3.493792, 4.000000, -0.536897, -0.556039, 0.785897, 0.270530,
--1.002737, 4.735826, -0.785002, 3.500000, -0.729781, -0.563593, 0.774459, 0.287360,
--1.002737, 4.735826, -0.785002, 3.500000, -0.729781, -0.563593, 0.774459, 0.287360,
--1.002737, 3.758350, 1.971984, 3.000000, -0.922665, -0.573360, 0.788967, 0.220880,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-1.002737, 4.735826, -0.785002, 2.937500, -0.763077, 0.563593, 0.774459, 0.287360,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
-1.002737, 3.758350, 1.971984, 2.890625, -0.966339, 0.573361, 0.788967, 0.220880,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
-0.000000, 3.985586, 2.003372, 3.062500, -0.926955, 0.000000, 0.962477, 0.271365,
--1.002737, 3.758350, 1.971984, 3.000000, -0.922665, -0.573360, 0.788967, 0.220880,
--1.002737, 3.203825, 4.694192, 3.000000, -0.922665, -0.573166, 0.812586, 0.105755,
--1.002737, 3.203825, 4.694192, 3.000000, -0.922665, -0.573166, 0.812586, 0.105755,
--1.002737, 3.052929, 7.399012, 3.000000, -0.922665, -0.571504, 0.820505, -0.012461,
-0.000000, 3.277142, 7.389376, 3.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-0.000000, 3.277142, 7.389376, 3.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-1.002737, 3.052929, 7.399012, 3.000000, -1.306215, 0.571504, 0.820504, -0.012461,
-1.002737, 3.203825, 4.694192, 2.875000, -1.123764, 0.573167, 0.812586, 0.105755,
--0.029414, 5.888605, 17.540989, 2.833333, -1.749232, -0.000556, 0.885983, -0.463718,
-0.973323, 5.677700, 17.631544, 3.000000, -1.776346, 0.576561, 0.724323, -0.378066,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.983128, 4.637777, 15.286472, 2.833333, -1.698392, 0.573967, 0.767126, -0.286495,
-0.997834, 3.836994, 12.751901, 3.000000, -1.613659, 0.571655, 0.794480, -0.204969,
--0.004902, 4.057320, 12.697225, 2.833333, -1.667888, 0.000259, 0.967531, -0.252752,
--0.004902, 4.057320, 12.697225, 2.833333, -1.667888, 0.000259, 0.967531, -0.252752,
--1.007639, 3.836994, 12.751901, 2.666667, -1.722117, -0.571038, 0.793815, -0.209219,
--1.022346, 4.637777, 15.286472, 2.666667, -1.722117, -0.574184, 0.765044, -0.291584,
--1.022346, 4.637777, 15.286472, 2.666667, -1.722117, -0.574184, 0.765044, -0.291584,
--1.032151, 5.677700, 17.631544, 2.666667, -1.722117, -0.577835, 0.723604, -0.377496,
--0.029414, 5.888605, 17.540989, 2.833333, -1.749232, -0.000556, 0.885983, -0.463718,
-0.000000, 9.573013, 23.419453, 3.500000, -2.000000, -0.000000, 0.997856, 0.065453,
-0.742768, 9.282909, 23.329664, 3.000000, -2.000000, 0.487250, 0.872639, 0.032983,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-1.002737, 9.038933, 22.663582, 3.000000, -1.969517, 0.583232, 0.718345, -0.379238,
-0.997834, 8.160118, 21.422651, 3.000000, -1.939034, 0.574744, 0.665807, -0.475784,
--0.004902, 8.361179, 21.300390, 3.500000, -1.939034, 0.000389, 0.815229, -0.579139,
--0.004902, 8.361179, 21.300390, 3.500000, -1.939034, 0.000389, 0.815229, -0.579139,
--1.007639, 8.160118, 21.422651, 4.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.002737, 9.038933, 22.663582, 4.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--1.002737, 9.038933, 22.663582, 4.000000, -1.969517, -0.582357, 0.720010, -0.377421,
--0.742768, 9.282909, 23.329664, 4.000000, -2.000000, -0.487251, 0.872639, 0.032983,
-0.000000, 9.573013, 23.419453, 3.500000, -2.000000, -0.000000, 0.997856, 0.065453,
--1.002737, -2.734034, 6.657467, 1.500000, 0.761751, -0.582703, 0.762742, 0.280503,
--1.002737, -1.996943, 4.816424, 0.000000, 1.000000, -0.580237, 0.756078, 0.302774,
--1.336982, -2.618040, 4.463405, 0.500000, 1.000000, -0.999977, -0.006223, -0.002555,
--1.336982, -2.618040, 4.463405, 0.500000, 1.000000, -0.999977, -0.006223, -0.002555,
--1.002737, -3.239137, 4.110385, 1.000000, 1.000000, -0.573276, -0.760494, -0.304965,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.336982, -4.187579, 8.722692, 2.000000, 0.670678, -0.999851, -0.016874, -0.003651,
--1.336982, -4.187579, 8.722692, 2.000000, 0.670678, -0.999851, -0.016874, -0.003651,
--1.002737, -3.550490, 9.039287, 3.000000, 0.523501, -0.582189, 0.779143, 0.232362,
--1.002737, -2.734034, 6.657467, 1.500000, 0.761751, -0.582703, 0.762742, 0.280503,
--1.002737, -4.339600, 12.037193, 0.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -3.550490, 9.039287, 0.000000, 0.817855, -0.582189, 0.779143, 0.232362,
--1.336982, -4.187579, 8.722692, 0.500000, 0.817855, -0.999851, -0.016874, -0.003651,
--1.336982, -4.187579, 8.722692, 0.500000, 0.817855, -0.999851, -0.016874, -0.003651,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.002737, -4.987385, 15.402298, 0.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.002737, -4.339600, 12.037193, 0.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -5.379865, 18.885717, 0.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -4.987385, 15.402298, 0.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.336982, -5.652997, 15.157051, 0.500000, 0.470545, -0.999903, -0.013895, -0.000479,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.002737, -5.586154, 22.318600, 0.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.002737, -5.379865, 18.885717, 0.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.675372, 25.532089, 0.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.586154, 22.318600, 0.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.336982, -6.271589, 22.133167, 0.500000, 0.047044, -0.999991, -0.004281, 0.000323,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.002737, -5.679584, 28.946095, 0.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.002737, -5.675372, 25.532089, 0.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.630855, 32.893612, 0.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -5.679584, 28.946095, 0.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.336982, -6.377152, 28.805500, 0.500000, -0.338108, -0.999930, -0.011845, 0.000045,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--4.193409, -2.445326, 32.893612, 0.000000, -0.594415, -0.686924, 0.716419, 0.121978,
--1.002737, -5.630855, 32.893612, 0.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -3.239137, 4.110385, 1.000000, 1.000000, -0.573276, -0.760494, -0.304965,
-0.000000, -3.446170, 3.992712, 1.500000, 1.000000, 0.000000, -0.928140, -0.372231,
-0.000000, -3.446170, 3.992712, 1.500000, 1.000000, 0.000000, -0.928140, -0.372231,
-1.002737, -3.239137, 4.110385, 2.000000, 1.000000, 0.573276, -0.760494, -0.304965,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
--1.002737, -3.988198, 5.977939, 1.187500, 0.890530, -0.568961, -0.771457, -0.284847,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -4.824668, 8.406097, 1.000000, 0.817855, -0.564875, -0.790113, -0.237986,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-0.000000, -5.037031, 8.300566, 1.500000, 0.798956, 0.000000, -0.957267, -0.289205,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
--1.002737, -5.641894, 11.472322, 1.000000, 0.651188, -0.564280, -0.804601, -0.184946,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -6.318611, 14.911804, 1.000000, 0.470545, -0.563019, -0.816504, -0.127790,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-0.000000, -6.540482, 14.830055, 1.500000, 0.470545, -0.000000, -0.987788, -0.155806,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
--1.002737, -6.733546, 18.459730, 1.000000, 0.261948, -0.564150, -0.822280, -0.074773,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -6.957025, 21.947737, 1.000000, 0.047044, -0.566391, -0.823173, -0.039848,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-0.000000, -7.185503, 21.885925, 1.500000, 0.047044, 0.000000, -0.998796, -0.049054,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
--1.002737, -7.059372, 25.207462, 1.000000, -0.152521, -0.565822, -0.824400, -0.014526,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
--1.002737, -7.074721, 28.664906, 1.000000, -0.338108, -0.564757, -0.825254, 0.002341,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-0.000000, -7.307243, 28.618042, 1.500000, -0.338108, 0.000000, -0.999997, 0.002440,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
--1.002737, -7.037199, 32.893612, 1.000000, -0.511082, -0.140149, -0.202450, -0.969212,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -3.239137, 4.110385, 2.000000, 1.000000, 0.573276, -0.760494, -0.304965,
-1.336982, -2.618040, 4.463405, 2.500000, 1.000000, 0.999977, -0.006223, -0.002555,
-1.336982, -2.618040, 4.463405, 2.500000, 1.000000, 0.999977, -0.006223, -0.002555,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.002737, -3.988198, 5.977940, 2.000000, 0.908927, 0.568961, -0.771457, -0.284847,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -4.824668, 8.406097, 2.000000, 0.798956, 0.564875, -0.790113, -0.237986,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.336982, -4.187579, 8.722693, 2.500000, 0.798956, 0.999851, -0.016874, -0.003651,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.002737, -5.641894, 11.472323, 2.000000, 0.651188, 0.564280, -0.804601, -0.184946,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -6.318611, 14.911802, 2.000000, 0.470545, 0.563019, -0.816504, -0.127790,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.336982, -5.652997, 15.157051, 2.500000, 0.470545, 0.999903, -0.013895, -0.000479,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.002737, -6.733546, 18.459730, 2.000000, 0.261948, 0.564150, -0.822280, -0.074773,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -6.957025, 21.947737, 2.000000, 0.047044, 0.566391, -0.823173, -0.039848,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.336982, -6.271589, 22.133167, 2.500000, 0.047044, 0.999991, -0.004281, 0.000323,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.002737, -7.059372, 25.207462, 2.000000, -0.152521, 0.565821, -0.824400, -0.014526,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
-1.002737, -7.074721, 28.664906, 2.000000, -0.338108, 0.564757, -0.825254, 0.002341,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.336982, -6.377152, 28.805500, 2.500000, -0.338108, 0.999930, -0.011845, 0.000045,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-1.002737, -7.037199, 32.893612, 2.000000, -0.511082, 0.140149, -0.202450, -0.969212,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, -0.596303, 0.745197, 0.298504,
--1.002737, -1.996943, 4.816424, 3.000000, -1.666667, -0.580237, 0.756078, 0.302774,
-0.000000, -1.789911, 4.934098, 3.000000, -1.833333, -0.000000, 0.928348, 0.371713,
-0.000000, -1.789911, 4.934098, 3.000000, -1.833333, -0.000000, 0.928348, 0.371713,
-1.002737, -1.996943, 4.816424, 3.000000, -2.000000, 0.580237, 0.756078, 0.302774,
-1.002737, -1.445931, 3.440848, 2.500000, -2.000000, 0.596303, 0.745197, 0.298504,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-0.000000, -1.789911, 4.934098, 3.500000, 1.000000, -0.000000, 0.928348, 0.371713,
-0.000000, -1.789911, 4.934098, 3.500000, 1.000000, -0.000000, 0.928348, 0.371713,
--1.002737, -1.996943, 4.816424, 4.000000, 1.000000, -0.580237, 0.756078, 0.302774,
--1.002737, -2.734034, 6.657467, 4.000000, 0.908927, -0.582703, 0.762742, 0.280503,
--1.002737, -2.734034, 6.657467, 4.000000, 0.908927, -0.582703, 0.762742, 0.280503,
--1.002737, -3.550490, 9.039287, 4.000000, 0.817855, -0.582189, 0.779143, 0.232362,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-1.002737, -2.734034, 6.657467, 3.000000, 0.908927, 0.582703, 0.762742, 0.280503,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -3.550490, 9.039287, 3.000000, 0.798956, 0.582189, 0.779143, 0.232362,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
-0.000000, -3.338127, 9.144818, 3.500000, 0.798956, 0.000000, 0.958542, 0.284953,
--1.002737, -3.550490, 9.039287, 4.000000, 0.817855, -0.582189, 0.779143, 0.232362,
--1.002737, -4.339600, 12.037193, 4.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -4.339600, 12.037193, 4.000000, 0.651188, -0.578711, 0.795540, 0.179472,
--1.002737, -4.987385, 15.402298, 4.000000, 0.484521, -0.576620, 0.807781, 0.122473,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-1.002737, -4.339600, 12.037193, 3.000000, 0.651188, 0.578711, 0.795540, 0.179472,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -4.987385, 15.402298, 3.000000, 0.470545, 0.576620, 0.807781, 0.122473,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
-0.000000, -4.765513, 15.484047, 3.500000, 0.470545, 0.000000, 0.988884, 0.148690,
--1.002737, -4.987385, 15.402298, 4.000000, 0.484521, -0.576620, 0.807781, 0.122473,
--1.002737, -5.379865, 18.885717, 4.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.379865, 18.885717, 4.000000, 0.261948, -0.572718, 0.816712, 0.070540,
--1.002737, -5.586154, 22.318600, 4.000000, 0.039374, -0.570604, 0.820419, 0.036373,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-1.002737, -5.379865, 18.885717, 3.000000, 0.261948, 0.572718, 0.816712, 0.070540,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.586154, 22.318600, 3.000000, 0.047044, 0.570604, 0.820419, 0.036373,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
-0.000000, -5.357677, 22.380409, 3.500000, 0.047044, -0.000000, 0.999050, 0.043579,
--1.002737, -5.586154, 22.318600, 4.000000, 0.039374, -0.570604, 0.820419, 0.036373,
--1.002737, -5.675372, 25.532089, 4.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.675372, 25.532089, 4.000000, -0.152521, -0.572885, 0.819555, 0.011471,
--1.002737, -5.679584, 28.946095, 4.000000, -0.344415, -0.577055, 0.816690, -0.004975,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-1.002737, -5.675372, 25.532089, 3.000000, -0.152521, 0.572885, 0.819555, 0.011471,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
-1.002737, -5.679584, 28.946095, 3.000000, -0.338108, 0.577055, 0.816690, -0.004975,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
-0.000000, -5.447061, 28.992958, 3.500000, -0.338108, 0.000000, 0.999979, -0.006525,
--1.002737, -5.679584, 28.946095, 4.000000, -0.344415, -0.577055, 0.816690, -0.004975,
--1.002737, -5.630855, 32.893612, 4.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--1.002737, -5.630855, 32.893612, 4.000000, -0.511082, -0.132943, 0.189166, -0.972904,
--4.193409, -2.445326, 32.893612, 4.000000, -0.594415, -0.686924, 0.716419, 0.121978,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-1.002737, -5.630855, 32.893612, 3.000000, -0.511082, 0.132943, 0.189166, -0.972904,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, -0.555812, -0.771611, -0.309336,
--1.002737, -3.239137, 4.110385, 4.000000, -1.666667, -0.573276, -0.760494, -0.304965,
--1.336982, -2.618040, 4.463405, 4.000000, -1.833333, -0.999977, -0.006223, -0.002555,
--1.336982, -2.618040, 4.463405, 4.000000, -1.833333, -0.999977, -0.006223, -0.002555,
--1.002737, -1.996943, 4.816424, 4.000000, -2.000000, -0.580237, 0.756078, 0.302774,
--1.002737, -1.445931, 3.440848, 3.500000, -2.000000, -0.596303, 0.745197, 0.298504,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, 0.555812, -0.771611, -0.309336,
-1.002737, -3.239137, 4.110385, 5.000000, -1.666667, 0.573276, -0.760494, -0.304965,
-0.000000, -3.446170, 3.992712, 5.000000, -1.833333, 0.000000, -0.928140, -0.372231,
-0.000000, -3.446170, 3.992712, 5.000000, -1.833333, 0.000000, -0.928140, -0.372231,
--1.002737, -3.239137, 4.110385, 5.000000, -2.000000, -0.573276, -0.760494, -0.304965,
--1.002737, -2.684134, 2.725971, 4.500000, -2.000000, -0.555812, -0.771611, -0.309336,
--1.336982, -22.914524, -4.929887, 7.000000, -1.833333, -0.999805, -0.016666, 0.010584,
--1.002737, -22.289114, -5.237599, 7.000000, -1.666667, -0.580101, 0.726129, -0.369081,
--1.002737, -22.791559, -6.324653, 6.500000, -1.666667, -0.585182, 0.679392, -0.442706,
--1.002737, -22.791559, -6.324653, 6.500000, -1.666667, -0.585182, 0.679392, -0.442706,
--0.742768, -23.169422, -6.772669, 6.000000, -1.666667, -0.444774, 0.383424, -0.809421,
--1.002737, -23.736286, -6.771559, 6.000000, -1.833333, -0.633041, -0.276747, -0.722959,
--1.002737, -23.736286, -6.771559, 6.000000, -1.833333, -0.633041, -0.276747, -0.722959,
--0.742768, -24.152987, -6.401496, 6.000000, -2.000000, -0.455754, -0.834431, -0.309862,
--1.002737, -24.101816, -5.795360, 6.500000, -2.000000, -0.571338, -0.788867, 0.226409,
--1.002737, -24.101816, -5.795360, 6.500000, -2.000000, -0.571338, -0.788867, 0.226409,
--1.002737, -23.539934, -4.622173, 7.000000, -2.000000, -0.559738, -0.733607, 0.385376,
--1.336982, -22.914524, -4.929887, 7.000000, -1.833333, -0.999805, -0.016666, 0.010584,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -22.289114, -5.237599, 1.000000, 5.000000, -0.580101, 0.726129, -0.369081,
--1.336982, -22.914524, -4.929887, 0.500000, 5.000000, -0.999805, -0.016666, 0.010584,
--1.336982, -22.914524, -4.929887, 0.500000, 5.000000, -0.999805, -0.016666, 0.010584,
--1.002737, -23.539934, -4.622173, 0.000000, 5.000000, -0.559738, -0.733607, 0.385376,
--1.002737, -22.670450, -3.070609, 0.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -22.670450, -3.070609, 0.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -21.393009, -1.363454, 0.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.336982, -20.877926, -1.798224, 0.500000, 4.901888, -0.999242, -0.027513, 0.027552,
--1.002737, -21.393009, -1.363454, 0.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.002737, -19.607264, 0.276508, 0.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -19.607264, 0.276508, 0.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -17.444981, 1.593854, 0.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.336982, -17.125900, 1.021948, 0.500000, 4.706708, -0.998755, -0.017888, 0.046575,
--1.002737, -17.444981, 1.593854, 0.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.002737, -15.037928, 2.333167, 0.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -15.037928, 2.333167, 0.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -12.539209, 2.645355, 0.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.336982, -12.461710, 1.998980, 0.500000, 4.382352, -0.999581, -0.002143, 0.028884,
--1.002737, -12.539209, 2.645355, 0.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.002737, -10.101929, 2.681329, 0.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -10.101929, 2.681329, 0.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -7.868385, 2.366725, 0.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.336982, -8.028582, 1.726443, 0.500000, 3.977933, -0.998903, 0.011916, 0.045285,
--1.002737, -7.868385, 2.366725, 0.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.002737, -5.980879, 1.627182, 0.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -5.980879, 1.627182, 0.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -4.339529, 0.487975, 0.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.336982, -4.681401, -0.053863, 0.500000, 3.518014, -0.999076, 0.030579, 0.030219,
--1.002737, -4.339529, 0.487975, 0.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.002737, -2.844458, -1.025621, 0.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -2.844458, -1.025621, 0.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -1.550434, -2.775177, 0.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.336982, -2.032626, -3.152671, 0.500000, 3.096704, -0.999446, 0.028671, 0.016899,
--1.002737, -1.550434, -2.775177, 0.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.002737, -0.512230, -4.622262, 0.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -0.512230, -4.622262, 0.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, 0.212360, -6.622896, 0.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.336982, -0.371475, -6.820555, 0.500000, 2.714038, -0.999078, 0.041649, 0.010372,
--1.002737, 0.212360, -6.622896, 0.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.002737, 0.565540, -8.833092, 0.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.565540, -8.833092, 0.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.467394, -11.098533, 0.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.336982, -0.183937, -11.115767, 0.500000, 2.371212, -0.999002, 0.043336, -0.010816,
--1.002737, 0.467394, -11.098533, 0.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.002737, -0.161999, -13.264900, 0.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -0.161999, -13.264900, 0.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -1.085560, -15.409132, 0.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.336982, -1.762512, -15.300098, 0.500000, 2.020624, -0.999977, 0.006790, -0.000522,
--1.002737, -1.085560, -15.409132, 0.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.002737, -2.066217, -17.608171, 0.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.066217, -17.608171, 0.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.990782, -19.848455, 0.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.336982, -3.677238, -19.700720, 0.500000, 1.696742, -0.999943, -0.009227, 0.005371,
--1.002737, -2.990782, -19.848455, 0.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.002737, -3.746061, -22.116426, 0.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -3.746061, -22.116426, 0.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -4.302059, -24.249632, 0.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.336982, -5.505962, -27.491592, 0.500000, 1.186658, -0.999932, -0.011525, 0.001722,
--1.002737, -6.213656, -27.449341, 1.000000, 1.186658, -0.570758, -0.816393, 0.087968,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.336982, -4.998410, -24.141369, 0.500000, 1.417808, -0.999879, -0.015054, 0.003873,
--1.002737, -4.302059, -24.249632, 0.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.002737, -4.628780, -26.085621, 0.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.628780, -26.085621, 0.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.798269, -27.533844, 0.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.336982, -5.505962, -27.491592, 0.500000, 1.186658, -0.999932, -0.011525, 0.001722,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.565626, -0.821288, 0.074517,
--1.002737, -6.213656, -27.449341, 1.000000, 1.053028, -0.570758, -0.816393, 0.087968,
--1.336982, -5.505962, -27.491592, 1.000000, 1.119843, -0.999932, -0.011525, 0.001722,
--1.336982, -5.505962, -27.491592, 1.000000, 1.119843, -0.999932, -0.011525, 0.001722,
--1.002737, -4.798269, -27.533844, 1.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.002737, -4.882575, -28.503754, 0.500000, 1.186658, -0.589040, 0.805068, -0.069986,
-0.000000, -22.080643, -5.340171, 1.000000, 1.026514, 0.000000, 0.892013, -0.452009,
-1.002737, -22.289114, -5.237599, 1.000000, 1.053028, 0.580101, 0.726128, -0.369081,
-1.002737, -22.791559, -6.324653, 0.500000, 1.053028, 0.585182, 0.679392, -0.442706,
-1.002737, -22.791559, -6.324653, 0.500000, 1.053028, 0.585182, 0.679392, -0.442706,
-0.742768, -23.169422, -6.772669, 0.000000, 1.053028, 0.444774, 0.383425, -0.809421,
-0.000000, -23.066525, -7.012697, 0.000000, 1.026514, -0.000000, 0.424976, -0.905205,
-0.000000, -23.066525, -7.012697, 0.000000, 1.026514, -0.000000, 0.424976, -0.905205,
--0.742768, -23.169422, -6.772669, 0.000000, 1.000000, -0.444774, 0.383424, -0.809421,
--1.002737, -22.791559, -6.324653, 0.500000, 1.000000, -0.585182, 0.679392, -0.442706,
--1.002737, -22.791559, -6.324653, 0.500000, 1.000000, -0.585182, 0.679392, -0.442706,
--1.002737, -22.289114, -5.237599, 1.000000, 1.000000, -0.580101, 0.726129, -0.369081,
-0.000000, -22.080643, -5.340171, 1.000000, 1.026514, 0.000000, 0.892013, -0.452009,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -22.289114, -5.237599, 2.000000, 5.000000, 0.580101, 0.726128, -0.369081,
-0.000000, -22.080643, -5.340171, 1.500000, 5.000000, 0.000000, 0.892013, -0.452009,
-0.000000, -22.080643, -5.340171, 1.500000, 5.000000, 0.000000, 0.892013, -0.452009,
--1.002737, -22.289114, -5.237599, 1.000000, 5.000000, -0.580101, 0.726129, -0.369081,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -21.510138, -3.803390, 1.000000, 4.957545, -0.579339, 0.686160, -0.439944,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
-0.000000, -20.191145, -2.377919, 1.500000, 4.901888, 0.000000, 0.744223, -0.667931,
--1.002737, -20.362839, -2.232996, 1.000000, 4.901887, -0.577401, 0.607255, -0.545756,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -18.755436, -0.737389, 1.000000, 4.819824, -0.571841, 0.493951, -0.654989,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
-0.000000, -16.700464, 0.259406, 1.500000, 4.706708, -0.000000, 0.404784, -0.914412,
--1.002737, -16.806824, 0.450041, 1.000000, 4.706708, -0.570721, 0.333495, -0.750372,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -14.635897, 1.095908, 1.000000, 4.557891, -0.560822, 0.165222, -0.811283,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
-0.000000, -12.358379, 1.137146, 1.500000, 4.382352, 0.000000, 0.060964, -0.998140,
--1.002737, -12.384212, 1.352605, 1.000000, 4.382352, -0.556840, 0.051516, -0.829021,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -10.193326, 1.372527, 1.000000, 4.189068, -0.563923, -0.052320, -0.824168,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
-0.000000, -8.242178, 0.872734, 1.500000, 3.977933, 0.000000, -0.248755, -0.968567,
--1.002737, -8.188779, 1.086162, 1.000000, 3.977933, -0.571796, -0.203921, -0.794648,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -6.496116, 0.423996, 1.000000, 3.748844, -0.567467, -0.386666, -0.726960,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
-0.000000, -5.137229, -0.776313, 1.500000, 3.518014, -0.000000, -0.646205, -0.763164,
--1.002737, -5.023273, -0.595701, 1.000000, 3.518014, -0.554291, -0.537252, -0.635706,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -3.678185, -1.954659, 1.000000, 3.301661, -0.541786, -0.639146, -0.545858,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
-0.000000, -2.675549, -3.655995, 1.500000, 3.096704, -0.000000, -0.841132, -0.540830,
--1.002737, -2.514818, -3.530164, 1.000000, 3.096704, -0.535283, -0.710141, -0.457353,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -1.587135, -5.199499, 1.000000, 2.900065, -0.538039, -0.769598, -0.343850,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
-0.000000, -1.149923, -7.084101, 1.500000, 2.714038, 0.000000, -0.973883, -0.227050,
--1.002737, -0.955311, -7.018215, 1.000000, 2.714038, -0.543592, -0.816934, -0.192683,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.679522, -9.041862, 1.000000, 2.540917, -0.550509, -0.834486, -0.023924,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
-0.000000, -1.052381, -11.138744, 1.500000, 2.371212, 0.000000, -0.979438, 0.201745,
--1.002737, -0.835270, -11.133001, 1.000000, 2.371212, -0.556778, -0.814518, 0.162970,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -1.498060, -13.154191, 1.000000, 2.195430, -0.550846, -0.775955, 0.307348,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
-0.000000, -2.665116, -15.154720, 1.500000, 2.020624, -0.000000, -0.906717, 0.421740,
--1.002737, -2.439466, -15.191065, 1.000000, 2.020624, -0.552162, -0.756555, 0.350343,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -3.431055, -17.329250, 1.000000, 1.853850, -0.559291, -0.758482, 0.334513,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
-0.000000, -4.592515, -19.503733, 1.500000, 1.696742, -0.000000, -0.936315, 0.351162,
--1.002737, -4.363696, -19.552979, 1.000000, 1.696742, -0.563275, -0.773529, 0.290474,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.128252, -21.846479, 1.000000, 1.550938, -0.566340, -0.790066, 0.234638,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-0.000000, -6.449554, -27.435261, 1.500000, 1.186658, -0.000000, -0.994229, 0.107280,
-1.002737, -6.213656, -27.449341, 2.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
-0.000000, -5.926875, -23.997019, 1.500000, 1.417808, -0.000000, -0.976472, 0.215645,
--1.002737, -5.694758, -24.033106, 1.000000, 1.417808, -0.566494, -0.804616, 0.177981,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.033253, -25.936214, 1.000000, 1.298722, -0.568446, -0.813396, 0.123515,
--1.002737, -6.213656, -27.449341, 1.000000, 1.186658, -0.570758, -0.816393, 0.087968,
-0.000000, -6.449554, -27.435261, 1.500000, 1.186658, -0.000000, -0.994229, 0.107280,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.565626, -0.821288, 0.074517,
-1.002737, -6.213656, -27.449341, 2.000000, 1.053028, 0.570758, -0.816393, 0.087968,
-0.000000, -6.449554, -27.435261, 2.000000, 1.119843, -0.000000, -0.994229, 0.107280,
-0.000000, -6.449554, -27.435261, 2.000000, 1.119843, -0.000000, -0.994229, 0.107280,
--1.002737, -6.213656, -27.449341, 2.000000, 1.186658, -0.570758, -0.816393, 0.087968,
--1.002737, -6.305892, -28.466030, 1.500000, 1.186658, -0.565626, -0.821288, 0.074517,
-1.336982, -22.914524, -4.929887, 2.000000, 1.026514, 0.999805, -0.016666, 0.010584,
-1.002737, -23.539934, -4.622173, 2.000000, 1.053028, 0.559738, -0.733607, 0.385376,
-1.002737, -24.101816, -5.795360, 1.500000, 1.053028, 0.571338, -0.788867, 0.226409,
-1.002737, -24.101816, -5.795360, 1.500000, 1.053028, 0.571338, -0.788867, 0.226409,
-0.742768, -24.152987, -6.401496, 1.000000, 1.053028, 0.455754, -0.834430, -0.309862,
-1.002737, -23.736286, -6.771559, 1.000000, 1.026514, 0.633041, -0.276748, -0.722959,
-1.002737, -23.736286, -6.771559, 1.000000, 1.026514, 0.633041, -0.276748, -0.722959,
-0.742768, -23.169422, -6.772669, 1.000000, 1.000000, 0.444774, 0.383425, -0.809421,
-1.002737, -22.791559, -6.324653, 1.500000, 1.000000, 0.585182, 0.679392, -0.442706,
-1.002737, -22.791559, -6.324653, 1.500000, 1.000000, 0.585182, 0.679392, -0.442706,
-1.002737, -22.289114, -5.237599, 2.000000, 1.000000, 0.580101, 0.726128, -0.369081,
-1.336982, -22.914524, -4.929887, 2.000000, 1.026514, 0.999805, -0.016666, 0.010584,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -23.539934, -4.622173, 3.000000, 5.000000, 0.559738, -0.733607, 0.385376,
-1.336982, -22.914524, -4.929887, 2.500000, 5.000000, 0.999805, -0.016666, 0.010584,
-1.336982, -22.914524, -4.929887, 2.500000, 5.000000, 0.999805, -0.016666, 0.010584,
-1.002737, -22.289114, -5.237599, 2.000000, 5.000000, 0.580101, 0.726128, -0.369081,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -21.510138, -3.803390, 2.000000, 4.957545, 0.579339, 0.686160, -0.439944,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.336982, -20.877926, -1.798224, 2.500000, 4.901888, 0.999242, -0.027513, 0.027552,
-1.002737, -20.362839, -2.232996, 2.000000, 4.901887, 0.577401, 0.607255, -0.545756,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -18.755436, -0.737389, 2.000000, 4.819824, 0.571841, 0.493951, -0.654989,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.336982, -17.125900, 1.021948, 2.500000, 4.706708, 0.998755, -0.017888, 0.046575,
-1.002737, -16.806824, 0.450041, 2.000000, 4.706708, 0.570721, 0.333495, -0.750372,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -14.635897, 1.095908, 2.000000, 4.557891, 0.560822, 0.165222, -0.811283,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.336982, -12.461710, 1.998980, 2.500000, 4.382352, 0.999581, -0.002143, 0.028884,
-1.002737, -12.384212, 1.352605, 2.000000, 4.382352, 0.556840, 0.051516, -0.829021,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -10.193325, 1.372527, 2.000000, 4.189068, 0.563923, -0.052320, -0.824168,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.336982, -8.028582, 1.726443, 2.500000, 3.977933, 0.998903, 0.011916, 0.045285,
-1.002737, -8.188779, 1.086162, 2.000000, 3.977933, 0.571796, -0.203921, -0.794648,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -6.496116, 0.423996, 2.000000, 3.748844, 0.567467, -0.386666, -0.726960,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.336982, -4.681401, -0.053863, 2.500000, 3.518014, 0.999076, 0.030579, 0.030219,
-1.002737, -5.023273, -0.595701, 2.000000, 3.518014, 0.554291, -0.537252, -0.635706,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -3.678185, -1.954659, 2.000000, 3.301661, 0.541785, -0.639146, -0.545858,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.336982, -2.032627, -3.152670, 2.500000, 3.096704, 0.999446, 0.028671, 0.016899,
-1.002737, -2.514818, -3.530164, 2.000000, 3.096704, 0.535283, -0.710141, -0.457354,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -1.587135, -5.199499, 2.000000, 2.900065, 0.538039, -0.769598, -0.343850,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.336982, -0.371475, -6.820555, 2.500000, 2.714038, 0.999079, 0.041649, 0.010372,
-1.002737, -0.955311, -7.018215, 2.000000, 2.714038, 0.543591, -0.816934, -0.192683,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.679521, -9.041862, 2.000000, 2.540917, 0.550509, -0.834486, -0.023924,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.336982, -0.183937, -11.115767, 2.500000, 2.371212, 0.999002, 0.043336, -0.010816,
-1.002737, -0.835270, -11.133000, 2.000000, 2.371212, 0.556778, -0.814518, 0.162970,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -1.498060, -13.154191, 2.000000, 2.195430, 0.550846, -0.775955, 0.307348,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.336982, -1.762512, -15.300098, 2.500000, 2.020624, 0.999977, 0.006790, -0.000522,
-1.002737, -2.439466, -15.191065, 2.000000, 2.020624, 0.552162, -0.756556, 0.350343,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -3.431055, -17.329250, 2.000000, 1.853850, 0.559291, -0.758482, 0.334513,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.336982, -3.677238, -19.700720, 2.500000, 1.696742, 0.999943, -0.009227, 0.005371,
-1.002737, -4.363696, -19.552979, 2.000000, 1.696742, 0.563275, -0.773529, 0.290474,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.128252, -21.846479, 2.000000, 1.550938, 0.566340, -0.790066, 0.234638,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.336982, -5.505962, -27.491592, 2.500000, 1.186658, 0.999932, -0.011526, 0.001722,
-1.002737, -4.798269, -27.533844, 3.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.336982, -4.998410, -24.141369, 2.500000, 1.417808, 0.999879, -0.015055, 0.003873,
-1.002737, -5.694758, -24.033106, 2.000000, 1.417808, 0.566494, -0.804616, 0.177981,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.033253, -25.936216, 2.000000, 1.298722, 0.568446, -0.813396, 0.123515,
-1.002737, -6.213656, -27.449341, 2.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.336982, -5.505962, -27.491592, 2.500000, 1.186658, 0.999932, -0.011526, 0.001722,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, 0.589040, 0.805067, -0.069986,
-1.002737, -4.798269, -27.533844, 3.000000, 1.053028, 0.583019, 0.808019, -0.084825,
-1.336982, -5.505962, -27.491592, 3.000000, 1.119843, 0.999932, -0.011526, 0.001722,
-1.336982, -5.505962, -27.491592, 3.000000, 1.119843, 0.999932, -0.011526, 0.001722,
-1.002737, -6.213656, -27.449341, 3.000000, 1.186658, 0.570758, -0.816393, 0.087968,
-1.002737, -6.305892, -28.466030, 2.500000, 1.186658, 0.565626, -0.821288, 0.074517,
-0.000000, -23.748404, -4.519603, 3.000000, 1.026514, -0.000000, -0.884854, 0.465869,
--1.002737, -23.539934, -4.622173, 3.000000, 1.053028, -0.559738, -0.733607, 0.385376,
--1.002737, -24.101816, -5.795360, 2.500000, 1.053028, -0.571338, -0.788867, 0.226409,
--1.002737, -24.101816, -5.795360, 2.500000, 1.053028, -0.571338, -0.788867, 0.226409,
--0.742768, -24.152987, -6.401496, 2.000000, 1.053028, -0.455754, -0.834431, -0.309862,
-0.000000, -24.406044, -6.530420, 2.000000, 1.026514, 0.000000, -0.933376, -0.358900,
-0.000000, -24.406044, -6.530420, 2.000000, 1.026514, 0.000000, -0.933376, -0.358900,
-0.742768, -24.152987, -6.401496, 2.000000, 1.000000, 0.455754, -0.834430, -0.309862,
-1.002737, -24.101816, -5.795360, 2.500000, 1.000000, 0.571338, -0.788867, 0.226409,
-1.002737, -24.101816, -5.795360, 2.500000, 1.000000, 0.571338, -0.788867, 0.226409,
-1.002737, -23.539934, -4.622173, 3.000000, 1.000000, 0.559738, -0.733607, 0.385376,
-0.000000, -23.748404, -4.519603, 3.000000, 1.026514, -0.000000, -0.884854, 0.465869,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
--1.002737, -21.393009, -1.363454, 4.000000, 4.915090, -0.538985, -0.621423, 0.568620,
--1.002737, -22.670450, -3.070609, 4.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -22.670450, -3.070609, 4.000000, 4.957545, -0.549531, -0.697669, 0.459646,
--1.002737, -23.539934, -4.622173, 4.000000, 5.000000, -0.559738, -0.733607, 0.385376,
-0.000000, -23.748404, -4.519603, 3.500000, 5.000000, -0.000000, -0.884854, 0.465869,
-0.000000, -23.748404, -4.519603, 3.500000, 5.000000, -0.000000, -0.884854, 0.465869,
-1.002737, -23.539934, -4.622173, 3.000000, 5.000000, 0.559738, -0.733607, 0.385376,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -22.670450, -3.070609, 3.000000, 4.957545, 0.549531, -0.697669, 0.459646,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
--1.002737, -17.444981, 1.593854, 4.000000, 4.724558, -0.523473, -0.350048, 0.776815,
--1.002737, -19.607264, 0.276508, 4.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -19.607264, 0.276508, 4.000000, 4.819824, -0.531663, -0.507888, 0.677779,
--1.002737, -21.393009, -1.363454, 4.000000, 4.915090, -0.538985, -0.621423, 0.568620,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-0.000000, -21.564705, -1.218530, 3.500000, 4.901888, 0.000000, -0.737549, 0.675293,
-1.002737, -21.393009, -1.363454, 3.000000, 4.901887, 0.538985, -0.621423, 0.568620,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -19.607264, 0.276508, 3.000000, 4.819824, 0.531663, -0.507888, 0.677779,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
--1.002737, -12.539209, 2.645355, 4.000000, 4.391225, -0.529316, -0.059790, 0.846315,
--1.002737, -15.037928, 2.333167, 4.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -15.037928, 2.333167, 4.000000, 4.557892, -0.524224, -0.178780, 0.832603,
--1.002737, -17.444981, 1.593854, 4.000000, 4.724558, -0.523473, -0.350048, 0.776815,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-0.000000, -17.551340, 1.784490, 3.500000, 4.706708, -0.000000, -0.412059, 0.911157,
-1.002737, -17.444981, 1.593854, 3.000000, 4.706708, 0.523473, -0.350048, 0.776815,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -15.037928, 2.333167, 3.000000, 4.557891, 0.524224, -0.178780, 0.832603,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
--1.002737, -7.868385, 2.366725, 4.000000, 3.986911, -0.526810, 0.210598, 0.823480,
--1.002737, -10.101929, 2.681329, 4.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -10.101929, 2.681329, 4.000000, 4.189068, -0.529646, 0.050516, 0.846713,
--1.002737, -12.539209, 2.645355, 4.000000, 4.391225, -0.529316, -0.059790, 0.846315,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-0.000000, -12.565042, 2.860814, 3.500000, 4.382352, -0.000000, -0.071332, 0.997453,
-1.002737, -12.539209, 2.645355, 3.000000, 4.382352, 0.529316, -0.059790, 0.846315,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -10.101929, 2.681329, 3.000000, 4.189068, 0.529646, 0.050516, 0.846713,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
--1.002737, -4.339529, 0.487975, 4.000000, 3.510776, -0.515414, 0.553092, 0.654552,
--1.002737, -5.980879, 1.627182, 4.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -5.980879, 1.627182, 4.000000, 3.748844, -0.522694, 0.400366, 0.752661,
--1.002737, -7.868385, 2.366725, 4.000000, 3.986911, -0.526810, 0.210598, 0.823480,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-0.000000, -7.814985, 2.580152, 3.500000, 3.977933, -0.000000, 0.247588, 0.968866,
-1.002737, -7.868385, 2.366725, 3.000000, 3.977933, 0.526810, 0.210598, 0.823480,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -5.980879, 1.627182, 3.000000, 3.748844, 0.522693, 0.400366, 0.752661,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
--1.002737, -1.550434, -2.775177, 4.000000, 3.092546, -0.505987, 0.723592, 0.469458,
--1.002737, -2.844458, -1.025621, 4.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -2.844458, -1.025621, 4.000000, 3.301661, -0.509526, 0.653879, 0.559309,
--1.002737, -4.339529, 0.487975, 4.000000, 3.510776, -0.515414, 0.553092, 0.654552,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-0.000000, -4.225573, 0.668588, 3.500000, 3.518014, -0.000000, 0.644556, 0.764557,
-1.002737, -4.339529, 0.487975, 3.000000, 3.518014, 0.515414, 0.553092, 0.654552,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -2.844458, -1.025621, 3.000000, 3.301661, 0.509526, 0.653879, 0.559309,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
--1.002737, 0.212360, -6.622896, 4.000000, 2.707584, -0.505652, 0.835716, 0.214230,
--1.002737, -0.512230, -4.622262, 4.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -0.512230, -4.622262, 4.000000, 2.900065, -0.503207, 0.785550, 0.360132,
--1.002737, -1.550434, -2.775177, 4.000000, 3.092546, -0.505987, 0.723592, 0.469458,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-0.000000, -1.389704, -2.649346, 3.500000, 3.096704, 0.000000, 0.838537, 0.544844,
-1.002737, -1.550435, -2.775177, 3.000000, 3.096704, 0.505988, 0.723592, 0.469458,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, -0.512230, -4.622262, 3.000000, 2.900065, 0.503207, 0.785549, 0.360132,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
--1.002737, 0.467394, -11.098533, 4.000000, 2.374251, -0.517497, 0.844529, -0.137721,
--1.002737, 0.565540, -8.833092, 4.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.565540, -8.833092, 4.000000, 2.540917, -0.512670, 0.857167, 0.049331,
--1.002737, 0.212360, -6.622896, 4.000000, 2.707584, -0.505652, 0.835716, 0.214230,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-0.000000, 0.406973, -6.557009, 3.500000, 2.714038, -0.000000, 0.968208, 0.250145,
-1.002737, 0.212362, -6.622896, 3.000000, 2.714038, 0.505651, 0.835716, 0.214230,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.565540, -8.833092, 3.000000, 2.540917, 0.512670, 0.857168, 0.049331,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
--1.002737, -1.085560, -15.409132, 4.000000, 2.016609, -0.545979, 0.767296, -0.336399,
--1.002737, -0.161999, -13.264900, 4.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, -0.161999, -13.264900, 4.000000, 2.195430, -0.528455, 0.798898, -0.287224,
--1.002737, 0.467394, -11.098533, 4.000000, 2.374251, -0.517497, 0.844529, -0.137721,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-0.000000, 0.684505, -11.092790, 3.500000, 2.371212, 0.000000, 0.987685, -0.156457,
-1.002737, 0.467394, -11.098533, 3.000000, 2.371212, 0.517497, 0.844529, -0.137721,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -0.161999, -13.264900, 3.000000, 2.195430, 0.528455, 0.798898, -0.287224,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
--1.002737, -2.990782, -19.848455, 4.000000, 1.691091, -0.573541, 0.767562, -0.286181,
--1.002737, -2.066217, -17.608171, 4.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -2.066217, -17.608171, 4.000000, 1.853850, -0.561407, 0.760416, -0.326481,
--1.002737, -1.085560, -15.409132, 4.000000, 2.016609, -0.545979, 0.767296, -0.336399,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-0.000000, -0.859908, -15.445475, 3.500000, 2.020624, 0.000000, 0.916600, -0.399806,
-1.002737, -1.085560, -15.409132, 3.000000, 2.020624, 0.545979, 0.767296, -0.336399,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.066217, -17.608171, 3.000000, 1.853850, 0.561407, 0.760416, -0.326481,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
--1.002737, -4.302059, -24.249632, 4.000000, 1.410785, -0.582444, 0.793471, -0.176531,
--1.002737, -3.746061, -22.116426, 4.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -3.746061, -22.116426, 4.000000, 1.550938, -0.578794, 0.781497, -0.232937,
--1.002737, -2.990782, -19.848455, 4.000000, 1.691091, -0.573541, 0.767562, -0.286181,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-0.000000, -2.761963, -19.897703, 3.500000, 1.696742, 0.000000, 0.936891, -0.349623,
-1.002737, -2.990782, -19.848455, 3.000000, 1.696742, 0.573541, 0.767561, -0.286181,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -3.746061, -22.116426, 3.000000, 1.550938, 0.578794, 0.781497, -0.232937,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-0.000000, -4.562372, -27.547928, 3.500000, 1.186658, 0.000000, 0.994554, -0.104226,
--1.002737, -4.798269, -27.533844, 4.000000, 1.186658, -0.583018, 0.808019, -0.084825,
--1.002737, -4.628780, -26.085621, 4.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.628780, -26.085621, 4.000000, 1.298722, -0.582983, 0.803361, -0.121414,
--1.002737, -4.302059, -24.249632, 4.000000, 1.410785, -0.582444, 0.793471, -0.176531,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-0.000000, -4.069942, -24.285717, 3.500000, 1.417808, 0.000000, 0.976057, -0.217516,
-1.002737, -4.302059, -24.249632, 3.000000, 1.417808, 0.582444, 0.793471, -0.176531,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.628780, -26.085621, 3.000000, 1.298722, 0.582983, 0.803361, -0.121414,
-1.002737, -4.798269, -27.533844, 3.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-0.000000, -4.562372, -27.547928, 3.500000, 1.186658, 0.000000, 0.994554, -0.104226,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.589040, 0.805068, -0.069986,
--1.002737, -4.798269, -27.533844, 4.000000, 1.053028, -0.583018, 0.808019, -0.084825,
-0.000000, -4.562372, -27.547928, 4.000000, 1.119843, 0.000000, 0.994554, -0.104226,
-0.000000, -4.562372, -27.547928, 4.000000, 1.119843, 0.000000, 0.994554, -0.104226,
-1.002737, -4.798269, -27.533844, 4.000000, 1.186658, 0.583019, 0.808019, -0.084825,
-1.002737, -4.882575, -28.503754, 3.500000, 1.186658, 0.589040, 0.805067, -0.069986,
-1.010821, 4.753092, -11.679992, 3.500000, 1.000000, 0.576512, -0.780907, 0.240454,
-1.014864, 3.544037, -14.721523, 3.000000, 1.000000, 0.562535, -0.748836, 0.350428,
-1.349109, 4.237772, -14.807808, 3.000000, 1.026514, 0.999805, 0.015731, -0.011963,
-1.349109, 4.237772, -14.807808, 3.000000, 1.026514, 0.999805, 0.015731, -0.011963,
-1.014864, 4.931509, -14.894089, 3.000000, 1.053028, 0.545447, 0.762198, -0.348629,
-1.010821, 6.148220, -11.777804, 3.500000, 1.053028, 0.548873, 0.801150, -0.238531,
-1.010821, 6.148220, -11.777804, 3.500000, 1.053028, 0.548873, 0.801150, -0.238531,
-1.004758, 6.770885, -8.754030, 4.000000, 1.053028, 0.549543, 0.833398, -0.058740,
-1.339004, 6.071638, -8.749280, 4.000000, 1.026514, 0.999013, 0.044275, -0.003633,
-1.339004, 6.071638, -8.749280, 4.000000, 1.026514, 0.999013, 0.044275, -0.003633,
-1.004758, 5.372389, -8.744530, 4.000000, 1.000000, 0.594556, -0.801738, 0.060986,
-1.010821, 4.753092, -11.679992, 3.500000, 1.000000, 0.576512, -0.780907, 0.240454,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.990610, 3.544037, -14.721523, 2.000000, 0.267209, -0.562098, -0.749029, 0.350717,
-0.012127, 3.312792, -14.692760, 2.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-0.012127, 3.312792, -14.692760, 2.500000, 0.267209, 0.000169, -0.904592, 0.426279,
-1.014864, 3.544037, -14.721523, 3.000000, 0.267209, 0.562535, -0.748836, 0.350428,
-1.010821, 4.753092, -11.679992, 3.000000, 0.093875, 0.576512, -0.780907, 0.240454,
-1.010821, 4.753092, -11.679992, 3.000000, 0.093875, 0.576512, -0.780907, 0.240454,
-1.004758, 5.372389, -8.744530, 3.000000, -0.079458, 0.594556, -0.801738, 0.060986,
-0.002021, 5.139305, -8.742946, 2.500000, -0.079458, -0.000101, -0.997122, 0.075814,
-0.002021, 5.139305, -8.742946, 2.500000, -0.079458, -0.000101, -0.997122, 0.075814,
--1.000716, 5.372389, -8.744530, 2.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--0.990610, 4.931509, -14.894089, 1.000000, 0.267209, -0.544986, 0.762408, -0.348891,
--1.324855, 4.237772, -14.807808, 1.500000, 0.267209, -0.999804, 0.015791, -0.011962,
--1.324855, 4.237772, -14.807808, 1.500000, 0.267209, -0.999804, 0.015791, -0.011962,
--0.990610, 3.544037, -14.721523, 2.000000, 0.267209, -0.562098, -0.749029, 0.350717,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--0.994652, 4.753092, -11.679992, 2.000000, 0.093876, -0.576606, -0.781401, 0.238616,
--1.000716, 5.372389, -8.744530, 2.000000, -0.079458, -0.594849, -0.801661, 0.059106,
--1.334961, 6.071638, -8.749280, 1.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.334961, 6.071638, -8.749280, 1.500000, -0.079458, -0.999000, 0.044233, -0.006500,
--1.000716, 6.770885, -8.754030, 1.000000, -0.079458, -0.549751, 0.833161, -0.060139,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
-1.010821, 6.148220, -11.777804, 1.500000, 0.222021, 0.548873, 0.801150, -0.238531,
-1.014864, 4.931509, -14.894089, 3.000000, 0.523501, 0.545447, 0.762198, -0.348629,
-0.012127, 5.162754, -14.922852, 2.000000, 0.395355, 0.000167, 0.910359, -0.413819,
-0.012127, 5.162754, -14.922852, 2.000000, 0.395355, 0.000167, 0.910359, -0.413819,
--0.990610, 4.931509, -14.894089, 1.000000, 0.267209, -0.544986, 0.762408, -0.348891,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--0.994652, 6.148220, -11.777804, 1.187500, 0.109894, -0.548576, 0.800857, -0.240193,
--1.000716, 6.770885, -8.754030, 1.000000, -0.079458, -0.549751, 0.833161, -0.060139,
-0.002021, 7.003967, -8.755614, 0.500000, -0.079458, -0.000102, 0.997541, -0.070087,
-0.002021, 7.003967, -8.755614, 0.500000, -0.079458, -0.000102, 0.997541, -0.070087,
-1.004758, 6.770885, -8.754030, 0.000000, -0.079458, 0.549543, 0.833398, -0.058740,
-1.010821, 6.148220, -11.777804, 1.500000, 0.222021, 0.548873, 0.801150, -0.238531,
--1.002737, 1.949966, 10.301342, 3.000000, 0.093875, -0.548106, -0.827983, 0.118418,
--1.002737, 1.707661, 7.456823, 3.000000, 0.267209, -0.546192, -0.837529, 0.014826,
-0.000000, 1.483450, 7.466458, 3.000000, 0.395355, 0.000000, -0.999837, 0.018050,
-0.000000, 1.483450, 7.466458, 3.000000, 0.395355, 0.000000, -0.999837, 0.018050,
-1.002737, 1.707661, 7.456823, 3.000000, 0.523501, 0.546192, -0.837529, 0.014826,
-1.002737, 1.949966, 10.301342, 3.000000, -0.199582, 0.548430, -0.827643, 0.119301,
-1.002737, 1.949966, 10.301342, 3.000000, -0.199582, 0.548430, -0.827643, 0.119301,
-0.997835, 2.515034, 13.079953, 3.000000, -0.922665, 0.552074, -0.807195, 0.208929,
--0.004902, 2.294706, 13.134627, 3.000000, -0.501061, 0.000247, -0.968748, 0.248048,
--0.004902, 2.294706, 13.134627, 3.000000, -0.501061, 0.000247, -0.968748, 0.248048,
--1.007639, 2.515034, 13.079953, 3.000000, -0.079458, -0.551445, -0.808533, 0.205386,
--1.002737, 1.949966, 10.301342, 3.000000, 0.093875, -0.548106, -0.827983, 0.118418,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.002737, 3.052929, 7.399012, 1.000000, -1.306215, -0.571504, 0.820505, -0.012461,
--1.336982, 2.380295, 7.427917, 1.500000, -1.306215, -0.999670, -0.025705, 0.000199,
--1.336982, 2.380295, 7.427917, 1.500000, -1.306215, -0.999670, -0.025705, 0.000199,
--1.002737, 1.707661, 7.456823, 2.000000, -1.306215, -0.546192, -0.837529, 0.014826,
--1.002737, 1.949966, 10.301342, 2.000000, -1.459937, -0.548106, -0.827983, 0.118418,
--1.002737, 1.949966, 10.301342, 2.000000, -1.459937, -0.548106, -0.827983, 0.118418,
--1.007639, 2.515034, 13.079953, 2.000000, -1.613659, -0.551445, -0.808533, 0.205386,
--1.341885, 3.176014, 12.915927, 1.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.341885, 3.176014, 12.915927, 1.500000, -1.613659, -0.999798, -0.020077, 0.001135,
--1.007639, 3.836994, 12.751901, 1.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
-1.002737, 3.286348, 10.103830, 1.500000, -1.268162, 0.570686, 0.812576, -0.118478,
-1.002737, 3.052929, 7.399012, 3.000000, -0.922665, 0.571504, 0.820504, -0.012461,
-0.000000, 3.277142, 7.389376, 2.000000, -1.114440, 0.000000, 0.999891, -0.014768,
-0.000000, 3.277142, 7.389376, 2.000000, -1.114440, 0.000000, 0.999891, -0.014768,
--1.002737, 3.052929, 7.399012, 1.000000, -1.306215, -0.571504, 0.820505, -0.012461,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.002737, 3.286348, 10.103830, 1.187500, -1.435965, -0.570397, 0.812622, -0.119555,
--1.007639, 3.836994, 12.751901, 1.000000, -1.613659, -0.571038, 0.793815, -0.209219,
--0.004902, 4.057320, 12.697225, 0.500000, -1.613659, 0.000259, 0.967531, -0.252752,
--0.004902, 4.057320, 12.697225, 0.500000, -1.613659, 0.000259, 0.967531, -0.252752,
-0.997834, 3.836994, 12.751901, 0.000000, -1.613659, 0.571655, 0.794480, -0.204969,
-1.002737, 3.286348, 10.103830, 1.500000, -1.268162, 0.570686, 0.812576, -0.118478,
-1.002737, 1.949966, 10.301342, 3.000000, -1.459937, 0.548430, -0.827643, 0.119301,
-1.002737, 1.707661, 7.456823, 3.000000, -1.306215, 0.546192, -0.837529, 0.014826,
-1.336982, 2.380295, 7.427917, 3.000000, -1.114440, 0.999670, -0.025705, 0.000199,
-1.336982, 2.380295, 7.427917, 3.000000, -1.114440, 0.999670, -0.025705, 0.000199,
-1.002737, 3.052929, 7.399012, 3.000000, -0.922665, 0.571504, 0.820504, -0.012461,
-1.002737, 3.286348, 10.103830, 2.833333, -1.322391, 0.570686, 0.812576, -0.118478,
-1.002737, 3.286348, 10.103830, 2.833333, -1.322391, 0.570686, 0.812576, -0.118478,
-0.997834, 3.836994, 12.751901, 2.666667, -1.722117, 0.571655, 0.794480, -0.204969,
-1.332080, 3.176014, 12.915927, 2.833333, -1.667888, 0.999801, -0.018232, 0.008046,
-1.332080, 3.176014, 12.915927, 2.833333, -1.667888, 0.999801, -0.018232, 0.008046,
-0.997835, 2.515034, 13.079953, 3.000000, -1.613659, 0.552074, -0.807195, 0.208929,
-1.002737, 1.949966, 10.301342, 3.000000, -1.459937, 0.548430, -0.827643, 0.119301,
-0.983128, 5.711351, 20.357510, 2.000000, -1.459937, 0.562328, -0.698593, 0.442442,
-0.973323, 4.412262, 18.174875, 2.000000, -1.306215, 0.554281, -0.740975, 0.379115,
-1.307569, 5.044981, 17.903212, 2.500000, -1.306215, 0.999751, -0.019683, 0.010530,
-1.307569, 5.044981, 17.903212, 2.500000, -1.306215, 0.999751, -0.019683, 0.010530,
-0.973323, 5.677700, 17.631544, 3.000000, -1.306215, 0.576561, 0.724323, -0.378066,
-0.983128, 6.945759, 19.711123, 3.000000, -1.459937, 0.574803, 0.682785, -0.451006,
-0.983128, 6.945759, 19.711123, 3.000000, -1.459937, 0.574803, 0.682785, -0.451006,
-0.997834, 8.160118, 21.422651, 3.000000, -1.613659, 0.574744, 0.665807, -0.475784,
-1.332080, 7.556932, 21.789433, 2.500000, -1.613659, 0.999977, -0.005048, -0.004524,
-1.332080, 7.556932, 21.789433, 2.500000, -1.613659, 0.999977, -0.005048, -0.004524,
-0.997835, 6.953747, 22.156214, 2.000000, -1.613659, 0.572743, -0.675634, 0.464203,
-0.983128, 5.711351, 20.357510, 2.000000, -1.459937, 0.562328, -0.698593, 0.442442,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.032151, 4.412262, 18.174877, 2.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--0.029414, 4.201355, 18.265430, 2.500000, -1.776346, -0.000535, -0.890739, 0.454514,
--0.029414, 4.201355, 18.265430, 2.500000, -1.776346, -0.000535, -0.890739, 0.454514,
-0.973323, 4.412262, 18.174875, 3.000000, -1.776346, 0.554281, -0.740975, 0.379115,
-0.983128, 5.711351, 20.357510, 3.000000, -1.857690, 0.562328, -0.698593, 0.442442,
-0.983128, 5.711351, 20.357510, 3.000000, -1.857690, 0.562328, -0.698593, 0.442442,
-0.997835, 6.953747, 22.156214, 3.000000, -1.939034, 0.572743, -0.675634, 0.464203,
--0.004902, 6.752687, 22.278475, 2.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--0.004902, 6.752687, 22.278475, 2.500000, -1.939034, 0.000369, -0.822635, 0.568570,
--1.007639, 6.953747, 22.156216, 2.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.022346, 6.945759, 19.711123, 1.000000, -1.857690, -0.575450, 0.685898, -0.445422,
--1.032151, 5.677700, 17.631544, 1.000000, -1.776346, -0.577835, 0.723604, -0.377496,
--1.366396, 5.044981, 17.903212, 1.500000, -1.776346, -0.999757, -0.019426, 0.010462,
--1.366396, 5.044981, 17.903212, 1.500000, -1.776346, -0.999757, -0.019426, 0.010462,
--1.032151, 4.412262, 18.174877, 2.000000, -1.776346, -0.555665, -0.740194, 0.378615,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.022346, 5.711351, 20.357510, 2.000000, -1.857690, -0.562464, -0.695442, 0.447208,
--1.007639, 6.953747, 22.156216, 2.000000, -1.939034, -0.571627, -0.672843, 0.469600,
--1.341885, 7.556932, 21.789433, 1.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.341885, 7.556932, 21.789433, 1.500000, -1.939034, -0.999989, 0.000304, 0.004665,
--1.007639, 8.160118, 21.422651, 1.000000, -1.939034, -0.574068, 0.669723, -0.471080,
--1.022346, 6.945759, 19.711123, 1.000000, -1.857690, -0.575450, 0.685898, -0.445422,
--1.002737, 8.987209, 23.827108, 1.833333, -1.749232, -0.690086, 0.408969, 0.597098,
--0.742768, 8.411285, 23.925793, 1.000000, -1.776346, -0.485429, -0.281111, 0.827850,
-0.000000, 8.401409, 24.234768, 1.000000, -1.857690, -0.000001, -0.291501, 0.956571,
-0.000000, 8.401409, 24.234768, 1.000000, -1.857690, -0.000001, -0.291501, 0.956571,
-0.742768, 8.411285, 23.925795, 1.000000, -1.939034, 0.485428, -0.281111, 0.827851,
-1.002737, 8.987209, 23.827108, 0.500000, -1.939034, 0.690085, 0.408969, 0.597099,
-1.002737, 8.987209, 23.827108, 0.500000, -1.939034, 0.690085, 0.408969, 0.597099,
-0.742768, 9.282909, 23.329664, 0.000000, -1.939034, 0.487250, 0.872639, 0.032983,
-0.000000, 9.573013, 23.419453, 1.333333, -1.830575, -0.000000, 0.997856, 0.065453,
-0.000000, 9.573013, 23.419453, 1.333333, -1.830575, -0.000000, 0.997856, 0.065453,
--0.742768, 9.282909, 23.329664, 2.666667, -1.722117, -0.487251, 0.872639, 0.032983,
--1.002737, 8.987209, 23.827108, 1.833333, -1.749232, -0.690086, 0.408969, 0.597098,
-0.983128, 6.945759, 19.711123, 1.500000, -2.000000, 0.574803, 0.682785, -0.451006,
-0.973323, 5.677700, 17.631544, 2.000000, -2.000000, 0.576561, 0.724323, -0.378066,
--0.029414, 5.888605, 17.540989, 2.500000, -2.000000, -0.000556, 0.885983, -0.463718,
--0.029414, 5.888605, 17.540989, 2.500000, -2.000000, -0.000556, 0.885983, -0.463718,
--1.032151, 5.677700, 17.631544, 3.000000, -2.000000, -0.577835, 0.723604, -0.377496,
--1.022346, 6.945759, 19.711123, 3.500000, -2.000000, -0.575450, 0.685898, -0.445422,
--1.022346, 6.945759, 19.711123, 3.500000, -2.000000, -0.575450, 0.685898, -0.445422,
--1.007639, 8.160118, 21.422651, 4.000000, -2.000000, -0.574068, 0.669723, -0.471080,
--0.004902, 8.361179, 21.300390, 2.500000, -2.000000, 0.000389, 0.815229, -0.579139,
--0.004902, 8.361179, 21.300390, 2.500000, -2.000000, 0.000389, 0.815229, -0.579139,
-0.997834, 8.160118, 21.422651, 1.000000, -2.000000, 0.574744, 0.665807, -0.475784,
-0.983128, 6.945759, 19.711123, 1.500000, -2.000000, 0.574803, 0.682785, -0.451006,
--1.005175, 11.029587, -4.132468, 3.000000, -1.857690, -0.578521, -0.809497, -0.100142,
--1.006394, 11.114811, -5.517140, 3.000000, -1.776346, -0.583093, -0.812392, -0.004755,
--0.003657, 10.880220, -5.483850, 2.833333, -1.749232, -0.000127, -0.999975, -0.007088,
--0.003657, 10.880220, -5.483850, 2.833333, -1.749232, -0.000127, -0.999975, -0.007088,
-0.999079, 11.114811, -5.517140, 2.666667, -1.722117, 0.582792, -0.812607, -0.004817,
-1.000299, 11.029585, -4.132468, 3.333333, -1.830575, 0.578319, -0.809495, -0.101318,
-1.000299, 11.029585, -4.132468, 3.333333, -1.830575, 0.578319, -0.809495, -0.101318,
-1.002127, 10.729588, -2.409474, 4.000000, -1.939034, 0.568931, -0.804350, -0.171283,
--0.000610, 10.494156, -2.383091, 3.500000, -1.939034, 0.000040, -0.977947, -0.208854,
--0.000610, 10.494156, -2.383091, 3.500000, -1.939034, 0.000040, -0.977947, -0.208854,
--1.003346, 10.729588, -2.409474, 3.000000, -1.939034, -0.568927, -0.804482, -0.170679,
--1.005175, 11.029587, -4.132468, 3.000000, -1.857690, -0.578521, -0.809497, -0.100142,
--1.005175, 12.441681, -4.309345, 1.000000, -0.253818, -0.554831, 0.825951, 0.099839,
--1.006394, 12.522362, -5.716876, 1.000000, -0.170915, -0.566040, 0.824377, 0.001632,
--1.340640, 11.818584, -5.617008, 1.500000, -0.170915, -0.999853, 0.017074, 0.001872,
--1.340640, 11.818584, -5.617008, 1.500000, -0.170915, -0.999853, 0.017074, 0.001872,
--1.006394, 11.114811, -5.517140, 2.000000, -0.170915, -0.583093, -0.812392, -0.004755,
--1.005175, 11.029587, -4.132468, 2.000000, -0.253818, -0.578521, -0.809497, -0.100142,
--1.005175, 11.029587, -4.132468, 2.000000, -0.253818, -0.578521, -0.809497, -0.100142,
--1.003346, 10.729588, -2.409474, 2.000000, -0.336720, -0.568927, -0.804482, -0.170679,
--1.337592, 11.435898, -2.488622, 1.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.337592, 11.435898, -2.488622, 1.500000, -0.336720, -0.999671, 0.024155, 0.008634,
--1.003346, 12.142200, -2.567771, 1.000000, -0.336720, -0.545383, 0.819886, 0.174196,
--1.005175, 12.441681, -4.309345, 1.000000, -0.253818, -0.554831, 0.825951, 0.099839,
-0.000000, 25.158775, 0.885566, 0.666667, -0.891999, 0.000000, 0.098978, -0.995090,
-0.742768, 25.130249, 1.141007, 1.333333, -1.447277, 0.424007, 0.088516, -0.901323,
-1.002737, 24.600067, 1.327282, 1.166667, -0.809096, 0.595697, -0.491752, -0.635079,
-1.002737, 24.600067, 1.327282, 1.166667, -0.809096, 0.595697, -0.491752, -0.635079,
-0.742768, 24.296909, 1.783397, 1.000000, -0.170915, 0.428917, -0.894621, -0.125234,
-0.000000, 24.041351, 1.768998, 1.000000, -0.253818, 0.000000, -0.991299, -0.131630,
-0.000000, 24.041351, 1.768998, 1.000000, -0.253818, 0.000000, -0.991299, -0.131630,
--0.742768, 24.296909, 1.783397, 1.000000, -0.336720, -0.428917, -0.894621, -0.125234,
--1.002737, 24.600067, 1.327282, 0.500000, -0.336720, -0.595697, -0.491752, -0.635079,
--1.002737, 24.600067, 1.327282, 0.500000, -0.336720, -0.595697, -0.491752, -0.635079,
--0.742768, 25.130249, 1.141007, 0.000000, -0.336720, -0.424007, 0.088516, -0.901323,
-0.000000, 25.158775, 0.885566, 0.666667, -0.891999, 0.000000, 0.098978, -0.995090,
-1.000299, 12.441681, -4.309345, 1.500000, -4.000000, 0.554885, 0.826037, 0.098819,
-0.999079, 12.522362, -5.716876, 2.000000, -4.000000, 0.565733, 0.824587, 0.001687,
--0.003657, 12.756954, -5.750165, 2.500000, -4.000000, -0.000126, 1.000000, 0.000870,
--0.003657, 12.756954, -5.750165, 2.500000, -4.000000, -0.000126, 1.000000, 0.000870,
--1.006394, 12.522362, -5.716876, 3.000000, -4.000000, -0.566040, 0.824377, 0.001632,
--1.005175, 12.441681, -4.309345, 3.500000, -4.000000, -0.554831, 0.825951, 0.099839,
--1.005175, 12.441681, -4.309345, 3.500000, -4.000000, -0.554831, 0.825951, 0.099839,
--1.003346, 12.142200, -2.567771, 4.000000, -4.000000, -0.545383, 0.819886, 0.174196,
--0.000610, 12.377636, -2.594154, 2.500000, -4.000000, 0.000041, 0.978486, 0.206311,
--0.000610, 12.377636, -2.594154, 2.500000, -4.000000, 0.000041, 0.978486, 0.206311,
-1.002127, 12.142200, -2.567771, 1.000000, -4.000000, 0.545588, 0.819894, 0.173516,
-1.000299, 12.441681, -4.309345, 1.500000, -4.000000, 0.554885, 0.826037, 0.098819,
-1.000299, 11.029585, -4.132468, 4.000000, -3.848496, 0.578319, -0.809495, -0.101318,
-0.999079, 11.114811, -5.517140, 4.000000, -3.761107, 0.582792, -0.812607, -0.004817,
-1.333325, 11.818588, -5.617008, 4.000000, -3.594440, 0.999852, 0.017082, 0.001868,
-1.333325, 11.818588, -5.617008, 4.000000, -3.594440, 0.999852, 0.017082, 0.001868,
-0.999079, 12.522362, -5.716876, 4.000000, -3.427773, 0.565733, 0.824587, 0.001687,
-1.000299, 12.441681, -4.309345, 4.000000, -3.234054, 0.554885, 0.826037, 0.098819,
-1.000299, 12.441681, -4.309345, 4.000000, -3.234054, 0.554885, 0.826037, 0.098819,
-1.002127, 12.142200, -2.567771, 4.000000, -3.040334, 0.545588, 0.819894, 0.173516,
-1.336373, 11.435898, -2.488622, 4.000000, -3.488110, 0.999684, 0.024018, 0.007427,
-1.336373, 11.435898, -2.488622, 4.000000, -3.488110, 0.999684, 0.024018, 0.007427,
-1.002127, 10.729588, -2.409474, 4.000000, -3.935886, 0.568931, -0.804350, -0.171283,
-1.000299, 11.029585, -4.132468, 4.000000, -3.848496, 0.578319, -0.809495, -0.101318,
-1.002737, -23.736286, -6.771559, 0.500000, 1.053028, 0.633041, -0.276748, -0.722959,
-0.742768, -24.152987, -6.401496, 1.000000, 1.053028, 0.455754, -0.834430, -0.309862,
-0.000000, -24.406044, -6.530420, 1.500000, 1.053028, 0.000000, -0.933376, -0.358900,
-0.000000, -24.406044, -6.530420, 1.500000, 1.053028, 0.000000, -0.933376, -0.358900,
--0.742768, -24.152987, -6.401496, 2.000000, 1.053028, -0.455754, -0.834431, -0.309862,
--1.002737, -23.736286, -6.771559, 4.000000, -0.306819, -0.633041, -0.276747, -0.722959,
--1.002737, -23.736286, -6.771559, 4.000000, -0.306819, -0.633041, -0.276747, -0.722959,
--0.742768, -23.169422, -6.772669, 6.000000, -1.666667, -0.444774, 0.383424, -0.809421,
-0.000000, -23.066525, -7.012697, 3.000000, -0.306819, -0.000000, 0.424976, -0.905205,
-0.000000, -23.066525, -7.012697, 3.000000, -0.306819, -0.000000, 0.424976, -0.905205,
-0.742768, -23.169422, -6.772669, 0.000000, 1.053028, 0.444774, 0.383425, -0.809421,
-1.002737, -23.736286, -6.771559, 0.500000, 1.053028, 0.633041, -0.276748, -0.722959,
-1.336982, -2.618040, 4.463405, 4.000000, -0.333333, 0.999977, -0.006223, -0.002555,
-1.002737, -3.239137, 4.110385, 5.000000, -1.666667, 0.573276, -0.760494, -0.304965,
-1.002737, -2.684134, 2.725971, 2.500000, -0.689796, 0.555812, -0.771611, -0.309336,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, 0.596303, 0.745197, 0.298504,
-1.002737, -1.996943, 4.816424, 3.000000, 1.000000, 0.580237, 0.756078, 0.302774,
-1.336982, -2.618040, 4.463405, 4.000000, -0.333333, 0.999977, -0.006223, -0.002555,
--1.336982, -0.581338, -32.314465, 0.500000, 0.972854, 0.000000, -0.028514, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, 0.000000, -0.028512, -0.999593,
--1.336982, 4.212124, -29.503693, 0.500000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--1.336982, -5.594234, -28.484890, 0.500000, 1.119843, -0.000004, -0.026495, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.000002, -0.026494, -0.999649,
--1.336982, -2.065033, 3.083410, 3.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.000002, -0.028517, -0.999593,
-1.336982, -0.581338, -32.314465, 2.500000, 0.972854, 0.000000, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-1.336982, -0.581338, -32.314465, 2.500000, 0.972854, 0.000000, -0.028517, -0.999593,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.000002, -0.028516, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-1.002737, -1.292564, -32.294174, 2.000000, 0.972854, 0.000002, -0.028516, -0.999593,
-0.000000, -1.529640, -32.287415, 1.500000, 0.972854, 0.000002, -0.028513, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-0.000000, -1.529640, -32.287415, 1.500000, 0.972854, 0.000002, -0.028513, -0.999593,
--1.002737, -1.292564, -32.294178, 1.000000, 0.972854, 0.000000, -0.028512, -0.999593,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.000002, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.336982, -0.581338, -32.314465, 0.500000, 0.972854, 0.000000, -0.028514, -0.999593,
-0.000000, 0.366964, -32.341518, 3.250000, 0.867302, 0.000000, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
--1.002737, 0.129889, -32.334755, 3.500000, 0.761751, -0.000002, -0.028517, -0.999593,
-1.002737, 0.129889, -32.334755, 2.937500, 0.946466, 0.000002, -0.028517, -0.999593,
--0.000000, -0.581338, -32.314465, 1.968750, 0.959660, 0.000001, -0.028515, -0.999593,
-0.000000, 0.366964, -32.341518, 3.250000, 0.867302, 0.000000, -0.028517, -0.999593,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, -0.000000, -0.038080, -0.999275,
-1.336982, 4.212124, -29.503689, 2.500000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-1.336982, 4.212124, -29.503689, 2.500000, 0.966243, 0.000000, -0.038077, -0.999275,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.000000, -0.038075, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-1.002737, 3.502487, -29.476650, 2.000000, 0.966243, 0.000000, -0.038075, -0.999275,
-0.000000, 3.265942, -29.467636, 1.500000, 0.966243, 0.000000, -0.038076, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-0.000000, 3.265942, -29.467636, 1.500000, 0.966243, 0.000000, -0.038076, -0.999275,
--1.002737, 3.502487, -29.476650, 1.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, 0.000000, -0.038077, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.336982, 4.212124, -29.503693, 0.500000, 0.966243, 0.000000, -0.038077, -0.999275,
-0.000000, 5.158308, -29.539745, 3.500000, 0.966243, -0.000000, -0.038080, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
--1.002737, 4.921762, -29.530731, 4.000000, 0.966243, 0.000000, -0.038077, -0.999275,
-1.002737, 4.921762, -29.530731, 3.000000, 0.966243, -0.000000, -0.038080, -0.999275,
--0.000000, 4.212124, -29.503689, 2.000000, 0.966243, -0.000000, -0.038077, -0.999275,
-0.000000, 5.158308, -29.539745, 3.500000, 0.966243, -0.000000, -0.038080, -0.999275,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, -0.000002, -0.026493, -0.999649,
-1.336982, -5.594234, -28.484890, 2.500000, 1.119843, 0.000002, -0.026495, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-1.336982, -5.594234, -28.484890, 2.500000, 1.119843, 0.000002, -0.026495, -0.999649,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.000002, -0.026494, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-1.002737, -6.305892, -28.466030, 1.500000, 1.053028, 0.000002, -0.026494, -0.999649,
-0.000000, -6.543112, -28.459743, 1.500000, 1.119843, 0.000000, -0.026496, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -6.543112, -28.459743, 1.500000, 1.119843, 0.000000, -0.026496, -0.999649,
--1.002737, -6.305892, -28.466030, 0.500000, 1.053028, -0.000002, -0.026494, -0.999649,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.000001, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.336982, -5.594234, -28.484890, 0.500000, 1.119843, -0.000004, -0.026495, -0.999649,
-0.000000, -4.645356, -28.510036, 3.500000, 1.119843, 0.000000, -0.026488, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
--1.002737, -4.882575, -28.503754, 3.500000, 1.053028, -0.000001, -0.026493, -0.999649,
-1.002737, -4.882575, -28.503754, 2.500000, 1.053028, -0.000002, -0.026493, -0.999649,
-0.000000, -5.594234, -28.484894, 1.500000, 1.053028, -0.000000, -0.026493, -0.999649,
-0.000000, -4.645356, -28.510036, 3.500000, 1.119843, 0.000000, -0.026488, -0.999649,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, -0.000000, 0.500000, -0.866025,
-1.336982, -2.065033, 3.083410, 2.500000, -0.594898, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-1.336982, -2.065033, 3.083410, 2.500000, -0.594898, 0.000000, 0.500000, -0.866025,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, -0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-1.002737, -2.684134, 2.725971, 4.500000, -1.666667, -0.000000, 0.500000, -0.866025,
-0.000000, -2.890502, 2.606825, 4.500000, -1.833333, 0.000000, 0.500000, -0.866026,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.890502, 2.606825, 4.500000, -1.833333, 0.000000, 0.500000, -0.866026,
--1.002737, -2.684134, 2.725971, 3.500000, -1.666667, 0.000000, 0.500000, -0.866025,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.336982, -2.065033, 3.083410, 3.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -1.239565, 3.559994, 2.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
--1.002737, -1.445931, 3.440848, 2.500000, -1.666667, 0.000000, 0.500000, -0.866025,
-1.002737, -1.445931, 3.440848, 2.500000, -0.500000, -0.000000, 0.500000, -0.866025,
-0.000000, -2.065034, 3.083410, 3.000000, -1.083333, 0.000000, 0.500000, -0.866025,
-0.000000, -1.239565, 3.559994, 2.500000, -1.833333, 0.000000, 0.500000, -0.866025,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-5.620958, -6.307936, 32.893612, 2.375000, -0.573582, 0.996241, -0.000983, 0.086619,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
-4.193409, -10.256766, 32.893612, 1.972222, -0.557378, 0.680284, -0.725440, 0.104643,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
-0.000000, -11.548096, 32.893612, 1.500000, -0.573582, -0.004203, -0.998166, 0.060395,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
--4.193409, -10.256766, 32.893612, 1.027778, -0.557378, -0.685012, -0.716396, 0.132421,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
--4.193409, -2.445326, 32.893612, 0.000000, -0.594415, -0.686924, 0.716419, 0.121978,
--5.620958, -6.307936, 32.893612, 0.625000, -0.573582, -0.991757, -0.001005, 0.128133,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
--4.193409, -2.445326, 32.893612, 4.000000, -0.594415, -0.686924, 0.716419, 0.121978,
-0.250684, -6.277495, 43.932335, 1.687500, -0.646499, 0.009105, 0.001936, 0.999957,
-4.193409, -2.445326, 32.893612, 3.000000, -0.594415, 0.682263, 0.725032, 0.094055,
-0.000000, -1.067776, 32.893612, 3.500000, -0.594415, -0.004492, 0.998437, 0.055707,
-};
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp
deleted file mode 100644
index 61586d8..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.cpp
+++ /dev/null
@@ -1,351 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "RenderInterface.h"
-#include "MeshShaderParam.h"
-#include "RenderPlugin.h"
-
-namespace RenderInterface
-{
-
-////////////////////////////////////////////////////////////////////////////////////////////
-bool InitDevice(int deviceID)
-{
- if (!RenderPlugin::Instance()->InitDevice(deviceID))
- {
- MessageBox( 0, L"Could not create device.", L"Error", MB_ICONEXCLAMATION );
- return false;
- }
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool GetDeviceInfoString(wchar_t *str)
-{
- return RenderPlugin::Instance()->GetDeviceInfoString(str);
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool Initialize()
-{
- return RenderPlugin::Instance()->Initialize();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Shutdown()
-{
- RenderPlugin::Instance()->Shutdown();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// gpu buffer management
-///////////////////////////////////////////////////////////////////////////////
-GPUBufferResource* CreateVertexBuffer(
- unsigned int ByteWidth, void* pSysMem)
-{
- return RenderPlugin::Instance()->CreateVertexBuffer(ByteWidth, pSysMem);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyToDevice(
- GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth)
-{
- RenderPlugin::Instance()->CopyToDevice(pDevicePtr, pSysMem, ByteWidth);
-}
-
-///////////////////////////////////////////////////////////////////
-// texture resource mangement
-///////////////////////////////////////////////////////////////////
-GPUShaderResource* CreateTextureResource(const char* filepath)
-{
- return RenderPlugin::Instance()->CreateTextureSRV(filepath);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void RenderShadowMap(GPUShaderResource* pShadowSRV, float znear, float zfar)
-{
- // update constant buffer
- ShadowVizParam shaderParam;
- {
- shaderParam.m_zFar = zfar;
- shaderParam.m_zNear = znear;
- }
- CopyShaderParam(SHADER_TYPE_VISUALIZE_SHADOW, &shaderParam, sizeof(ShadowVizParam), 0);
-
- RenderPlugin::Instance()->BindPixelShaderResources(0, 1, &pShadowSRV);
-
- // render states
- RenderPlugin::Instance()->ApplySampler(0, SAMPLER_TYPE_POINTCLAMP);
-
- RenderPlugin::Instance()->BindShaderResources(SHADER_TYPE_VISUALIZE_SHADOW, 1, &pShadowSRV);
-
-
- RenderPlugin::Instance()->ApplyRasterizerState(RASTERIZER_STATE_FILL_CULL_NONE);
- RenderPlugin::Instance()->ApplyDepthStencilState(DEPTH_STENCIL_DEPTH_NONE);
-
- // set IA vars
- RenderPlugin::Instance()->ClearInputLayout();
-
- RenderPlugin::Instance()->SetPrimitiveTopologyTriangleStrip();
-
- // set shader and tex resource
- ApplyShader(SHADER_TYPE_VISUALIZE_SHADOW);
-
- // draw quad
- RenderPlugin::Instance()->Draw(3, 0);
-
- // cleanup shader and its resource
- RenderPlugin::Instance()->ClearPixelShaderResources(0, 1);
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_VISUALIZE_SHADOW);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// render with full color shader
-void RenderScreenQuad(
- GPUShaderResource* pTextureSRV
- )
-{
- RenderPlugin::Instance()->ApplyRasterizerState(RASTERIZER_STATE_FILL_CULL_NONE);
- RenderPlugin::Instance()->ApplyDepthStencilState(DEPTH_STENCIL_DEPTH_NONE);
-
- RenderPlugin::Instance()->ClearInputLayout();
-
- RenderPlugin::Instance()->SetPrimitiveTopologyTriangleStrip();
-
- if(pTextureSRV)
- {
- RenderPlugin::Instance()->BindShaderResources(SHADER_TYPE_SCREEN_QUAD, 1, &pTextureSRV);
-
- ApplyShader(SHADER_TYPE_SCREEN_QUAD);
-
- RenderPlugin::Instance()->BindPixelShaderResources(0, 1, &pTextureSRV);
- RenderPlugin::Instance()->ApplySampler(0, SAMPLER_TYPE_POINTCLAMP);
-
- RenderPlugin::Instance()->Draw(3,0);
-
- RenderPlugin::Instance()->ClearPixelShaderResources(0, 1);
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_SCREEN_QUAD);
- }
- else
- {
- ApplyShader(SHADER_TYPE_SCREEN_QUAD_COLOR);
-
- RenderPlugin::Instance()->Draw(3,0);
-
- RenderPlugin::Instance()->DisableShader(SHADER_TYPE_SCREEN_QUAD_COLOR);
- }
-}
-
-
-void SubmitGpuWork()
-{
- RenderPlugin::Instance()->SubmitGpuWork();
-}
-
-void WaitForGpu()
-{
- RenderPlugin::Instance()->WaitForGpu();
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-// draw calls
-///////////////////////////////////////////////////////////////////////////////
-void DrawLineList(GPUBufferResource* pDevicePtr, unsigned int nVerts, unsigned int stride)
-{
- RenderPlugin::Instance()->SetVertexBuffer(pDevicePtr, stride);
- RenderPlugin::Instance()->SetPrimitiveTopologyLineList();
- RenderPlugin::Instance()->Draw(nVerts, 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// render states management
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyDepthStencilState(DEPTH_STENCIL_STATE state)
-{
- RenderPlugin::Instance()->ApplyDepthStencilState(state);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyRasterizerState(RASTERIZER_STATE state)
-{
- RenderPlugin::Instance()->ApplyRasterizerState(state);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplySampler(int slot, SAMPLER_TYPE st)
-{
- RenderPlugin::Instance()->ApplySampler(slot, st);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ApplyBlendState(BLEND_STATE st)
-{
- RenderPlugin::Instance()->ApplyBlendState(st);
-}
-
-void ApplyForShadow(int ForShadow)
-{
- RenderPlugin::Instance()->ApplyForShadow(ForShadow);
-}
-
-void SwitchToDX11()
-{
- RenderPlugin::Instance()->SwitchToDX11();
-}
-
-void FlushDX11()
-{
- RenderPlugin::Instance()->FlushDX11();
-}
-
-void FlushDX12()
-{
- RenderPlugin::Instance()->FlushDX12();
-}
-
-void ApplyPrimitiveTopologyLine()
-{
- RenderPlugin::Instance()->ApplyPrimitiveTopologyLine();
-}
-
-void ApplyPrimitiveTopologyTriangle()
-{
- RenderPlugin::Instance()->ApplyPrimitiveTopologyTriangle();
-}
-
-///////////////////////////////////////////////////////////////////
-// shader magement
-///////////////////////////////////////////////////////////////////
-void ApplyShader(SHADER_TYPE st)
-{
- RenderPlugin::Instance()->ApplyShader(st);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot)
-{
- RenderPlugin::Instance()->CopyShaderParam(st, pSysMem, bytes, slot);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Viewport magement
-/////////////////////////////////////////////////////////////////////////////////////////
-void GetViewport(Viewport& vp)
-{
- RenderPlugin::Instance()->GetViewport(vp);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SetViewport(const Viewport& vp)
-{
- RenderPlugin::Instance()->SetViewport(vp);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Render window interafce
-/////////////////////////////////////////////////////////////////////////////////////////
-bool CreateRenderWindow(HWND hWnd, int nSamples)
-{
- return RenderPlugin::Instance()->CreateRenderWindow(hWnd, nSamples);
-}
-
-bool ResizeRenderWindow(int w, int h)
-{
- return RenderPlugin::Instance()->ResizeRenderWindow(w,h);
-}
-
-void PresentRenderWindow()
-{
- return RenderPlugin::Instance()->PresentRenderWindow();
-}
-
-void ClearRenderWindow(float r, float g, float b)
-{
- return RenderPlugin::Instance()->ClearRenderWindow(r,g,b);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// Texture resource management
-///////////////////////////////////////////////////////////////////////////////
-static GPUShaderResource* g_backgroundTextureSRV = 0;
-
-bool LoadBackgroundTexture(const char* filePath)
-{
- ClearBackgroundTexture();
-
- RenderPlugin::Instance()->PreRender();
- g_backgroundTextureSRV = RenderPlugin::Instance()->CreateTextureSRV(filePath);
- RenderPlugin::Instance()->PostRender();
-
- return (g_backgroundTextureSRV != 0);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void RenderBackgroundTexture()
-{
- RenderScreenQuad(g_backgroundTextureSRV);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void ClearBackgroundTexture()
-{
- SAFE_RELEASE(g_backgroundTextureSRV);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-// Text draw helper functions (using DXUT)
-/////////////////////////////////////////////////////////////////////////////////////////
-void TxtHelperBegin()
-{
- RenderPlugin::Instance()->TxtHelperBegin();
-}
-
-void TxtHelperEnd()
-{
- RenderPlugin::Instance()->TxtHelperEnd();
-}
-
-void TxtHelperSetInsertionPos(int x, int y)
-{
- RenderPlugin::Instance()->TxtHelperSetInsertionPos(x,y);
-}
-
-void TxtHelperSetForegroundColor(float r, float g, float b, float a)
-{
- RenderPlugin::Instance()->TxtHelperSetForegroundColor(r,g,b,a);
-}
-
-void TxtHelperDrawTextLine(wchar_t* str)
-{
- RenderPlugin::Instance()->TxtHelperDrawTextLine(str);
-}
-
-} // end namespace \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h
deleted file mode 100644
index 9bc4036..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderInterface.h
+++ /dev/null
@@ -1,175 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "windows.h"
-
-#include "RenderResources.h"
-
-// API agnostic interface for rendering
-namespace RenderInterface
-{
- ///////////////////////////////////////////////////////////////////
- enum RASTERIZER_STATE
- {
- RASTERIZER_STATE_FILL_CULL_NONE,
- RASTERIZER_STATE_FILL_CULL_FRONT,
- RASTERIZER_STATE_FILL_CULL_BACK,
- RASTERIZER_STATE_WIRE,
- RASTERIZER_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum DEPTH_STENCIL_STATE
- {
- DEPTH_STENCIL_DEPTH_TEST,
- DEPTH_STENCIL_DEPTH_NONE,
- DEPTH_STENCIL_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum SAMPLER_TYPE
- {
- SAMPLER_TYPE_LINEAR,
- SAMPLER_TYPE_POINTCLAMP,
- SAMPLER_TYPE_END,
- };
-
- ///////////////////////////////////////////////////////////////////
- enum BLEND_STATE
- {
- BLEND_STATE_ALPHA,
- BLEND_STATE_NONE,
- BLEND_STATE_END
- };
-
- ///////////////////////////////////////////////////////////////////
- enum SHADER_TYPE
- {
- SHADER_TYPE_MESH_RENDERING,
- SHADER_TYPE_MESH_SHADOW,
- SHADER_TYPE_SCREEN_QUAD,
- SHADER_TYPE_SCREEN_QUAD_COLOR,
- SHADER_TYPE_VISUALIZE_SHADOW,
- SHADER_TYPE_SIMPLE_COLOR,
-#ifndef NV_ARTISTTOOLS
- SHADER_TYPE_HAIR_SHADER_DEFAULT,
- SHADER_TYPE_HAIR_SHADER_SHADOW,
-#endif // NV_ARTISTTOOLS
- };
-
- ///////////////////////////////////////////////////////////////////
- // global acess for render context and device to minimize D3D entry points
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool InitDevice(int deviceID);
- CORELIB_EXPORT bool Initialize();
- CORELIB_EXPORT void Shutdown();
-
- CORELIB_EXPORT void SubmitGpuWork();
- CORELIB_EXPORT void WaitForGpu();
-
- ///////////////////////////////////////////////////////////////////
- // render window management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool CreateRenderWindow(HWND hWnd, int nSamples);
- CORELIB_EXPORT bool ResizeRenderWindow(int w, int h);
- CORELIB_EXPORT void PresentRenderWindow();
- CORELIB_EXPORT void ClearRenderWindow(float r, float g, float b);
-
- ///////////////////////////////////////////////////////////////////
- // shader magement
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT void ApplyShader(SHADER_TYPE st);
- CORELIB_EXPORT void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0);
-
- ///////////////////////////////////////////////////////////////////
- // viewport management
- ///////////////////////////////////////////////////////////////////
- struct Viewport
- {
- float TopLeftX;
- float TopLeftY;
- float Width;
- float Height;
- float MinDepth;
- float MaxDepth;
- };
-
- CORELIB_EXPORT void GetViewport(Viewport& vp);
- CORELIB_EXPORT void SetViewport(const Viewport& vp);
-
- ///////////////////////////////////////////////////////////////////
- // gpu buffer management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT GPUBufferResource* CreateVertexBuffer( unsigned int ByteWidth, void* pSysMem = 0);
- CORELIB_EXPORT void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth);
-
- ///////////////////////////////////////////////////////////////////
- // texture resource mangement
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT GPUShaderResource* CreateTextureResource(const char* filePath);
- CORELIB_EXPORT void RenderShadowMap(GPUShaderResource* pShadowSRV, float znear, float zfar);
-
- ///////////////////////////////////////////////////////////////////
- // render state management
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT void ApplyDepthStencilState(DEPTH_STENCIL_STATE state);
- CORELIB_EXPORT void ApplyRasterizerState(RASTERIZER_STATE state);
- CORELIB_EXPORT void ApplySampler(int slot, SAMPLER_TYPE st);
- CORELIB_EXPORT void ApplyBlendState(BLEND_STATE st);
-
- CORELIB_EXPORT void ApplyForShadow(int ForShadow);
- CORELIB_EXPORT void SwitchToDX11();
- CORELIB_EXPORT void FlushDX11();
- CORELIB_EXPORT void FlushDX12();
- CORELIB_EXPORT void ApplyPrimitiveTopologyLine();
- CORELIB_EXPORT void ApplyPrimitiveTopologyTriangle();
- ///////////////////////////////////////////////////////////////////
- // draw calls
- ///////////////////////////////////////////////////////////////////
- void DrawLineList(GPUBufferResource* pVertexBuffer, unsigned int nVerts, unsigned int bytesize);
-
- ///////////////////////////////////////////////////////////////////
- // background textures
- ///////////////////////////////////////////////////////////////////
- bool LoadBackgroundTexture(const char* filePath);
- void RenderBackgroundTexture();
- void ClearBackgroundTexture();
-
- ///////////////////////////////////////////////////////////////////
- CORELIB_EXPORT bool GetDeviceInfoString(wchar_t *str);
-
- ///////////////////////////////////////////////////////////////////
- // text helpers
- CORELIB_EXPORT void TxtHelperBegin();
- CORELIB_EXPORT void TxtHelperEnd();
- CORELIB_EXPORT void TxtHelperSetInsertionPos(int x, int y);
- CORELIB_EXPORT void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f);
- CORELIB_EXPORT void TxtHelperDrawTextLine(wchar_t* str);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp
deleted file mode 100644
index 3df8c85..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "RenderPlugin.h"
-
-#include <io.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-RenderPlugin* g_Plugin = nullptr;
-
-RenderPlugin::RenderPlugin()
-{
- m_RenderApi = "";
-}
-
-typedef RenderPlugin*(*Func)(void);
-
-bool RenderPlugin::Load(std::vector<std::string>& render_plugins)
-{
- if (render_plugins.size() == 0)
- {
- return false;
- }
-
- std::vector<std::string>::iterator it;
- std::string pluginDll = "";
- HMODULE module = NULL;
- Func CreateFunc = NULL;
- bool loaded = false;
- for (it = render_plugins.begin(); it != render_plugins.end(); it++)
- {
-#ifdef NV_ARTISTTOOLS
- pluginDll = "RenderPlugin";
-#else
- pluginDll = "FurRender";
-#endif
-
- pluginDll.append(*it);
-
-#ifdef _WIN64
- pluginDll.append(".win64");
-#else
- pluginDll.append(".win32");
-#endif
-
-#ifdef _DEBUG
- pluginDll.append(".d");
-#else
-#endif
-
- pluginDll.append(".dll");
-
- module = LoadLibraryA(pluginDll.c_str());
- if (NULL == module)
- return false;
-
- CreateFunc = (Func)GetProcAddress(module, "CreateRenderPlugin");
- if (NULL == CreateFunc)
- return false;
-
- g_Plugin = CreateFunc();
- if (NULL != g_Plugin)
- {
- loaded = true;
- break;
- }
- }
- return loaded;
-}
-
-RenderPlugin::~RenderPlugin()
-{
-}
-
-
-RenderPlugin* RenderPlugin::Instance()
-{
- return g_Plugin;
-}
-
-void RenderPlugin::Destroy()
-{
- if (nullptr == g_Plugin)
- return;
-
- delete g_Plugin;
- g_Plugin = nullptr;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h
deleted file mode 100644
index e755aea..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderPlugin.h
+++ /dev/null
@@ -1,124 +0,0 @@
-#pragma once
-
-#include "RenderInterface.h"
-using namespace RenderInterface;
-
-class NVHairReadOnlyBuffer;
-class GPUProfiler;
-class ShadowMap;
-
-class IDXGIAdapter;
-class IUnknown;
-class IDXGIFactory1;
-class IDXGISwapChain;
-
-struct D3DHandles
-{
-public:
- IDXGIAdapter* pAdapter;
- IDXGIFactory1* pFactory;
- IUnknown* pDevice;
- IUnknown* pDeviceContext;
-
- IDXGISwapChain* pDXGISwapChain;
- IUnknown* pD3D11BackBuffer;
- IUnknown* pD3D11RenderTargetView;
- IUnknown* pD3D11DepthBuffer;
- IUnknown* pD3D11DepthStencilView;
-};
-
-#ifdef CORERENDER_LIB
-# define CORERENDER_EXPORT Q_DECL_EXPORT
-#else
-# define CORERENDER_EXPORT Q_DECL_IMPORT
-#endif
-
-class CORELIB_EXPORT RenderPlugin
-{
-public:
- static bool Load(std::vector<std::string>& render_plugins);
- static RenderPlugin* Instance();
- static void Destroy();
-
- ~RenderPlugin();
-
- // self
- virtual std::string GetRenderApi() { return m_RenderApi; }
-
- // interface
- virtual bool InitDevice(int deviceID) = 0;
- virtual bool Initialize() = 0;
- virtual void Shutdown() = 0;
- virtual void CopyToDevice(GPUBufferResource *pDevicePtr, void* pSysMem, unsigned int ByteWidth) = 0;
- virtual void ApplyDepthStencilState(DEPTH_STENCIL_STATE state) = 0;
- virtual void ApplyRasterizerState(RASTERIZER_STATE state) = 0;
- virtual void ApplySampler(int slot, SAMPLER_TYPE st) = 0;
- virtual void ApplyBlendState(BLEND_STATE st) = 0;
- virtual void GetViewport(Viewport& vp) = 0;
- virtual void SetViewport(const Viewport& vp) = 0;
- virtual void BindVertexShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void BindPixelShaderResources(int startSlot, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void ClearVertexShaderResources(int startSlot, int numSRVs) = 0;
- virtual void ClearPixelShaderResources(int startSlot, int numSRVs) = 0;
- virtual void ClearInputLayout() = 0;
- virtual void SetVertexBuffer(GPUBufferResource* pBuffer, UINT stride, UINT offset = 0) = 0;
- virtual void SetPrimitiveTopologyTriangleStrip() = 0;
- virtual void SetPrimitiveTopologyTriangleList() = 0;
- virtual void SetPrimitiveTopologyLineList() = 0;
- virtual void Draw(unsigned int vertexCount, unsigned int startCount = 0) = 0;
- virtual GPUBufferResource* CreateVertexBuffer(unsigned int ByteWidth, void* pSysMem = 0) = 0;
- virtual GPUShaderResource* CreateShaderResource(unsigned int stride, unsigned int numElements, void* pSysMem, NVHairReadOnlyBuffer* pReadOnlyBuffer = NULL) = 0;
-
- // interface dx12
- virtual void ApplyForShadow(int ForShadow) = 0;
- virtual void SwitchToDX11() = 0;
- virtual void FlushDX11() = 0;
- virtual void FlushDX12() = 0;
- virtual void ApplyPrimitiveTopologyLine() = 0;
- virtual void ApplyPrimitiveTopologyTriangle() = 0;
- virtual void SubmitGpuWork() = 0;
- virtual void WaitForGpu() = 0;
-
- // util
- virtual bool CreateRenderWindow(HWND hWnd, int nSamples) = 0;
- virtual bool ResizeRenderWindow(int w, int h) = 0;
- virtual void PresentRenderWindow() = 0;
- virtual void ClearRenderWindow(float r, float g, float b) = 0;
- virtual bool GetDeviceInfoString(wchar_t *str) = 0;
- virtual GPUShaderResource* CreateTextureSRV(const char* texturename) = 0;
- virtual void TxtHelperBegin() = 0;
- virtual void TxtHelperEnd() = 0;
- virtual void TxtHelperSetInsertionPos(int x, int y) = 0;
- virtual void TxtHelperSetForegroundColor(float r, float g, float b, float a = 1.0f) = 0;
- virtual void TxtHelperDrawTextLine(wchar_t* str) = 0;
-
- // shader
- virtual bool InitializeShaders() = 0;
- virtual void DestroyShaders() = 0;
- virtual void ApplyShader(SHADER_TYPE st) = 0;
- virtual void DisableShader(SHADER_TYPE st) = 0;
- virtual void BindShaderResources(SHADER_TYPE st, int numSRVs, GPUShaderResource** ppSRVs) = 0;
- virtual void CopyShaderParam(SHADER_TYPE st, void* pSysMem, unsigned int bytes, unsigned int slot = 0) = 0;
-
- // GPUProfiler
- virtual GPUProfiler* CreateGPUProfiler() = 0;
-
- // ShadowMap
- virtual ShadowMap* CreateShadowMap(int resolution) = 0;
-
- // D3D12RenderContext
- virtual void PreRender() = 0;
- virtual void PostRender() = 0;
-
- // GPUMeshResources
- virtual GPUMeshResources* GPUMeshResourcesCreate(MeshData* pMeshData, const SkinData& skinData) = 0;
- virtual void GPUMeshResourcesRelease(GPUMeshResources* pResource) = 0;
-
- // Get devices related
- virtual D3DHandles& GetDeviceHandles(D3DHandles& deviceHandles) = 0;
-
-protected:
- RenderPlugin();
- std::string m_RenderApi;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp
deleted file mode 100644
index 19863fc..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "RenderResources.h"
-
-// shared path
-#include "AnimUtil.h"
-#include "MeshData.h"
-
-#include "RenderPlugin.h"
-
-////////////////////////////////////////////////////////////////////////////////////////
-GPUMeshResources* GPUMeshResources::Create(MeshData* pMeshData, const SkinData& skinData)
-{
- return RenderPlugin::Instance()->GPUMeshResourcesCreate(pMeshData, skinData);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-void GPUMeshResources::Release()
-{
- RenderPlugin::Instance()->GPUMeshResourcesRelease(this);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h b/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h
deleted file mode 100644
index c261730..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/Interface/RenderResources.h
+++ /dev/null
@@ -1,72 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#pragma once
-
-#include "corelib_global.h"
-#include "CoreLib.h"
-
-#ifndef SAFE_RELEASE
-#define SAFE_RELEASE(x) { if (x) x->Release(); x = 0; }
-#endif
-
-//////////////////////////////////////////////////////////////////////////////////////
-// API specific GPU resources (todo - add reference counting)
-//////////////////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUBufferResource
-{
-public:
- virtual ~GPUBufferResource() {}
- virtual void Release() = 0;
-};
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUShaderResource
-{
-public:
- virtual ~GPUShaderResource() {}
- virtual void Release() = 0;
-};
-
-class MeshData;
-class SkinData;
-
-////////////////////////////////////////////////////////////////////////////////////////
-class GPUMeshResources
-{
-public:
- GPUBufferResource* m_pVertexBuffer;
- GPUShaderResource* m_pBoneIndicesSRV;
- GPUShaderResource* m_pBoneWeightsSRV;
-
- static GPUMeshResources* Create(MeshData*, const SkinData& skinData);
- void Release();
-};
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h b/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h
deleted file mode 100644
index 9935f71..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/LightShaderParam.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "MathUtil.h"
-
-#define MAX_LIGHTS 4
-
-// shader parameter for light
-struct LightParam
-{
- int m_enable;
- atcore_float3 m_dir;
-
- int m_useShadows;
- atcore_float3 m_color;
-
- atcore_float3 m_ambientColor;
- int m_isEnvLight;
-
- int m_lhs;
- int _reserved1;
- int _reserved2;
- int _reserved3;
-
- float m_depthBias;
- float m_depthGain;
- int m_useEnvMap;
- float m_intensity;
-
- atcore_float4x4 m_viewMatrix;
- atcore_float4x4 m_lightMatrix;
-
-public:
- LightParam()
- {
- m_dir = gfsdk_makeFloat3(-1.0f, -1.0f, -1.0f);
- m_enable = 0;
- m_useShadows = false;
- m_isEnvLight = 0;
- m_useEnvMap = 0;
-
- m_depthBias = 1.0f;
- m_depthGain = 1.0f;
-
- m_color = gfsdk_makeFloat3(1.0f, 1.0f, 1.0f);
- m_ambientColor = gfsdk_makeFloat3(0.0f, 0.0f, 0.0f);
- }
-};
-
-
-// light shader block in c-buffer
-struct LightShaderParam
-{
- LightParam m_lightParam[MAX_LIGHTS];
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h b/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h
deleted file mode 100644
index 5dce51d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/MeshShaderParam.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "MathUtil.h"
-#include "LightShaderParam.h"
-
-// same layout as the constant buffer used in body shader
-#define MAX_BONE_MATRICES 512
-
-// shared struct for mesh shader cbuffer and material access
-struct MeshShaderParam
-{
- atcore_float4x4 m_ViewProjection;
- atcore_float4x4 m_BodyTransformation;
-
- LightShaderParam m_lightParam;
-
- atcore_float3 m_eyePosition;
- float m_specularShininess;
-
- int m_useDiffuseTextures;
- int m_useSpecularTextures;
- int m_useNormalTextures;
- int m_useTextures;
-
-
- atcore_float4 m_ambientColor;
- atcore_float4 m_diffuseColor;
- atcore_float4 m_specularColor;
-
- int m_wireFrame;
- int m_useLighting;
- int m_wireFrameOver;
- float m_unitScale;
-
- int m_useDQs;
- int m_diffuseChannel;
- int m_flatNormal;
- int m_usePinPos;
-
- atcore_float4x4 m_boneMatrices[MAX_BONE_MATRICES];
- atcore_dualquaternion m_boneDQs[MAX_BONE_MATRICES];
-
- MeshShaderParam()
- {
- m_specularShininess = 30.0f;
-
- m_ambientColor = gfsdk_makeFloat4(0.0f, 0.0f, 0.0f, 1.0f);
- m_diffuseColor = gfsdk_makeFloat4(1.0f, 1.0f, 1.0f, 1.0f);
- m_specularColor = gfsdk_makeFloat4(0.0f, 0.0f, 0.0f, 0.0f);
-
- m_useDiffuseTextures = true;
- m_useSpecularTextures = true;
- m_useNormalTextures = true;
- m_useTextures = true;
-
- m_wireFrame = false;
- m_wireFrameOver = false;
- m_useLighting = true;
- m_unitScale = 1.0f;
-
- m_useDQs = false;
- m_flatNormal = false;
-
- m_usePinPos = false;
-
- memset(m_boneMatrices, 0, sizeof(atcore_float4x4) * MAX_BONE_MATRICES);
- memset(m_boneDQs, 0, sizeof(atcore_dualquaternion) * MAX_BONE_MATRICES);
- }
-};
-
-// struct for mesh shadow shader cbuffer
-struct MeshShadowShaderParam
-{
- atcore_float4x4 m_ViewProjection;
- atcore_float4x4 m_ViewMatrix;
- atcore_float4x4 m_BodyTransformation;
-
- int m_useDQs;
- int m_usePinPos;
- float _reserved_[2];
-
- atcore_float4x4 m_boneMatrices[MAX_BONE_MATRICES];
- atcore_dualquaternion m_boneDQs[MAX_BONE_MATRICES];
-
- MeshShadowShaderParam()
- {
- m_useDQs = false;
- m_usePinPos = false;
-
- memset(m_boneMatrices, 0, sizeof(atcore_float4x4) * MAX_BONE_MATRICES);
- memset(m_boneDQs, 0, sizeof(atcore_dualquaternion) * MAX_BONE_MATRICES);
- }
-};
-
-struct SimpleShaderParam
-{
- atcore_float4x4 world;
- atcore_float4x4 view;
- atcore_float4x4 projection;
- atcore_float4 color;
-
- int useVertexColor;
- int dummy2;
- int dummy3;
- int dummy4;
-};
-
-struct ShadowVizParam
-{
- float m_zNear;
- float m_zFar;
- float _align1;
- float _align2;
-}; \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp b/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp
deleted file mode 100644
index 72b90be..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#include "ShadowMap.h"
-
-#include "RenderPlugin.h"
-
-/////////////////////////////////////////////////////////////////////////
-ShadowMap* ShadowMap::Create(int resolution)
-{
- return RenderPlugin::Instance()->CreateShadowMap(resolution);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h b/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h
deleted file mode 100644
index 9a62b06..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/ShadowMap.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#pragma once
-
-#include "d3d11.h"
-
-class GPUShaderResource;
-
-struct ShadowMap
-{
-public:
- static ShadowMap* ShadowMap::Create(int resolution);
- virtual ~ShadowMap() {}
-
- virtual void Release() = 0;
- virtual void BeginRendering(float clearDepth) = 0;
- virtual void EndRendering() = 0;
-
- virtual GPUShaderResource* GetShadowSRV() = 0;
-};
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp b/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp
deleted file mode 100644
index 0dfb169..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.cpp
+++ /dev/null
@@ -1,493 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-
-#include "SimpleRenderable.h"
-
-#include "RenderInterface.h"
-
-#include <vector>
-
-#include "Nv.h"
-
-static std::vector<SimpleRenderable*> g_SimpleShapes;
-
-struct DefaultVertexType
-{
- atcore_float3 pos;
- atcore_float4 color;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleRenderable::SimpleRenderable()
- : m_pVertexBuffer(NV_NULL)
- , m_numIndices(0)
- , m_numVertices(0)
-{
-
-}
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleRenderable::~SimpleRenderable()
-{
- Free();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Free()
-{
- SAFE_RELEASE(m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::Initialize()
-{
- //////////////////////////////////////////////////////////////////////////////
- // create icon shape
- g_SimpleShapes.resize(NUM_SHAPE_TYPES);
-
- g_SimpleShapes[GROUND_YUP] = new SimpleRenderable;
- g_SimpleShapes[GROUND_YUP]->InitGroundGeometry(false);
-
- g_SimpleShapes[GROUND_ZUP] = new SimpleRenderable;
- g_SimpleShapes[GROUND_ZUP]->InitGroundGeometry(true);
-
- g_SimpleShapes[AXIS_YUP] = new SimpleRenderable;
- g_SimpleShapes[AXIS_YUP]->InitAxisGeometry(false);
-
- g_SimpleShapes[AXIS_ZUP] = new SimpleRenderable;
- g_SimpleShapes[AXIS_ZUP]->InitAxisGeometry(true);
-
- g_SimpleShapes[WIND_YUP] = new SimpleRenderable;
- g_SimpleShapes[WIND_YUP]->InitWindGeometry();
-
- g_SimpleShapes[WIND_ZUP] = new SimpleRenderable;
- g_SimpleShapes[WIND_ZUP]->InitWindGeometry();
-
- g_SimpleShapes[LIGHT] = new SimpleRenderable;
- g_SimpleShapes[LIGHT]->InitLightGeometry();
-
- g_SimpleShapes[LIGHT_RAY] = new SimpleRenderable;
- g_SimpleShapes[LIGHT_RAY]->InitLightRayGeometry();
-
- return true;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Draw(SHAPE_TYPE t, bool depthTest)
-{
- if (t >= g_SimpleShapes.size())
- return;
-
- g_SimpleShapes[t]->Draw(depthTest);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Shutdown()
-{
- for (int i = 0; i < g_SimpleShapes.size(); i++)
- {
- if (g_SimpleShapes[i])
- {
- g_SimpleShapes[i]->Free();
- delete g_SimpleShapes[i];
- }
- }
-
- g_SimpleShapes.clear();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitGroundGeometry(bool zUP)
-{
- const int nSeed = 10;
- const int nRow = nSeed * 2 + 1;
- const int nLines = nRow * 2;
- const float fLen = 25.0f;
- const float fSpace = fLen/nSeed;
- float groundHeight = 0.0f;
-
- const atcore_float4 color1 = gfsdk_makeFloat4(0.65, 0.65, 0.65, 1.0f);
- const atcore_float4 color2 = gfsdk_makeFloat4(0.1f, 0.1f, 0.1f, 1.0f);
-
- DWORD offset;
-
- const int numVerts = nLines * 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- //build ground lines/verts
- for(int i = 0; i < nSeed; i++)
- {
- if ( zUP )
- {
- // lines parallel to y
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), -fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- // lines parallel to y
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), -fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), fLen, groundHeight);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, -fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, -fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, fSpace * (i+1), groundHeight);
- pData->color = color1;
- pData++;
- }
- else
- {
- // lines parallel to z
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), groundHeight, -fLen);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(-fSpace * (i+1), groundHeight, fLen);
- pData->color = color1;
- pData++;
-
- // lines parallel to z
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), groundHeight, -fLen);
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fSpace * (i+1), groundHeight, fLen);
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, -fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, -fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, fSpace * (i+1));
- pData->color = color1;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, fSpace * (i+1));
- pData->color = color1;
- pData++;
- }
- }
-
- if ( zUP )
- {
- // line y
- pData->pos = gfsdk_makeFloat3(-fLen, 0.0f, groundHeight);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, 0.0f, groundHeight);
- pData->color = color2;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(0.0f, -fLen, groundHeight);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0.0f, fLen, groundHeight);
- pData->color = color2;
- pData++;
- }
- else
- {
- // line z
- pData->pos = gfsdk_makeFloat3(-fLen, groundHeight, 0.0f);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(fLen, groundHeight, 0.0f);
- pData->color = color2;
- pData++;
-
- // line x
- pData->pos = gfsdk_makeFloat3(0.0f, groundHeight, -fLen);
- pData->color = color2;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0.0f, groundHeight, fLen);
- pData->color = color2;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitAxisGeometry(bool zUP)
-{
- const atcore_float4 colorRed = gfsdk_makeFloat4(1.0f, 0, 0, 1.0f);
- const atcore_float4 colorGreen = gfsdk_makeFloat4(0, 1.0f, 0, 1.0f);
- const atcore_float4 colorBlue = gfsdk_makeFloat4(0, 0, 1.0f, 1.0f);
- const float dist = 1.0f;
- const int numVerts = 3 * 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- {
- // x axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(dist, 0, 0);
- pData->color = colorRed;
- pData++;
-
- // y axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorGreen;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, dist, 0);
- pData->color = colorGreen;
- pData++;
-
- // z axis
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, 0, dist);
- pData->color = colorBlue;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitLightGeometry()
-{
- // The following geometry data are generated by external/ObjLoad tool
-#include "GeometryData/LightGeometryData.h"
- const atcore_float4 colorYellow = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- const int numVerts = num_faces*3*2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- const float modelScale = 0.25f;
- for (int fi = 0; fi < num_faces; ++fi)
- {
- float* v0 = &vertices[(fi*3+0)*8];
- float* v1 = &vertices[(fi*3+1)*8];
- float* v2 = &vertices[(fi*3+2)*8];
-
- // flip Y
- v0[2] *= -1;
- v1[2] *= -1;
- v2[2] *= -1;
-
- // line 0
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorYellow;
- pData++;
-
- // line 1
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorYellow;
- pData++;
-
- // line 2
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorYellow;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorYellow;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitLightRayGeometry()
-{
- const atcore_float4 colorRed = gfsdk_makeFloat4(1.0f, 0, 0, 1.0f);
- const int numVerts = 2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- pData->pos = gfsdk_makeFloat3(0, 0, 0);
- pData->color = colorRed;
- pData++;
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleRenderable::InitWindGeometry()
-{
- // The following geometry data are generated by external/ObjLoad tool
-#include "GeometryData/WindGeometryData.h"
- const atcore_float4 colorBlue = gfsdk_makeFloat4(0, 0, 1.0f, 1.0f);
- const int numVerts = num_faces*3*2;
- DefaultVertexType* buf = new DefaultVertexType[numVerts];
- DefaultVertexType* pData = buf;
-
- const float modelScale = 0.5f;
- for (int fi = 0; fi < num_faces; ++fi)
- {
- float* v0 = &vertices[(fi*3+0)*8];
- float* v1 = &vertices[(fi*3+1)*8];
- float* v2 = &vertices[(fi*3+2)*8];
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v1[0], v1[1], v1[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v2[0], v2[1], v2[2]);
- pData->color = colorBlue;
- pData++;
-
- pData->pos = modelScale * gfsdk_makeFloat3(v0[0], v0[1], v0[2]);
- pData->color = colorBlue;
- pData++;
- }
-
- int bufBytes = sizeof(DefaultVertexType) * numVerts;
-
- m_pVertexBuffer = RenderInterface::CreateVertexBuffer(bufBytes, buf);
-
- m_numVertices = numVerts;
-
- return (NV_NULL != m_pVertexBuffer);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::Draw(bool depthTest)
-{
- RenderInterface::ApplyPrimitiveTopologyLine();
-
- RenderInterface::ApplyShader(RenderInterface::SHADER_TYPE_SIMPLE_COLOR);
- RenderInterface::DrawLineList(m_pVertexBuffer, m_numVertices, sizeof(DefaultVertexType));
-
- RenderInterface::FlushDX12();
- RenderInterface::ApplyPrimitiveTopologyTriangle();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleRenderable::DrawLine(const atcore_float3& from, const atcore_float3& to)
-{
- SimpleRenderable* pShape = g_SimpleShapes[LIGHT_RAY];
-
- DefaultVertexType buf[2];
- DefaultVertexType* pData = buf;
-
- // start position
- pData->pos = from;
- pData->color = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- pData++;
-
- // end position
- pData->pos = to;
- pData->color = gfsdk_makeFloat4(1.0f, 1.0f, 0, 1.0f);
- pData++;
-
- RenderInterface::CopyToDevice(pShape->m_pVertexBuffer, buf, 2 * sizeof(DefaultVertexType));
-
- pShape->Draw(true);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h b/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h
deleted file mode 100644
index c43c07d..0000000
--- a/tools/ArtistTools/source/CoreLib/Render/SimpleRenderable.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed
-// under the Mutual Non-Disclosure Agreement.
-//
-// Notice
-// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
-// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
-//
-// NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
-// expressly authorized by NVIDIA. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
-//
-// NVIDIA Corporation and its licensors retain all intellectual property and proprietary
-// rights in and to this software and related documentation and any modifications thereto.
-// Any use, reproduction, disclosure or distribution of this software and related
-// documentation without an express license agreement from NVIDIA Corporation is
-// strictly prohibited.
-//
-#pragma once
-
-#include "MathUtil.h"
-
-class GPUBufferResource;
-
-class SimpleRenderable
-{
-public:
- enum SHAPE_TYPE
- {
- GROUND_YUP,
- GROUND_ZUP,
- AXIS_YUP,
- AXIS_ZUP,
- WIND_YUP,
- WIND_ZUP,
- LIGHT,
- LIGHT_RAY,
- NUM_SHAPE_TYPES
- };
-
- static bool Initialize();
- static void Shutdown();
- static void Draw(SHAPE_TYPE t, bool depthTest = true);
- static void DrawLine(const atcore_float3& from, const atcore_float3& to);
-
-protected:
- GPUBufferResource* m_pVertexBuffer;
-
- unsigned int m_numVertices;
- unsigned int m_numIndices;
-
- SimpleRenderable();
- ~SimpleRenderable();
-
- bool InitGroundGeometry(bool zUp);
- bool InitAxisGeometry(bool zUp);
- bool InitLightGeometry();
- bool InitLightRayGeometry();
- bool InitWindGeometry();
-
- void Draw(bool depthTest = true);
-
- void Free();
-
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Resource/AppMainWindow.qrc b/tools/ArtistTools/source/CoreLib/Resource/AppMainWindow.qrc
deleted file mode 100644
index cffd039..0000000
--- a/tools/ArtistTools/source/CoreLib/Resource/AppMainWindow.qrc
+++ /dev/null
@@ -1,4 +0,0 @@
-<RCC>
- <qresource prefix="AppMainWindow">
- </qresource>
-</RCC>
diff --git a/tools/ArtistTools/source/CoreLib/Resource/D3DQt-CC.ico b/tools/ArtistTools/source/CoreLib/Resource/D3DQt-CC.ico
deleted file mode 100644
index 4477340..0000000
--- a/tools/ArtistTools/source/CoreLib/Resource/D3DQt-CC.ico
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/Resource/resource.rc b/tools/ArtistTools/source/CoreLib/Resource/resource.rc
deleted file mode 100644
index abc138a..0000000
--- a/tools/ArtistTools/source/CoreLib/Resource/resource.rc
+++ /dev/null
@@ -1,2 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "D3DQt-CC.ico"
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Camera.cpp b/tools/ArtistTools/source/CoreLib/Scene/Camera.cpp
deleted file mode 100644
index 326f846..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Camera.cpp
+++ /dev/null
@@ -1,891 +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 "Camera.h"
-
-//#define USE_D3DX9MATH
-#ifdef USE_D3DX9MATH
-#include <d3dx9math.h> // TODO - remove d3dx reference (quaternion funcs)
-
-#pragma comment(lib, "d3dx9.lib")
-#define MAKEVECTOR3 D3DXVECTOR3
-#else
-#ifndef max
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif
-
-#define FLOAT float
-#define D3DXVECTOR3 atcore_float3
-#define D3DXMATRIX atcore_float4x4
-#define D3DXQUATERNION atcore_float4
-
-#define MAKEVECTOR3 gfsdk_makeFloat3
-
-#define D3DXToRadian( degree ) ((degree) * 0.01745329251994329547)
-
-D3DXQUATERNION * D3DXQuaternionIdentity(
- __inout D3DXQUATERNION *pOut
- )
-{
- *pOut = gfsdk_makeFloat4(0, 0, 0, 1);
- return pOut;
-}
-
-D3DXQUATERNION * D3DXQuaternionNormalize(
- __inout D3DXQUATERNION *pOut,
- __in const D3DXQUATERNION *pQ
- )
-{
- gfsdk_normalize(*pOut);
- return pOut;
-}
-
-D3DXQUATERNION * D3DXQuaternionRotationAxis(
- __inout D3DXQUATERNION *pOut,
- __in const D3DXVECTOR3 *pV,
- __in FLOAT Angle
- )
-{
- FLOAT s = sin(Angle * 0.5);
-
- FLOAT x = pV->x * s;
- FLOAT y = pV->y * s;
- FLOAT z = pV->z * s;
- FLOAT w = cos(Angle * 0.5);
-
- *pOut = gfsdk_makeFloat4(x, y, z, w);
- return pOut;
-}
-
-D3DXQUATERNION * D3DXQuaternionMultiply(
- __inout D3DXQUATERNION *pOut,
- __in const D3DXQUATERNION *pQ1,
- __in const D3DXQUATERNION *pQ2
- )
-{
- gfsdk_normalize(*pQ1);
- gfsdk_normalize(*pQ2);
-
- FLOAT px = pQ2->x;
- FLOAT py = pQ2->y;
- FLOAT pz = pQ2->z;
- FLOAT pw = pQ2->w;
-
- FLOAT qx = pQ1->x;
- FLOAT qy = pQ1->y;
- FLOAT qz = pQ1->z;
- FLOAT qw = pQ1->w;
-
- FLOAT x = pw * qx + px * qw + py * qz - pz * qy;
- FLOAT y = pw * qy + py * qw + pz * qx - px * qz;
- FLOAT z = pw * qz + pz * qw + px * qy - py * qx;
- FLOAT w = pw * qw - px * qx - py * qy - pz * qz;
-
- *pOut = gfsdk_makeFloat4(x, y, z, w);
- gfsdk_normalize(*pOut);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixLookAtLH(
- __inout D3DXMATRIX *pOut,
- __in const D3DXVECTOR3 *pEye,
- __in const D3DXVECTOR3 *pAt,
- __in const D3DXVECTOR3 *pUp
- )
-{
- /*
- zaxis = normal(At - Eye)
- xaxis = normal(cross(Up, zaxis))
- yaxis = cross(zaxis, xaxis)
-
- xaxis.x yaxis.x zaxis.x 0
- xaxis.y yaxis.y zaxis.y 0
- xaxis.z yaxis.z zaxis.z 0
- -dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
- */
-
- D3DXVECTOR3 zaxis = *pAt - *pEye;
- gfsdk_normalize(zaxis);
- D3DXVECTOR3 xaxis = gfsdk_cross(*pUp, zaxis);
- gfsdk_normalize(xaxis);
- D3DXVECTOR3 yaxis = gfsdk_cross(zaxis, xaxis);
-
- gfsdk_makeIdentity(*pOut);
- pOut->_11 = xaxis.x;
- pOut->_21 = xaxis.y;
- pOut->_31 = xaxis.z;
- pOut->_12 = yaxis.x;
- pOut->_22 = yaxis.y;
- pOut->_32 = yaxis.z;
- pOut->_13 = zaxis.x;
- pOut->_23 = zaxis.y;
- pOut->_33 = zaxis.z;
- pOut->_41 = -gfsdk_dot(xaxis, *pEye);
- pOut->_42 = -gfsdk_dot(yaxis, *pEye);
- pOut->_43 = -gfsdk_dot(zaxis, *pEye);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixLookAtRH(
- __inout D3DXMATRIX *pOut,
- __in const D3DXVECTOR3 *pEye,
- __in const D3DXVECTOR3 *pAt,
- __in const D3DXVECTOR3 *pUp
- )
-{
- /*
- zaxis = normal(Eye - At)
- xaxis = normal(cross(Up, zaxis))
- yaxis = cross(zaxis, xaxis)
-
- xaxis.x yaxis.x zaxis.x 0
- xaxis.y yaxis.y zaxis.y 0
- xaxis.z yaxis.z zaxis.z 0
- -dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
- */
-
- D3DXVECTOR3 zaxis = *pEye - *pAt;
- gfsdk_normalize(zaxis);
- D3DXVECTOR3 xaxis = gfsdk_cross(*pUp, zaxis);
- gfsdk_normalize(xaxis);
- D3DXVECTOR3 yaxis = gfsdk_cross(zaxis, xaxis);
-
- gfsdk_makeIdentity(*pOut);
- pOut->_11 = xaxis.x;
- pOut->_21 = xaxis.y;
- pOut->_31 = xaxis.z;
- pOut->_12 = yaxis.x;
- pOut->_22 = yaxis.y;
- pOut->_32 = yaxis.z;
- pOut->_13 = zaxis.x;
- pOut->_23 = zaxis.y;
- pOut->_33 = zaxis.z;
- pOut->_41 = -gfsdk_dot(xaxis, *pEye);
- pOut->_42 = -gfsdk_dot(yaxis, *pEye);
- pOut->_43 = gfsdk_dot(zaxis, *pEye);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixPerspectiveFovLH(
- __inout D3DXMATRIX *pOut,
- __in FLOAT fovy,
- __in FLOAT Aspect,
- __in FLOAT zn,
- __in FLOAT zf
- )
-{
- /*
- cot(fovY/2) 0 0 0
- 0 cot(fovY/2)/aspect 0 0
- 0 0 zf/(zf-zn) 1
- 0 0 -zn*zf/(zf-zn) 0
- */
-
- memset(pOut, 0, sizeof(D3DXMATRIX));
- FLOAT cosHalfFovy = 1 / tan(fovy * 0.5);
- pOut->_11 = cosHalfFovy;
- pOut->_22 = cosHalfFovy / Aspect;
- pOut->_33 = zf / (zf - zn);
- pOut->_34 = 1;
- pOut->_43 = -zn*zf / (zf - zn);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixPerspectiveFovRH(
- __inout D3DXMATRIX *pOut,
- __in FLOAT fovy,
- __in FLOAT Aspect,
- __in FLOAT zn,
- __in FLOAT zf
- )
-{
- /*
- cot(fovY/2)/aspect 0 0 0
- 0 cot(fovY/2) 0 0
- 0 0 zf/(zn-zf) -1
- 0 0 zn*zf/(zn-zf) 0
- */
-
- memset(pOut, 0, sizeof(D3DXMATRIX));
- FLOAT cosHalfFovy = 1 / tan(fovy * 0.5);
- pOut->_11 = cosHalfFovy / Aspect;
- pOut->_22 = cosHalfFovy;
- pOut->_33 = zf / (zn - zf);
- pOut->_34 = -1;
- pOut->_43 = zn*zf / (zn - zf);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixOrthoLH(
- __inout D3DXMATRIX *pOut,
- __in FLOAT w,
- __in FLOAT h,
- __in FLOAT zn,
- __in FLOAT zf
- )
-{
- /*
- 2/w 0 0 0
- 0 2/h 0 0
- 0 0 1/(zf-zn) 0
- 0 0 zn/(zn-zf) 1
- */
-
- gfsdk_makeIdentity(*pOut);
- pOut->_11 = 2 / w;
- pOut->_22 = 2 / h;
- pOut->_33 = 1 / (zf - zn);
- pOut->_43 = zn / (zn - zf);
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixOrthoRH(
- __inout D3DXMATRIX *pOut,
- __in FLOAT w,
- __in FLOAT h,
- __in FLOAT zn,
- __in FLOAT zf
- )
-{
- /*
- 2/w 0 0 0
- 0 2/h 0 0
- 0 0 1/(zn-zf) 0
- 0 0 zn/(zn-zf) 1
- */
-
- gfsdk_makeIdentity(*pOut);
- pOut->_11 = 2 / w;
- pOut->_22 = 2 / h;
- pOut->_33 = 1 / (zn - zf);
- pOut->_43 = zn / (zn - zf);
- return pOut;
-}
-
-D3DXQUATERNION * D3DXQuaternionRotationMatrix(
- __inout D3DXQUATERNION *pOut,
- __in const D3DXMATRIX *pM
- )
-{
- FLOAT fourXSquaredMinus1 = pM->_11 - pM->_22 - pM->_33;
- FLOAT fourYSquaredMinus1 = pM->_22 - pM->_11 - pM->_33;
- FLOAT fourZSquaredMinus1 = pM->_33 - pM->_11 - pM->_22;
- FLOAT fourWSquaredMinus1 = pM->_11 + pM->_22 + pM->_33;
-
- int biggestIndex = 0;
- FLOAT fourBiggestSquaredMinus1 = fourWSquaredMinus1;
- if (fourXSquaredMinus1 > fourBiggestSquaredMinus1)
- {
- fourBiggestSquaredMinus1 = fourXSquaredMinus1;
- biggestIndex = 1;
- }
- if (fourYSquaredMinus1 > fourBiggestSquaredMinus1)
- {
- fourBiggestSquaredMinus1 = fourYSquaredMinus1;
- biggestIndex = 2;
- }
- if (fourZSquaredMinus1 > fourBiggestSquaredMinus1)
- {
- fourBiggestSquaredMinus1 = fourZSquaredMinus1;
- biggestIndex = 3;
- }
-
- FLOAT biggestVal = sqrt(fourBiggestSquaredMinus1 + 1) * 0.5;
- FLOAT mult = 0.25 / biggestVal;
-
- D3DXQuaternionIdentity(pOut);
- switch (biggestIndex)
- {
- case 0:
- pOut->w = biggestVal;
- pOut->x = (pM->_23 - pM->_32) * mult;
- pOut->y = (pM->_31 - pM->_13) * mult;
- pOut->z = (pM->_12 - pM->_21) * mult;
- break;
- case 1:
- pOut->w = (pM->_23 - pM->_32) * mult;
- pOut->x = biggestVal;
- pOut->y = (pM->_12 + pM->_21) * mult;
- pOut->z = (pM->_31 + pM->_13) * mult;
- break;
- case 2:
- pOut->w = (pM->_31 - pM->_13) * mult;
- pOut->x = (pM->_12 + pM->_21) * mult;
- pOut->y = biggestVal;
- pOut->z = (pM->_23 + pM->_32) * mult;
- break;
- case 3:
- pOut->w = (pM->_12 - pM->_21) * mult;
- pOut->x = (pM->_31 + pM->_13) * mult;
- pOut->y = (pM->_23 + pM->_32) * mult;
- pOut->z = biggestVal;
- break;
- default:
- break;
- }
- return pOut;
-}
-
-D3DXMATRIX * D3DXMatrixRotationQuaternion(
- __inout D3DXMATRIX *pOut,
- __in const D3DXQUATERNION *pQ
- )
-{
- gfsdk_makeIdentity(*pOut);
- FLOAT qxx = (pQ->x * pQ->x);
- FLOAT qyy = (pQ->y * pQ->y);
- FLOAT qzz = (pQ->z * pQ->z);
- FLOAT qxz = (pQ->x * pQ->z);
- FLOAT qxy = (pQ->x * pQ->y);
- FLOAT qyz = (pQ->y * pQ->z);
- FLOAT qwx = (pQ->w * pQ->x);
- FLOAT qwy = (pQ->w * pQ->y);
- FLOAT qwz = (pQ->w * pQ->z);
- pOut->_11 = 1 - 2 * (qyy + qzz);
- pOut->_12 = 2 * (qxy + qwz);
- pOut->_13 = 2 * (qxz - qwy);
- pOut->_21 = 2 * (qxy - qwz);
- pOut->_22 = 1 - 2 * (qxx + qzz);
- pOut->_23 = 2 * (qyz + qwx);
- pOut->_31 = 2 * (qxz + qwy);
- pOut->_32 = 2 * (qyz - qwx);
- pOut->_33 = 1 - 2 * (qxx + qyy);
- return pOut;
-}
-#endif // USE_D3DX9MATH
-
-Camera::Camera(bool zup, bool lhs)
- :
- _zup(zup),
- _lhs(lhs),
- _isPerspective(true)
-{
-
- D3DXQuaternionIdentity((D3DXQUATERNION*)&_orientation);
-
- gfsdk_makeIdentity(_viewMatrix);
- gfsdk_makeIdentity(_projectionMatrix);
-
- _fov = (75.0f / 360.0f) * 3.141592653589793;
-}
-
-Camera::~Camera()
-{
-}
-
-void
-Camera::Init(bool zup, bool lhs)
-{
- _lhs = lhs;
- _zup = zup;
-}
-
-atcore_float3 Camera::GetUp() const
-{
- atcore_float3 up;
-
- if (IsYUp())
- up = gfsdk_makeFloat3(0.0f, 1.0f, 0.0f);
- else
- up = gfsdk_makeFloat3(0.0f, 0.0f, 1.0f);
-
- return up;
-}
-
-void Camera::SetDefaults()
-{
- atcore_float3 eye;
- atcore_float3 at = gfsdk_makeFloat3(0.0f, 0.0f, 0.0f);
-
- if (IsYUp())
- {
- if (_lhs)
- eye = gfsdk_makeFloat3(0.0f, 60.0f, -120.0f);
- else
- eye = gfsdk_makeFloat3(0.0f, 60.0f, 120.0f);
- }
- else // zup
- {
- if (_lhs)
- eye = gfsdk_makeFloat3(0.0f, 120.0f, 60.0f);
- else
- eye = gfsdk_makeFloat3(0.0f, -120.0f, 60.0f);
- }
-
- atcore_float3 up = GetUp();
-
- LookAt(eye, at, up);
-}
-
-// Build a look at matrix, and calculate the major axis and rotation component.
-void Camera::LookAt(const atcore_float3& eye, const atcore_float3& at, const atcore_float3& up)
-{
- if (_lhs)
- D3DXMatrixLookAtLH((D3DXMATRIX*)&_viewMatrix, (D3DXVECTOR3*)&eye, (D3DXVECTOR3*)&at, (D3DXVECTOR3*)&up);
- else
- D3DXMatrixLookAtRH((D3DXMATRIX*)&_viewMatrix, (D3DXVECTOR3*)&eye, (D3DXVECTOR3*)&at, (D3DXVECTOR3*)&up);
-
- _eye = eye;
- _at = at;
-
- atcore_float3 dir = at - eye;
- _lookDistance = gfsdk_length(dir);
-
- D3DXQuaternionRotationMatrix((D3DXQUATERNION*)&_orientation, (D3DXMATRIX*)&_viewMatrix);
- BuildViewMatrix();
-}
-
-void Camera::SetEye(const atcore_float3& eye)
-{
- _eye = eye;
- _lookDistance = gfsdk_distance(_eye, _at);
-}
-
-void Camera::SetAt(const atcore_float3& at)
-{
- _at = at;
- _lookDistance = gfsdk_distance(_eye, _at);
-}
-
-void Camera::SetViewMatrix(const atcore_float3& xAxis, const atcore_float3& yAxis, const atcore_float3& zAxis)
-{
- _viewMatrix._11 = xAxis.x; _viewMatrix._21 = xAxis.y; _viewMatrix._31 = xAxis.z;
- _viewMatrix._12 = yAxis.x; _viewMatrix._22 = yAxis.y; _viewMatrix._32 = yAxis.z;
- _viewMatrix._13 = zAxis.x; _viewMatrix._23 = zAxis.y; _viewMatrix._33 = zAxis.z;
-
- D3DXQuaternionRotationMatrix((D3DXQUATERNION*)&_orientation, (D3DXMATRIX*)&_viewMatrix);
- D3DXQuaternionNormalize((D3DXQUATERNION*)&_orientation, (D3DXQUATERNION*)&_orientation);
-
- atcore_float3 _viewDirection = _lhs ? -1.0f * zAxis : zAxis;
-
- _eye = _at + _viewDirection * _lookDistance;
-
- _viewMatrix._41 = - gfsdk_dot(xAxis,_eye);
- _viewMatrix._42 = - gfsdk_dot(yAxis,_eye);
- _viewMatrix._43 = - gfsdk_dot(zAxis,_eye);
-}
-
-// Build a perspective matrix
-void Camera::Perspective()
-{
- _isPerspective = true;
-
- if (_lhs)
- D3DXMatrixPerspectiveFovLH( (D3DXMATRIX*)&_projectionMatrix, _fov, _aspectRatio, _znear, _zfar);
- else
- D3DXMatrixPerspectiveFovRH( (D3DXMATRIX*)&_projectionMatrix, _fov, _aspectRatio, _znear, _zfar);
-
-}
-
-void Camera::Ortho(float width, float height, float znear, float zfar)
-{
- if (_lhs)
- D3DXMatrixOrthoLH( (D3DXMATRIX*)&_projectionMatrix, width, height, znear, zfar);
- else
- D3DXMatrixOrthoRH( (D3DXMATRIX*)&_projectionMatrix, width, height, znear, zfar);
-
- _znear = znear;
- _zfar = zfar;
- _width = width;
- _height = height;
- _isPerspective = false;
-}
-
-// Dolly towards the viewpoint
-void Camera::Dolly(float zoom)
-{
- if (_isPerspective)
- {
- atcore_float3 offset = _eye - _at;
-
- _lookDistance = gfsdk_length(offset);
-
- gfsdk_normalize(offset);
-
- float zoomFactor = zoom * _lookDistance;
-
- _lookDistance += zoomFactor;
-
- _eye = _lookDistance * offset + _at;
-
- BuildViewMatrix();
- }
- else
- {
- _width += zoom * 4.0f;
- _height += zoom * 4.0f;
-
- D3DXMatrixOrthoRH( (D3DXMATRIX*)&_projectionMatrix, _width, _height, _znear, _zfar);
-
- }
-}
-
-// Orbit around the viewpoint
-void Camera::Orbit(const atcore_float2& delta)
-{
-
- float heading = D3DXToRadian(delta.x);
- float pitch = D3DXToRadian(delta.y);
-
- if (_lhs)
- {
- heading *= -1.0f;
- pitch *= -1.0f;
- }
-
- D3DXQUATERNION rot;
-
- D3DXVECTOR3 yAxis = MAKEVECTOR3(0.0f, 0.0f, 1.0f);
- if (IsYUp()) // change up axis if Y is the up axis (for maya)
- {
- yAxis = MAKEVECTOR3( 0.0f, 1.0f, 0.0f );
- }
-
- D3DXVECTOR3 xAxis = MAKEVECTOR3(1.0f, 0.0f, 0.0f);
- if (heading != 0.0f)
- {
- D3DXQuaternionRotationAxis(&rot, &yAxis, heading);
- D3DXQuaternionMultiply((D3DXQUATERNION*)&_orientation, &rot, (D3DXQUATERNION*)&_orientation);
- }
-
- if (pitch != 0.0f)
- {
- D3DXQuaternionRotationAxis(&rot, &xAxis, pitch);
- D3DXQuaternionMultiply((D3DXQUATERNION*)&_orientation, (D3DXQUATERNION*)&_orientation, &rot);
- }
- BuildViewMatrix();
-
-}
-
-// Orbit around the model's center for HAIR-188
-void Camera::OrbitLight(const atcore_float2& delta)
-{
-
- float heading = D3DXToRadian(delta.x);
- float pitch = D3DXToRadian(delta.y);
-
- if (_lhs)
- {
- heading *= -1.0f;
- pitch *= -1.0f;
- }
-
- D3DXQUATERNION rot;
-
- D3DXVECTOR3 yAxis = MAKEVECTOR3(0.0f, 0.0f, 1.0f);
- if (IsYUp()) // change up axis if Y is the up axis (for maya)
- {
- yAxis = MAKEVECTOR3( 0.0f, 1.0f, 0.0f );
- }
-
- D3DXVECTOR3 xAxis = MAKEVECTOR3(1.0f, 0.0f, 0.0f);
- if (heading != 0.0f)
- {
- D3DXQuaternionRotationAxis(&rot, &yAxis, heading);
- D3DXQuaternionMultiply((D3DXQUATERNION*)&_orientation, &rot, (D3DXQUATERNION*)&_orientation);
- }
-
- if (pitch != 0.0f)
- {
- D3DXQuaternionRotationAxis(&rot, &xAxis, pitch);
- D3DXQuaternionMultiply((D3DXQUATERNION*)&_orientation, &rot, (D3DXQUATERNION*)&_orientation);
- }
- BuildViewMatrix();
-
-}
-
-void Camera::Pan(const atcore_float2& delta)
-{
- //Scale the movement by the current view
- //float depth = depthRange.y - depthRange.x;
-
- atcore_float3 viewDir = GetEye() - GetAt();
- float depth = gfsdk_length(viewDir);
- if (depth <= 0.0f)
- depth = 1.0f;
-
- atcore_float3 xAxis = GetXAxis();
- atcore_float3 yAxis = GetYAxis();
-
- if (_isPerspective)
- {
- float fov2 = ((float)-tan(0.5 * _fov) * (depth));
- atcore_float2 newDelta = fov2 * delta;
-
- _at = _at + (-1.0f * yAxis * newDelta.y) + (xAxis * newDelta.x);
- }
- else
- {
- atcore_float2 newDelta = depth * delta;
- _at = _at + (yAxis * newDelta.y) + (-1.0f * xAxis * newDelta.x);
- }
-
-
- BuildViewMatrix();
-}
-
-atcore_float3 Camera::GetXAxis() const
-{
- return gfsdk_makeFloat3(_viewMatrix._11, _viewMatrix._21, _viewMatrix._31);
-
-}
-
-atcore_float3 Camera::GetYAxis() const
-{
- return gfsdk_makeFloat3(_viewMatrix._12, _viewMatrix._22, _viewMatrix._32);
-}
-
-atcore_float3 Camera::GetZAxis() const
-{
- return gfsdk_makeFloat3(_viewMatrix._13, _viewMatrix._23, _viewMatrix._33);
-}
-
-atcore_float3 Camera::GetViewDirection() const
-{
- atcore_float3 zAxis = GetZAxis();
- return _lhs ? -1.0f * zAxis : zAxis;
-}
-
-// Reconstruct the view matrix from the current orientation and eye/look direction.
-void Camera::BuildViewMatrix()
-{
- // Reconstruct the view matrix.
- D3DXQuaternionNormalize((D3DXQUATERNION*)&_orientation, (D3DXQUATERNION*)&_orientation);
- D3DXMatrixRotationQuaternion((D3DXMATRIX*)&_viewMatrix, (D3DXQUATERNION*)&_orientation);
-
- atcore_float3 xAxis = GetXAxis();
- atcore_float3 yAxis = GetYAxis();
- atcore_float3 zAxis = GetZAxis();
-
- atcore_float3 viewDirection = GetViewDirection();
-
- _eye = _at + viewDirection * _lookDistance;
-
- _viewMatrix._41 = - gfsdk_dot(xAxis,_eye);
- _viewMatrix._42 = - gfsdk_dot(yAxis,_eye);
- _viewMatrix._43 = - gfsdk_dot(zAxis,_eye);
-}
-
-// Set Z Up or Y Up.
-void Camera::ResetUpDir(bool zup)
-{
- if (zup == _zup)
- return;
-
- _zup = zup;
-
- atcore_float3 eye = GetEye();
- atcore_float3 at = GetAt();
- atcore_float3 up;
-
- if (IsYUp())
- {
- // Swap eye z and y
- float temp = eye.y;
- eye.y = eye.z;
- eye.z = -temp;
- // Swap at z and y
- temp = at.y;
- at.y = at.z;
- at.z = -temp;
-
- // Set up dir
- up = gfsdk_makeFloat3(0.0f, 1.0f, 0.0f);
- }
- else
- {
- // Swap eye z and y
- float temp = eye.y;
- eye.y = -eye.z;
- eye.z = temp;
- // Swap at z and y
- temp = at.y;
- at.y = -at.z;
- at.z = temp;
-
- // Set up dir
- up = gfsdk_makeFloat3(0.0f, 0.0f, 1.0f);
- }
- LookAt(eye, at, up);
- BuildViewMatrix();
-}
-
-// Set Z Up or Y Up.
-void Camera::ResetLhs(bool lhs)
-{
- if (lhs == _lhs)
- return;
-
- _lhs = lhs;
-
- atcore_float3 eye = GetEye();
- atcore_float3 at = GetAt();
-
- if (_zup)
- {
- eye.y *= -1;
- at.y *= -1;
- }
- else
- {
- eye.z *= -1;
- at.z *= -1;
- }
-
- if (_isPerspective)
- Perspective();
- else
- Ortho(_width, _height, _znear, _zfar);
-
- atcore_float3 up = GetUp();
-
- LookAt(eye, at, up);
- BuildViewMatrix();
-}
-
-void Camera::FitBounds(const atcore_float3& center, const atcore_float3& extents)
-{
- SetAt(center);
- // set center first to get eye
- BuildViewMatrix();
- if (_isPerspective)
- {
- float size = extents.x;
- size = max(size, extents.y);
- size = max(size, extents.z);
- atcore_float3 eye = GetEye();
-
- atcore_float3 dir = eye - center;
- gfsdk_normalize(dir);
- float distance = size / tanf(_fov/2.f);
-
- eye = center + distance * dir;
-
- SetEye(eye);
- BuildViewMatrix();
- }
-}
-
-#ifndef NV_ARTISTTOOLS
-#include "ProjectParams.h"
-#endif // NV_ARTISTTOOLS
-
-bool Camera::LoadParameters(void* ptr)
-{
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParametersNS::Camera_Type* param =
- static_cast<nvidia::parameterized::HairProjectParametersNS::Camera_Type*>(ptr);
-
- _zup = param->flags == 1;
- _fov = param->fov;
- _aspectRatio = param->aspectRatio;
- _znear = param->znear;
- _zfar = param->zfar;
- _isPerspective = param->isPerspective;
- memcpy(&_eye, &param->eye, sizeof(_eye));
- memcpy(&_at, &param->at, sizeof(_at));
- _lookDistance = param->lookDistance;
- memcpy(&_orientation, &param->orientation, sizeof(_orientation));
- memcpy(&_viewMatrix, &param->viewMatrix, sizeof(_viewMatrix));
- memcpy(&_projectionMatrix, &param->projectionMatrix, sizeof(_projectionMatrix));
-#else
- CoreLib::Inst()->Camera_LoadParameters(ptr, this);
-#endif // NV_ARTISTTOOLS
- return true;
-}
-
-bool Camera::SaveParameters(void *ptr)
-{
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParametersNS::Camera_Type* outParam =
- static_cast<nvidia::parameterized::HairProjectParametersNS::Camera_Type*>(ptr);
-
- outParam->flags = (_zup ? 1 : 2);
- outParam->fov = _fov;
- outParam->aspectRatio = _aspectRatio;
- outParam->znear = _znear;
- outParam->zfar = _zfar;
- outParam->width = 0;
- outParam->height = 0;
- outParam->isPerspective = _isPerspective;
- memcpy(&outParam->eye, &_eye, sizeof(outParam->eye));
- memcpy(&outParam->at, &_at, sizeof(outParam->at));
- outParam->lookDistance = _lookDistance;
- memcpy(&outParam->orientation, &_orientation, sizeof(outParam->orientation));
- memcpy(&outParam->viewMatrix, &_viewMatrix, sizeof(outParam->viewMatrix));
- memcpy(&outParam->projectionMatrix, &_projectionMatrix, sizeof(outParam->projectionMatrix));
-#else
- CoreLib::Inst()->Camera_SaveParameters(ptr, this);
-#endif // NV_ARTISTTOOLS
- return true;
-}
-
-void Camera::getScreenCoord(float x, float y, float z, int &sx, int &sy)
-{
- atcore_float4x4 view = (atcore_float4x4&)GetViewMatrix();
- atcore_float4x4 projection = (atcore_float4x4&)GetProjectionMatrix();
-
- atcore_float4x4 viewProjection = view * projection;
-
- atcore_float4 vp = gfsdk_transform(viewProjection, gfsdk_makeFloat4(x, y, z, 1.0f));
-
- float nx = vp.x / vp.w;
- float ny = vp.y / vp.w;
-
- float w = GetWidth();
- float h = GetHeight();
-
- sx = w * (0.5f + 0.5f * nx);
- sy = h * (0.5f - 0.5f * ny);
-
-}
-
-void Camera::getWorldCoord(int sx, int sy, float &x, float &y, float &z)
-{
- atcore_float4x4 view = (atcore_float4x4&)GetViewMatrix();
- atcore_float4x4 projection = (atcore_float4x4&)GetProjectionMatrix();
-
- float w = GetWidth();
- float h = GetHeight();
-
- atcore_float4x4 viewProjection = view * projection;
- atcore_float4x4 viewProjectionIV = gfsdk_inverse(viewProjection);
-
- float nx = 2.0f * (sx / w) - 1.0f;
- float ny = 1.0f - 2.0f * (sy / h);
- float nz = 0.0f;
-
- atcore_float4 screenPoint = { nx, ny, nz, 1.0f };
- atcore_float4 pos = gfsdk_transform(viewProjectionIV, screenPoint);
-
- pos.w = 1.0f / pos.w;
-
- x = pos.x * pos.w;
- y = pos.y * pos.w;
- z = pos.z * pos.w;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Camera.h b/tools/ArtistTools/source/CoreLib/Scene/Camera.h
deleted file mode 100644
index c04252a..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Camera.h
+++ /dev/null
@@ -1,129 +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"
-
-class CORELIB_EXPORT Camera
-{
-public:
-
- // YUp default
- Camera(bool zUp = false, bool lhs = false);
- ~Camera();
-
- void Init(bool zup, bool lhs);
- void LookAt(const atcore_float3& eye, const atcore_float3& target, const atcore_float3& up);
- void Perspective();
- void Ortho(float width, float height, float znear, float zfar);
- void Dolly(float zoom);
- void Orbit(const atcore_float2& delta);
- void OrbitLight(const atcore_float2& delta); // special for HAIR-188
- void Pan(const atcore_float2& delta);
-
- void getScreenCoord(float x, float y, float z, int &sx, int &sy);
- void getWorldCoord(int sx, int sy, float &x, float &y, float &z);
-
- float GetZNear() { return _znear; }
- float GetZFar() { return _zfar; }
-
- const atcore_float3& GetAt() const { return _at; }
- const atcore_float3& GetEye() const { return _eye; }
-
- float GetWidth() const { return _width; }
- float GetHeight() const { return _height; }
-
- void SetFOV(float fov) { _fov = fov; }
- void SetAspetRatio(float aspect) { _aspectRatio = aspect; }
- void SetZNear(float znear) { _znear = znear; }
- void SetZFar(float zfar) { _zfar = zfar; }
-
- void SetSize(int w, int h) { _width = w; _height = h; }
-
- atcore_float3 GetXAxis() const;
- atcore_float3 GetYAxis() const;
- atcore_float3 GetZAxis() const;
-
- atcore_float3 GetViewDirection() const;
-
- void SetViewMatrix(const atcore_float3& xAxis, const atcore_float3& yAxis, const atcore_float3& zAxis);
-
- float GetLookDistance() const { return _lookDistance; }
- atcore_float3 GetUp() const;
-
- void SetEye(const atcore_float3& eye);
- void SetAt(const atcore_float3& at);
-
- atcore_float2 GetZRange() const { return gfsdk_makeFloat2(_znear, _zfar); }
-
- const atcore_float4x4& GetProjectionMatrix() const { return _projectionMatrix; }
- const atcore_float4x4& GetViewMatrix() const { return _viewMatrix; }
-
- // Change Up Dir and reset internal eye and at.
- void ResetUpDir(bool zup);
- void ResetLhs(bool lhs);
-
- bool IsYUp() const { return _zup == false; }
- bool UseLHS() const { return _lhs; }
-
- bool LoadParameters(void* param);
- bool SaveParameters(void* outParam);
-
- void BuildViewMatrix();
-
- void SetDefaults();
-
- void FitBounds(const atcore_float3& center, const atcore_float3& extents);
-
-
-//private:
- // coordinate axis
- bool _zup;
- bool _lhs;
-
- // Perspective
- bool _isPerspective;
- float _fov;
- float _aspectRatio;
-
- float _znear;
- float _zfar;
- float _width;
- float _height;
-
- float _lookDistance;
-
- atcore_float3 _eye;
- atcore_float3 _at;
-
- atcore_float4 _orientation;
- atcore_float4x4 _viewMatrix;
- atcore_float4x4 _projectionMatrix;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Gamepad.cpp b/tools/ArtistTools/source/CoreLib/Scene/Gamepad.cpp
deleted file mode 100644
index 246ce04..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Gamepad.cpp
+++ /dev/null
@@ -1,1307 +0,0 @@
-#include <windows.h>
-#include <SDL.h>
-#include <QtWidgets/QApplication>
-#include <QtCore/QDir>
-#include <QtCore/QDirIterator>
-#include <QtCore/QString>
-#include <QtCore/QList>
-
-#include "Gamepad.h"
-
-#include "Camera.h"
-#include "SimpleScene.h"
-#include "AppMainWindow.h"
-#include "DisplayLightPanel.h"
-#include "DisplayScenePanel.h"
-
-#include "DXUT.h"
-//#include "D3D11RendererWindow.h"
-#include "sdkmisc.h"
-#include "GlobalSettings.h"
-#include "Light.h"
-#include "DisplayPreferencesPanel.h"
-#include "ViewerOutput.h"
-#include "D3DWidget.h"
-#include <stdarg.h>
-#include <vector>
-#include <string>
-
-#ifndef NV_ARTISTTOOLS
-#include "BlastToolbar.h"
-#include "DisplayVisualizersPanel.h"
-#include "FurCharacter.h"
-#include "HairParams.h"
-#endif // NV_ARTISTTOOLS
-
-const bool bSaveLogToDisk = true;
-bool bDefaultDemoMode = false;
-
-static QList<QString> demoProjects;
-
-static int curentPrjIdx = -1;
-static int iQuitState = 0;
-
-static std::string strAppDir;
-
-SimpleScene* theScene = NV_NULL;
-
-bool bUseOldLightCam = false, bUseOldSceneCam = false;
-
-enum ButtonState
-{
- BUTTON_NOTHING,
- BUTTON_DOWN,
- BUTTON_HOLDING,
- BUTTON_UP,
-};
-
-class GamepadHandler
-{
-public:
- GamepadHandler()
- :joystick(0)
- {
- }
-
- ~GamepadHandler()
- {
- DisConnect();
- }
-
- void DisConnect()
- {
- if(joystick)
- {
- SDL_JoystickClose(joystick);
- joystick = NV_NULL;
- }
- }
-
- void Process();
-
- inline ButtonState ButtonState(int button)
- {
- if (button >= 0 && button < iButtonState.size())
- {
- if (iButtonState[button] && iButtonStateOld[button] == 0)
- return BUTTON_DOWN;
- else if (iButtonState[button] && iButtonStateOld[button])
- return BUTTON_HOLDING;
- else if (iButtonState[button] == 0 && iButtonStateOld[button])
- return BUTTON_UP;
- }
- return BUTTON_NOTHING;
- }
-
- inline int AxisChange(int idx)
- {
- if (idx >= 0 && idx < iAxisState.size())
- {
- return (iAxisState[idx] - iAxisStateAtBegin[idx]);
- }
- return 0;
- }
-
- const char* pjsName;
- int numAxis;
- int numTrackballs;
- int numPov;
- int numButtons;
-
- std::vector<int> bKeyHolding;
- std::vector<int> iAxisStateAtBegin;
- std::vector<int> iAxisStateOld;
- std::vector<int> iAxisState;
- std::vector<int> iButtonStateOld;
- std::vector<int> iButtonState;
-
- SDL_Joystick* joystick;
- SDL_JoystickGUID jsGuid;
-};
-
-std::vector<GamepadHandler> gHandlers;
-
-//
-// Gamepad thresholds taken from XINPUT API
-//
-//#define GAMEPAD_LEFT_THUMB_DEADZONE 7849
-//#define GAMEPAD_RIGHT_THUMB_DEADZONE 8689
-//#define GAMEPAD_TRIGGER_THRESHOLD 30
-
-#define GAMEPAD_BUMPER_DEADZONE 9000
-inline int ClampAxis(int value)
-{
- if((value>GAMEPAD_BUMPER_DEADZONE) || (value<-GAMEPAD_BUMPER_DEADZONE))
- return value;
- return 0;
-}
-
-std::vector<std::string> keylog;
-
-void LogAdd(const char *fmt,...)
-{
- if(bSaveLogToDisk)
- {
- static char logBuf[2048];
- va_list arg;
- va_start( arg, fmt );
- vsprintf(logBuf, fmt, arg);
- va_end(arg);
- keylog.push_back(logBuf);
- }
-}
-
-void SaveLog()
-{
- if(keylog.size())
- {
- std::string fn = strAppDir + "\\buttonLog.txt";
- FILE* fp = fopen(fn.c_str(), "w+");
- if(fp)
- {
- for(int i = 0; i < keylog.size(); ++i)
- {
- std::string& info = keylog[i];
- fputs(info.c_str(), fp);
- fputs("\n", fp);
- }
- fclose(fp);
- }
- }
-}
-
-//XBOX 360 AXIS
-static int AXIS_LS_X = 0;
-static int AXIS_LS_Y = 1;
-static int AXIS_RS_X = 2;
-static int AXIS_RS_Y = 3;
-static int AXIS_LT = 4;
-static int AXIS_RT = 5;
-
-// XBox 360 Key codes
-static int GAMEPAD_KEY_DPAD_UP = 0;
-static int GAMEPAD_KEY_DPAD_DOWN = 1;
-static int GAMEPAD_KEY_DPAD_LEFT = 2;
-static int GAMEPAD_KEY_DPAD_RIGHT = 3;
-static int GAMEPAD_KEY_START = 4;
-static int GAMEPAD_KEY_BACK = 5;
-static int GAMEPAD_KEY_LS = 6;
-static int GAMEPAD_KEY_RS = 7;
-static int GAMEPAD_KEY_LEFT_BUMP = 8;
-static int GAMEPAD_KEY_RIGHT_BUMP = 9;
-static int GAMEPAD_KEY_A = 10;
-static int GAMEPAD_KEY_B = 11;
-static int GAMEPAD_KEY_X = 12;
-static int GAMEPAD_KEY_Y = 13;
-
-double GetSeconds()
-{
- static LARGE_INTEGER lastTime;
- static LARGE_INTEGER freq;
- static bool first = true;
-
- if (first)
- {
- QueryPerformanceCounter(&lastTime);
- QueryPerformanceFrequency(&freq);
-
- first = false;
- }
-
- static double time = 0.0;
-
- LARGE_INTEGER t;
- QueryPerformanceCounter(&t);
-
- __int64 delta = t.QuadPart-lastTime.QuadPart;
- double deltaSeconds = double(delta) / double(freq.QuadPart);
-
- time += deltaSeconds;
-
- lastTime = t;
-
- return time;
-
-}
-
-Gamepad::Gamepad()
-{
-}
-
-Gamepad::~Gamepad()
-{
-}
-
-Gamepad& Gamepad::Instance()
-{
- static Gamepad gmpad;
- return gmpad;
-}
-
-void ChangeMode()
-{
- AppMainWindow::Inst().shortcut_expert();
-}
-
-void ToggleSimulation()
-{
-#ifndef NV_ARTISTTOOLS
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
- toolbar->on_btnEnableSimulation_clicked();
- // read simulation state; have to call it twice to avoid change it.
- GlobalSettings::Inst().toggleSimulation();
-
- bool anim = GlobalSettings::Inst().toggleSimulation();
- DisplayFurVisualizersPanel* furPanel = AppMainWindow::Inst().GetFurVisualizersPanel();
- if(furPanel)
- {
- furPanel->on_btnShowHair_stateChanged(anim);
- furPanel->updateValues();
- }
-#else
- CoreLib::Inst()->Gamepad_ToggleSimulation();
-#endif // NV_ARTISTTOOLS
-}
-
-void PlaySample()
-{
-#ifndef NV_ARTISTTOOLS
- GlobalSettings::Inst().toggleSimulation();
- bool simulating = GlobalSettings::Inst().toggleSimulation(); // call it twice to get right state
-
- GlobalSettings::Inst().toggleAnimation();
- bool animating = GlobalSettings::Inst().toggleAnimation(); // call it twice to get right state
-
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
- if(!simulating)
- toolbar->on_btnEnableSimulation_clicked();
-
- if(!animating)
- toolbar->on_btnPlayAnimation_clicked();
-
- // reset animation
- //toolbar->on_btnResetAnimation_clicked();
-#else
- CoreLib::Inst()->Gamepad_PlaySample();
-#endif // NV_ARTISTTOOLS
-}
-
-void ButtonAPressed()
-{
- // Play/Pause the animation
- Gamepad::PlayPauseAnimation();
-}
-
-void ButtonBPressed()
-{
- // Stops and re-starts animation
- Gamepad::ResetAnimation();
-}
-
-void Gamepad::ShowProjectName()
-{
- bool bExpertMode = AppMainWindow::IsExpertMode();
- // need change title
- char msg[1024];
- // show title
- if(curentPrjIdx != -1)
- {
- QString fn = demoProjects.at(curentPrjIdx);
- sprintf(msg, "Blast Viewer - %s %s", fn.toUtf8().data(), (bExpertMode ? "Demo Mode" : ""));
- AppMainWindow::Inst().setWindowTitle(msg);
- }
- else
- {
- if (bExpertMode)
- {
- sprintf(msg, "Blast Viewer - Expert Mode");
- }
- else
- {
- sprintf(msg, "Blast Viewer");
- }
- AppMainWindow::Inst().setWindowTitle(msg);
- }
-}
-
-void LoadSamples(bool bNext)
-{
- bUseOldLightCam = bUseOldSceneCam = false;
- int prjCount = demoProjects.size();
- if(prjCount==0)
- {
- DisplayPreferencesPanel* pPanel = AppMainWindow::Inst().GetDisplayPreferencesPanel();
- if (pPanel)
- {
- pPanel->assignPlayPlaylistToGamepad();
- }
- if (0)
- {
- static int iLimitSampleCount = 20;
- QString appDir = strAppDir.c_str();
- QString projectPath;
- // load from a specific file first
- QString fn = appDir + "\\samples.txt";
- FILE* fp = fopen(fn.toUtf8().data(), "r");
- if (fp)
- {
- char Line[1024], FileName[2014];
- while (fgets(Line, sizeof(Line), fp) != NV_NULL)
- {
- QString t = QString(Line).trimmed();
- if (t.length() == 0)
- continue;
- QString fn = t.toLower();
- std::string strFN = fn.toUtf8().data();
- const char* ptest = strstr(strFN.c_str(), ".blastProj");
- if (ptest)
- {
- const char* pchar = strchr(strFN.c_str(), ':');
- if (pchar)
- {
- demoProjects.append(fn);
- }
- else
- {
- const char* pFirst = strFN.c_str();
- if (pFirst[0] == '/' || pFirst[0] == '\\')
- {
- fn = appDir + fn;
- demoProjects.append(fn);
- }
- else
- {
- fn = appDir + QString("/") + fn;
- demoProjects.append(fn);
- }
- }
- }
- }
- fclose(fp);
- }
- }
- if(0)
- {
- QString appDir = strAppDir.c_str();
- QString projectPath;
- // search some relative folders
- QDir dirTmp(appDir);
- if(dirTmp.cd("./media"))
- projectPath = dirTmp.absolutePath();
- else if(dirTmp.cd("../media"))
- projectPath = dirTmp.absolutePath();
- else if(dirTmp.cd("../../media"))
- projectPath = dirTmp.absolutePath();
- else if(dirTmp.cd("../../media"))
- projectPath = dirTmp.absolutePath();
- if(!projectPath.isEmpty())
- {
- QStringList filters;
- filters<<QString("*.blastProj");
- QDirIterator dir_iterator(projectPath, filters, QDir::Files | QDir::NoSymLinks,QDirIterator::Subdirectories);
- while(dir_iterator.hasNext())
- {
- dir_iterator.next();
- QFileInfo file_info = dir_iterator.fileInfo();
- QString absolute_file_path = file_info.absoluteFilePath();
- demoProjects.append(absolute_file_path);
- //if(demoProjects.size()>iLimitSampleCount)
- // break;
- }
- }
- else
- {
- const char* msg = "Fail to find any Blast projects!";
- viewer_msg(msg);
- }
- }
- prjCount = demoProjects.size();
- }
- if(prjCount)
- {
- if (bNext)
- {
- ++curentPrjIdx;
- if (curentPrjIdx >= prjCount)
- curentPrjIdx = 0;
- }
- else
- {
- --curentPrjIdx;
- if (curentPrjIdx < 0)
- curentPrjIdx = prjCount - 1;
- }
- // load sample
- QString fn = demoProjects[curentPrjIdx];
- AppMainWindow::Inst().openProject(fn);
- }
- Gamepad::ShowProjectName();
-}
-
-void StartButtonPressed()
-{
- Gamepad& gp = Gamepad::Instance();
- gp.ShowUsage();
-}
-
-void BackButtonPressed()
-{
- Gamepad::DemoEscape();
- return;
-
- ++iQuitState;
- switch(iQuitState)
- {
- case 0:
- // do nothing
- break;
- case 1:
- {
- AppMainWindow::Inst().startProgress();
- AppMainWindow::Inst().setProgressMaximum(2);
- AppMainWindow::Inst().setProgress("Press Back again to quit. Press other buttons to cancel it.", 1);
- }
- break;
- case 2:
- {
- AppMainWindow::Inst().setProgress("Quitting...", 2);
- //AppMainWindow::Inst().close();
- Gamepad::DemoEscape();
- }
- break;
- default:
- iQuitState = 0;
- break;
- }
-}
-
-void Gamepad::HandleJoySticks()
-{
- int numJoysticks = SDL_NumJoysticks();
- int numUsedJoysticks = gHandlers.size();
- if (numUsedJoysticks != numJoysticks)
- {
- gHandlers.clear();
- }
- if(numUsedJoysticks < 1)
- {
- //static int iSkipCount = 0;
- //if (++iSkipCount >= 60)
- //{
- // iSkipCount = 0;
- static int iDoOnce = 1;
- if (iDoOnce)
- {
- iDoOnce = 0;
-
- Initialize();
- numJoysticks = SDL_NumJoysticks();
- for (int i = 0; i < numJoysticks; ++i)
- {
- SDL_Joystick* joystick = SDL_JoystickOpen(i);
- if (joystick)
- {
- numUsedJoysticks = gHandlers.size();
- gHandlers.resize(numUsedJoysticks + 1);
- GamepadHandler& handler = gHandlers[numUsedJoysticks];
- handler.joystick = joystick;
- handler.pjsName = SDL_JoystickName(joystick);
- handler.numAxis = SDL_JoystickNumAxes(joystick);
- handler.numTrackballs = SDL_JoystickNumBalls(joystick);
- handler.numPov = SDL_JoystickNumHats(joystick);
- handler.numButtons = SDL_JoystickNumButtons(joystick);
- handler.jsGuid = SDL_JoystickGetGUID(joystick);
-
- LogAdd("Device Name: %s", handler.pjsName);
- LogAdd("Num of Axis: %d", handler.numAxis);
- LogAdd("Num of Trackballs: %d", handler.numTrackballs);
- LogAdd("Num of POV: %d", handler.numPov);
- LogAdd("Num of Buttons: %d", handler.numButtons);
- LogAdd("Initial Axis States:");
-
- handler.iAxisState.resize(handler.numAxis);
- handler.iAxisStateAtBegin.resize(handler.numAxis);
- handler.iAxisStateOld.resize(handler.numAxis);
-
- handler.iButtonState.resize(handler.numButtons);
- handler.iButtonStateOld.resize(handler.numButtons);
-
- if (handler.numAxis == 6)
- {
- // XBOX 360 has 6 axis
- AXIS_LS_X = 0;
- AXIS_LS_Y = 1;
- AXIS_RS_X = 2;
- AXIS_RS_Y = 3;
- AXIS_LT = 4;
- AXIS_RT = 5;
-
- GAMEPAD_KEY_DPAD_UP = 0;
- GAMEPAD_KEY_DPAD_DOWN = 1;
- GAMEPAD_KEY_DPAD_LEFT = 2;
- GAMEPAD_KEY_DPAD_RIGHT = 3;
- GAMEPAD_KEY_START = 4;
- GAMEPAD_KEY_BACK = 5;
- GAMEPAD_KEY_LS = 6;
- GAMEPAD_KEY_RS = 7;
- GAMEPAD_KEY_LEFT_BUMP = 8;
- GAMEPAD_KEY_RIGHT_BUMP = 9;
- GAMEPAD_KEY_A = 10;
- GAMEPAD_KEY_B = 11;
- GAMEPAD_KEY_X = 12;
- GAMEPAD_KEY_Y = 13;
- }
- else if (handler.numAxis == 5)
- {
- // Betop has 5 axis when xbox mode
- AXIS_LS_X = 0;
- AXIS_LS_Y = 1;
- AXIS_RS_X = 3;
- AXIS_RS_Y = 4;
- AXIS_LT = 2;
- AXIS_RT = 2;
-
- GAMEPAD_KEY_DPAD_UP = 10; // POV
- GAMEPAD_KEY_DPAD_DOWN = 11; // POV
- GAMEPAD_KEY_DPAD_LEFT = 12; // POV
- GAMEPAD_KEY_DPAD_RIGHT = 13; // POV
- GAMEPAD_KEY_START = 7;
- GAMEPAD_KEY_BACK = 6;
- GAMEPAD_KEY_LS = 8;
- GAMEPAD_KEY_RS = 9;
- GAMEPAD_KEY_LEFT_BUMP = 4;
- GAMEPAD_KEY_RIGHT_BUMP = 5;
- GAMEPAD_KEY_A = 0;
- GAMEPAD_KEY_B = 1;
- GAMEPAD_KEY_X = 2;
- GAMEPAD_KEY_Y = 3;
-
- if (handler.numPov == 1)
- {
- // BETOP xbox mode
- handler.iButtonState.resize(handler.numButtons + 4); // POV fake buttons
- handler.iButtonStateOld.resize(handler.numButtons + 4);
- for (int i = GAMEPAD_KEY_DPAD_UP; i <= GAMEPAD_KEY_DPAD_RIGHT; ++i)
- {
- handler.iButtonStateOld[i] = handler.iButtonState[i] = 0;
- }
- }
- }
- for (int i = 0; i < handler.numAxis; ++i)
- {
- int value = ClampAxis(SDL_JoystickGetAxis(handler.joystick, i));
- handler.iAxisStateAtBegin[i] = handler.iAxisStateOld[i] = handler.iAxisState[i] = value;
- LogAdd("Axis %d State %d", i, value);
- }
- LogAdd("Initial Button States:");
- for (int i = 0; i < handler.numButtons; ++i)
- {
- int state = SDL_JoystickGetButton(handler.joystick, i);
- handler.iButtonStateOld[i] = handler.iButtonState[i] = state;
- LogAdd("Button %d State %d", i, state);
- }
- if (handler.numPov == 1)
- {
- LogAdd("Initial POV Button States:");
- Uint8 pov = SDL_JoystickGetHat(joystick, 0);
- char msg[512];
- sprintf(msg, "POV State: %d", pov);
- viewer_msg(msg);
- LogAdd(msg);
- // BETOP xbox mode
- handler.iButtonState.resize(handler.numButtons + 4); // POV fake buttons
- handler.iButtonStateOld.resize(handler.numButtons + 4);
- for (int i = GAMEPAD_KEY_DPAD_UP; i <= GAMEPAD_KEY_DPAD_RIGHT; ++i)
- {
- handler.iButtonStateOld[i] = handler.iButtonState[i] = 0;
- LogAdd("POV Button %d State %d", i, 0);
- }
- }
- SDL_JoystickEventState(SDL_IGNORE);
- }
- }
- }
- }
- else
- {
- ManualReadGamepad();
- }
-}
-
-bool Gamepad::Initialize()
-{
- if (strAppDir.size() < 1)
- {
- strAppDir = qApp->applicationDirPath().toUtf8().data();
- }
-
- SDL_Quit();
- // init SDL
- // my Gamepad does not work with SDL_INIT_EVERYTHING. Just init the ones we use.
- int ret = SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS);
- return (ret == 0);
-}
-
-void Gamepad::Free()
-{
- if (bSaveLogToDisk)
- {
- SaveLog();
- }
-
- if(int count = gHandlers.size())
- {
- for(int i = 0; i<count; ++i)
- gHandlers[i].DisConnect();
- }
- SDL_Quit();
-}
-
-void ShowUsageInViewport()
-{
- bool bDemoMode = AppMainWindow::IsExpertMode();
- if(bDemoMode && bDefaultDemoMode)
- {
- int w = theScene->GetCamera()->GetWidth();
- int h = theScene->GetCamera()->GetHeight();
- //CDXUTTextHelper* pTxtHelper = theScene->GetRenderWindow()->GetTextHelper();
-
- //pTxtHelper->Begin();
- //pTxtHelper->SetInsertionPos(w/5, h-80);
- //pTxtHelper->SetForegroundColor(D3DXCOLOR(1.0f, 1.0f, 0.0f, 0.8f));
-
- //pTxtHelper->DrawTextLine(L"Start: Load a sample Back: Quit Demo");
- //pTxtHelper->DrawTextLine(L"A: Stop/Restart Animation B: Pause/Continue Animation X: Start/Pause Simulation Y: Demo/Export Switch");
- //pTxtHelper->DrawTextLine(L"Left Stick: Zoom In/Out Right Stick: Control Camera Cross/Trigger: Scene HUD and Stats On/Off");
- //pTxtHelper->DrawTextLine(L"RB & LS: Wind Direction RB & RS: Wind Strength LB & LS: Light Control");
- //pTxtHelper->End();
- }
-}
-
-void Gamepad::ShowUsage()
-{
- viewer_msg("Start: Show Gamepad Usage");
- viewer_msg("Back: Quit the Blast Viewer");
- viewer_msg("LBump: Load previous demo RBump: Load next sample");
- viewer_msg("B: Reset Animation A: Play/Pause Animation");
- viewer_msg("Y: Demo View On/Off X: Show/Hide the selected Hair");
- viewer_msg("LStick: Zoom in and out RStick: Rotate the camera");
- viewer_msg("D-Pad Up: Show/Hide HUD D-Pad Left: Show/Hide Stats");
- viewer_msg("RTrigger & LStick: Wind Direction RTrigger & RStick: Wind Strength");
- viewer_msg("LTrigger & LStick: Move Light");
-}
-
-
-void Gamepad::ResetScene()
-{
-#ifndef NV_ARTISTTOOLS
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
-
- GlobalSettings::Inst().toggleSimulation();
- bool bSimulating = GlobalSettings::Inst().toggleSimulation(); // call it twice to get right state
- if(bSimulating)
- {
- toolbar->on_btnEnableSimulation_clicked(); // stop simulation when stop animation
- }
-
- DisplayFurVisualizersPanel* furPanel = AppMainWindow::Inst().GetFurVisualizersPanel();
- if(furPanel)
- {
- furPanel->on_btnShowHair_stateChanged(true); // show hair
- furPanel->updateValues();
- }
-
- GlobalSettings::Inst().toggleAnimation();
- bool anim = GlobalSettings::Inst().toggleAnimation(); // call it twice to get right state
- if(anim)
- {
- toolbar->on_btnPlayAnimation_clicked(); // stop animation
- }
-
- toolbar->on_btnResetAnimation_clicked(); // reset animation
-
- toolbar->on_spinWindStrength_valueChanged(0.0f);
- toolbar->updateValues();
-#else
- CoreLib::Inst()->Gamepad_ResetScene();
-#endif // NV_ARTISTTOOLS
-
- Light* pLight = NV_NULL;
- pLight = Light::GetFirstSelectedLight();
-
- static Camera oldLightCam, oldSceneCam;
- // restore old camera
- if(bUseOldSceneCam)
- {
- *(theScene->GetCamera()) = oldSceneCam;
- //theScene->FitCamera();
- }
- else
- {
- oldSceneCam = *theScene->GetCamera();
- bUseOldSceneCam = true;
- }
- // restore light camera
- if(pLight)
- {
- //pLight->FitBounds(true);
- if(bUseOldLightCam)
- {
-// pLight->getCamera() = oldLightCam;
- }
- else
- {
-// oldLightCam = pLight->getCamera();
-// pLight->FitBounds();
- bUseOldLightCam = true;
- }
- }
- theScene->SetProjectModified(true);
-}
-
-bool Gamepad::IsDemoMode()
-{
- return AppMainWindow::IsExpertMode();
-}
-
-void Gamepad::SetDemoProjects(QList<QString>& projects)
-{
- demoProjects = projects;
-}
-
-void Gamepad::Process()
-{
- if (AppMainWindow::IsExpertMode() == false)
- {
- static bool bFirstTime = true;
- if (bFirstTime)
- {
- bFirstTime = false;
- DisplayPreferencesPanel* pPanel = AppMainWindow::Inst().GetDisplayPreferencesPanel();
- if (pPanel)
- {
- pPanel->runDemoCommandline();
- return;
- }
- }
- }
-
- HandleJoySticks();
-
- if (theScene == 0)
- {
- theScene = SimpleScene::Inst();
- return;
- }
-
- //ShowUsageInViewport();
-}
-
-
-void Gamepad::ManualReadGamepad()
-{
- SDL_JoystickUpdate();
- if(int count = gHandlers.size())
- {
- for(int i = 0; i < count; ++i)
- gHandlers[i].Process();
- }
-}
-
-void GamepadHandler::Process()
-{
- for(int i = 0; i < numAxis; ++i)
- {
- int value = ClampAxis(SDL_JoystickGetAxis(joystick, i));
- iAxisState[i] = value;
- if(iAxisStateOld[i] != value)
- {
- char msg[512];
- sprintf(msg, "Axis changes: %d %d", i, value);
-#ifdef _DEBUG
- viewer_msg(msg);
-#endif
- LogAdd(msg);
- }
- }
-
- bool bCancelQuit = false;
- for(int i = 0; i < numButtons; ++i)
- {
- int state = SDL_JoystickGetButton(joystick, i);
- iButtonState[i] = state;
- if(iButtonStateOld[i] != state)
- {
- char msg[512];
- sprintf(msg, "Button changes: %d %d (%d)", i, state, iButtonStateOld[i]);
-#ifdef _DEBUG
- viewer_msg(msg);
-#endif
- LogAdd(msg);
- }
- if(i != GAMEPAD_KEY_BACK && ButtonState(i) == BUTTON_UP)
- {
- //bCancelQuit = true;
- }
- }
-
- if (numPov == 1)
- {
- // BETOP xbox mode
- Uint8 pov = SDL_JoystickGetHat(joystick, 0);
- switch (pov)
- {
- case SDL_HAT_UP:
- iButtonState[GAMEPAD_KEY_DPAD_UP] = 1;
- break;
- case SDL_HAT_RIGHT:
- iButtonState[GAMEPAD_KEY_DPAD_RIGHT] = 1;
- break;
- case SDL_HAT_DOWN:
- iButtonState[GAMEPAD_KEY_DPAD_DOWN] = 1;
- break;
- case SDL_HAT_LEFT:
- iButtonState[GAMEPAD_KEY_DPAD_LEFT] = 1;
- break;
- case SDL_HAT_RIGHTUP:
- iButtonState[GAMEPAD_KEY_DPAD_RIGHT] = 1;
- iButtonState[GAMEPAD_KEY_DPAD_UP] = 1;
- break;
- case SDL_HAT_RIGHTDOWN:
- iButtonState[GAMEPAD_KEY_DPAD_RIGHT] = 1;
- iButtonState[GAMEPAD_KEY_DPAD_DOWN] = 1;
- break;
- case SDL_HAT_LEFTUP:
- iButtonState[GAMEPAD_KEY_DPAD_LEFT] = 1;
- iButtonState[GAMEPAD_KEY_DPAD_UP] = 1;
- break;
- case SDL_HAT_LEFTDOWN:
- iButtonState[GAMEPAD_KEY_DPAD_LEFT] = 1;
- iButtonState[GAMEPAD_KEY_DPAD_DOWN] = 1;
- break;
- default:
- for (int i = GAMEPAD_KEY_DPAD_UP; i <= GAMEPAD_KEY_DPAD_RIGHT; ++i)
- {
- iButtonState[i] = 0;
- }
- }
- if (pov != SDL_HAT_CENTERED)
- {
- char msg[512];
- sprintf(msg, "POV State: %d", pov);
- viewer_msg(msg);
- LogAdd(msg);
- for (int i = GAMEPAD_KEY_DPAD_UP; i <= GAMEPAD_KEY_DPAD_RIGHT; ++i)
- {
- if (ButtonState(i) == BUTTON_DOWN)
- {
- sprintf(msg, "POV Button Down: %d", i);
- viewer_msg(msg);
- LogAdd(msg);
- }
- }
- }
- }
-
- //bool bLeftBump = iButtonState[GAMEPAD_KEY_LEFT_BUMP], bRightBump = iButtonState[GAMEPAD_KEY_RIGHT_BUMP];
- bool bLeftTrigger = false, bRightTrigger = false;
- double currentTime = GetSeconds(); // real elapsed frame time
- static double lastJoyTime = currentTime;
-
- if(ButtonState(GAMEPAD_KEY_BACK) == BUTTON_UP)
- {
- BackButtonPressed();
- }
- if(iQuitState && bCancelQuit)
- {
- AppMainWindow::Inst().setProgress("Cancel quitting.", 2);
- iQuitState = 0;
- }
- else
- {
- bCancelQuit = false;
- }
-
- if(!bCancelQuit)
- {
- if(ButtonState(GAMEPAD_KEY_START) == BUTTON_UP)
- {
- StartButtonPressed();
- }
- if (ButtonState(GAMEPAD_KEY_RIGHT_BUMP) == BUTTON_UP)
- {
- // next proj
- Gamepad::DemoNext();
- }
- if (ButtonState(GAMEPAD_KEY_LEFT_BUMP) == BUTTON_UP)
- {
- // prev proj
- Gamepad::DemoPrev();
- }
- if (ButtonState(GAMEPAD_KEY_B) == BUTTON_UP)
- {
- viewer_msg("B Pressed");
- ButtonBPressed();
- }
- if(ButtonState(GAMEPAD_KEY_A) == BUTTON_UP)
- {
- viewer_msg("A Pressed");
- ButtonAPressed();
- }
- if (ButtonState(GAMEPAD_KEY_Y) == BUTTON_UP)
- {
- viewer_msg("Y Pressed");
- ChangeMode();
- }
- if(ButtonState(GAMEPAD_KEY_X) == BUTTON_UP)
- {
- viewer_msg("X Pressed");
-#ifndef NV_ARTISTTOOLS
- // Show/hide selected hair
- bool v = false;
- theScene->GetFurCharacter().GetHairParam(HAIR_PARAMS_DRAW_RENDER_HAIRS, &v);
- DisplayFurVisualizersPanel* furPanel = AppMainWindow::Inst().GetFurVisualizersPanel();
- if (furPanel)
- {
- furPanel->on_btnShowHair_stateChanged(!v);
- }
-#else
- CoreLib::Inst()->GamepadHandler_ShowHair();
-#endif // NV_ARTISTTOOLS
- }
- if(ButtonState(GAMEPAD_KEY_DPAD_LEFT) == BUTTON_DOWN)
- {
- // Show/Hide Stats
- Gamepad::ShowHideStats();
- }
- if(ButtonState(GAMEPAD_KEY_DPAD_RIGHT) == BUTTON_DOWN)
- {
- }
- if(ButtonState(GAMEPAD_KEY_DPAD_UP) == BUTTON_DOWN)
- {
- // show/hide HUD
- Gamepad::ShowHideHud();
- }
- if(ButtonState(GAMEPAD_KEY_DPAD_DOWN) == BUTTON_DOWN)
- {
- }
- }
-
- //const float g_dt = 1.0f/120.0f; // the time delta used for simulation
- if (numAxis == 6)
- {
- // XBOX 360 has 6 axis
- int iLTChange = AxisChange(AXIS_LT);
- int iRTChange = AxisChange(AXIS_RT);
- if (iLTChange > 30000)
- {
- bLeftTrigger = true;
- }
- if (iRTChange > 30000)
- {
- bRightTrigger = true;
- }
- }
- else if(numAxis == 5)
- {
- // Betop has 5 axis when x360 mode
- int iLTChange = AxisChange(AXIS_LT);
- int iRTChange = AxisChange(AXIS_RT);
- if (iLTChange>15000)
- {
- bLeftTrigger = true;
- }
- if (iRTChange < -15000)
- {
- bRightTrigger = true;
- }
- }
- if (1)
- {
- static float zoomSpeed = 0.1f;
- static float rotateSpeed = 2.5f;
-
- float deltaTime = (currentTime - lastJoyTime);
- lastJoyTime = currentTime;
-
- const float jsFactor = 1.0f/32768.0f;
- int iLSX = AxisChange(AXIS_LS_X);
- int iLSY = AxisChange(AXIS_LS_Y);
- if(iLSX != 0 || iLSY != 0)
- {
- // left stick
- float forceLSX = iLSX * jsFactor;
- float forceLSY = iLSY * jsFactor;
- if(bLeftTrigger || bRightTrigger)
- {
- if(bRightTrigger)
- {
- // wind direction
- atcore_float3 direct = gfsdk_makeFloat3(forceLSX, forceLSY, 0.1f);
- gfsdk_normalize(direct);
-
- GlobalSettings::Inst().m_windDir = direct;
- theScene->SetProjectModified(true);
- }
- if(bLeftTrigger)
- {
- // light direction
- {
- Light* pLight = Light::GetFirstSelectedLight();
- if (pLight)
- {
- atcore_float2 delta = gfsdk_makeFloat2(forceLSX, forceLSY);
- delta = 10.0f * delta;
- pLight->Orbit(delta); // unit is in degree(s)
- theScene->SetProjectModified(true);
- }
- }
- }
- }
- else
- {
- if(iLSY != 0)
- {
- // zoom in/out
- theScene->GetCamera()->Dolly(zoomSpeed * forceLSY);
- theScene->SetProjectModified(true);
- }
- }
- }
- int iRSX = AxisChange(AXIS_RS_X);
- int iRSY = AxisChange(AXIS_RS_Y);
- if(iRSX != 0 || iRSY != 0)
- {
- float forceX = iRSX * jsFactor;
- float forceY = iRSY * jsFactor;
- if(bRightTrigger)
- {
- if (iRSX != 0)
- {
- // wind strength, Press right to increase. Press left to decrease
- static float windStrength = 0.0f;
- static float fStep = 0.1f;
- if (iRSX > 0)
- windStrength += fStep;
- else
- windStrength -= fStep;
- if (windStrength > 10.0f)
- windStrength = 10.0f;
- if (windStrength < 0.0f)
- windStrength = 0.0f;
-
-#ifndef NV_ARTISTTOOLS
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
- toolbar->on_spinWindStrength_valueChanged(windStrength);
- toolbar->updateValues();
-#else
- CoreLib::Inst()->GamepadHandler_SpinWindStrength(windStrength);
-#endif // NV_ARTISTTOOLS
- }
- }
- else
- {
- // rotate camera
- atcore_float2 moveRightStick = gfsdk_makeFloat2(forceX, forceY);
- theScene->GetCamera()->Orbit(moveRightStick*rotateSpeed);
- theScene->SetProjectModified(true);
- }
- }
- }
- //if(numAxis>5)
- //{
- //// XBOX 360 has 6 axis
- //if((iAxisState[4]>=0) && (iAxisStateOld[4]<0))
- //{
- // bool bShow = ! GlobalSettings::Inst().m_showHUD;
- // DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- // if(pspanel)
- // {
- // pspanel->on_btnShowHUD_stateChanged(bShow);
- // pspanel->on_btnComputeStats_stateChanged(false);
- // }
- //}
- //if((iAxisState[5]>=0) && (iAxisStateOld[5]<0))
- //{
- // bool bShow = ! GlobalSettings::Inst().m_computeStatistics;
- // DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- // if(pspanel)
- // {
- // DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- // if(pspanel)
- // {
- // // HUD controls stats
- // pspanel->on_btnComputeStats_stateChanged(bShow);
- // pspanel->on_btnShowHUD_stateChanged(bShow);
- // }
- // }
- //}
- //}
- for(int i = 0; i < numAxis; ++i)
- {
- //if(iAxisStateOld[i] != iAxisState[i])
- //{
- // char msg[512];
- // sprintf(msg, "Axis: %d %d", i, iAxisState[i]);
- // viewer_msg(msg);
- //}
- iAxisStateOld[i] = iAxisState[i];
- }
-
- for(int i = 0; i < numButtons; ++i)
- {
- iButtonStateOld[i] = iButtonState[i];
- }
-
- if (numPov == 1)
- {
- for (int i = GAMEPAD_KEY_DPAD_UP; i <= GAMEPAD_KEY_DPAD_RIGHT; ++i)
- {
- iButtonStateOld[i] = iButtonState[i];
- }
- }
-}
-
-//void Gamepad::ClearStates()
-//{
-// for(int i = 0; i < iStateSize; ++i)
-// {
-// bKeyHolding[i] = 0;
-//
-// iAxisStateOld[i] = 0;
-// iAxisState[i] = 0;
-// iButtonStateOld[i] = 0;
-// iButtonState[i] = 0;
-// }
-//}
-
-void Gamepad::ShowHideHud()
-{
- static bool bShowHud = true;
- DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- if (pspanel)
- {
- // HUD controls stats
- pspanel->on_btnShowHUD_stateChanged(bShowHud);
- pspanel->on_btnComputeStats_stateChanged(false);
- bShowHud = !bShowHud;
- }
-}
-
-void Gamepad::ShowHideStats()
-{
- static bool bShowStats = true;
- DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- if (pspanel)
- {
- // HUD controls stats
- pspanel->on_btnComputeStats_stateChanged(bShowStats);
- pspanel->on_btnShowHUD_stateChanged(bShowStats);
- bShowStats = !bShowStats;
- }
-}
-
-void Gamepad::QuitApp()
-{
- AppMainWindow::Inst().close();
-}
-
-void Gamepad::ResetAnimation()
-{
-#ifndef NV_ARTISTTOOLS
- GlobalSettings::Inst().toggleSimulation();
- bool simulating = GlobalSettings::Inst().toggleSimulation(); // call it twice to get right state
-
- GlobalSettings::Inst().toggleAnimation();
- bool animating = GlobalSettings::Inst().toggleAnimation(); // call it twice to get right state
-
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
- if (!simulating)
- {
- toolbar->on_btnEnableSimulation_clicked();
- }
- if (!animating)
- {
- toolbar->on_btnPlayAnimation_clicked();
- }
- toolbar->on_btnResetAnimation_clicked();
-#else
- CoreLib::Inst()->Gamepad_ResetAnimation();
-#endif // NV_ARTISTTOOLS
-}
-
-void Gamepad::PlayPauseAnimation()
-{
-#ifndef NV_ARTISTTOOLS
- GlobalSettings::Inst().toggleSimulation();
- bool simulating = GlobalSettings::Inst().toggleSimulation(); // call it twice to get right state
-
- GlobalSettings::Inst().toggleAnimation();
- bool animating = GlobalSettings::Inst().toggleAnimation(); // call it twice to get right state
-
- BlastToolbar* toolbar = AppMainWindow::Inst().GetMainToolbar();
- if (simulating != animating)
- {
- toolbar->on_btnEnableSimulation_clicked();
- }
- toolbar->on_btnEnableSimulation_clicked();
- toolbar->on_btnPlayAnimation_clicked();
-#else
- CoreLib::Inst()->Gamepad_PlayPauseAnimation();
-#endif // NV_ARTISTTOOLS
-}
-
-void Gamepad::DemoModeOnOff()
-{
- ChangeMode();
-}
-
-void Gamepad::DemoNext()
-{
- LoadSamples(true);
- PlaySample();
-}
-
-void Gamepad::DemoPrev()
-{
- LoadSamples(false);
- PlaySample();
-}
-
-void Gamepad::SetDemoMode(bool onOff)
-{
- //if (AppMainWindow::IsExpertMode() != onOff)
- //{
- // ChangeMode();
- //}
- if (onOff)
- {
- curentPrjIdx = -1; // make it start from first demo
- DemoNext();
- }
- else
- {
- ShowUsage();
- }
- ChangeMode();
-}
-
-void Gamepad::DemoEscape()
-{
- if (AppMainWindow::IsExpertMode())
- {
- ChangeMode();
- // hide HUD if it is on. for GWDCC - 393 Blast Viewer - play list stats
- DisplayScenePanel* pspanel = AppMainWindow::Inst().GetDisplayScenePanel();
- if (pspanel)
- {
- // HUD controls stats
- pspanel->on_btnShowHUD_stateChanged(false);
- pspanel->on_btnComputeStats_stateChanged(false);
- }
- }
- //else
- //{
- // QuitApp();
- //}
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Gamepad.h b/tools/ArtistTools/source/CoreLib/Scene/Gamepad.h
deleted file mode 100644
index 46d45ba..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Gamepad.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
-
-class SimpleScene;
-
-class Gamepad
-{
-public:
- Gamepad();
- ~Gamepad();
-
- static Gamepad& Instance();
-
- void Process();
- bool Initialize();
- void Free();
-
- bool IsDemoMode();
-
- void SetDemoProjects(QList<QString>& projects);
-
- static void DemoNext();
- static void DemoPrev();
- static void ShowProjectName();
- static void ShowHideHud();
- static void ShowHideStats();
- static void QuitApp();
- static void ResetAnimation();
- static void PlayPauseAnimation();
- static void DemoModeOnOff();
- static void DemoEscape();
- static void SetDemoMode(bool onOff);
- static void ShowUsage();
-
-private:
- void ResetScene();
- void ManualReadGamepad();
-
- void HandleJoySticks();
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.cpp b/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.cpp
deleted file mode 100644
index 6a826ca..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.cpp
+++ /dev/null
@@ -1,357 +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 "GlobalSettings.h"
-#include <QtCore/QTimer>
-#include "Settings.h"
-#include "Shlwapi.h"
-
-static GlobalSettings g_settings;
-static QTimer g_frameTimer(NV_NULL);
-
-////////////////////////////////////////////////////////////////////////////////////////////
-GlobalSettings::GlobalSettings()
-{
- Init();
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-GlobalSettings& GlobalSettings::Inst()
-{
- return g_settings;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-QTimer& GlobalSettings::GetFrameTimer()
-{
- return g_frameTimer;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-const char* GlobalSettings::MakeFileName(const char* path, const char* name)
-{
- static char filename[MAX_PATH];
- PathCombineA(filename, path, name);
- return filename;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////
-void
-GlobalSettings::Init()
-{
- m_animate = false;
- m_simulate = true;
- m_simulateStep = false;
- m_firstFrame = true;
- m_resetAnimationOnLoop = true;
-
- m_animationFps = 24.0f;
- m_repeatAnimation = true;
- m_frameTime = 0.0f;
- m_animationSpeed = 1.0f;
- m_playStopped = false;
- m_currentBoneIndex = 0;
-
- m_simulationFrameCalc.init(0, 1.0f / 60.0f);
- m_simulationFps = 60.0f;
- m_timeStep = 0.0f;
-
- m_visualizeWind = false;
- m_showGraphicsMesh = true;
- m_showWireframe = false;
- m_showHUD = false;
- m_visualizeBoneNames = false;
-
- m_computeStatistics = false;
- m_computeProfile = false;
- m_previewLOD = false;
- m_renderStyle = MESH_RENDER_TEXTURED;
-
- m_sceneLoaded = false;
- m_useDQ = false;
- m_zup = false;
- m_lhs = false;
-
- m_sceneUnitIndex = SCENE_UNIT_CENTIMETER; // default to use cm
-
- m_showGrid = true;
- m_showAxis = true;
-
- m_fovAngle = 75.0f;
-
- m_loadTextures = true;
- m_loadMaterials = true;
- m_loadGroom = true;
- m_loadCollision = true;
- m_loadConstraints = true;
-
- m_msaaOption = 0;
-
- m_windDir.x = 0;
- m_windDir.y = -1.0f;
- m_windDir.z = 0.5f;
- m_windStrength = 0.0f;
- m_windNoise = 0.0f;
-
- m_frameStartTime = 0.0f;
- m_frameEndTime = 100.0f;
-
- m_animationIndex = 0;
-
- m_lockRootBone = false;
-
- m_controlTextureOption = 0;
- m_showSkinnedMeshOnly = false;
-
- m_useLighting = true;
- m_showFPS = true;
-
- m_renderFrameCnt = 0;
- m_renderFps = 60.0f;
-
- m_projectFileDir = "";
- m_projectFileName = "";
- m_backgroundTextureFilePath = "";
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool GlobalSettings::toggleSimulation()
-{
- m_simulate = !m_simulate;
- m_simulateStep = false;
-
- return m_simulate;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::stepSimulation()
-{
- m_simulateStep = true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::setRenderFps(float fps)
-{
- m_renderFps = fps;
-
- OptionValue* option = nullptr;
-
- option = AppSettings::Inst().GetOptionValue("User/PerfMode");
- if (option)
- {
- if (option->Value.Bool == OA_TRUE)
- {
- g_frameTimer.setInterval(0);
- }
- else
- g_frameTimer.setInterval((int)(1000 / fps));
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::setSimulationFps(float fps)
-{
- m_simulationFps = fps;
- m_simulationFrameCalc.setTimeStep(1.0f/ fps);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::resetAnimation()
-{
- m_frameTime = m_frameStartTime;
- m_firstFrame = m_resetAnimationOnLoop ? true : false;
- m_playStopped = false;
- m_simulateStep = true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::toggleAnimationRepeat()
-{
- m_repeatAnimation = !m_repeatAnimation;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool GlobalSettings::toggleAnimation()
-{
- m_animate = !m_animate;
-
- if (m_animate && m_playStopped)
- resetAnimation();
-
- return m_animate;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::stepAnimation()
-{
- if (!m_sceneLoaded)
- return;
-
- if (m_repeatAnimation)
- m_playStopped = false;
-
- if (!m_playStopped)
- m_frameTime += m_animationSpeed * m_animationFps * m_timeStep;
-
- if (m_frameTime > m_frameEndTime)
- {
- if (m_repeatAnimation)
- resetAnimation();
- else
- {
- m_frameTime = m_frameEndTime;
- m_playStopped = true;
- m_animate = false;
- }
- }
-
- if (!m_animate)
- {
- stepSimulation();
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void GlobalSettings::setSceneUnitIndex(int i)
-{
- if (i < 0)
- return;
-
- if (i >= SCENE_UNIT_END)
- return;
-
- m_sceneUnitIndex = i;
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-bool GlobalSettings::isSupportedUnitByUnitInCm(float fUnitInCm)
-{
- int unit = identifyUnitByUnitInCm(fUnitInCm);
- return unit != SCENE_UNIT_UNKNOWN;
-}
-
-int GlobalSettings::identifyUnitByUnitInCm(float fUnitInCm)
-{
- float fError = 0.001f;
- if (fabs(fUnitInCm - 1.0f) < fError)
- {
- return SCENE_UNIT_CENTIMETER;
- }
- if (fabs(fUnitInCm - 2.54f) < fError)
- {
- return SCENE_UNIT_INCH;
- }
- if (fabs(fUnitInCm - 100.0f) < fError)
- {
- return SCENE_UNIT_METER;
- }
- if (fabs(fUnitInCm - 10.0f) < fError)
- {
- return SCENE_UNIT_DECIMETER;
- }
- return SCENE_UNIT_UNKNOWN; // should never happen
-}
-
-void GlobalSettings::setSceneUnitByUnitInCm(float fUnitInCm)
-{
- m_sceneUnitIndex = identifyUnitByUnitInCm(fUnitInCm);
-}
-
-float GlobalSettings::getSceneUnitInCentimeters()
-{
- return getSceneUnitInCentimeters(m_sceneUnitIndex);
-}
-
-float GlobalSettings::getSceneUnitInCentimeters(int unitIndex)
-{
- float unit = 1.0f;
-
- switch (unitIndex)
- {
- case SCENE_UNIT_CENTIMETER:
- unit = 1.0f;
- break;
- case SCENE_UNIT_METER:
- unit = 100.0f;
- break;
- case SCENE_UNIT_INCH:
- unit = 2.54f;
- break;
- case SCENE_UNIT_DECIMETER:
- unit = 10.0f;
- break;
- }
-
- return unit;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-atcore_float3 GlobalSettings::getGravityDir()
-{
- atcore_float3 gravityDir;
-
- if (m_zup)
- {
- gravityDir.x = 0.0f;
- gravityDir.y = 0.0f;
- gravityDir.z = -1.0f;
- }
- else
- {
- gravityDir.x = 0.0f;
- gravityDir.y = -1.0f;
- gravityDir.z = 0.0f;
- }
-
- return gravityDir;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-std::string GlobalSettings::getAbsoluteFilePath()
-{
- return m_projectFileDir + "\\" + m_projectFileName;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-std::string GlobalSettings::getAbsoluteFilePath(const char* fileName)
-{
- return m_projectFileDir + "\\" + fileName;
-}
-
-#include <QtCore/QFileInfo>
-#include <QtCore/QDir>
-
-///////////////////////////////////////////////////////////////////////////////
-std::string GlobalSettings::getRelativePath(const char* filePath)
-{
- QDir projectDir(m_projectFileDir.c_str());
- QByteArray relPath = projectDir.relativeFilePath(filePath).toLocal8Bit();
-
- return (const char*)relPath;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.h b/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.h
deleted file mode 100644
index 7c1e666..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/GlobalSettings.h
+++ /dev/null
@@ -1,177 +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"
-#include <string>
-
-#include <Nv/Common/Animation/NvCoFrameCalculator.h>
-
-class QTimer;
-
-enum
-{
- MESH_RENDER_WIREFRAME,
- MESH_RENDER_FLAT,
- MESH_RENDER_SHADED,
- MESH_RENDER_TEXTURED,
- MESH_RENDER_END,
-};
-
-enum
-{
- SCENE_UNIT_UNKNOWN,
- SCENE_UNIT_CENTIMETER,
- SCENE_UNIT_METER,
- SCENE_UNIT_INCH,
- SCENE_UNIT_DECIMETER,
- SCENE_UNIT_END,
-};
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Placeholder for all the global settings used in hairworks viewer.
-// This stores all simple options that are not part of hair instance descriptor
-// such as animation logic in UI, scene settings, scene visualization options etc.
-//////////////////////////////////////////////////////////////////////////////////////
-class CORELIB_EXPORT GlobalSettings
-{
-public:
- GlobalSettings();
-
- void Init();
- static GlobalSettings& Inst();
- static QTimer& GetFrameTimer();
- static const char* MakeFileName(const char* path, const char* name);
-
-public:
-
- // animation settings
- bool m_animate;
- float m_animationFps;
- int m_animationIndex;
- float m_animationSpeed;
- int m_currentBoneIndex;
- bool m_firstFrame;
- float m_frameTime;
- float m_frameStartTime;
- float m_frameEndTime;
- bool m_lockRootBone;
- bool m_playStopped;
- bool m_repeatAnimation;
- bool m_resetAnimationOnLoop;
-
- bool m_simulate;
- bool m_simulateStep;
-
- float m_timeStep;
- NvCo::FrameCalculator m_simulationFrameCalc;
- float m_simulationFps;
-
- // scene settings
- bool m_useDQ;
- bool m_zup;
- bool m_lhs;
- bool m_sceneLoaded;
- int m_sceneUnitIndex;
- std::string m_backgroundTextureFilePath;
-
- // statistics and profiling
- bool m_computeStatistics;
- bool m_computeProfile;
-
- // render option
- float m_fovAngle;
- bool m_useLighting;
- int m_msaaOption;
- int m_renderFrameCnt;
- float m_renderFps;
-
- // viusialization
- int m_controlTextureOption;
- bool m_previewLOD;
- int m_renderStyle;
- bool m_showAxis;
- bool m_showHUD;
- bool m_showFPS;
- bool m_showGraphicsMesh;
- bool m_showGrid;
- bool m_showWireframe;
- bool m_showSkinnedMeshOnly;
- bool m_visualizeShadowMap;
- bool m_visualizeWind;
- bool m_visualizeBoneNames;
-
- // global wind
- atcore_float3 m_windDir;
- float m_windStrength;
- float m_windNoise;
-
- // import settings
- bool m_loadTextures;
- bool m_loadMaterials;
- bool m_loadGroom;
- bool m_loadCollision;
- bool m_loadConstraints;
-
- // file path
- std::string m_projectFileDir;
- std::string m_projectFileName;
-
- // convenience access functions
-public:
-
- bool isBindPose() { return m_animationIndex == 0; }
- float getSceneUnitInCentimeters();
- static float getSceneUnitInCentimeters(int unitIndex);
- void setSceneUnitIndex(int i);
- void setSceneUnitByUnitInCm(float fUnitInCm);
- static int identifyUnitByUnitInCm(float fUnitInCm);
- static bool isSupportedUnitByUnitInCm(float fUnitInCm);
-
- void setTimeStep(float timeStep) { m_timeStep = timeStep; }
-
- bool toggleSimulation();
- void stepSimulation();
-
- void setRenderFps(float fps);
- void setSimulationFps(float fps);
-
- void resetAnimation();
- void stepAnimation();
- bool toggleAnimation();
- void toggleAnimationRepeat();
- void getAnimationRange( float& start, float& end);
-
- std::string getAbsoluteFilePath();
- std::string getAbsoluteFilePath(const char* fileName);
- std::string getRelativePath(const char* filePath);
-
- atcore_float3 getGravityDir();
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Light.cpp b/tools/ArtistTools/source/CoreLib/Scene/Light.cpp
deleted file mode 100644
index 5f17e66..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Light.cpp
+++ /dev/null
@@ -1,744 +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 "Light.h"
-
-#include "GlobalSettings.h"
-#include "ShadowMap.h"
-#include "SimpleRenderable.h"
-#include "MeshShaderParam.h"
-
-#include "RenderInterface.h"
-
-//////////////////////////////////////////////////////////////////////////////
-inline int GetShadowMapResolution(int index)
-{
- switch (index)
- {
- case 0: // default
- return 2048;
- break;
- case 1:
- return 4096;
- break;
- case 2:
- return 1024;
- break;
- case 3:
- return 512;
- break;
- case 4:
- return 8192;
- break;
- case 5:
- return 16384;
- break;
- }
-
- return 1024;
-}
-
-namespace
-{
- std::vector<Light> g_Lights;
- static bool g_LinkLightOption = false;
- std::string m_envTextureFilePath;
- GPUShaderResource* m_pEnvTextureSRV;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-Light::Light()
-{
- m_enable = true;
- m_useShadows = false;
- m_visualize = false;
- m_isEnvLight = false;
- m_useEnvMap = false;
-
- m_selected = false;
-
- m_color = gfsdk_makeFloat3(1.0f, 1.0f, 1.0f);
- m_intensity = 1.0f;
-
- m_pShadowMap = 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-Light::~Light()
-{
- if (m_pShadowMap)
- {
- delete m_pShadowMap;
- m_pShadowMap = 0;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::UseLHS() const {
- return m_lightCamera.UseLHS();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* Light::GetShadowSRV()
-{
- if (!m_pShadowMap)
- return 0;
-
- return m_pShadowMap->GetShadowSRV();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::SetShadowMapResolution(int index)
-{
- if (m_shadowMapResolutionIndex == index)
- return;
-
- m_lightMapResolution = GetShadowMapResolution(index);
-
- if (m_pShadowMap)
- {
- m_pShadowMap->Release();
- delete m_pShadowMap;
- }
-
- m_pShadowMap = ShadowMap::Create(m_lightMapResolution);
-
- float minZ = 1.0f;
- float maxZ = 10000.0f; // should calculate dynamically
-
- m_lightCamera.Ortho(m_lightMapResolution, m_lightMapResolution, minZ, maxZ);
-
- m_shadowMapResolutionIndex = index;
-
- FitBounds();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Init()
-{
- m_shadowMapResolutionIndex = 2;
- m_lightMapResolution = GetShadowMapResolution(m_shadowMapResolutionIndex);
-
- m_pShadowMap = ShadowMap::Create(m_lightMapResolution);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Release()
-{
- if (m_pShadowMap)
- {
- delete m_pShadowMap;
- m_pShadowMap = 0;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::InitCamera(const atcore_float3& from, const atcore_float3& lookAt)
-{
- m_lightCamera.Init(false, false);
-
-// atcore_float3 up = gfsdk_makeFloat3(0.0f, 1.0f, 0.0f);
- atcore_float3 up = gfsdk_makeFloat3(0.0f, 0.0f, 1.0f);
-
- m_lightCamera.LookAt(from, lookAt, up);
-
- float minZ = 1.0f;
- float maxZ = 10000.0f; // should calculate dynamically
-
- m_lightCamera.Ortho(m_lightMapResolution, m_lightMapResolution, minZ, maxZ);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-atcore_float3
-Light::getLightDirection() const
-{
- return (atcore_float3&)m_lightCamera.GetViewDirection();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::SetBounds(atcore_float3* bbCenter, atcore_float3* bbExtents)
-{
- if (bbCenter)
- m_bbCenter = *bbCenter;
- if (bbExtents)
- m_bbExtent = *bbExtents;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::FitBounds(bool updateCenter)
-{
- ////////////////////////////////////////////////////////
- atcore_float3 bbCenter = m_bbCenter;
- atcore_float3 bbExtents =m_bbExtent;
-
- ////////////////////////////////////////////////////////////////////////
- if (updateCenter)
- {
- atcore_float3 lightPos = m_lightCamera.GetEye();
- atcore_float3 lightAt = m_lightCamera.GetAt();
-
- atcore_float3 disp = bbCenter - lightAt;
-
- lightAt = lightAt + disp;
- lightPos = lightPos + disp;
-
- m_lightCamera.SetEye(lightPos);
- m_lightCamera.SetAt(lightAt);
- m_lightCamera.BuildViewMatrix();
- }
-
- ////////////////////////////////////////////////////////////////////////
- float size = bbExtents.x;
-
- size = max(size, bbExtents.y);
- size = max(size, bbExtents.z);
-
- atcore_float4x4 view = m_lightCamera.GetViewMatrix();
-
- atcore_float3 c = gfsdk_transformCoord(view, bbCenter);
-
- size *= 3.0f;
-
- float minZ = c.z - size;
- float maxZ = c.z + size;
-
- float orthoW = size;
- float orthoH = size;
-
- if (m_lightCamera.UseLHS())
- m_lightCamera.Ortho(orthoW, orthoH, minZ, maxZ);
- else // rhs camera flips Z
- m_lightCamera.Ortho(orthoW, orthoH, -maxZ, -minZ);
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::resetUpDir(bool zup)
-{
- m_lightCamera.ResetUpDir(zup);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::resetLhs(bool lhs)
-{
- m_lightCamera.ResetLhs(lhs);
- FitBounds();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Orbit(const atcore_float2& delta)
-{
- m_lightCamera.OrbitLight(gfsdk_makeFloat2(-delta.x, delta.y));
-
- FitBounds();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Pan(const atcore_float2& delta, const atcore_float3& axisX, const atcore_float3& axisY)
-{
- atcore_float3 lightPos = m_lightCamera.GetEye();
- atcore_float3 lightAt = m_lightCamera.GetAt();
- atcore_float3 lightDir = m_lightCamera.GetZAxis();
-
- float depth = GetDistance();
-
- atcore_float2 newDelta = depth * delta;
-
- atcore_float3 disp = -1.0f * axisY * newDelta.y + axisX * newDelta.x;
-
- lightAt = lightAt + disp;
- lightPos = lightPos + disp;
-
- m_lightCamera.SetEye(lightPos);
- m_lightCamera.SetAt(lightAt);
- m_lightCamera.BuildViewMatrix();
-
- FitBounds();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-float Light::GetDistance() const
-{
- return m_lightCamera.GetLookDistance();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::SetDistance(float newdistance)
-{
- atcore_float3 lightPos = m_lightCamera.GetEye();
- atcore_float3 lightAt = m_lightCamera.GetAt();
- atcore_float3 lightDir = m_lightCamera.GetZAxis();
-
- lightPos = lightAt + newdistance * lightDir;
-
- m_lightCamera.SetEye(lightPos);
- m_lightCamera.BuildViewMatrix();
-
- FitBounds();
-
- return true;
-}
-//////////////////////////////////////////////////////////////////////////////
-void Light::BeginShadowMapRendering()
-{
- if (!m_pShadowMap) return;
-
- float clearDepth = m_lightCamera.UseLHS() ? FLT_MAX : -FLT_MAX;
- m_pShadowMap->BeginRendering(clearDepth);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::EndShadowMapRendering()
-{
- if (!m_pShadowMap) return;
-
- m_pShadowMap->EndRendering();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 Light::GetViewMatrix() const
-{
- return m_lightCamera.GetViewMatrix();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 Light::GetProjectionMatrix() const
-{
- return m_lightCamera.GetProjectionMatrix();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 Light::GetLightMatrix() const
-{
- atcore_float4x4 view = m_lightCamera.GetViewMatrix();
- atcore_float4x4 projection = m_lightCamera.GetProjectionMatrix();
-
- float mClip2Tex[] = {
- 0.5, 0, 0, 0,
- 0, -0.5, 0, 0,
- 0, 0, 1, 0,
- 0.5, 0.5, 0, 1
- };
- atcore_float4x4 clip2Tex = (atcore_float4x4&)mClip2Tex;
-
- atcore_float4x4 viewProjection = view * projection;
-
- atcore_float4x4 lightMatrix = viewProjection * clip2Tex;
-
- return lightMatrix;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Light::FillLightShaderParam(LightShaderParam &param)
-{
- const std::vector<Light> &lights = g_Lights;
-
- for (int i = 0; i < lights.size(); i++)
- {
- if (i >= 4)
- break;
-
- LightParam& lparam = param.m_lightParam[i];
- memset(&lparam, 0, sizeof(LightParam));
-
- const Light& light= lights[i];
-
- lparam.m_enable = light.m_enable;
- lparam.m_useShadows = light.m_useShadows;
-
- lparam.m_dir = light.getLightDirection();
- lparam.m_intensity = light.m_intensity;
- lparam.m_color = light.m_color;
- lparam.m_isEnvLight = light.m_isEnvLight;
- lparam.m_useEnvMap = light.m_isEnvLight && (m_pEnvTextureSRV != 0);
-
- float sceneUnit = GlobalSettings::Inst().getSceneUnitInCentimeters();
- lparam.m_depthBias = (sceneUnit > 0.0f) ? 1.0f / sceneUnit : 1.0f;
-
- if (light.UseLHS())
- {
- lparam.m_depthBias *= -1.0f;
- lparam.m_depthGain = -1.0f;
- lparam.m_lhs = true;
- }
- else
- {
- lparam.m_depthGain = 1.0f;
- lparam.m_lhs = false;
- }
-
- lparam.m_viewMatrix = light.GetViewMatrix();
- lparam.m_lightMatrix = light.GetLightMatrix();
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::draw(Camera* pCamera)
-{
- atcore_float3 lightPos = m_lightCamera.GetEye();
- atcore_float3 lightAt = m_lightCamera.GetAt();
-
- atcore_float4 color = gfsdk_makeFloat4(m_color.x, m_color.y, m_color.z, 1);
- if (m_enable == false)
- color = gfsdk_makeFloat4(0.5, 0.5, 0.5, 1);
-
- // draw light shape
- atcore_float4x4 lightMat = gfsdk_transpose(m_lightCamera.GetViewMatrix());
- gfsdk_setPosition(lightMat, lightPos);
-
- SimpleShaderParam param;
- {
- param.world = lightMat;
- param.view = pCamera->GetViewMatrix();
- param.projection = pCamera->GetProjectionMatrix();
- param.useVertexColor = false;
- param.color = color;
- }
-
- RenderInterface::CopyShaderParam(RenderInterface::SHADER_TYPE_SIMPLE_COLOR,
- (void*)&param, sizeof(SimpleShaderParam) );
-
- SimpleRenderable::Draw(SimpleRenderable::LIGHT);
-
- // draw light ray
- gfsdk_makeIdentity(param.world);
- RenderInterface::CopyShaderParam(RenderInterface::SHADER_TYPE_SIMPLE_COLOR,
- (void*)&param, sizeof(SimpleShaderParam) );
-
- SimpleRenderable::DrawLine(lightAt, lightPos);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::loadParameters(NvParameterized::Handle& handle)
-{
-#ifndef NV_ARTISTTOOLS
- NvParameterized::NvParameters* params = static_cast<NvParameterized::NvParameters*>(handle.getInterface());
- size_t offset = 0;
- nvidia::parameterized::HairProjectParametersNS::Light_Type* param = nullptr;
- params->getVarPtr(handle, (void*&)param, offset);
-
- m_enable = param->enable;
- m_useShadows = param->useShadows;
- m_visualize = param->visualize;
- m_intensity = param->intensity;
-
- memcpy(&m_color, &param->color, sizeof(atcore_float3));
-
- atcore_float3 axisX, axisY, axisZ, lightPos;
- memcpy(&axisX, &param->lightAxisX, sizeof(atcore_float3));
- memcpy(&axisY, &param->lightAxisY, sizeof(atcore_float3));
- memcpy(&axisZ, &param->lightAxisZ, sizeof(atcore_float3));
- memcpy(&lightPos, &param->lightPos, sizeof(atcore_float3));
-
- this->SetShadowMapResolution(param->shadowMapResolution);
-
- m_lightCamera.SetEye(lightPos);
- m_lightCamera.SetViewMatrix(axisX, axisY, axisZ);
- m_lightCamera.BuildViewMatrix();
-#else
- CoreLib::Inst()->Light_loadParameters(handle, this);
-#endif // NV_ARTISTTOOLS
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::saveParameters(NvParameterized::Handle& handle)
-{
-#ifndef NV_ARTISTTOOLS
- NvParameterized::NvParameters* params = static_cast<NvParameterized::NvParameters*>(handle.getInterface());
- size_t offset = 0;
- nvidia::parameterized::HairProjectParametersNS::Light_Type* param = nullptr;
- params->getVarPtr(handle, (void*&)param, offset);
-
- param->enable = m_enable;
- param->useShadows = m_useShadows;
- param->visualize = m_visualize;
- param->intensity = m_intensity;
-
- param->shadowMapResolution = m_shadowMapResolutionIndex;
-
- memcpy(&param->color, &m_color, sizeof(atcore_float3));
-
- {
- atcore_float3 axisX = m_lightCamera.GetXAxis();
- atcore_float3 axisY = m_lightCamera.GetYAxis();
- atcore_float3 axisZ = m_lightCamera.GetZAxis();
- atcore_float3 lightPos = m_lightCamera.GetEye();
-
- memcpy(&param->lightAxisX, &axisX, sizeof(atcore_float3));
- memcpy(&param->lightAxisY, &axisY, sizeof(atcore_float3));
- memcpy(&param->lightAxisZ, &axisZ, sizeof(atcore_float3));
- memcpy(&param->lightPos, &lightPos, sizeof(atcore_float3));
- }
-#else
- CoreLib::Inst()->Light_saveParameters(handle, this);
-#endif // NV_ARTISTTOOLS
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::SetEnvTextureFromFilePath(const char* textureFilePath)
-{
- Light* pLight = Light::GetFirstSelectedLight();
- if (!pLight || !pLight->m_isEnvLight)
- return false;
-
- m_envTextureFilePath = (textureFilePath) ? textureFilePath : "";
-
- SAFE_RELEASE(m_pEnvTextureSRV);
- if ((textureFilePath) && (strlen(textureFilePath) > 0))
- m_pEnvTextureSRV = RenderInterface::CreateTextureResource(textureFilePath);
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-const std::string& Light::GetEnvTextureFilePath()
-{
- return m_envTextureFilePath;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* Light::GetEnvTextureSRV()
-{
- return m_pEnvTextureSRV;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-GPUShaderResource* Light::GetShadowSRV(int i)
-{
- if ((i >= 3) || (i < 0))
- return 0;
-
- return g_Lights[i].GetShadowSRV();
-}
-
-bool Light::GetLinkLightOption()
-{
- return g_LinkLightOption;
-}
-
-void Light::SetLinkLightOption(bool val)
-{
- g_LinkLightOption = val;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-std::vector<Light>& Light::GetDefaultLights()
-{
- return g_Lights;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-Light* Light::GetFirstSelectedLight()
-{
- for (int i = 0; i < g_Lights.size(); i++)
- {
- if (g_Lights[i].m_selected)
- return &g_Lights[i];
- }
-
- return 0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-Light* Light::GetLight(int index)
-{
- if (index < 0)
- return 0;
- if (index >= g_Lights.size())
- return 0;
-
- return &g_Lights[index];
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Initialize()
-{
- g_Lights.resize(4);
-
- Light& keyLight = g_Lights[0];
- Light& fillLight = g_Lights[1];
- Light& rimLight = g_Lights[2];
- Light& envLight = g_Lights[3];
-
- atcore_float3 lookAt = gfsdk_makeFloat3(0.0f, 0.0f, 0.0f);
-
- keyLight.m_selected = true;
- keyLight.m_enable = true;
- keyLight.m_color = gfsdk_makeFloat3(1, 1, 1);
- keyLight.m_useShadows = true;
- keyLight.m_isEnvLight = false;
- keyLight.InitCamera(gfsdk_makeFloat3(100.0f, 25.0f, 0.0f), lookAt);
- keyLight.m_name = "Key Light";
-
- fillLight.m_enable = false;
- fillLight.m_color = gfsdk_makeFloat3(0.5, 0.5, 0.5);
- fillLight.m_useShadows = false;
- fillLight.m_isEnvLight = false;
- fillLight.InitCamera(gfsdk_makeFloat3(-100.0f, 0.0f, 25.0f), lookAt);
- fillLight.m_name = "Fill Light";
-
- rimLight.m_enable = false;
- rimLight.m_color = gfsdk_makeFloat3(0.25, 0.25, 0.25);
- rimLight.m_useShadows = false;
- rimLight.m_isEnvLight = false;
- rimLight.InitCamera(gfsdk_makeFloat3(0.0f, 100.0f, -25.0f), lookAt);
- rimLight.m_name = "Rim Light";
-
- envLight.m_enable = false;
- envLight.m_color = gfsdk_makeFloat3(0.25, 0.25, 0.25);
- envLight.m_useShadows = false;
- envLight.m_isEnvLight = true;
- envLight.InitCamera(gfsdk_makeFloat3(0.0f, 0.0f, 0.0f), lookAt);
- envLight.m_name = "Env Light";
-
- for (int i = 0; i < g_Lights.size(); i++)
- g_Lights[i].Init();
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::Shutdown()
-{
- for (int i = 0; i < g_Lights.size(); i++)
- g_Lights[i].Release();
-
- g_Lights.clear();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::FitLightCameras(atcore_float3& center, atcore_float3& extent)
-{
- for (int i = 0; i < g_Lights.size(); i++)
- {
- if (g_LinkLightOption && (i == FILL_LIGHT || i == RIM_LIGHT))
- continue;
-
- Light& light = g_Lights[i];
- light.SetBounds(&center, &extent);
- light.FitBounds(true);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::ResetUpDir(bool zup)
-{
- for (int i = 0; i < g_Lights.size(); i++)
- {
- Light& li = g_Lights[i];
- li.resetUpDir(zup);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::ResetLhs(bool lhs)
-{
- for (int i = 0; i < g_Lights.size(); i++)
- {
- Light& li = g_Lights[i];
- li.resetLhs(lhs);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::DrawLights(Camera* pCamera)
-{
- for (int i = 0; i < g_Lights.size(); i++)
- {
- Light& light = g_Lights[i];
- if (light.m_visualize)
- light.draw(pCamera);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-void Light::RenderShadowMap()
-{
- Light* pLight = Light::GetFirstSelectedLight();
- if (pLight)
- {
- float zNear = pLight->m_lightCamera.GetZNear();
- float zFar = pLight->m_lightCamera.GetZFar();
-
- if (pLight->UseLHS())
- RenderInterface::RenderShadowMap(pLight->GetShadowSRV(), zNear, zFar);
- else
- RenderInterface::RenderShadowMap(pLight->GetShadowSRV(), -zFar, -zNear);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::LoadParameters(NvParameterized::Handle& handle)
-{
- // load lights
- NvParameterized::Handle lightsHandle(handle);
- if (handle.getChildHandle(handle.getInterface(), "lights", lightsHandle) == NvParameterized::ERROR_NONE)
- {
- int numLights = 0;
- lightsHandle.getArraySize(numLights);
- if (numLights > g_Lights.size())
- numLights = g_Lights.size();
-
- for (int idx = 0; idx < numLights; ++idx)
- {
- NvParameterized::Handle lightHandle(lightsHandle);
- if (lightsHandle.getChildHandle(idx, lightHandle) == NvParameterized::ERROR_NONE)
- {
- g_Lights[idx].loadParameters(lightHandle);
- }
- }
- }
- return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-bool Light::SaveParameters(NvParameterized::Handle& outHandle)
-{
- NvParameterized::Handle lightsHandle(outHandle);
- if (outHandle.getChildHandle(outHandle.getInterface(), "lights", lightsHandle) == NvParameterized::ERROR_NONE)
- {
- int numLights = (int)g_Lights.size();
-
- lightsHandle.resizeArray(numLights);
-
- for (int idx = 0; idx < numLights; ++idx)
- {
- NvParameterized::Handle lightHandle(outHandle);
- if (lightsHandle.getChildHandle(idx, lightHandle) == NvParameterized::ERROR_NONE)
- {
- g_Lights[idx].saveParameters(lightHandle);
- }
- }
- }
- return true;
-}
-
-// END OF STATIC FUNCTIONS
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Light.h b/tools/ArtistTools/source/CoreLib/Scene/Light.h
deleted file mode 100644
index bbe4ef3..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Light.h
+++ /dev/null
@@ -1,152 +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"
-#ifndef NV_ARTISTTOOLS
-#include "ProjectParams.h"
-#else
-#include "NvParametersTypes.h"
-#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS
-#include "NvParameterized.h"
-#include "NvParameters.h"
-#include "NvParameterizedTraits.h"
-#include "NvTraitsInternal.h"
-#endif
-#endif // NV_ARTISTTOOLS
-#include "Camera.h"
-
-#include <string>
-#include <vector>
-
-#include "LightShaderParam.h"
-
-class GPUShaderResource;
-class ShadowMap;
-
-/////////////////////////////////////////////////////////////////////////
-// Utility class for light object
-/////////////////////////////////////////////////////////////////////////
-class CORELIB_EXPORT Light
-{
-public:
- bool m_enable;
- bool m_useShadows;
- bool m_visualize;
- bool m_isEnvLight;
- bool m_useEnvMap;
-
- bool m_selected;
-
- float m_intensity;
- atcore_float3 m_color;
-
- std::string m_name;
- int m_shadowMapResolutionIndex;
- int m_lightMapResolution;
-
- // public API to access 4 lights
- static std::vector<Light>& GetDefaultLights();
- static Light* GetLight(int index);
- static Light* GetFirstSelectedLight();
-
- static void Initialize();
- static void Shutdown();
- static void FitLightCameras(atcore_float3& center, atcore_float3& extent);
- static void ResetUpDir(bool zup);
- static void ResetLhs(bool lhs);
- static void DrawLights(Camera* pCamera);
- static void FillLightShaderParam(LightShaderParam &param);
- static bool LoadParameters(NvParameterized::Handle& handle);
- static bool SaveParameters(NvParameterized::Handle& outHandle);
- static void RenderShadowMap();
-
- static bool SetEnvTextureFromFilePath(const char* textureFilePath);
- static const std::string & GetEnvTextureFilePath();
- static GPUShaderResource* GetEnvTextureSRV();
- static GPUShaderResource* GetShadowSRV(int);
-
- static bool GetLinkLightOption();
- static void SetLinkLightOption(bool val);
-
-public:
- Light();
- ~Light();
-
- enum
- {
- KEY_LIGHT,
- FILL_LIGHT,
- RIM_LIGHT,
- ENV_LIGHT,
- };
-
- void Orbit(const atcore_float2& delta);
- void Pan(const atcore_float2& delta, const atcore_float3& axisX, const atcore_float3& axisY);
-
- bool UseLHS() const;
-
- float GetDistance() const;
- bool SetDistance(float newdistsance);
-
- void SetShadowMapResolution(int option);
- void BeginShadowMapRendering();
- void EndShadowMapRendering();
-
- GPUShaderResource* GetShadowSRV();
-
- atcore_float4x4 GetViewMatrix() const;
- atcore_float4x4 GetProjectionMatrix() const;
- atcore_float4x4 GetLightMatrix() const;
-
-protected:
- void Init();
- void Release();
-
- bool loadParameters(NvParameterized::Handle& handle);
- bool saveParameters(NvParameterized::Handle& outHandle);
-
- void SetBounds(atcore_float3* center, atcore_float3* extents = 0);
- void FitBounds(bool updateCenter = false);
-
- atcore_float3 getLightDirection() const;
- void InitCamera(const atcore_float3& from, const atcore_float3& lookAt);
-
- void draw(Camera* pCamera);
- void resetUpDir(bool zup);
- void resetLhs(bool zup);
-
-public:
-
- Camera m_lightCamera;
- ShadowMap* m_pShadowMap;
-
- atcore_float3 m_bbCenter;
- atcore_float3 m_bbExtent;
-};
diff --git a/tools/ArtistTools/source/CoreLib/Scene/MeshData.cpp b/tools/ArtistTools/source/CoreLib/Scene/MeshData.cpp
deleted file mode 100644
index 295ac7f..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/MeshData.cpp
+++ /dev/null
@@ -1,108 +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 "MeshData.h"
-
-#include "AnimUtil.h"
-#include "RenderResources.h"
-
-///////////////////////////////////////////////////////////////////////////////
-void CreateCPUResource(MeshData* pMeshData, const MeshDesc &meshDesc)
-{
- if (!pMeshData)
- return;
-
- pMeshData->m_NumVertices = meshDesc.m_NumVertices;
- pMeshData->m_NumIndices = meshDesc.m_NumTriangles * 3;
-
- int numIndices = pMeshData->m_NumIndices;
-
- pMeshData->m_pIndices = new NvUInt32[numIndices];
- pMeshData->m_pMeshVertices = new MeshData::MeshVertex[numIndices];
-
- NvUInt32* pVertUsed = new NvUInt32[meshDesc.m_NumVertices];
- memset(pVertUsed, meshDesc.m_NumVertices, sizeof(NvUInt32) * meshDesc.m_NumVertices);
- for (NvUInt32 i = 0; i < numIndices; i++)
- {
- NvUInt32 vidx = pMeshData->m_pIndices[i] = meshDesc.m_pIndices[i];
-
- MeshData::MeshVertex&v = pMeshData->m_pMeshVertices[i];
-
- v.pos = meshDesc.m_pVertices[vidx];
- v.vertexNormal = meshDesc.m_pVertexNormals[i];
- v.faceNormal = meshDesc.m_pFaceNormals[i];
- v.tangent = meshDesc.m_pTangents[i];
- v.texcoord = meshDesc.m_pTexCoords[i];
- v.vertexId = (float)vidx;
- pVertUsed[vidx] = i;
- }
- int numUniqueIndices = 0;
- for (NvUInt32 i = 0; i < meshDesc.m_NumVertices; i++)
- {
- if (meshDesc.m_NumVertices != pVertUsed[i])
- ++numUniqueIndices;
- }
- pMeshData->m_NumUniqueIndices = numUniqueIndices;
- pMeshData->m_pUniqueIndices = new NvUInt32[numUniqueIndices];
- for (NvUInt32 i = 0, idx = 0; i < meshDesc.m_NumVertices; i++)
- {
- if (meshDesc.m_NumVertices != pVertUsed[i])
- {
- pMeshData->m_pUniqueIndices[idx++] = pVertUsed[i];
- }
- }
- delete[] pVertUsed;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-MeshData* MeshData::Create(MeshDesc &meshDesc, SkinData& skinData)
-{
- MeshData* pMeshData = new MeshData;
-
- CreateCPUResource(pMeshData, meshDesc);
-
- pMeshData->m_GPUMeshResources = GPUMeshResources::Create(pMeshData, skinData);
-
- return pMeshData;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void MeshData::Release()
-{
- if (m_pMeshVertices)
- delete [] m_pMeshVertices;
-
- if (m_pIndices)
- delete [] m_pIndices;
-
- if (m_pUniqueIndices)
- delete[] m_pUniqueIndices;
-
- m_GPUMeshResources->Release();
- delete m_GPUMeshResources;
- m_GPUMeshResources = NULL;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Scene/MeshData.h b/tools/ArtistTools/source/CoreLib/Scene/MeshData.h
deleted file mode 100644
index f05207e..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/MeshData.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-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 "RenderResources.h"
-
-class MeshDesc;
-class SkinData;
-
-//////////////////////////////////////////////////////////////////////////////////////
-// Helper for rendering graphics mesh
-//////////////////////////////////////////////////////////////////////////////////////
-class CORELIB_EXPORT MeshData
-{
-public:
-
- struct MeshVertex
- {
- atcore_float3 pos;
- atcore_float3 vertexNormal;
- atcore_float3 faceNormal;
- atcore_float3 tangent;
- atcore_float2 texcoord;
- float vertexId;
- };
-
-public:
- static MeshData* Create(MeshDesc &meshDesc, SkinData& skinData);
- void Release();
-
-public:
- int m_NumVertices;
- int m_NumIndices;
-
- MeshVertex* m_pMeshVertices;
- NvUInt32* m_pIndices;
-
- // m_pUniqueIndices and m_NumUniqueIndices are used to boost bounding calculation in FurMesh.cpp
- NvUInt32* m_pUniqueIndices;
- NvUInt32 m_NumUniqueIndices;
-
- // gpu resources
- GPUMeshResources* m_GPUMeshResources;
-};
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Mouse.cpp b/tools/ArtistTools/source/CoreLib/Scene/Mouse.cpp
deleted file mode 100644
index f321157..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Mouse.cpp
+++ /dev/null
@@ -1,105 +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 "Mouse.h"
-
-//#include "windows.h"
-
-Mouse::Mouse()
-{
-}
-
-Mouse::~Mouse()
-{
- Free();
-}
-
-bool Mouse::Initialize(HINSTANCE hInstance, HWND hWnd)
-{
- /*
- if (FAILED(DirectInput8Create(hInstance, DIRECTINPUT_VERSION,
- IID_IDirectInput8, reinterpret_cast<void**>(&_pDirectInput), 0)))
- return false;
-
- if (FAILED(_pDirectInput->CreateDevice(GUID_SysMouse, &_pDevice, 0)))
- return false;
-
- if (FAILED(_pDevice->SetDataFormat(&c_dfDIMouse)))
- return false;
-
- if (FAILED(_pDevice->SetCooperativeLevel(hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE)))
- return false;
-
- if (FAILED(_pDevice->Acquire()))
- return false;
- */
- return true;
-}
-
-void Mouse::Free()
-{
- /*
- if (_pDevice)
- {
- _pDevice->Unacquire();
- _pDevice = NULL;
- }
-
- _pDirectInput = NULL;
- */
-}
-
-void Mouse::Update()
-{
- /*
- if (!_pDirectInput || !_pDevice)
- {
- return;
- }
-
- HRESULT hr;
-
- while (true)
- {
- hr = _pDevice->GetDeviceState(sizeof(DIMOUSESTATE), &_mouseState);
-
- if (FAILED(hr))
- {
- if (hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED)
- {
- if (FAILED(_pDevice->Acquire()))
- return;
- }
- }
- else
- {
- break;
- }
- }
- */
-}
diff --git a/tools/ArtistTools/source/CoreLib/Scene/Mouse.h b/tools/ArtistTools/source/CoreLib/Scene/Mouse.h
deleted file mode 100644
index 3cbd598..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/Mouse.h
+++ /dev/null
@@ -1,103 +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
-/*
-#define DIRECTINPUT_VERSION 0x0800
-#include <dinput.h>
-*/
-#include "windows.h"
-#include "MathUtil.h"
-
-class Mouse
-{
-public:
- Mouse();
- ~Mouse();
-
- /*
- enum Button
- {
- LEFT = 0x00,
- RIGHT = 0x01,
- MIDDLE = 0x02
- };
-
- bool IsButtonPressed(Button button) const
- {
- if (_mouseState.rgbButtons[button] & 0x80)
- return true;
- return false;
- }
- */
- void SetPosition(atcore_float2 position)
- {
- m_Position = position;
- }
-
- atcore_float2 GetDelta() const
- {
- return m_Delta;
- }
-
- void SetDelta(atcore_float2 position)
- {
- m_Delta = gfsdk_makeFloat2(
- static_cast<float>(position.x - m_Position.x),
- static_cast<float>(position.y - m_Position.y));
- m_Position = position;
- }
-
- float GetDeltaWheel() const
- {
- if (m_DeltaWheel > 0)
- return 1.0f;
- else if (m_DeltaWheel < 0)
- return -1.0f;
- else
- return 0.0f;
- }
-
- void SetDeltaWheel(float deltaWheel)
- {
- m_DeltaWheel = deltaWheel;
- }
-
- void Update();
- bool Initialize(HINSTANCE hInstance, HWND hWnd);
- void Free();
- /*
- IDirectInput8* _pDirectInput;
- IDirectInputDevice8* _pDevice;
- DIMOUSESTATE _mouseState;
- */
- atcore_float2 m_Position;
- atcore_float2 m_Delta;
- float m_DeltaWheel;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.cpp b/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.cpp
deleted file mode 100644
index dd89e4d..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.cpp
+++ /dev/null
@@ -1,1257 +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 "SimpleScene.h"
-
-#include "AppMainWindow.h"
-#include "Automate.h"
-#include "Backdoor.h"
-#include "Gamepad.h"
-#include "GlobalSettings.h"
-#include "Light.h"
-#include "Mouse.h"
-#include "SimpleRenderable.h"
-#include "Stats.h"
-#include "CorelibUtils.h"
-//#include "Timer.h"
-#include "ViewerOutput.h"
-
-#include "FoundationHolder.h"
-
-#include <NvAllocatorCallback.h>
-#include <NvErrorCallback.h>
-#include <NsAlignedMalloc.h>
-#include <NsVersionNumber.h>
-
-#include <Nv/Common/NvCoMemoryAllocator.h>
-
-#include "RenderInterface.h"
-#include "DeviceManager.h"
-
-#ifndef NV_ARTISTTOOLS
-#include "FurCharacter.h"
-#include "FurRenderer.h"
-#include "ProjectParams.h"
-#include "HairInstance.h"
-#include "HairSDK.h"
-
-namespace { // anonymous
-
-class ErrorCallback: public nvidia::NvErrorCallback
-{
- public:
- void reportError(nvidia::NvErrorCode::Enum code, const char* message, const char* file, int line) NV_OVERRIDE
- {
- if (code & (nvidia::NvErrorCode::eDEBUG_WARNING | nvidia::NvErrorCode::ePERF_WARNING))
- {
- viewer_warn("%s", message);
- return;
- }
- viewer_err("%s", message);
- if (code != nvidia::NvErrorCode::eNO_ERROR)
- {
- viewer_err("%s", message);
- }
- }
-};
-
-class AllocatorCallback: public nvidia::NvAllocatorCallback
-{
- public:
-
- void* allocate(size_t size, const char* typeName, const char* filename, int line) NV_OVERRIDE
- {
- return NvCo::MemoryAllocator::getInstance()->simpleAllocate(size);
- }
-
- void deallocate(void* ptr) NV_OVERRIDE
- {
- NvCo::MemoryAllocator::getInstance()->simpleDeallocate(ptr);
- }
-};
-
-} // namespace anonymous
-
-static AllocatorCallback s_allocator;
-static ErrorCallback s_error;
-
-// global singletons (can't create more than one instance)
-struct ProjectParamsContext* g_projectParamsContext = 0;
-
-class CustomLogger : public NvCo::Logger
-{
-public:
- virtual void log(NvCo::LogSeverity::Enum severity, const char* message, const char* functionName, const char* file, int line) NV_OVERRIDE
- {
- using namespace NvCo;
-
- switch (severity)
- {
- default:
- case LogSeverity::FATAL_ERROR:
- case LogSeverity::NON_FATAL_ERROR:
- viewer_err("%s", message);
- break;
- case LogSeverity::WARNING:
- viewer_warn("%s", message);
- break;
- case LogSeverity::INFO:
- viewer_info("%s", message);
- break;
- case LogSeverity::DEBUG_INFO:
- viewer_msg("%s", message);
- break;
- }
- }
- virtual void flush() NV_OVERRIDE {}
-};
-
-CustomLogger g_logHandler;
-#else
-#include "GPUProfiler.h"
-#include "MeshShaderParam.h"
-#include <Nv\Common\NvCoLogger.h>
-#endif // NV_ARTISTTOOLS
-
-Gamepad& theGamepad = Gamepad::Instance();
-Mouse g_mouse;
-Timer g_fpsTimer;
-Backdoor* g_pBackdoor;
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleScene* SimpleScene::Inst()
-{
- static SimpleScene scene;
- return &scene;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-SimpleScene::SimpleScene()
- :
- m_pCamera(0),
- m_pWindCamera(0),
- m_isProjectModified(false),
- m_isFurModified(false),
- m_isSceneLoading(false)
-{
-#ifndef NV_ARTISTTOOLS
- m_pFurCharacter = new FurCharacter;
-#endif // NV_ARTISTTOOLS
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::Initialize( HWND hWnd, int backdoor)
-{
- g_fpsTimer.Start();
-
- if(!InitCameraMouse(hWnd))
- return false;
-
- if (!SimpleRenderable::Initialize())
- return false;
-
- Light::Initialize();
-
- //nvidia::shdfnd::initializeSharedFoundation(NV_FOUNDATION_VERSION, s_allocator, s_error);
-
- FoundationHolder::GetFoundation();
-
- GPUProfiler_Initialize();
-
-
- if (backdoor == 1) // master mode
- g_pBackdoor = createBackdoor("BACKDOOR_SERVER","BACKDOOR_CLIENT");
-
- SetFurModified(false);
- SetProjectModified(false);
-
- CoreLib::Inst()->SimpleScene_Initialize(backdoor);
-
- AppMainWindow::Inst().updateUI();
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::Shutdown()
-{
-#ifndef SAFE_DELETE
-#define SAFE_DELETE(x) {if(x!=NV_NULL){delete x;x=NV_NULL;}}
-#endif
-
- SAFE_DELETE(m_pCamera);
- SAFE_DELETE(m_pWindCamera);
-
- GPUProfiler_Shutdown();
-
- SimpleRenderable::Shutdown();
- Light::Shutdown();
-
- if (g_pBackdoor)
- {
- g_pBackdoor->release();
- g_pBackdoor = nullptr;
- }
-
-#ifndef NV_ARTISTTOOLS
- GetFurCharacter().Clear();
-
- ShutdownBlastSDK();
-
- if (g_projectParamsContext)
- {
- ReleaseProjectParamsContext(g_projectParamsContext);
- g_projectParamsContext = nullptr;
- }
-#else
- CoreLib::Inst()->SimpleScene_Shutdown();
-#endif // NV_ARTISTTOOLS
-
- RenderInterface::Shutdown();
-
- nvidia::shdfnd::terminateSharedFoundation();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::Clear()
-{
- GlobalSettings::Inst().m_sceneLoaded = false;
- GlobalSettings::Inst().m_firstFrame = true;
-
-#ifndef NV_ARTISTTOOLS
- GetFurCharacter().Clear();
-#else
- CoreLib::Inst()->SimpleScene_Clear();
-#endif // NV_ARTISTTOOLS
-
- m_cameraBookmarks.clear();
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::InitCameraMouse(HWND hAppWnd)
-{
- // default camera pose settings
- m_pCamera = new Camera(GlobalSettings::Inst().m_zup, false);
- m_pCamera->SetDefaults();
-
- // init wind camera
- {
- m_pWindCamera = new Camera(false);
- m_pWindCamera->SetDefaults();
-
- GlobalSettings::Inst().m_windDir = m_pWindCamera->GetZAxis();
- }
-
- // init mouse
- g_mouse.Initialize(::GetModuleHandle(NV_NULL), (HWND)hAppWnd/*_hWidget*/);
-
- theGamepad.Initialize();
- return true;
-}
-
-float SimpleScene::NextTimeStep()
-{
- static LONGLONG g_lastRenderTicks = 0;
-
- // Work out the timestep
- LONGLONG ticks = g_fpsTimer.GetTicksElapsed();
- LONGLONG deltaTicks = ticks - g_lastRenderTicks;
- g_lastRenderTicks = ticks;
-
- float timeStep = deltaTicks / float(g_fpsTimer.GetTicksPerSecond());
-
- const float maxTimeStep = 0.1f;
-
- timeStep = (timeStep < 0.0f) ? 0.0f : timeStep;
- timeStep = (timeStep > maxTimeStep) ? maxTimeStep : timeStep;
-
- return timeStep;
-}
-
-Timer& SimpleScene::GetTimer()
-{
- return g_fpsTimer;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::Draw()
-{
- if (IsSceneLoading())
- return;
-
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- // draw background
- RenderInterface::ClearRenderWindow(0.35f, 0.35f, 0.35f);
- RenderInterface::RenderBackgroundTexture();
-
- globalSettings.setTimeStep(NextTimeStep());
- //globalSettings.setTimeStep(1.0f/60.0f);
-
- // increment frame timer
- if (globalSettings.m_animate)
- {
- globalSettings.stepAnimation();
- }
-
- if (globalSettings.m_playStopped)
- AppMainWindow::Inst().updateMainToolbar();
-
- // update camera
- UpdateCamera();
-
- // show ground grid
- if (globalSettings.m_showGrid)
- DrawGround();
-
- // draw wind icon
- if (globalSettings.m_visualizeWind)
- DrawWind();
-
- // draw axis lines
- if (globalSettings.m_showAxis)
- DrawAxis();
-
- // handle game pad
- theGamepad.Process();
-
- // visualize shadow map
- if (GlobalSettings::Inst().m_visualizeShadowMap)
- Light::RenderShadowMap();
-
- CoreLib::Inst()->SimpleScene_Draw_DX12();
-
- RenderInterface::SwitchToDX11();
-
- CoreLib::Inst()->SimpleScene_Draw_DX11();
-
- RenderInterface::FlushDX11();
-
- // draw lights
- Light::DrawLights(m_pCamera);
-
- // present current window
- RenderInterface::PresentRenderWindow();
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::Timeout()
-{
- if (m_pCamera == nullptr)
- {
- // this could be called when quiting. have to check nullptr
- return;
- }
-
- g_mouse.Update();
-
- if (IsAutomateMode())
- {
- AutomateRun();
- }
-
- Draw();
-
- if (g_pBackdoor)
- {
- int argc;
- const char **argv = g_pBackdoor->getInput(argc);
- if (argc > 0)
- {
- char message[1024];
- strcpy(message,"");
- for (int i = 0; i < argc; i++)
- {
- strcat(message, argv[i]);
- strcat(message," ");
- }
-
- viewer_info("Message received: %s", message);
- }
- }
-
-}
-
-#include <Shlwapi.h>
-#include <FbxUtil.h>
-
-///////////////////////////////////////////////////////////////////////////////
-bool
-SimpleScene::LoadSceneFromFbx(const char* dir, const char* fbxName)
-{
- return CoreLib::Inst()->SimpleScene_LoadSceneFromFbx(dir, fbxName);
-
- /*
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- char fbxFilePath[MAX_PATH];
-
- float sceneUnit = globalSettings.getSceneUnitInCentimeters();
-
- PathCombineA(fbxFilePath, dir, fbxName);
-
- AppMainWindow::Inst().setProgress("Initializing FBX loader", 0);
- FbxUtil::Initialize(fbxFilePath, sceneUnit);
-
- char rootBoneName[MAX_PATH];
- int upAxis = 0;
-
- FbxUtil::GetGlobalSettings(
- &globalSettings.m_frameStartTime,
- &globalSettings.m_frameEndTime,
- &globalSettings.m_animationFps,
- &upAxis, rootBoneName);
-
- if (upAxis == 1)
- SimpleScene::Inst()->ResetUpDir(false);
- else if (upAxis = 2)
- SimpleScene::Inst()->ResetUpDir(true);
-
-#ifndef NV_ARTISTTOOLS
- SimpleScene::Inst()->GetFurCharacter().LoadMeshFromFbx(dir, fbxName);
-#else
- CoreLib::Inst()->SimpleScene_LoadSceneFromFbx(dir, fbxName);
-#endif // NV_ARTISTTOOLS
-
- FbxUtil::Release();
-
- globalSettings.m_sceneLoaded = true;
- globalSettings.m_animationIndex = 1;
- globalSettings.m_firstFrame = true;
-
- //globalSettings.m_currentBoneIndex = findBoneByName(rootBoneName);
- globalSettings.resetAnimation();
-
- return true;
- */
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::LoadProject(const char* dir, const char* file)
-{
- Clear();
-
- GlobalSettings& globalSettings = GlobalSettings::Inst();
- globalSettings.m_projectFileDir = dir;
- globalSettings.m_projectFileName = file;
-
- CoreLib::Inst()->SimpleScene_LoadProject(dir, file);
-
- SetProjectModified(false);
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::LoadParameters(NvParameterized::Interface* iface)
-{
- m_isSceneLoading = true;
-
- AppMainWindow::Inst().startProgress();
-
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParameters* params = static_cast<nvidia::parameterized::HairProjectParameters*>(iface);
-
- nvidia::parameterized::HairProjectParametersNS::ParametersStruct& srcDesc = params->parameters();
-
- if (m_pCamera)
- {
- m_pCamera->LoadParameters(&srcDesc.camera);
- }
-
- LoadCameraBookmarks(iface);
-
- if (m_pWindCamera)
- {
- m_pWindCamera->LoadParameters(&srcDesc.windCamera);
- }
-
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- // Load scene settings
- globalSettings.m_repeatAnimation = srcDesc.scene.repeatAnimation;
- globalSettings.m_animationSpeed = srcDesc.scene.animationSpeed;
- globalSettings.m_showGrid = srcDesc.scene.showGrid;
- globalSettings.m_showAxis = srcDesc.scene.showAxis;
- globalSettings.m_zup = srcDesc.scene.upAxis == 1;
- globalSettings.m_sceneUnitIndex = srcDesc.scene.sceneUnitIndex;
-
- // Load renderer settings
- NvParameterized::Handle handle(iface);
-
- // Load fbx paths
- if (iface->getParameterHandle("fbxFilePaths", handle) == NvParameterized::ERROR_NONE)
- {
- int arraySize;
- handle.getArraySize(arraySize);
- char** strArray = new char*[arraySize];
- handle.getParamStringArray(strArray, arraySize);
- for (int idx = 0; idx < arraySize; ++idx)
- {
- LoadSceneFromFbx(
- globalSettings.m_projectFileDir.c_str(),
- strArray[idx]);
- }
- delete [] strArray;
- }
-
- // get general fur renderer settings
- if (iface->getParameterHandle("renderer", handle) == NvParameterized::ERROR_NONE)
- FurRenderer::LoadParameters(handle);
-
- // get fur character mesh setting
- if (false == GetFurCharacter().LoadMeshParameters(handle))
- return false;
-
- // Load apx paths (hair instances)
- if (iface->getParameterHandle("apxFilePaths", handle) == NvParameterized::ERROR_NONE)
- {
- if (false == GetFurCharacter().LoadHairParameters(handle))
- return false;
- }
-#else
- CoreLib::Inst()->SimpleScene_LoadParameters(iface);
-#endif // NV_ARTISTTOOLS
-
- m_isSceneLoading = false;
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::SaveProject(const char* dir, const char* file)
-{
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- globalSettings.m_projectFileDir = dir;
- globalSettings.m_projectFileName = file;
-
- std::string saveFilePath = globalSettings.getAbsoluteFilePath();
-
- std::string tempFilePath = utils::GetTempFilePath();
-
-#ifndef NV_ARTISTTOOLS
- if (ProjectParamsSave(g_projectParamsContext, tempFilePath.c_str(), this))
- {
- if (!utils::RenameFile(tempFilePath.c_str(), saveFilePath.c_str(), true /* overwrite */))
- {
- return false;
- }
- SetProjectModified(false);
- return true;
- }
-#else
- return CoreLib::Inst()->SimpleScene_SaveProject(dir, file);
-#endif // NV_ARTISTTOOLS
-
- return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::LoadBackgroundTextureFile()
-{
- QString texName = AppMainWindow::Inst().OpenTextureFile();
-
- return RenderInterface::LoadBackgroundTexture(texName.toLocal8Bit());
-}
-
-//////////////////////////////////////////////////////////////////////////
-void SimpleScene::ClearBackgroundTexture()
-{
- RenderInterface::ClearBackgroundTexture();
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-// slots and handlers / mouse / camera
-
-void SimpleScene::Resize( int w, int h )
-{
- RenderInterface::ResizeRenderWindow(w,h);
-
- m_pCamera->SetSize(w,h);
-
- UpdateCamera();
-
- SetProjectModified(true);
-}
-
-void SimpleScene::onMouseDown(atcore_float2 position)
-{
- g_mouse.SetPosition(position);
-}
-
-void SimpleScene::onMouseUp(atcore_float2 position)
-{
-}
-
-void SimpleScene::onMouseMove(atcore_float2 position)
-{
- g_mouse.SetDelta(position);
-}
-
-void SimpleScene::onMouseWheel(float deltaWheel)
-{
- g_mouse.SetDeltaWheel(deltaWheel);
-}
-
-QString SimpleScene::createBookmark()
-{
- QString bookmark = _generateBookmarkName();
- m_cameraBookmarks.append(CameraBookmark(bookmark, *m_pCamera));
- return bookmark;
-}
-
-void SimpleScene::removeBookmark(const QString& name)
-{
- int bookmarksCount = m_cameraBookmarks.size();
- for (int i = 0; i < bookmarksCount; ++i)
- {
- const CameraBookmark& bookmark = m_cameraBookmarks[i];
- if (bookmark.name == name)
- {
- m_cameraBookmarks.removeAt(i);
- break;
- }
- }
-}
-
-void SimpleScene::activateBookmark(const QString& name)
-{
- int bookmarksCount = m_cameraBookmarks.size();
- for (int i = 0; i < bookmarksCount; ++i)
- {
- const CameraBookmark& bookmark = m_cameraBookmarks[i];
- if (bookmark.name == name)
- {
- *m_pCamera = bookmark.camera;
- break;
- }
- }
-}
-
-void SimpleScene::renameBookmark(const QString& oldName, const QString& newName)
-{
- int bookmarksCount = m_cameraBookmarks.size();
- for (int i = 0; i < bookmarksCount; ++i)
- {
- CameraBookmark& bookmark = m_cameraBookmarks[i];
- if (bookmark.name == oldName)
- {
- bookmark.name = newName;
- break;
- }
- }
-}
-
-QList<QString> SimpleScene::getBookmarkNames()
-{
- QList<QString> names;
- int bookmarksCount = m_cameraBookmarks.size();
- for (int i = 0; i < bookmarksCount; ++i)
- {
- const CameraBookmark& bookmark = m_cameraBookmarks[i];
- names.append(bookmark.name);
- }
-
- return names;
-}
-
-void SimpleScene::Drag( char type )
-{
- g_mouse.Update();
-
- switch(type)
- {
- case 'R': RotateCamera(); break;
- case 'Z': ZoomCamera(); break;
- case 'P': PanCamera(); break;
- case 'L': RotateLightDirection(); break;
- case 'W': RotateWindDirection(); break;
-
- case 'K': PanLight(); break;
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::WheelZoom()
-{
- WheelZoomCamera();
- SetProjectModified(true);
-}
-
-void SimpleScene::PanCamera()
-{
- if (g_mouse.GetDelta().x != 0.0f || g_mouse.GetDelta().y != 0.0f)
- {
- int w = m_pCamera->GetWidth();
- int h = m_pCamera->GetHeight();
-
- atcore_float2 delta = g_mouse.GetDelta() * 2.0f;
- delta.x /= (float)(w);
- delta.y /= (float)(h);
- m_pCamera->Pan(delta);
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::ZoomCamera()
-{
- float dz = (- g_mouse.GetDelta().y);
-
- if (dz != 0.0f)
- {
- dz *= 5.0f / m_pCamera->GetHeight();
-
- m_pCamera->Dolly(dz);
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::WheelZoomCamera()
-{
- float dz = - g_mouse.GetDeltaWheel() ;
-
- if (dz != 0.0f)
- {
- dz /= 5.0f;
-
- m_pCamera->Dolly(dz);
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::RotateCamera()
-{
- if (g_mouse.GetDelta().x != 0.0f || g_mouse.GetDelta().y != 0.0f)
- {
- m_pCamera->Orbit(g_mouse.GetDelta() * 0.125f);
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::RotateLightDirection()
-{
- if (g_mouse.GetDelta().x != 0.0f || g_mouse.GetDelta().y != 0.0f)
- {
- atcore_float2 delta = g_mouse.GetDelta() * 0.5f;
- delta.y *= -1.0f;
-
- if (Light::GetLinkLightOption())
- {
- Light* pKeyLight = Light::GetLight(Light::KEY_LIGHT);
- Light* pFillLight = Light::GetLight(Light::FILL_LIGHT);
- Light* pRimLight = Light::GetLight(Light::RIM_LIGHT);
- if (pKeyLight->m_selected)
- {
- pKeyLight->Orbit(delta);
- pFillLight->Orbit(delta);
- pRimLight->Orbit(delta);
- }
- else
- {
- if (pFillLight->m_selected)
- {
- pFillLight->Orbit(delta);
- }
-
- if (pRimLight->m_selected)
- {
- pRimLight->Orbit(delta);
- }
- }
-
- Light* pEnvLight = Light::GetLight(Light::ENV_LIGHT);
- if (pEnvLight->m_selected)
- {
- pEnvLight->Orbit(delta);
- }
- }
- else
- {
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight)
- continue;
-
- if (pLight->m_selected)
- {
- pLight->Orbit(delta);
- }
- }
- }
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::PanLight()
-{
- if (g_mouse.GetDelta().x != 0.0f || g_mouse.GetDelta().y != 0.0f)
- {
- int w = m_pCamera->GetWidth();
- int h = m_pCamera->GetHeight();
-
- atcore_float2 delta = g_mouse.GetDelta() * 2.0f;
- delta.x /= (float)(w);
- delta.y /= (float)(h);
-
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight)
- continue;
-
- if (pLight->m_selected)
- pLight->Pan(delta, m_pCamera->GetXAxis(), m_pCamera->GetYAxis());
- }
- }
- SetProjectModified(true);
-}
-
-void SimpleScene::RotateWindDirection()
-{
- if (g_mouse.GetDelta().x != 0.0f || g_mouse.GetDelta().y != 0.0f)
- {
- m_pWindCamera->Orbit(g_mouse.GetDelta() * 0.5f);
-
- GlobalSettings::Inst().m_windDir = m_pWindCamera->GetZAxis();
- }
-
- SetProjectModified(true);
-}
-
-QString SimpleScene::_generateBookmarkName()
-{
- QString name;
- for (int i = 1; ; i++)
- {
- name = QString("View%1").arg(i, 2, 10, QChar('0'));
- int found = -1;
- int bookmarksCount = m_cameraBookmarks.size();
- for (int j = 0; j < bookmarksCount; ++j)
- {
- const CameraBookmark& bookmark = m_cameraBookmarks[j];
- if (bookmark.name == name)
- {
- found = j;
- break;
- }
- }
-
- if (-1 == found)
- break;
- }
- return name;
-}
-
-void SimpleScene::UpdateCamera()
-{
- if (!m_pCamera)
- return;
-
- float sceneUnit = GlobalSettings::Inst().getSceneUnitInCentimeters() ;
- float fov = (GlobalSettings::Inst().m_fovAngle / 360.0f) * 3.141592653589793;
-
- m_pCamera->SetFOV(fov);
-
- int w = m_pCamera->GetWidth();
- int h = m_pCamera->GetHeight();
-
- float aspect = ((float)(w) / (float)(h));
-
- float minZ = 1.0f;
- float maxZ = 10000.0f; // should calculate dynamically
-/*
- if (sceneUnit != 0.0f)
- {
- minZ /= sceneUnit;
- maxZ /= sceneUnit;
- }
-*/
- m_pCamera->SetAspetRatio(aspect);
- m_pCamera->SetZFar(maxZ);
- m_pCamera->SetZNear(minZ);
-
- m_pCamera->Perspective();
-
- CoreLib::Inst()->SimpleScene_UpdateCamera();
-}
-
-void SimpleScene::FitCamera()
-{
- if (!m_pCamera)
- return;
-
- atcore_float3 center, extents;
-
-#ifndef NV_ARTISTTOOLS
- if (m_pFurCharacter)
- m_pFurCharacter->ComputeBounds(center, extents, false);
-#else
- bool valid = CoreLib::Inst()->SimpleScene_FitCamera(center, extents);
- if (!valid)
- {
- return;
- }
-#endif // NV_ARTISTTOOLS
-
- m_pCamera->FitBounds(center, extents);
-}
-
-void SimpleScene::ResetUpDir(bool zup)
-{
- m_pCamera->ResetUpDir(zup);
- m_pWindCamera->ResetUpDir(zup);
- Light::ResetUpDir(zup);
-
- GlobalSettings::Inst().m_zup = zup;
-
- CoreLib::Inst()->SimpleScene_ResetUpDir(zup);
-
- SetProjectModified(true);
-}
-
-void SimpleScene::ResetLhs(bool lhs)
-{
- m_pCamera->ResetLhs(lhs);
- m_pWindCamera->ResetLhs(lhs);
- Light::ResetLhs(lhs);
-
- GlobalSettings::Inst().m_lhs = lhs;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::SaveParameters(NvParameterized::Interface* iface)
-{
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParameters* params = static_cast<nvidia::parameterized::HairProjectParameters*>(iface);
- nvidia::parameterized::HairProjectParametersNS::ParametersStruct& targetDesc = params->parameters();
-
- if (m_pCamera)
- m_pCamera->SaveParameters(&targetDesc.camera);
-
- SaveCameraBookmarks(iface);
-
- if (m_pWindCamera)
- m_pWindCamera->SaveParameters(&targetDesc.windCamera);
-
- // Save scene settings
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- targetDesc.scene.repeatAnimation = globalSettings.m_repeatAnimation;
- targetDesc.scene.animationSpeed = globalSettings.m_animationSpeed;
- targetDesc.scene.showGrid = globalSettings.m_showGrid;
- targetDesc.scene.showAxis = globalSettings.m_showAxis;
-
- targetDesc.scene.upAxis = (globalSettings.m_zup) ? 1 : 2;
- targetDesc.scene.sceneUnitIndex = globalSettings.m_sceneUnitIndex;
-
- FurCharacter& character = GetFurCharacter();
- NvParameterized::Handle handle(iface);
-
- // Save renderer settings
- if (iface->getParameterHandle("renderer", handle) == NvParameterized::ERROR_NONE)
- {
- FurRenderer::SaveParameters(handle);
- character.SaveMeshParameters(handle);
- }
-
- if (iface->getParameterHandle("renderer.textureFilePath", handle) == NvParameterized::ERROR_NONE)
- {
- std::string textureFilePath = globalSettings.getRelativePath(globalSettings.m_backgroundTextureFilePath.c_str());
- handle.setParamString(textureFilePath.c_str());
- }
-
- // save hair path
- if (iface->getParameterHandle("apxFilePaths", handle) == NvParameterized::ERROR_NONE)
- character.SaveHairParameters(handle);
-#else
- CoreLib::Inst()->SimpleScene_SaveParameters(iface);
-#endif // NV_ARTISTTOOLS
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::LoadCameraBookmarks(NvParameterized::Interface* iface)
-{
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParameters* params = static_cast<nvidia::parameterized::HairProjectParameters*>(iface);
- nvidia::parameterized::HairProjectParametersNS::ParametersStruct& srcDesc = params->parameters();
- nvidia::parameterized::HairProjectParametersNS::CameraBookmark_DynamicArray1D_Type& bookmarks = srcDesc.cameraBookmarks;
-
- NvParameterized::Handle cameraBookmarksHandle(iface);
- if (iface->getParameterHandle("cameraBookmarks", cameraBookmarksHandle) != NvParameterized::ERROR_NONE)
- return false;
-
- int numCameraBookmarks = 0;
- cameraBookmarksHandle.getArraySize(numCameraBookmarks);
- for (int idx = 0; idx < numCameraBookmarks; ++idx)
- {
- NvParameterized::Handle cameraBookmarkHandle(cameraBookmarksHandle);
- if (cameraBookmarksHandle.getChildHandle(idx, cameraBookmarkHandle) == NvParameterized::ERROR_NONE)
- {
- CameraBookmark cameraBookmark;
- cameraBookmark.camera.LoadParameters((void*)&(bookmarks.buf[idx].camera));
- cameraBookmark.camera.SetSize(m_pCamera->GetWidth(), m_pCamera->GetHeight());
- cameraBookmark.name = bookmarks.buf[idx].name.buf;
- m_cameraBookmarks.append(cameraBookmark);
- }
- }
-#else
- CoreLib::Inst()->SimpleScene_LoadCameraBookmarks(iface);
-#endif // NV_ARTISTTOOLS
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool SimpleScene::SaveCameraBookmarks(NvParameterized::Interface* iface)
-{
-#ifndef NV_ARTISTTOOLS
- nvidia::parameterized::HairProjectParameters* params = static_cast<nvidia::parameterized::HairProjectParameters*>(iface);
- nvidia::parameterized::HairProjectParametersNS::ParametersStruct& srcDesc = params->parameters();
- nvidia::parameterized::HairProjectParametersNS::CameraBookmark_DynamicArray1D_Type& bookmarks = srcDesc.cameraBookmarks;
-
- NvParameterized::Handle cameraBookmarksHandle(iface);
- if (iface->getParameterHandle("cameraBookmarks", cameraBookmarksHandle) != NvParameterized::ERROR_NONE)
- return false;
-
- int numCameraBookmarks = m_cameraBookmarks.size();
- cameraBookmarksHandle.resizeArray(numCameraBookmarks);
-
- for (int idx = 0; idx < numCameraBookmarks; ++idx)
- {
- NvParameterized::Handle cameraBookmarkHandle(cameraBookmarksHandle);
- if (cameraBookmarksHandle.getChildHandle(idx, cameraBookmarkHandle) == NvParameterized::ERROR_NONE)
- {
- NvParameterized::Handle tempHandle(cameraBookmarkHandle);
- CameraBookmark& bookmark = m_cameraBookmarks[idx];
-
- if (ParamGetChild(cameraBookmarkHandle, tempHandle, "name"))
- {
- tempHandle.setParamString(bookmark.name.toStdString().c_str());
- }
-
- bookmark.camera.SaveParameters((void*)&(bookmarks.buf[idx].camera));
- }
- }
-#else
- CoreLib::Inst()->SimpleScene_SaveCameraBookmarks(iface);
-#endif // NV_ARTISTTOOLS
-
- return true;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::sendParam(const char *str, NvFloat32 v)
-{
- if (g_pBackdoor)
- {
- char message[1024];
- sprintf(message, "%s %f", str, v);
-// viewer_info(message);
- g_pBackdoor->send("%s", message);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::sendParam(const char *str, NvUInt32 v)
-{
- if (g_pBackdoor)
- {
- char message[1024];
- sprintf(message, "%s %d", str, v);
-// viewer_info(message);
- g_pBackdoor->send("%s", message);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::sendParam(const char *str, atcore_float3 v)
-{
- if (g_pBackdoor)
- {
- char message[1024];
- sprintf(message, "%s %f %f %f", str, v.x, v.y, v.z);
-// viewer_info(message);
- g_pBackdoor->send("%s", message);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::sendParam(const char *str, atcore_float4 v)
-{
- if (g_pBackdoor)
- {
- char message[1024];
- sprintf(message, "%s %f %f %f %f", str, v.x, v.y, v.z, v.w);
-// viewer_info(message);
- g_pBackdoor->send("%s", message);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::sendParam(const char *str, NvBoolean v)
-{
- if (g_pBackdoor)
- {
- char message[1024];
- sprintf(message, "%s %d", str, int(v));
-// viewer_info(message);
- g_pBackdoor->send("%s", message);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::DrawGround()
-{
- bool zup = GlobalSettings::Inst().m_zup;
-
- SimpleShaderParam param;
- {
- param.useVertexColor = true;
- gfsdk_makeIdentity(param.world);
- param.view = m_pCamera->GetViewMatrix();
- param.projection = m_pCamera->GetProjectionMatrix();
- }
- RenderInterface::CopyShaderParam(RenderInterface::SHADER_TYPE_SIMPLE_COLOR,
- (void*)&param, sizeof(SimpleShaderParam) );
-
- SimpleRenderable::Draw(
- zup ? SimpleRenderable::GROUND_ZUP :
- SimpleRenderable::GROUND_YUP, false);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::DrawWind()
-{
- // Convert camera axis into world matrix
- atcore_float4x4 windMat = gfsdk_transpose(m_pWindCamera->GetViewMatrix());
-
- // Extract rotation axis from the view matrix
- atcore_float4x4 viewMat = m_pCamera->GetViewMatrix();
- if (m_pCamera->UseLHS())
- gfsdk_setPosition(viewMat, gfsdk_makeFloat3(0, 0, 80));
- else
- gfsdk_setPosition(viewMat, gfsdk_makeFloat3(0, 0, -80));
-
- SimpleShaderParam param;
- {
- param.useVertexColor = true;
- param.world = windMat;
- param.view = viewMat;
- param.projection = m_pCamera->GetProjectionMatrix();
- }
- RenderInterface::CopyShaderParam(RenderInterface::SHADER_TYPE_SIMPLE_COLOR,
- (void*)&param, sizeof(SimpleShaderParam) );
-
- int targetWidth = m_pCamera->GetWidth();
- int targetHeight = m_pCamera->GetHeight();
- float aspectRatio = (float)targetWidth / (float)targetHeight;
-
- // Wind view size
- const int srcHeight = 64;
- const int srcWidth = aspectRatio*srcHeight;
- const int originX = 64;
-
- RenderInterface::Viewport savedVP, vp;
- RenderInterface::GetViewport(savedVP);
-
- // set the viewport transform
- {
- vp.TopLeftX = originX + ( (srcWidth > srcHeight) ? (srcHeight - srcWidth)/2.0f : 0);
- vp.TopLeftY = targetHeight-srcHeight;
- vp.Width = (float)srcWidth;
- vp.Height = (float)srcHeight;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
-
- RenderInterface::SetViewport(vp);
-
- bool zUP = GlobalSettings::Inst().m_zup;
- SimpleRenderable::Draw(zUP ?
- SimpleRenderable::WIND_ZUP :
- SimpleRenderable::WIND_YUP, false);
-
- // Restore states
- RenderInterface::SetViewport(savedVP);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void SimpleScene::DrawAxis()
-{
- // Extract rotation axis from the view matrix
- atcore_float4x4 viewMat = m_pCamera->GetViewMatrix();
- if (m_pCamera->UseLHS())
- gfsdk_setPosition(viewMat, gfsdk_makeFloat3(0, 0, 4));
- else
- gfsdk_setPosition(viewMat, gfsdk_makeFloat3(0, 0, -4));
-
- SimpleShaderParam param;
- {
- param.useVertexColor = true;
- gfsdk_makeIdentity(param.world);
- param.view = viewMat;
- param.projection = m_pCamera->GetProjectionMatrix();
- }
- RenderInterface::CopyShaderParam(RenderInterface::SHADER_TYPE_SIMPLE_COLOR,
- (void*)&param, sizeof(SimpleShaderParam) );
-
- int targetWidth = m_pCamera->GetWidth();
- int targetHeight = m_pCamera->GetHeight();
- float aspectRatio = (float)targetWidth / (float)targetHeight;
-
- // Axis view size
- const int srcHeight = 64;
- const int srcWidth = aspectRatio*srcHeight;
-
- RenderInterface::Viewport savedVP, vp;
- RenderInterface::GetViewport(savedVP);
-
- // set the viewport transform
- {
- vp.TopLeftX = (srcWidth > srcHeight) ? (srcHeight - srcWidth)/2.0f : 0; // To make it like a square view
- vp.TopLeftY = targetHeight-srcHeight;
- vp.Width = (float)srcWidth;
- vp.Height = (float)srcHeight;
- vp.MinDepth = 0.0f;
- vp.MaxDepth = 1.0f;
- }
-
- RenderInterface::SetViewport(vp);
-
- bool zUP = GlobalSettings::Inst().m_zup;
- SimpleRenderable::Draw(zUP ?
- SimpleRenderable::AXIS_ZUP :
- SimpleRenderable::AXIS_YUP, false);
-
- RenderInterface::SetViewport(savedVP);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.h b/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.h
deleted file mode 100644
index 79597d2..0000000
--- a/tools/ArtistTools/source/CoreLib/Scene/SimpleScene.h
+++ /dev/null
@@ -1,213 +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 <Windows.h>
-#include "MathUtil.h"
-#include <QtCore/QList>
-#include <QtCore/QMap>
-#include "Camera.h"
-#include "Timer.h"
-#include <DirectXMath.h>
-class FurCharacter;
-
-class DeviceManager;
-class SampleManager;
-
-namespace NvParameterized
-{
- class Interface;
-}
-
-struct CameraBookmark
-{
- CameraBookmark()
- {
- }
- CameraBookmark(const QString& inName, const Camera& inCamera)
- : name(inName)
- , camera(inCamera)
- {
- }
- QString name;
- Camera camera;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////
-// This scene object does the followings
-// - handles the overall project settings load/save
-// - owns and calls FurRenderer's draw functions
-// - owns and handle main camera and mouse callbacks
-// - owns and handles backdoor communication with the SDK and game engines
-//////////////////////////////////////////////////////////////////////////////////////
-class CORELIB_EXPORT SimpleScene
-{
-public:
- SimpleScene();
-
- static SimpleScene* Inst();
-
- // prepare shaders, manage objects
- bool Initialize(HWND hWnd, int backdoor = 0);
-
- bool LoadProject(const char* dir, const char* file);
- bool SaveProject(const char* dir, const char* file);
- bool LoadParameters(NvParameterized::Interface* iface);
- bool SaveParameters(NvParameterized::Interface* iface);
- bool LoadCameraBookmarks(NvParameterized::Interface* iface);
- bool SaveCameraBookmarks(NvParameterized::Interface* iface);
- bool Clear();
-
- bool LoadSceneFromFbx(const char* dir, const char* fbxName);
-
- bool IsUpdatingUI() { return m_isUpdatingUI; }
- void setIsUpdatingUI(bool b) { m_isUpdatingUI = b;}
- bool IsSceneLoading() { return m_isSceneLoading; }
-
- Camera* GetCamera() { return m_pCamera; }
- FurCharacter& GetFurCharacter() { return *m_pFurCharacter; }
- void SetFurCharacter(FurCharacter* pFurCharacter) { m_pFurCharacter = pFurCharacter; }
-
- DeviceManager& GetDeviceManager() { return *m_pDeviceManager; }
- void SetDeviceManager(DeviceManager* pDeviceManager) { m_pDeviceManager = pDeviceManager; }
- SampleManager& GetSampleManager() { return *m_pSampleManager; }
- void SetSampleManager(SampleManager* pSampleManager) { m_pSampleManager = pSampleManager; }
-
- void ResetUpDir(bool zup);
- void ResetLhs(bool lhs);
-
- bool LoadBackgroundTextureFile();
- void ClearBackgroundTexture();
-
- // backdoor
- void sendParam(const char *str, NvFloat32 v);
- void sendParam(const char *str, NvUInt32 v);
- void sendParam(const char *str, atcore_float3 v);
- void sendParam(const char *str, atcore_float4 v);
- void sendParam(const char *str, NvBoolean v);
-
- bool IsFurModified() const { return m_isFurModified; }
- bool IsProjectModified() const { return m_isProjectModified; }
- void SetFurModified(bool isModified) { m_isFurModified = isModified; }
- void SetProjectModified(bool isModified) { m_isProjectModified = isModified; }
-
- void UpdateCamera();
- void FitCamera();
-
- void Draw();
- void Timeout();
- void Resize(int w, int h);
- void Drag(char type);
- void WheelZoom();
- void Shutdown();
-
- void onMouseDown(atcore_float2 position);
- void onMouseUp(atcore_float2 position);
- void onMouseMove(atcore_float2 position);
- void onMouseWheel(float deltaWheel);
-
- QString createBookmark();
- void removeBookmark(const QString& name);
- void activateBookmark(const QString& name);
- void renameBookmark(const QString& oldName, const QString& newName);
- QList<QString> getBookmarkNames();
-
- static float NextTimeStep();
-
- Timer& GetTimer();
-
- DirectX::XMMATRIX GetViewMatrix() const
- {
- atcore_float4x4& matrix = m_pCamera->_viewMatrix;
- return DirectX::XMMATRIX(
- matrix._11, matrix._12, matrix._13, matrix._14,
- matrix._21, matrix._22, matrix._23, matrix._24,
- matrix._31, matrix._32, matrix._33, matrix._34,
- matrix._41, matrix._42, matrix._43, matrix._44);
- }
- DirectX::XMMATRIX GetProjMatrix() const
- {
- atcore_float4x4& matrix = m_pCamera->_projectionMatrix;
- return DirectX::XMMATRIX(
- matrix._11, matrix._12, matrix._13, matrix._14,
- matrix._21, matrix._22, matrix._23, matrix._24,
- matrix._31, matrix._32, matrix._33, matrix._34,
- matrix._41, matrix._42, matrix._43, matrix._44);
- }
- DirectX::XMVECTOR GetEyePt() const
- {
- return DirectX::XMLoadFloat3(
- reinterpret_cast<const DirectX::XMFLOAT3*>(&m_pCamera->_eye));
- }
- DirectX::XMVECTOR GetLookAtPt() const
- {
- return DirectX::XMLoadFloat3(
- reinterpret_cast<const DirectX::XMFLOAT3*>(&m_pCamera->_at));
- }
-private:
- // initialize scene components
- bool InitCameraMouse(HWND hAppWnd);
- bool InitFurSDK();
-
- void DrawGround();
- void DrawAxis();
- void DrawHUD();
- void DrawWind();
-
- // camera / mouse
- void PanCamera();
- void ZoomCamera();
- void WheelZoomCamera();
- void RotateCamera();
-
- void RotateLightDirection();
- void PanLight();
-
- void RotateWindDirection();
-
- QString _generateBookmarkName();
-
-public:
-
- Camera* m_pCamera;
- Camera* m_pWindCamera;
-
- QList<CameraBookmark> m_cameraBookmarks;
-
- FurCharacter* m_pFurCharacter;
-
- DeviceManager* m_pDeviceManager;
- SampleManager* m_pSampleManager;
-
- bool m_isProjectModified;
- bool m_isFurModified;
- bool m_isSceneLoading;
- bool m_isUpdatingUI;
-};
-
diff --git a/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.qrc b/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.qrc
deleted file mode 100644
index 3ec3217..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.qrc
+++ /dev/null
@@ -1,36 +0,0 @@
-<RCC>
- <qresource prefix="AppMainWindow">
- <file>images/TextureBox.bmp</file>
- <file>images/CheckBox.png</file>
- <file>images/ArrowUp.png</file>
- <file>images/ArrowDown.png</file>
- <file>images/transportLoop.png</file>
- <file>images/transportPlay.png</file>
- <file>images/transportRewind.png</file>
- <file>images/transportStepForward.png</file>
- <file>images/transportStop.png</file>
- <file>images/simulationPlay.png</file>
- <file>images/simulationStop.png</file>
- <file>images/simulationStep.png</file>
- <file>images/DarkBorder.png</file>
- <file>images/openFile.png</file>
- <file>images/importFile.png</file>
- <file>images/saveDisc.png</file>
- <file>images/refreshReload.png</file>
- <file>images/TextureEnabled_icon.png</file>
- <file>images/TextureDisabled_icon.png</file>
- <file>images/TextureIsUsed_icon.png</file>
- <file>images/Remove_icon.png</file>
- <file>images/Refresh_icon.png</file>
- <file>images/CurveEditor.png</file>
- <file>images/Add.png</file>
- <file>images/Up.png</file>
- <file>images/Down.png</file>
- <file>images/EditWrench.png</file>
- <file>images/playlist.png</file>
- <file>images/visibilityToggle_notVisible.png</file>
- <file>images/visibilityToggle_visible.png</file>
- <file>ThemeDark.qss</file>
- </qresource>
-</RCC>
- \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.ui b/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.ui
deleted file mode 100644
index da546fa..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/AppMainWindow.ui
+++ /dev/null
@@ -1,428 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>AppMainWindowClass</class>
- <widget class="QMainWindow" name="AppMainWindowClass">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>1078</width>
- <height>683</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Blast Viewer</string>
- </property>
- <property name="styleSheet">
- <string notr="true"/>
- </property>
- <widget class="QWidget" name="centralWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="renderLayout"/>
- </item>
- </layout>
- </widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>1078</width>
- <height>21</height>
- </rect>
- </property>
- </widget>
- <widget class="QStatusBar" name="statusBar"/>
- <widget class="QDockWidget" name="dockWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>370</width>
- <height>140</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>524287</width>
- <height>10000</height>
- </size>
- </property>
- <property name="styleSheet">
- <string notr="true"/>
- </property>
- <property name="features">
- <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
- </property>
- <property name="allowedAreas">
- <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
- </property>
- <property name="windowTitle">
- <string>Attributes</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>2</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents">
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="leftMargin">
- <number>3</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QTabWidget" name="sideBarTab">
- <property name="currentIndex">
- <number>0</number>
- </property>
- <!--
- <widget class="QWidget" name="tabFur">
- <attribute name="title">
- <string>Hair</string>
- </attribute>
- <layout class="QGridLayout" name="gridLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item row="1" column="0">
- <widget class="QFrame" name="furMaterialEditorArea">
- <layout class="QVBoxLayout" name="furMaterialEditorAreaLayout">
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- </layout>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QScrollArea" name="furScrollArea">
- <property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAsNeeded</enum>
- </property>
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="furScrollAreaContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>359</width>
- <height>481</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="furScrollAreaLayout">
- <property name="spacing">
- <number>3</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- -->
- <widget class="QWidget" name="tabDisplay">
- <attribute name="title">
- <string>Settings</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QScrollArea" name="displayScrollArea">
- <property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAsNeeded</enum>
- </property>
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="displayScrollAreaContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>359</width>
- <height>491</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="displayScrollAreaLayout">
- <property name="spacing">
- <number>3</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <widget class="QDockWidget" name="dockOutputWindow">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Ignored">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>256</width>
- <height>100</height>
- </size>
- </property>
- <property name="features">
- <set>QDockWidget::AllDockWidgetFeatures</set>
- </property>
- <property name="allowedAreas">
- <set>Qt::AllDockWidgetAreas</set>
- </property>
- <property name="windowTitle">
- <string>Output Window</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>8</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_4">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="OutputWindow" name="outputWindow" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="openExternalLinks" stdset="0">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <!--
- <widget class="QDockWidget" name="dockWidgetCurveEditor">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Ignored">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>160</width>
- <height>50</height>
- </size>
- </property>
- <property name="windowTitle">
- <string>Curve Editor</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>8</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents_3">
- <layout class="QVBoxLayout" name="verticalLayout_5">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QFrame" name="furCurveEditorArea">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="furCurveEditorAreaLayout">
- <property name="spacing">
- <number>3</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- -->
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <customwidgets>
- <customwidget>
- <class>OutputWindow</class>
- <extends>QWidget</extends>
- <header>outputwindow.h</header>
- </customwidget>
- </customwidgets>
- <resources>
- <include location="AppMainWindow.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/CameraBookmarksDialog.ui b/tools/ArtistTools/source/CoreLib/UI/CameraBookmarksDialog.ui
deleted file mode 100644
index e914b60..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/CameraBookmarksDialog.ui
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>CameraBookmarksDialog</class>
- <widget class="QDialog" name="CameraBookmarksDialog">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>300</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>CameraBookmarksDialog</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QListWidget" name="listWidgetBookmarks"/>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QLabel" name="labelBookmarkName">
- <property name="text">
- <string>Bookmark name:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="editBookmarkName"/>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QPushButton" name="btnRename">
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>23</height>
- </size>
- </property>
- <property name="text">
- <string>rename</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnDelete">
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>23</height>
- </size>
- </property>
- <property name="text">
- <string>delete</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/DisplayLightPanel.ui b/tools/ArtistTools/source/CoreLib/UI/DisplayLightPanel.ui
deleted file mode 100644
index 41514f5..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/DisplayLightPanel.ui
+++ /dev/null
@@ -1,645 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DisplayLightPanel</class>
- <widget class="QWidget" name="DisplayLightPanel">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>340</width>
- <height>315</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QGridLayout" name="gridLayout">
- <item row="10" column="0" colspan="2">
- <widget class="QListWidget" name="listSelectedLight">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>320</width>
- <height>60</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>320</width>
- <height>60</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="12" column="1">
- <widget class="QCheckBox" name="btnLightEnable">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="20" column="0">
- <widget class="QLabel" name="label_1">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Color</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="20" column="1">
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="spacing">
- <number>4</number>
- </property>
- <item>
- <widget class="QPushButton" name="btnLightColor">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="accessibleName">
- <string/>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="flat">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnLightColorTex">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="whatsThis">
- <string/>
- </property>
- <property name="accessibleName">
- <string/>
- </property>
- <property name="accessibleDescription">
- <string/>
- </property>
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="flat">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnLightColorTexReload">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="whatsThis">
- <string/>
- </property>
- <property name="accessibleName">
- <string/>
- </property>
- <property name="accessibleDescription">
- <string/>
- </property>
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="flat">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnLightColorTexClear">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="whatsThis">
- <string/>
- </property>
- <property name="accessibleName">
- <string/>
- </property>
- <property name="accessibleDescription">
- <string/>
- </property>
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="flat">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="30" column="0">
- <widget class="QLabel" name="label_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Intensity</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="30" column="1">
- <widget class="SlideSpinBox&lt;QDoubleSpinBox, double&gt;" name="spinLightIntensity" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>20</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="40" column="0">
- <widget class="QLabel" name="label_3">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Cast Shadow</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="40" column="1">
- <widget class="QCheckBox" name="btnLightUseShadow">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="50" column="0">
- <widget class="QLabel" name="label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Shadow Map Resolution</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="50" column="1">
- <widget class="QComboBox" name="cbShadowMapResolution">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text">
- <string>2048 (Default)</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>4096</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>1024</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>512</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>8192</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>16384</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="12" column="0">
- <widget class="QLabel" name="label_4">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Enable</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="11" column="0">
- <widget class="QLabel" name="label_5">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Link Light</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="11" column="1">
- <widget class="QCheckBox" name="btnLinkLightEnable">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>320</width>
- <height>0</height>
- </size>
- </property>
- <property name="title">
- <string>Visualize</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0">
- <widget class="QLabel" name="label_6">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Light</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QCheckBox" name="btnVisualizeLight">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="15" column="0">
- <widget class="QLabel" name="label_shadow">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="text">
- <string>Shadow Map</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="15" column="1">
- <widget class="QCheckBox" name="btnVisualizeShadowMap">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="30" column="0">
- <widget class="QLabel" name="label_7">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Distance</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="30" column="1">
- <widget class="SlideSpinBox&lt;QDoubleSpinBox, double&gt;" name="spinLightDistance" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>20</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>SlideSpinBox&lt;QDoubleSpinBox, double&gt;</class>
- <extends>QWidget</extends>
- <header>SlideSpinBox.h</header>
- <container>1</container>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/DisplayPreferencesPanel.ui b/tools/ArtistTools/source/CoreLib/UI/DisplayPreferencesPanel.ui
deleted file mode 100644
index 0cdbcac..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/DisplayPreferencesPanel.ui
+++ /dev/null
@@ -1,885 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DisplayPreferencesPanel</class>
- <widget class="QWidget" name="DisplayPreferencesPanel">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>320</width>
- <height>515</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QGridLayout" name="gridLayout">
- <property name="sizeConstraint">
- <enum>QLayout::SetFixedSize</enum>
- </property>
- <item row="0" column="1">
- <widget class="QComboBox" name="cbAntialiasing">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text">
- <string>Hardware MSAA</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Custom MSAA 2x</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Custom MSAA 4x</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Custom MSAA 8x</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="labelRenderPlayRateFPS">
- <property name="text">
- <string>Render Play Rate FPS</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QDoubleSpinBox" name="spinRenderPlayRateFPS">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>80</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="decimals">
- <number>0</number>
- </property>
- <property name="minimum">
- <double>10.000000000000000</double>
- </property>
- <property name="maximum">
- <double>1000.000000000000000</double>
- </property>
- <property name="value">
- <double>60.000000000000000</double>
- </property>
- </widget>
- </item>
- <item row="7" column="1">
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="sizeConstraint">
- <enum>QLayout::SetMinimumSize</enum>
- </property>
- <item>
- <widget class="QPushButton" name="btnBackgroundTex">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnBackgroundTexClear">
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Expanding</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>110</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="6" column="0">
- <widget class="QLabel" name="label_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Navigation Style</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="labelCustomMSAA">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Custom Hair MSAA</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QComboBox" name="cbUpAxis">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text">
- <string>Y</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Z</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="7" column="0">
- <widget class="QLabel" name="label_3">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Background Image</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="8" column="1">
- <widget class="SlideSpinBox&lt;QDoubleSpinBox, double&gt;" name="spinCameraFOV" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>20</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QComboBox" name="cbHandedness">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text">
- <string>Right Handed</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Left Handed</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="QComboBox" name="cbSceneUnit">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="currentText">
- <string>Unknown</string>
- </property>
- <item>
- <property name="text">
- <string>Unknown</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Centimeter</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Meter</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Inch</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="label1">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Handedness</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Scene Unit</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QLabel" name="label2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Up Axis</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="6" column="1">
- <widget class="QComboBox" name="cbNavigationStyle">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text">
- <string>Maya</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>3ds Max</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="8" column="0">
- <widget class="QLabel" name="labelCameraFOV">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>Camera FOV</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="labelSimulationRateFPS">
- <property name="text">
- <string>Simulation Rate FPS</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QDoubleSpinBox" name="spinSimulationRateFPS">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>80</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="decimals">
- <number>0</number>
- </property>
- <property name="minimum">
- <double>10.000000000000000</double>
- </property>
- <property name="maximum">
- <double>1000.000000000000000</double>
- </property>
- <property name="value">
- <double>60.000000000000000</double>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>300</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>300</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="title">
- <string>Playlists</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="30" column="1">
- <layout class="QHBoxLayout" name="horizontalLayout_5">
- <item>
- <spacer name="horizontalSpacer_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>60</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistAddProj">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistRemoveProj">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistProjGoUp">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistProjGoDown">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="1" column="1">
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QPushButton" name="btnPlaylistsRename">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistsAdd">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistsReload">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btnPlaylistsRemove">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>16</width>
- <height>16</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>QSizePolicy::Fixed</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>60</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="1" column="0">
- <widget class="QComboBox" name="cbPlaylists">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="2" column="0" rowspan="3" colspan="2">
- <widget class="TipListView" name="listWidgetPlaylist" native="true">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>280</width>
- <height>90</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="31" column="1">
- <widget class="QPushButton" name="btnPlaylistsPlay">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>24</width>
- <height>24</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>SlideSpinBox&lt;QDoubleSpinBox, double&gt;</class>
- <extends>QWidget</extends>
- <header>SlideSpinBox.h</header>
- <container>1</container>
- </customwidget>
- <customwidget>
- <class>TipListView</class>
- <extends>QWidget</extends>
- <header>tiplistview.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/DisplayScenePanel.ui b/tools/ArtistTools/source/CoreLib/UI/DisplayScenePanel.ui
deleted file mode 100644
index 5b24c41..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/DisplayScenePanel.ui
+++ /dev/null
@@ -1,616 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>DisplayScenePanel</class>
- <widget class="QWidget" name="DisplayScenePanel">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>320</width>
- <height>282</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QGridLayout" name="gridLayout">
- <item row="12" column="1">
- <widget class="QCheckBox" name="btnComputeProfile">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="9" column="1">
- <widget class="QCheckBox" name="btnShowAxis">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="8" column="1">
- <widget class="QCheckBox" name="btnShowGrid">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="8" column="0">
- <widget class="QLabel" name="label_1">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Show Grid</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="7" column="1">
- <widget class="QCheckBox" name="btnVisualizeWind">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="10" column="0">
- <widget class="QLabel" name="label_2">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Show HUD</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="9" column="0">
- <widget class="QLabel" name="label_3">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Show Axis</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="10" column="1">
- <widget class="QCheckBox" name="btnShowHUD">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="7" column="2">
- <widget class="QLabel" name="label_4">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="7" column="0">
- <widget class="QLabel" name="label_5">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>138</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Visualize Wind</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="11" column="0">
- <widget class="QLabel" name="label_6">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Compute Stats</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="11" column="1">
- <widget class="QCheckBox" name="btnComputeStats">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="12" column="0">
- <widget class="QLabel" name="label_7">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Compute Profile</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="13" column="0">
- <widget class="QLabel" name="labelGizmoWithLocal">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>130</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="text">
- <string>Gizmo With Local</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="13" column="1">
- <widget class="QCheckBox" name="checkBoxGizmoWithLocal"/>
- </item>
- <item row="14" column="0">
- <widget class="QLabel" name="labelGizmoWithDepthTest">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>130</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="text">
- <string>Gizmo With DepthTest</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="14" column="1">
- <widget class="QCheckBox" name="checkBoxGizmoWithDepthTest"/>
- </item>
- <item row="15" column="0">
- <widget class="QLabel" name="labelShowPlane">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>130</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="text">
- <string>Show Plane</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="15" column="1">
- <widget class="QCheckBox" name="checkBoxShowPlane"/>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>Mesh Rendering</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_3">
- <item row="4" column="0">
- <widget class="QLabel" name="label_8">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>130</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Render Type</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QComboBox" name="cbRenderType">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>150</width>
- <height>0</height>
- </size>
- </property>
- <property name="currentIndex">
- <number>0</number>
- </property>
- <property name="frame">
- <bool>true</bool>
- </property>
- <item>
- <property name="text">
- <string>Wireframe</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Flat</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Shaded</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Textured</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QLabel" name="label_9">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Show Wireframe Over</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="6" column="1">
- <widget class="QCheckBox" name="btnShowWireframe">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="7" column="0">
- <widget class="QLabel" name="label_10">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Use Mesh Lighting</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="7" column="1">
- <widget class="QCheckBox" name="btnUseLighting">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="8" column="0">
- <widget class="QLabel" name="label_11">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Show Graphics Mesh</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="8" column="1">
- <widget class="QCheckBox" name="btnShowGraphicsMesh">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="9" column="0">
- <widget class="QLabel" name="label_12">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Use Skinned Mesh Only</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="9" column="1">
- <widget class="QCheckBox" name="btnShowSkinnedOnly">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="10" column="0">
- <widget class="QLabel" name="label_13">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>0</height>
- </size>
- </property>
- <property name="layoutDirection">
- <enum>Qt::RightToLeft</enum>
- </property>
- <property name="text">
- <string>Use DQ Skinning</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="10" column="1">
- <widget class="QCheckBox" name="btnSkinningDQ">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/OutputWindow.ui b/tools/ArtistTools/source/CoreLib/UI/OutputWindow.ui
deleted file mode 100644
index accef7b..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/OutputWindow.ui
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>OutputWindow</class>
- <widget class="QTextBrowser" name="textBrowser">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>676</width>
- <height>430</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/tools/ArtistTools/source/CoreLib/UI/ThemeDark.qss b/tools/ArtistTools/source/CoreLib/UI/ThemeDark.qss
deleted file mode 100644
index f742ff0..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/ThemeDark.qss
+++ /dev/null
@@ -1,457 +0,0 @@
-AppMainWindow *
-{
- background-color:rgb(68,68,68); color:rgb(200,200,200);
-}
-
-AppMainWindow::separator
-{
- background-color: rgb(68, 68, 68);
-
- /*trick: qdockwidget stylesheet seems to have bugs, use the separator border*/
-
- border-right-width: 2px;
- border-image: url(:/AppMainWindow/images/DarkBorder.png) 2;
-}
-
-AppMainWindow::separator:hover
-{
- background-color: #666666;
-}
-
-AppMainWindow QDockWidget::title
-{
- text-align: center;
- /*
- border-top-color: rgb(45,45,45);
- border-top-width: 2px;
- border-top-style: groove;
- */
-
- background-color: rgb(68,68,68);
- border-width: 2px;
- border-image: url(:/AppMainWindow/images/DarkBorder.png) 2;
-
-}
-
-AppMainWindow QTextBrowser
-{
- /*
- border-width: 1px;
- border-image: url(:/AppMainWindow/images/DarkBorder.png) 2;
- */
- border: 1px solid gray;
- background-color:rgb(40,40,40);
-}
-
-AppMainWindow QCheckBox::indicator::unchecked
-{
- background-color:rgb(40,40,40);
-}
-
-AppMainWindow QCheckBox::indicator::checked
-{
- image:url(:/AppMainWindow/images/CheckBox.png);
-}
-
-AppMainWindow QPushButton
-{
- border: 1px solid gray;
-}
-
-AppMainWindow QPushButton:pressed
-{
- border: 2px solid rgb(118,185,0);
- /*background-color: rgb(118,185,0);*/
-}
-
-AppMainWindow QPushButton:checked
-{
- border: 2px solid rgb(118,185,0);
- /*background-color: rgb(118,185,0);*/
-}
-
-/****** QScrollbar Styles ******/
-AppMainWindow QScrollBar:vertical
-{
- width: 22px;
- /*
- border-width: 2px;
- border-image: url(:/AppMainWindow/images/DarkBorder.png) 2;
- */
- border: 1px solid rgb(40,40,40);
- margin: 20px 1px 20px 0px;
-}
-
-AppMainWindow QScrollBar::handle:vertical
-{
- border-top: 1px solid rgb(40,40,40);
- border-bottom: 1px solid rgb(40,40,40);
- background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
- stop:0 rgb(116,116,116), stop: 1 rgb(95,95,95));
- min-height: 20px;
-}
-
-AppMainWindow QScrollBar::add-line:vertical
-{
- border: 1px solid rgb(40,40,40);
- background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
- stop:0 rgb(116,116,116), stop: 1 rgb(95,95,95));
-
- margin-right: 1px;
- margin-bottom: 1px;
- height: 18px;
- subcontrol-position: bottom;
- subcontrol-origin: margin;
-}
-
-AppMainWindow QScrollBar::sub-line:vertical
-{
- margin-top: 1px;
- margin-right: 1px;
- border: 1px solid rgb(40,40,40);
- background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
- stop:0 rgb(116,116,116), stop: 1 rgb(95,95,95));
- height: 18px;
- subcontrol-position: top;
- subcontrol-origin: margin;
-}
-
-QScrollBar::up-arrow:vertical
-{
- image: url(:/AppMainWindow/images/ArrowUp.png);
-}
-
-QScrollBar::up-arrow:vertical:pressed
-{
- top: 1px;
-}
-
-QScrollBar::down-arrow:vertical
-{
- image: url(:/AppMainWindow/images/ArrowDown.png);
-}
-
-QScrollBar::down-arrow:vertical:pressed
-{
- top: 1px;
-}
-
-AppMainWindow QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
-{
- background: none;
-}
-
-/****** ListWidget Styles ******/
-AppMainWindow QListWidget {
- alternate-background-color: yellow;
- border: 1px solid gray;
- border-radius: 0px;
- }
-
-AppMainWindow QListWidget {
- show-decoration-selected: 1; /* make the selection span the entire width of the view */
- }
-
- AppMainWindow QListWidget::item:alternate {
- background: #EEEEEE;
- }
-
- AppMainWindow QListWidget::item:selected {
- border: 1px solid #6a6ea9;
- }
-
- AppMainWindow QListWidget::item:selected:!active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #00aa00, stop: 1 #00dd00);
- }
-
- AppMainWindow QListWidget::item:selected:active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #00aa00, stop: 1 #00dd00);
- }
-
- AppMainWindow QListWidget::item:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #DDFFDD, stop: 1 #CCFFCC);
- }
-
- /****** TreeWidget Styles ******/
-AppMainWindow QTreeWidget {
- alternate-background-color: yellow;
- border: 1px solid gray;
- border-radius: 0px;
- }
-
-AppMainWindow QTreeWidget {
- show-decoration-selected: 1; /* make the selection span the entire width of the view */
- }
-
- AppMainWindow QTreeWidget::item:alternate {
- background: #EEEEEE;
- }
-
- AppMainWindow QTreeWidget::item:selected {
- border: 1px solid #6a6ea9;
- }
-
- AppMainWindow QTreeWidget::item:selected:!active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #00aa00, stop: 1 #00dd00);
- }
-
- AppMainWindow QTreeWidget::item:selected:active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #00aa00, stop: 1 #00dd00);
- }
-
- AppMainWindow QTreeWidget::item:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #DDFFDD, stop: 1 #CCFFCC);
- }
-
-/****** ComboBox Styles ******/
-AppMainWindow QComboBox {
- border: 1px solid gray;
- border-radius: 0px;
- }
-
-AppMainWindow QComboBox QAbstractItemView
-{
- background-color: rgb(68,68,68);
- selection-background-color: rgb(118,185,0);
-}
-
- AppMainWindow QComboBox::drop-down {
- subcontrol-origin: padding;
- subcontrol-position: top right;
- /*width: 15px;*/
-
- border-left-width: 1px;
- border-left-color: gray;
- border-left-style: solid;
-
- }
-
-AppMainWindow QComboBox::down-arrow {
- image: url(:/AppMainWindow/images/ArrowDown.png);
- }
-
-AppMainWindow QComboBox::down-arrow:on {
- top: 1px;
-
- }
-
-/****** QTabWidget Styles ******/
-AppMainWindow QTabWidget::pane
-{
- /* The tab widget frame */
- border-top: 0px solid transparent;
-
-}
-
-AppMainWindow QTabWidget::tab-bar
-{
- left: 5px;
-}
-
-AppMainWindow QTabBar::tab {
- margin-top: 1px;
- background-color: rgb(68,68,68);
- border: 1px solid gray;
- border-bottom-color: rgb(68,68,68); /* same as the pane color */
- min-width: 10ex;
- padding: 2px 8px;
-}
-
-AppMainWindow QTabBar::tab:selected
-{
- background-color: #666666;
- border-color: gray;
- border-bottom-color: transparent;
-}
-
-AppMainWindow QTabBar::tab:!selected {
- margin-top: 3px; /* make non-selected tabs look smaller */
-}
-
-/****** Spin And DoubleSpin Styles ******/
-
-AppMainWindow QDoubleSpinBox
- {
- border: 1px solid gray;
- background-color: rgb(40,40,40);
- }
-
-AppMainWindow QSpinBox
- {
- border: 1px solid gray;
- background-color: rgb(40,40,40);
- }
-
-AppMainWindow QSpinBox::up-button
-{
- background-color:rgb(68,68,68);
- border: 1px solid gray;
- margin-top: 1px;
- margin-right: 1px;
-}
-
-AppMainWindow QSpinBox::up-button:pressed {
- border: 1px solid rgb(118,185,0);
-}
-
-AppMainWindow QSpinBox::down-button
-{
- background-color:rgb(68,68,68);
- border: 1px solid gray;
- margin-bottom: 1px;
- margin-right: 1px;
-}
-
-AppMainWindow QSpinBox::down-button:pressed {
- border: 1px solid rgb(118,185,0);
-}
-
-AppMainWindow QSpinBox::up-arrow
-{
- image: url(:/AppMainWindow/images/ArrowUp.png);
- width: 4px;
-}
-AppMainWindow QSpinBox::down-arrow
-{
- image: url(:/AppMainWindow/images/ArrowDown.png);
- width: 4px;
-}
-
-AppMainWindow QDoubleSpinBox::up-button
-{
- background-color:rgb(68,68,68);
- border: 1px solid gray;
- margin-top: 1px;
- margin-right: 1px;
-}
-
-AppMainWindow QDoubleSpinBox::up-button:pressed {
- border: 1px solid rgb(118,185,0);
-}
-
-AppMainWindow QDoubleSpinBox::down-button
-{
- background-color:rgb(68,68,68);
- border: 1px solid gray;
- margin-bottom: 1px;
- margin-right: 1px;
-}
-
-AppMainWindow QDoubleSpinBox::down-button:pressed {
- border: 1px solid rgb(118,185,0);
-}
-
-AppMainWindow QDoubleSpinBox::up-arrow
-{
- image: url(:/AppMainWindow/images/ArrowUp.png);
- width: 4px;
-}
-
-AppMainWindow QDoubleSpinBox::down-arrow
-{
- image: url(:/AppMainWindow/images/ArrowDown.png);
- width: 4px;
-}
-
-AppMainWindow QDoubleSpinBox::disabled
-{
- background-color:rgb(32,32,32);
- color:rgb(68,68,68);
- border: 1px solid rgb(68,68,68);
-}
-
-AppMainWindow QDoubleSpinBox::up-button:disabled {
- border: 1px solid rgb(68,68,68);
-}
-
-AppMainWindow QDoubleSpinBox::down-button:disabled {
- border: 1px solid rgb(68,68,68);
-}
-
-/****** Menu Styles ******/
-QMenuBar
-{
- border-image: url(:/AppMainWindow/images/DarkBorder.png) 2;
- border-bottom-width: 2px;
-}
-
-AppMainWindow QMenuBar::item
-{
- spacing: 3px; /* spacing between menu bar items */
- padding: 1px 4px;
- margin-bottom: 2px;
- background: transparent;
- border-radius: 0px;
-}
-
-AppMainWindow QMenuBar::item:selected:enabled { /* when selected using mouse or keyboard */
- background: #666666;
-}
-
-AppMainWindow QMenuBar::item:pressed:enabled {
- background: rgb(118,185,0);
-}
-
-AppMainWindow QMenu {
- border: 1px solid rgb(50,50,50);
-
-}
-
-AppMainWindow QMenuBar:disabled
-{
- color:rgb(0,0,0);
-}
-
-AppMainWindow QMenu:disabled
-{
- color:rgb(0,0,0);
-}
-
-AppMainWindow QMenu::item {
- padding: 2px 25px 2px 20px;
- border: 1px solid transparent; /* reserve space for selection border */
-}
-
-AppMainWindow QMenu::item:selected:enabled {
- border-color: rgb(70,70,70);
- background: rgba(118,185,0, 250);
-}
-/****** ExpandablePanel Styles ******/
-
-AppMainWindow QGroupBox
-{
- margin-top: 1.5ex;
- border: 1px solid gray;
- border-radius: 0px;
-}
-
-AppMainWindow QGroupBox::title
-{
- subcontrol-origin: margin;
- left: 10px;
- padding: 0px 3px;
-}
-
-/*
-ExpandablePanel QPushButton[flat="true"]
-{
- border-color: rgb(40,40,40);
- image:url(:/AppMainWindow/images/TextureBox.bmp)
-}
-
-ExpandablePanel QPushButton[flat="true"]:pressed
-{
- margin: 2px;
-}
-*/
-
-ExpandablePanel TitleLabel
-{
- background:rgb(78, 78, 78);
-}
diff --git a/tools/ArtistTools/source/CoreLib/UI/ThemeDefault.qss b/tools/ArtistTools/source/CoreLib/UI/ThemeDefault.qss
deleted file mode 100644
index f59dd25..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/ThemeDefault.qss
+++ /dev/null
@@ -1,76 +0,0 @@
-/****** General Styles ******/
-
-AppMainWindow QPushButton
-{
- /*border: 1px solid gray;*/
- background-color: rgb(230,230,230);
- border-left: 1px solid rgb(200,200,200);
- border-top: 1px solid rgb(200,200,200);
- border-right: 1px solid rgb(60,60,60);
- border-bottom: 1px solid rgb(60,60,60);
-}
-
-
-AppMainWindow QPushButton:pressed
-{
- /*border: 2px solid gray;*/
- border-left: 1px solid rgb(60,60,60);
- border-top: 1px solid rgb(60,60,60);
- border-right: 1px solid rgb(200,200,200);
- border-bottom: 1px solid rgb(200,200,200);
-}
-
-AppMainWindow QPushButton:checked
-{
- border: 1px solid gray;
- border-left: 1px solid rgb(60,60,60);
- border-top: 1px solid rgb(60,60,60);
- border-right: 1px solid rgb(200,200,200);
- border-bottom: 1px solid rgb(200,200,200);
-}
-/****** MainToolbar Styles ******/
-
-MainToolbar QPushButton[flat="true"]
-{
- border:0px;
-}
-
-
-/****** ExpandablePanel Styles ******/
-
-ExpandablePanel
-{
- background:rgb(240,240,240);
-}
-
-ExpandablePanel QGroupBox
-{
- margin-top: 1.5ex;
- border: 1px solid gray;
- border-radius: 0px;
-}
-
-ExpandablePanel QGroupBox::title
-{
- subcontrol-origin: margin;
- left: 10px;
- padding: 0px 3px;
-}
-
-ExpandablePanel QPushButton[flat="true"]
-{
- border: 1px solid rgb(60,60,60);
- image:url(:/AppMainWindow/images/TextureBox.bmp)
-}
-
-ExpandablePanel QPushButton[flat="true"]:pressed
-{
- border: 2px solid rgb(60,60,60);
- image:url(:/AppMainWindow/images/TextureBox.bmp)
-}
-
-ExpandablePanel TitleLabel
-{
- background:rgb(219, 219, 219);
- border-bottom:1px solid rgb(185,185,185);
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/Add.png b/tools/ArtistTools/source/CoreLib/UI/images/Add.png
deleted file mode 100644
index 35fd8ed..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/Add.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/ArrowDown.png b/tools/ArtistTools/source/CoreLib/UI/images/ArrowDown.png
deleted file mode 100644
index 9b55420..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/ArrowDown.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/ArrowUp.png b/tools/ArtistTools/source/CoreLib/UI/images/ArrowUp.png
deleted file mode 100644
index fea1fbe..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/ArrowUp.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/CheckBox.png b/tools/ArtistTools/source/CoreLib/UI/images/CheckBox.png
deleted file mode 100644
index ac53487..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/CheckBox.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/CurveEditor.png b/tools/ArtistTools/source/CoreLib/UI/images/CurveEditor.png
deleted file mode 100644
index f92c6e4..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/CurveEditor.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/DarkBorder.png b/tools/ArtistTools/source/CoreLib/UI/images/DarkBorder.png
deleted file mode 100644
index 9771804..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/DarkBorder.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/Down.png b/tools/ArtistTools/source/CoreLib/UI/images/Down.png
deleted file mode 100644
index 376a821..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/Down.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/EditWrench.png b/tools/ArtistTools/source/CoreLib/UI/images/EditWrench.png
deleted file mode 100644
index 563a602..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/EditWrench.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/Refresh_icon.png b/tools/ArtistTools/source/CoreLib/UI/images/Refresh_icon.png
deleted file mode 100644
index c189dd5..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/Refresh_icon.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/Remove_icon.png b/tools/ArtistTools/source/CoreLib/UI/images/Remove_icon.png
deleted file mode 100644
index ebb63d9..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/Remove_icon.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/TextureBox.bmp b/tools/ArtistTools/source/CoreLib/UI/images/TextureBox.bmp
deleted file mode 100644
index 43f95b2..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/TextureBox.bmp
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/TextureDisabled_icon.png b/tools/ArtistTools/source/CoreLib/UI/images/TextureDisabled_icon.png
deleted file mode 100644
index 3a727f4..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/TextureDisabled_icon.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/TextureEnabled_icon.png b/tools/ArtistTools/source/CoreLib/UI/images/TextureEnabled_icon.png
deleted file mode 100644
index a8f11d5..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/TextureEnabled_icon.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/TextureIsUsed_icon.png b/tools/ArtistTools/source/CoreLib/UI/images/TextureIsUsed_icon.png
deleted file mode 100644
index 75d52dc..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/TextureIsUsed_icon.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/Up.png b/tools/ArtistTools/source/CoreLib/UI/images/Up.png
deleted file mode 100644
index 6f8903c..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/Up.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/importFile.png b/tools/ArtistTools/source/CoreLib/UI/images/importFile.png
deleted file mode 100644
index e4ffc91..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/importFile.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/openFile.png b/tools/ArtistTools/source/CoreLib/UI/images/openFile.png
deleted file mode 100644
index b91e69c..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/openFile.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/playlist.png b/tools/ArtistTools/source/CoreLib/UI/images/playlist.png
deleted file mode 100644
index 3c6db13..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/playlist.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/refreshReload.png b/tools/ArtistTools/source/CoreLib/UI/images/refreshReload.png
deleted file mode 100644
index 745c9cb..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/refreshReload.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/saveDisc.png b/tools/ArtistTools/source/CoreLib/UI/images/saveDisc.png
deleted file mode 100644
index c0dc719..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/saveDisc.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/simulationPlay.png b/tools/ArtistTools/source/CoreLib/UI/images/simulationPlay.png
deleted file mode 100644
index e5bc551..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/simulationPlay.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/simulationStep.png b/tools/ArtistTools/source/CoreLib/UI/images/simulationStep.png
deleted file mode 100644
index 8ab9e49..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/simulationStep.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/simulationStop.png b/tools/ArtistTools/source/CoreLib/UI/images/simulationStop.png
deleted file mode 100644
index 8576b5b..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/simulationStop.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/transportLoop.png b/tools/ArtistTools/source/CoreLib/UI/images/transportLoop.png
deleted file mode 100644
index 3e13e2f..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/transportLoop.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/transportPlay.png b/tools/ArtistTools/source/CoreLib/UI/images/transportPlay.png
deleted file mode 100644
index e5e593e..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/transportPlay.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/transportRewind.png b/tools/ArtistTools/source/CoreLib/UI/images/transportRewind.png
deleted file mode 100644
index 95664d2..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/transportRewind.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/transportStepForward.png b/tools/ArtistTools/source/CoreLib/UI/images/transportStepForward.png
deleted file mode 100644
index 4d35753..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/transportStepForward.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/transportStop.png b/tools/ArtistTools/source/CoreLib/UI/images/transportStop.png
deleted file mode 100644
index 27f3cbd..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/transportStop.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_notVisible.png b/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_notVisible.png
deleted file mode 100644
index 56b24fe..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_notVisible.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_visible.png b/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_visible.png
deleted file mode 100644
index 3e5a88e..0000000
--- a/tools/ArtistTools/source/CoreLib/UI/images/visibilityToggle_visible.png
+++ /dev/null
Binary files differ
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Automate.cpp b/tools/ArtistTools/source/CoreLib/Utils/Automate.cpp
deleted file mode 100644
index 6c7d551..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Automate.cpp
+++ /dev/null
@@ -1,530 +0,0 @@
-#include <windows.h>
-
-#include <QtWidgets/QApplication>
-
-#include "AppMainWindow.h"
-//#include "SimpleScene.h"
-
-#include "OpenAutomate.h"
-#include "Automate.h"
-#include "Settings.h"
-
-//#define OPEN_CONSOLE
-#ifdef OPEN_CONSOLE
-#include <Windows.h>
-#endif
-
-#include <cassert>
-#include <string>
-
-#include <Nv/Common/NvCoCommon.h>
-
-#define KEYSTR ("Software\\OpenAutomate\\RegisteredApps\\NVIDIA\\FurViewer\\v1.0\\")
-
-const oaChar *Benchmarks[] = {
- "HairBall",
- "Teapot",
- "Manjaladon",
- "WitcherHorse",
- NV_NULL
-};
-oaInt NumBenchmarks = 1;
-
-static void ParseArgs(int argc, char *argv[]);
-
-static void OAMainLoop(const char *opt);
-static bool RegisterAppItself();
-static int RunApp(QApplication& a);
-static void GetAllOptions(void);
-static void GetCurrentOptions(void);
-
-static bool g_isAutomateMode = false;
-static int InstallModeFlag = 0;
-static char *OAOpt = NV_NULL;
-
-bool AutomateInstallApp()
-{
- return RegisterAppItself();
-}
-
-static bool RegisterAppItself()
-{
- char exePath[MAX_PATH];
- if(!GetExePath(exePath))
- {
- fprintf(stderr, "Cannot get exe path\r\n");
- return false;
- }
-
- HKEY hKey;
- DWORD dwRes = RegOpenKeyExA(
- HKEY_LOCAL_MACHINE,
- KEYSTR,
- 0,
- KEY_WRITE | KEY_READ,
- &hKey);
-
- DWORD dwSize = MAX_PATH;
- char buf[MAX_PATH];
- if(dwRes == ERROR_SUCCESS)
- {
- dwRes = RegQueryValueExA(
- hKey,
- "INSTALL_ROOT_PATH",
- NV_NULL,
- NV_NULL,
- (LPBYTE)buf,
- &dwSize);
- if(dwRes == ERROR_SUCCESS && !lstrcmpiA(buf, exePath))
- {
- RegCloseKey(hKey);
- return true;
- }
- }
- else
- {
- dwRes = RegCreateKeyExA(
- HKEY_LOCAL_MACHINE,
- KEYSTR,
- 0,
- NV_NULL,
- REG_OPTION_NON_VOLATILE,
- KEY_WRITE, NV_NULL,
- &hKey,
- &dwSize);
- if(ERROR_SUCCESS != dwRes)
- {
- RegCloseKey(hKey);
- return false;
- }
- }
-
- bool bRet = false;
- do
- {
- dwRes = RegSetValueExA(
- hKey,
- "INSTALL_ROOT_PATH",
- 0,
- REG_SZ,
- (BYTE*)exePath,
- (DWORD)strlen(exePath));
- if(ERROR_SUCCESS != dwRes)
- {
- fprintf(stderr, "Write INSTALL_ROOT_PATH Failed\r\n");
- break;
- }
-
-#ifdef _WIN64
-#ifdef _DEBUG
- strcat(exePath, "FurViewer.win64.D.exe");
-#else
- strcat(exePath, "FurViewer.win64.exe");
-#endif
-#else
-#ifdef _DEBUG
- strcat(exePath, "FurViewer.win32.D.exe");
-#else
- strcat(exePath, "FurViewer.win32.exe");
-#endif
-#endif
-
- dwRes = RegSetValueExA(
- hKey,
- "ENTRY_EXE",
- 0,
- REG_SZ,
- (BYTE*)exePath,
- (DWORD)strlen(exePath));
- if(ERROR_SUCCESS != dwRes)
- {
- fprintf(stderr, "Write ENTRY_EXE Failed\r\n");
- break;
- }
-
- ZeroMemory(buf, sizeof(buf));
- SYSTEMTIME tm;
- GetLocalTime(&tm);
- sprintf(
- buf,
- "%04d-%02d-%02d %02d:%02d:%02d",
- tm.wYear,
- tm.wMonth,
- tm.wDay,
- tm.wHour,
- tm.wMinute,
- tm.wSecond);
- dwRes = RegSetValueExA(
- hKey,
- "INSTALL_DATETIME",
- 0,
- REG_SZ,
- (BYTE*)buf,
- (DWORD)strlen(buf));
- if(ERROR_SUCCESS != dwRes)
- {
- fprintf(stderr, "Write INSTALL_DATETIME Failed\r\n");
- break;
- }
-
- dwRes = RegSetValueExA(
- hKey,
- "REGION",
- 0,
- REG_SZ,
- (BYTE*)"en_US",
- (DWORD)strlen("en_US"));
- if(ERROR_SUCCESS != dwRes)
- {
- fprintf(stderr, "Write REGION Failed\r\n");
- break;
- }
-
- bRet = true;
- } while(0);
-
- RegCloseKey(hKey);
- return bRet;
-}
-
-static const char *FormatDataType(oaOptionDataType value_type)
-{
- switch(value_type)
- {
- case OA_TYPE_STRING:
- return "String";
- case OA_TYPE_INT:
- return "Int";
- case OA_TYPE_FLOAT:
- return "Float";
- case OA_TYPE_ENUM:
- return "Enum";
- case OA_TYPE_BOOL:
- return "Bool";
- default:
- return "Unknown";
- }
-}
-
-static const char *FormatCompareOp(oaComparisonOpType op_value)
-{
- switch(op_value)
- {
- case OA_COMP_OP_EQUAL:
- return "Equal";
- case OA_COMP_OP_NOT_EQUAL:
- return "NotEqual";
- case OA_COMP_OP_GREATER:
- return "Greater";
- case OA_COMP_OP_LESS:
- return "Less";
- case OA_COMP_OP_GREATER_OR_EQUAL:
- return "GreaterOrEqual";
- case OA_COMP_OP_LESS_OR_EQUAL:
- return "LessOrEqual";
- default:
- return "Unknown";
- }
-}
-
-static void ConvertOAValue(oaOptionDataType value_type,
- const oaValue *value,
- char *result)
-{
- switch(value_type)
- {
- case OA_TYPE_STRING:
- case OA_TYPE_ENUM:
- if (value->String) strcpy(result, value->String);
- else result[0] = '\0';
- break;
- case OA_TYPE_INT:
- sprintf(result, "%d", value->Int);
- break;
- case OA_TYPE_FLOAT:
- sprintf(result, "%f", value->Float);
- break;
- case OA_TYPE_BOOL:
- sprintf(result, "%1d", value->Bool);
- break;
- default:
- return;
- }
-}
-
-static void PrintOptions(const oaNamedOption *option)
-{
- char buf[MAX_PATH];
- ConvertOAValue(option->DataType, &option->Value, buf);
-
- fprintf(stderr, "name=%s,type=%s,value=%s\r\n", option->Name, FormatDataType(option->DataType), buf);
- if(option->MaxValue.Int && option->MinValue.Int)
- {
- fprintf(stderr," numsteps=%d", option->NumSteps);
- ConvertOAValue(option->DataType, &option->MinValue, buf);
- fprintf(stderr, "minvalue=%s", buf);
- ConvertOAValue(option->DataType, &option->MaxValue, buf);
- fprintf(stderr,"maxvalue=%s\r\n", buf);
- }
-
- if(option->Dependency.ParentName)
- {
- ConvertOAValue(option->Dependency.ComparisonValType, &option->Dependency.ComparisonVal, buf);
- fprintf(stderr, " parentname=%s,comparisionop=%s,comparisiontype=%s,comparisionvalue=%s\r\n",
- option->Dependency.ParentName,
- FormatCompareOp(option->Dependency.ComparisonOp),
- FormatDataType(option->Dependency.ComparisonValType),
- buf);
- }
-}
-
-#if (0) // Remove this!
-int main(int argc, char *argv[])
-{
- SetConsoleTitleA("OA - simple application");
- ParseArgs(argc, argv);
-
- AppSettings::Inst().InitOptions();
-
- if(InstallModeFlag)
- {
- InstallApp();
- }
- else if(OAModeFlag)
- {
- OAMainLoop(OAOpt);
- }
- else
- {
- RunApp();
- }
-
- return(0);
-}
-#endif
-
-void GetAllOptions(void)
-{
- fprintf(stderr, "All Options: \r\n");
- for(oaInt i=0; i < AppSettings::Inst().GetNumOptions(); ++i)
- {
- oaNamedOption* option = AppSettings::Inst().GetOption(i);
- if (!strcmp(option->Name, "User/ProjectPath"))
- continue;
- if (!strcmp(option->Name, "User/FurAssetPath"))
- continue;
- PrintOptions(AppSettings::Inst().GetOption(i));
- oaAddOption(AppSettings::Inst().GetOption(i));
- }
-}
-
-void GetCurrentOptions(void)
-{
- fprintf(stderr, "Current Options: \r\n");
-
- std::map<std::string, OptionValue>::const_iterator Iter = AppSettings::Inst().GetCurrentOptionMap()->begin();
-
- oaNamedOption option;
- oaInitOption(&option);
-
- for(; Iter != AppSettings::Inst().GetCurrentOptionMap()->end(); ++Iter)
- {
- if (!strcmp(Iter->second.Name, "User/ProjectPath"))
- continue;
- if (!strcmp(Iter->second.Name, "User/FurAssetPath"))
- continue;
-
- option.Name = Iter->second.Name;
- option.Value = Iter->second.Value;
- option.DataType = Iter->second.Type;
- PrintOptions(&option);
-
- oaAddOptionValue(Iter->second.Name,
- Iter->second.Type,
- &Iter->second.Value);
- }
-}
-
-void SetOptions(void)
-{
- oaNamedOption *Option;
-
- fprintf(stderr, "Set Options: \r\n");
- while ((Option = oaGetNextOption()) != NV_NULL)
- {
- /*
- * Set option value to persist for subsequent runs of the game
- * to the given value. Option->Name will be the name of the value,
- * and Option->Value will contain the appropriate value.
- */
- PrintOptions(Option);
- AppSettings::Inst().SetOptionValue(Option->Name, Option->DataType, &Option->Value);
- }
-
- AppSettings::Inst().WriteOptionsFile();
-}
-
-void GetBenchmarks(void)
-{
- /* foreach known available benchmark call oaAddBenchmark() with a unique string identifying it */
- for(oaInt i=0; i < NumBenchmarks; ++i)
- oaAddBenchmark(Benchmarks[i]);
-}
-
-void RunBenchmark(const oaChar *benchmark_name)
-{
- oaValue Val;
- int i;
-
- bool FoundBenchmark = false;
- for(i=0; i < NumBenchmarks; ++i)
- if(!strcmp(Benchmarks[i], benchmark_name))
- {
- FoundBenchmark = true;
- break;
- }
-
- /* Check if the requested benchark is valid */
- if(!FoundBenchmark)
- {
- char Msg[1024];
- sprintf(Msg, "'%s' is not a valid benchmark.", benchmark_name);
- OA_RAISE_ERROR(INVALID_BENCHMARK, benchmark_name);
- }
-
- /* Setup everything to run the benchmark */
-
- /* oaStartBenchmark() must be called right before the first frame */
- oaStartBenchmark();
-
- /*
- * Run the benchmark, and call oaDisplayFrame() right before the final
- * present call for each frame
- */
- //for(i=0; i < 50; ++i)
- //{
- // SLEEP(20);
-
- // oaValue FrameValue;
- // FrameValue.Int = i;
- // oaValue OtherInt;
- // OtherInt.Int = i+1000;
- // oaChar str[100];
- // sprintf(str, "frame number: %d\00", i);
- // oaValue Str;
- // Str.String = str;
-
- // oaAddFrameValue("FrameCount", OA_TYPE_INT, &FrameValue);
- // oaAddFrameValue("OtherInt", OA_TYPE_INT, &OtherInt);
- // oaAddFrameValue("String", OA_TYPE_STRING, &Str);
-
- // oaDisplayFrame((oaFloat)(i * 20) / (oaFloat)1000);
- //}
- {
-// SimpleScene* scene = SimpleScene::Inst();
- AppMainWindow::Inst().menu_clearScene();
- }
-
- /* Return some result values */
- Val.Int = 18249;
- oaAddResultValue("Score", OA_TYPE_INT, &Val);
-
- Val.Float = 29.14;
- oaAddResultValue("Some other score", OA_TYPE_FLOAT, &Val);
-
- /* oaStartBenchmark() must be called right after the last frame */
- oaEndBenchmark();
-}
-
-int AutomateInit(const char* opt)
-{
- oaVersion Version;
- if (!oaInit((const oaString)opt, &Version))
- {
- Error("OA did not initialize properly.");
- return 1;
- }
- g_isAutomateMode = true;
- return 0;
-}
-
-void AutomateRun()
-{
- oaCommand Command;
-
- oaInitCommand(&Command);
- switch(oaGetNextCommand(&Command))
- {
- /* No more commands, exit program */
- case OA_CMD_EXIT:
- AppMainWindow::Inst().close();
- return;
-
- /* Run as normal */
- case OA_CMD_RUN:
- break;
-
- /* Enumerate all in-game options */
- case OA_CMD_GET_ALL_OPTIONS:
- GetAllOptions();
- break;
-
- /* Return the option values currently set */
- case OA_CMD_GET_CURRENT_OPTIONS:
- GetCurrentOptions();
- break;
-
- /* Set all in-game options */
- case OA_CMD_SET_OPTIONS:
- SetOptions();
- break;
-
- /* Enumerate all known benchmarks */
- case OA_CMD_GET_BENCHMARKS:
- GetBenchmarks();
- break;
-
- /* Run benchmark */
- case OA_CMD_RUN_BENCHMARK:
- RunBenchmark(Command.BenchmarkName);
- break;
- }
-}
-
-bool IsAutomateMode()
-{
- return g_isAutomateMode;
-}
-
-bool GetAutomateInstallModeOption(int argc, char* argv[])
-{
- for (int idx = 1; idx < argc; ++idx)
- {
- if (!strcmp(argv[idx], "-install"))
- {
- return true;
- }
- }
- return false;
-}
-
-
-std::string GetAutomateOption(int argc, char* argv[])
-{
- for (int idx = 1; idx < argc; ++idx)
- {
- if (!strcmp(argv[idx], "-openautomate"))
- {
- if ((idx + 1) < argc)
- {
- return argv[idx+1];
- }
- else
- {
- Error("-openautomate option must have an argument.");
- return "";
- }
- }
- }
- return "";
-}
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Automate.h b/tools/ArtistTools/source/CoreLib/Utils/Automate.h
deleted file mode 100644
index 6f5de4f..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Automate.h
+++ /dev/null
@@ -1,23 +0,0 @@
-
-// Wrapper functions for OpenAutomate
-
-// Add application info into registry key for Automate
-// Return true if succeeded
-bool AutomateInstallApp();
-
-// Initialize OpenAutomate with its command line option. No need to cleanup
-int AutomateInit(const char* opt);
-
-// Call this function when the application is idle when IsAutomateMode() is true
-void AutomateRun();
-
-// Returns true if automate mode is initialized by AutomateInit() call
-bool IsAutomateMode();
-
-// Utility function to parse the command line option for OpenAutomate
-// Returns OpenAutomate option if it has. If not, returns empty string
-std::string GetAutomateOption(int argc, char* argv[]);
-
-// Returns true if it has "-install" in the command line option
-bool GetAutomateInstallModeOption(int argc, char* argv[]);
-
diff --git a/tools/ArtistTools/source/CoreLib/Utils/CoreLibUtils.h b/tools/ArtistTools/source/CoreLib/Utils/CoreLibUtils.h
deleted file mode 100644
index 6decd0c..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/CoreLibUtils.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 <QtCore/QFile>
-#include <QtCore/QTemporaryFile>
-
-namespace utils {
-
-inline std::string GetTempFilePath()
-{
- QByteArray tempFilePath;
- QTemporaryFile tempFile;
- // temp file will be automatically deleted after this function
- tempFile.open();
- tempFilePath = tempFile.fileName().toLocal8Bit();
- return std::string(tempFilePath);
-}
-
-inline bool RenameFile(const char* srcFilePath, const char* targetFilePath, bool isOvewrite = false)
-{
- if (QFile::exists(targetFilePath))
- {
- if (isOvewrite == false) return false;
- if (!QFile::remove(targetFilePath)) return false;
- }
- return QFile::rename(srcFilePath, targetFilePath);
-}
-
-inline bool CopyFile(const char* srcFilePath, const char* targetFilePath, bool isOverwrite = false)
-{
- if (QFile::exists(targetFilePath))
- {
- if (isOverwrite == false) return false;
- if (!QFile::remove(targetFilePath)) return false;
- }
- return QFile::copy(srcFilePath, targetFilePath);
-}
-
-} // end of utils
diff --git a/tools/ArtistTools/source/CoreLib/Utils/MathUtil.cpp b/tools/ArtistTools/source/CoreLib/Utils/MathUtil.cpp
deleted file mode 100644
index bdb3a77..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/MathUtil.cpp
+++ /dev/null
@@ -1,327 +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.
-//
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// This file contains wrapper functions to make hair lib easy to setup and use
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#include "MathUtil.h"
-#include <string.h>
-
-////////////////////////////////////////////////////////////////////////////////////////
-void gfsdk_makeIdentity(atcore_float4x4& transform)
-{
- memset(&transform, 0, sizeof(atcore_float4x4));
- transform._11 = 1.0f;
- transform._22 = 1.0f;
- transform._33 = 1.0f;
- transform._44 = 1.0f;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-void gfsdk_makeTranslation(atcore_float4x4& m, const atcore_float3& t)
-{
- gfsdk_makeIdentity(m);
- m._41 = t.x;
- m._42 = t.y;
- m._43 = t.z;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-void gfsdk_makeScale(atcore_float4x4& m, const atcore_float3& s)
-{
- gfsdk_makeIdentity(m);
- m._11 = s.x;
- m._12 = s.y;
- m._13 = s.z;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void gfsdk_makeRotation(atcore_float4x4& m, const atcore_float4& q)
-{
- gfsdk_makeIdentity(m);
-
- const float x = q.x;
- const float y = q.y;
- const float z = q.z;
- const float w = q.w;
-
- const float x2 = x + x;
- const float y2 = y + y;
- const float z2 = z + z;
-
- const float xx = x2*x;
- const float yy = y2*y;
- const float zz = z2*z;
-
- const float xy = x2*y;
- const float xz = x2*z;
- const float xw = x2*w;
-
- const float yz = y2*z;
- const float yw = y2*w;
- const float zw = z2*w;
-
- m._11 = 1.0f - yy - zz;
- m._12 = xy + zw;
- m._13 = xz - yw;
-
- m._21 = xy - zw;
- m._22 = 1.0f - xx - zz;
- m._23 = yz + xw;
-
- m._31 = xz + yw;
- m._32 = yz - xw;
- m._33 = 1.0f - xx - yy;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 gfsdk_makeTransform(const atcore_float4& q, const atcore_float3& t, const atcore_float3 &s)
-{
- atcore_float4x4 m;
-
- gfsdk_makeRotation(m, q);
-
- m._11 *= s.x; m._12 *= s.x; m._13 *= s.x;
- m._21 *= s.y; m._22 *= s.y; m._23 *= s.y;
- m._31 *= s.z; m._32 *= s.z; m._33 *= s.z;
-
- m._41 = t.x;
- m._42 = t.y;
- m._43 = t.z;
-
- return m;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_float4 gfsdk_getRotation(const atcore_float4x4& sm)
-{
- atcore_float4x4 m = sm;
-
- gfsdk_orthonormalize(m);
-
- atcore_float4 q;
-
- float x,y,z,w;
-
- float tr = m._11 + m._22 + m._33, h;
- if(tr >= 0)
- {
- h = sqrt(tr +1);
- w = float(0.5) * h;
- h = float(0.5) / h;
-
- x = (m._23 - m._32) * h;
- y = (m._31 - m._13) * h;
- z = (m._12 - m._21) * h;
- }
- else
- {
- float max = m._11;
- int i = 0;
- if (m._22 > m._11)
- {
- i = 1;
- max = m._22;
- }
- if (m._33 > max)
- i = 2;
- switch (i)
- {
- case 0:
- h = sqrt((m._11 - (m._22 + m._33)) + 1);
- x = float(0.5) * h;
- h = float(0.5) / h;
-
- y = (m._21 + m._12) * h;
- z = (m._13 + m._31) * h;
- w = (m._23 - m._32) * h;
- break;
- case 1:
- h = sqrt((m._22 - (m._33 + m._11)) + 1);
- y = float(0.5) * h;
- h = float(0.5) / h;
-
- z = (m._32 + m._23) * h;
- x = (m._21 + m._12) * h;
- w = (m._31 - m._13) * h;
- break;
- case 2:
- h = sqrt((m._33 - (m._11 + m._22)) + 1);
- z = float(0.5) * h;
- h = float(0.5) / h;
-
- x = (m._13 + m._31) * h;
- y = (m._32 + m._23) * h;
- w = (m._12 - m._21) * h;
- break;
- default: // Make compiler happy
- x = y = z = w = 0;
- break;
- }
- }
-
- return gfsdk_makeFloat4(x,y,z,w);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 gfsdk_lerp(atcore_float4x4& start, atcore_float4x4& end, float t)
-{
- atcore_float4 sq = gfsdk_getRotation(start);
- atcore_float4 eq = gfsdk_getRotation(end);
- atcore_float3 st = gfsdk_getTranslation(start);
- atcore_float3 et = gfsdk_getTranslation(end);
-
- atcore_float3 ss = gfsdk_getScale(start);
- atcore_float3 es = gfsdk_getScale(end);
- atcore_float3 s = gfsdk_lerp(ss, es, t);
-
- atcore_dualquaternion sdq = gfsdk_makeDQ(sq, st);
- atcore_dualquaternion edq = gfsdk_makeDQ(eq, et);
-
- atcore_dualquaternion dq = gfsdk_lerp(sdq, edq, t);
-
- atcore_float4 gr = getRotation(dq);
- atcore_float3 gt = getTranslation(dq);
-
- return gfsdk_makeTransform(gr, gt, s);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 operator*(const atcore_float4x4& in1, const atcore_float4x4& in2)
-{
-#define MATRIX_SUM(OUT, IN1, IN2, ROW, COL) OUT._##ROW##COL = IN1._##ROW##1 * IN2._1##COL + IN1._##ROW##2 * IN2._2##COL + IN1._##ROW##3 * IN2._3##COL + IN1._##ROW##4 * IN2._4##COL;
-
- atcore_float4x4 out;
-
- MATRIX_SUM(out, in1, in2, 1, 1);
- MATRIX_SUM(out, in1, in2, 1, 2);
- MATRIX_SUM(out, in1, in2, 1, 3);
- MATRIX_SUM(out, in1, in2, 1, 4);
-
- MATRIX_SUM(out, in1, in2, 2, 1);
- MATRIX_SUM(out, in1, in2, 2, 2);
- MATRIX_SUM(out, in1, in2, 2, 3);
- MATRIX_SUM(out, in1, in2, 2, 4);
-
- MATRIX_SUM(out, in1, in2, 3, 1);
- MATRIX_SUM(out, in1, in2, 3, 2);
- MATRIX_SUM(out, in1, in2, 3, 3);
- MATRIX_SUM(out, in1, in2, 3, 4);
-
- MATRIX_SUM(out, in1, in2, 4, 1);
- MATRIX_SUM(out, in1, in2, 4, 2);
- MATRIX_SUM(out, in1, in2, 4, 3);
- MATRIX_SUM(out, in1, in2, 4, 4);
-
-#undef MATRIX_SUM
-
- return out;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-float
-gfsdk_getDeterminant(const atcore_float4x4& m)
-{
- const float* matrix = (const float*)&m;
-
- atcore_float3 p0 = gfsdk_makeFloat3(matrix[0*4+0], matrix[0*4+1], matrix[0*4+2]);
- atcore_float3 p1 = gfsdk_makeFloat3(matrix[1*4+0], matrix[1*4+1], matrix[1*4+2]);
- atcore_float3 p2 = gfsdk_makeFloat3(matrix[2*4+0], matrix[2*4+1], matrix[2*4+2]);
-
- atcore_float3 tempv = gfsdk_cross(p1,p2);
-
- return gfsdk_dot(p0, tempv);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_float4x4
-gfsdk_getSubMatrix(int ki,int kj, const atcore_float4x4& m)
-{
- atcore_float4x4 out;
- gfsdk_makeIdentity(out);
-
- float* pDst = (float*)&out;
- const float* matrix = (const float*)&m;
-
- int row, col;
- int dstCol = 0, dstRow = 0;
-
- for ( col = 0; col < 4; col++ )
- {
- if ( col == kj )
- {
- continue;
- }
- for ( dstRow = 0, row = 0; row < 4; row++ )
- {
- if ( row == ki )
- {
- continue;
- }
- pDst[dstCol*4+dstRow] = matrix[col*4+row];
- dstRow++;
- }
- dstCol++;
- }
-
- return out;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_float4x4 gfsdk_inverse(const atcore_float4x4& m)
-{
- atcore_float4x4 im;
-
- float* inverse_matrix = (float*)&im;
-
- float det = gfsdk_getDeterminant(m);
- det = 1.0f / det;
- for (int i = 0; i < 4; i++ )
- {
- for (int j = 0; j < 4; j++ )
- {
- int sign = 1 - ( ( i + j ) % 2 ) * 2;
-
- atcore_float4x4 subMat = gfsdk_getSubMatrix(i, j, m);
- float subDeterminant = gfsdk_getDeterminant(subMat);
-
- inverse_matrix[i*4+j] = ( subDeterminant * sign ) * det;
- }
- }
-
- return im;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_dualquaternion gfsdk_makeDQ(const atcore_float4x4& m)
-{
- atcore_float4 q = gfsdk_getRotation(m);
- atcore_float3 t = gfsdk_getTranslation(m);
-
- return gfsdk_makeDQ(q, t);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Utils/MathUtil.h b/tools/ArtistTools/source/CoreLib/Utils/MathUtil.h
deleted file mode 100644
index 7b7a2a5..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/MathUtil.h
+++ /dev/null
@@ -1,557 +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 "corelib_global.h"
-#include "CoreLib.h"
-#include "math.h"
-#include "float.h"
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_lerp(float v1, float v2, float t)
-{
- return (1.0f - t) * v1 + t * v2;
-}
-
-inline float gfsdk_min(float x, float y) {
- return (x < y) ? x : y;
-}
-
-inline float gfsdk_max(float x, float y) {
- return (x > y) ? x : y;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float2 gfsdk_makeFloat2(float x, float y)
-{
- atcore_float2 v;
- v.x = x;
- v.y = y;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float2 operator*(float s, const atcore_float2 &p)
-{
- return gfsdk_makeFloat2(s * p.x, s * p.y);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float2 operator*(const atcore_float2 &p, float s)
-{
- return gfsdk_makeFloat2(s * p.x, s * p.y);
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_makeFloat3(float x, float y, float z)
-{
- atcore_float3 v;
- v.x = x;
- v.y = y;
- v.z = z;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 operator+(const atcore_float3 &p0, const atcore_float3 &p1)
-{
- return gfsdk_makeFloat3(p0.x + p1.x, p0.y + p1.y, p0.z + p1.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3& operator+=(atcore_float3 &v, const atcore_float3 & v1)
-{
- v.x += v1.x; v.y += v1.y; v.z += v1.z;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 operator-(const atcore_float3 &p0, const atcore_float3 &p1)
-{
- return gfsdk_makeFloat3(p0.x - p1.x, p0.y - p1.y, p0.z - p1.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3& operator-=(atcore_float3 &v, const atcore_float3 & v1)
-{
- v.x -= v1.x; v.y -= v1.y; v.z -= v1.z;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 operator*(float s, const atcore_float3 &p)
-{
- return gfsdk_makeFloat3(s * p.x, s * p.y, s * p.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 operator*(const atcore_float3 &p, float s)
-{
- return gfsdk_makeFloat3(s * p.x, s * p.y, s * p.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_dot(const atcore_float3& v0, const atcore_float3 &v1) {
- return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_lengthSquared(const atcore_float3& v) {
- return gfsdk_dot(v,v);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_length(const atcore_float3 &v) {
- return sqrt(gfsdk_lengthSquared(v));
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_distance(const atcore_float3 &v1, const atcore_float3 &v2) {
- return gfsdk_length(v2-v1);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline const atcore_float3& gfsdk_normalize(atcore_float3 &v) {
- float l = gfsdk_length(v);
- if (l != 0) { v.x /= l; v.y /= l; v.z /= l; }
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_cross(const atcore_float3& v1, const atcore_float3& v2)
-{
- return gfsdk_makeFloat3(
- v1.y * v2.z - v1.z * v2.y,
- v1.z * v2.x - v1.x * v2.z,
- v1.x * v2.y - v1.y * v2.x);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_lerp(const atcore_float3& v1, const atcore_float3& v2, float t)
-{
- return gfsdk_makeFloat3(gfsdk_lerp(v1.x, v2.x, t), gfsdk_lerp(v1.y, v2.y, t), gfsdk_lerp(v1.z, v2.z, t));
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_min(const atcore_float3& v1, const atcore_float3 &v2)
-{
- return gfsdk_makeFloat3(
- gfsdk_min(v1.x, v2.x),
- gfsdk_min(v1.y, v2.y),
- gfsdk_min(v1.z, v2.z)
- );
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_max(const atcore_float3& v1, const atcore_float3 &v2)
-{
- return gfsdk_makeFloat3(
- gfsdk_max(v1.x, v2.x),
- gfsdk_max(v1.y, v2.y),
- gfsdk_max(v1.z, v2.z)
- );
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_min(const atcore_float3 &v)
-{
- return gfsdk_min(gfsdk_min(v.x, v.y), v.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_max(const atcore_float3 &v)
-{
- return gfsdk_max(gfsdk_max(v.x, v.y), v.z);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// float4
-////////////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_makeFloat4(float x = 0.0f, float y = 0.0f, float z = 0.0f, float w = 0.0f)
-{
- atcore_float4 v;
- v.x = x;
- v.y = y;
- v.z = z;
- v.w = w;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_makeFloat4(const atcore_float3& v, float w)
-{
- return gfsdk_makeFloat4(v.x, v.y, v.z, w);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4& operator+=(atcore_float4 &v, const atcore_float4 & v1)
-{
- v.x += v1.x; v.y += v1.y; v.z += v1.z; v.w += v1.w;
- return v;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 operator*(float s, const atcore_float4 &p)
-{
- return gfsdk_makeFloat4(s * p.x, s * p.y, s * p.z, s * p.w);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 operator*(const atcore_float4 &p, float s)
-{
- return gfsdk_makeFloat4(s * p.x, s * p.y, s * p.z, s * p.w);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_dot(const atcore_float4& v0, const atcore_float4 &v1) {
- return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z + v0.w * v1.w;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_lengthSquared(const atcore_float4& v) {
- return gfsdk_dot(v,v);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline float gfsdk_length(const atcore_float4 &v) {
- return sqrt(gfsdk_lengthSquared(v));
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline const atcore_float4 gfsdk_normalize(const atcore_float4 &v) {
- atcore_float4 nv = v;
-
- float l = gfsdk_length(nv);
- if (l > FLT_EPSILON)
- {
- const float s = 1.0f / l;
-
- nv.x *= s;
- nv.y *= s;
- nv.z *= s;
- nv.w *= s;
- }
-
- return nv;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_lerp(const atcore_float4& v1, const atcore_float4& v2, float t)
-{
- return gfsdk_makeFloat4(
- gfsdk_lerp(v1.x, v2.x, t),
- gfsdk_lerp(v1.y, v2.y, t),
- gfsdk_lerp(v1.z, v2.z, t),
- gfsdk_lerp(v1.w, v2.w, t)
- );
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// quaternion
-///////////////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_quaternionConjugate(const atcore_float4& in)
-{
- return gfsdk_makeFloat4(-in.x, -in.y, -in.z, in.w);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_quaternionMultiply(const atcore_float4& q0, const atcore_float4& q1)
-{
- atcore_float4 q;
-
- const float tx = q0.w * q1.x + q0.x * q1.w + q0.y * q1.z - q0.z * q1.y;
- const float ty = q0.w * q1.y + q0.y * q1.w + q0.z * q1.x - q0.x * q1.z;
- const float tz = q0.w * q1.z + q0.z * q1.w + q0.x * q1.y - q0.y * q1.x;
-
- q.w = q0.w * q1.w - q0.x * q1.x - q0.y * q1.y - q0.z * q1.z;
- q.x = tx;
- q.y = ty;
- q.z = tz;
-
- return q;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// 4x4 matrix
-////////////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT void gfsdk_makeIdentity(atcore_float4x4& transform);
-CORELIB_EXPORT void gfsdk_makeTranslation(atcore_float4x4& m, const atcore_float3& t);
-CORELIB_EXPORT void gfsdk_makeScale(atcore_float4x4& m, const atcore_float3& s);
-CORELIB_EXPORT void gfsdk_makeRotation(atcore_float4x4& m, const atcore_float4& q);
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4x4& operator*=(atcore_float4x4& m, float s)
-{
- float* data = (float*)&m;
- for (int i = 0; i < 16; i++)
- data[i] *= s;
-
- return m;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline void gfsdk_setPosition(atcore_float4x4&m, const atcore_float3& v)
-{
- m._41 = v.x;
- m._42 = v.y;
- m._43 = v.z;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4x4 gfsdk_transpose(const atcore_float4x4& m)
-{
- atcore_float4x4 om;
-
- om._11 = m._11; om._12 = m._21; om._13 = m._31; om._14 = m._41;
- om._21 = m._12; om._22 = m._22; om._23 = m._32; om._24 = m._42;
- om._31 = m._13; om._32 = m._23; om._33 = m._33; om._34 = m._43;
- om._41 = m._14; om._42 = m._24; om._43 = m._34; om._44 = m._44;
-
- return om;
-}
-
-////////////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4x4& operator+=(atcore_float4x4& m1, const atcore_float4x4& m2)
-{
- float* data1 = (float*)&m1;
- float* data2 = (float*)&m2;
-
- for (int i = 0; i < 16; i++)
- data1[i] += data2[i];
-
- return m1;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 gfsdk_transform(const atcore_float4x4 &m, atcore_float4 op)
-{
- atcore_float4 p;
-
- p.x = op.x * m._11 + op.y * m._21 + op.z * m._31 + op.w * m._41;
- p.y = op.x * m._12 + op.y * m._22 + op.z * m._32 + op.w * m._42;
- p.z = op.x * m._13 + op.y * m._23 + op.z * m._33 + op.w * m._43;
- p.w = op.x * m._14 + op.y * m._24 + op.z * m._34 + op.w * m._44;
-
- return p;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_transformCoord(const atcore_float4x4 &m, atcore_float3 op)
-{
- atcore_float3 p;
-
- p.x = op.x * m._11 + op.y * m._21 + op.z * m._31 + m._41;
- p.y = op.x * m._12 + op.y * m._22 + op.z * m._32 + m._42;
- p.z = op.x * m._13 + op.y * m._23 + op.z * m._33 + m._43;
-
- return p;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_transformVector(const atcore_float4x4 &m, atcore_float3 op)
-{
- atcore_float3 p;
-
- p.x = op.x * m._11 + op.y * m._21 + op.z * m._31;
- p.y = op.x * m._12 + op.y * m._22 + op.z * m._32;
- p.z = op.x * m._13 + op.y * m._23 + op.z * m._33;
-
- return p;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_getScale(const atcore_float4x4& m)
-{
- atcore_float3 ax = gfsdk_makeFloat3(m._11, m._12, m._13);
- atcore_float3 ay = gfsdk_makeFloat3(m._21, m._22, m._23);
- atcore_float3 az = gfsdk_makeFloat3(m._31, m._32, m._33);
-
- return gfsdk_makeFloat3(gfsdk_length(ax), gfsdk_length(ay), gfsdk_length(az));
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_getTranslation(const atcore_float4x4& m)
-{
- return gfsdk_makeFloat3(m._41, m._42, m._43);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline void gfsdk_setTranslation(atcore_float4x4& m, const atcore_float3 &v)
-{
- m._41 = v.x;
- m._42 = v.y;
- m._43 = v.z;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline const atcore_float4x4& gfsdk_orthonormalize(atcore_float4x4& m)
-{
- atcore_float3 ax = gfsdk_makeFloat3(m._11, m._12, m._13);
- atcore_float3 ay = gfsdk_makeFloat3(m._21, m._22, m._23);
- atcore_float3 az = gfsdk_makeFloat3(m._31, m._32, m._33);
-
- gfsdk_normalize(ax);
- gfsdk_normalize(ay);
- gfsdk_normalize(az);
-
- m._11 = ax.x; m._12 = ax.y; m._13 = ax.z;
- m._21 = ay.x; m._22 = ay.y; m._23 = ay.z;
- m._31 = az.x; m._32 = az.y; m._33 = az.z;
-
- return m;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT atcore_float4x4 gfsdk_lerp(atcore_float4x4& start, atcore_float4x4& end, float t);
-
-////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT atcore_float4 gfsdk_getRotation(const atcore_float4x4& m);
-
-////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT atcore_float4x4 gfsdk_makeTransform(const atcore_float4& q, const atcore_float3& t, const atcore_float3 &s);
-
-////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT atcore_float4x4 operator*(const atcore_float4x4& in1, const atcore_float4x4& in2);
-
-////////////////////////////////////////////////////////////////////////////////
-CORELIB_EXPORT atcore_float4x4 gfsdk_inverse(const atcore_float4x4& m);
-
-////////////////////////////////////////////////////////////////////////////////
-// dual quaternion
-////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_dualquaternion gfsdk_makeDQ(const atcore_float4& q, const atcore_float3& t)
-{
- atcore_dualquaternion dq;
-
- dq.q0 = gfsdk_normalize(q);
- dq.q1 = gfsdk_quaternionMultiply(gfsdk_makeFloat4(t, 0), dq.q0) * 0.5f;
-
- return dq;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-atcore_dualquaternion gfsdk_makeDQ(const atcore_float4x4& m);
-
-////////////////////////////////////////////////////////////////////////////////
-inline const atcore_dualquaternion& gfsdk_normalize(atcore_dualquaternion & dq)
-{
- float mag = gfsdk_dot( dq.q0, dq.q0);
- float deLen = 1.0f / sqrt(mag+FLT_EPSILON);
-
- dq.q0 = dq.q0 * deLen;
- dq.q1 = dq.q1 * deLen;
-
- return dq;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_dualquaternion operator*(float s, const atcore_dualquaternion & dq)
-{
- return atcore_dualquaternion(s * dq.q0, s * dq.q1);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_dualquaternion operator*(const atcore_dualquaternion & dq, float s)
-{
- return atcore_dualquaternion(s * dq.q0, s * dq.q1);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_dualquaternion& operator+=(atcore_dualquaternion &dq, const atcore_dualquaternion & dq2)
-{
- // hemispherization
- float sign = (gfsdk_dot(dq.q0, dq2.q0) < -FLT_EPSILON) ? -1.0f: 1.0f;
-
- dq.q0 += sign * dq2.q0;
- dq.q1 += sign * dq2.q1;
-
- return dq;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_dualquaternion gfsdk_lerp(const atcore_dualquaternion &dq1, const atcore_dualquaternion & dq2, float t)
-{
- atcore_dualquaternion dq = dq1 * (1.0f - t);
-
- float sign = (gfsdk_dot(dq1.q0, dq2.q0) < -FLT_EPSILON) ? -1.0f: 1.0f;
-
- dq += (t * sign) * dq2;
- gfsdk_normalize(dq);
-
- return dq;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_transformCoord(const atcore_dualquaternion& dq, const atcore_float3 &vecIn)
-{
- atcore_float3 d0 = gfsdk_makeFloat3(dq.q0.x, dq.q0.y, dq.q0.z);
- atcore_float3 de = gfsdk_makeFloat3(dq.q1.x, dq.q1.y, dq.q1.z);
- float a0 = dq.q0.w;
- float ae = dq.q1.w;
-
- atcore_float3 temp = gfsdk_cross( d0, vecIn ) + a0 * vecIn;
- atcore_float3 temp2 = 2.0f * (a0 * de - ae * d0 + gfsdk_cross(d0, de));
-
- return vecIn + temp2 + 2.0f * gfsdk_cross( d0, temp);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 gfsdk_transformVector(const atcore_dualquaternion& dq, const atcore_float3 &vecIn)
-{
- atcore_float3 d0 = gfsdk_makeFloat3(dq.q0.x, dq.q0.y, dq.q0.z);
- atcore_float3 de = gfsdk_makeFloat3(dq.q1.x, dq.q1.y, dq.q1.z);
- float a0 = dq.q0.w;
- float ae = dq.q1.w;
-
- atcore_float3 temp = gfsdk_cross( d0, vecIn ) + a0 * vecIn;
- return vecIn + 2.0f * gfsdk_cross( d0, temp);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float4 getRotation(const atcore_dualquaternion& dq)
-{
- return dq.q0;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-inline atcore_float3 getTranslation(const atcore_dualquaternion& dq)
-{
- atcore_float4 dual = 2.0f * dq.q1;
- atcore_float4 t = gfsdk_quaternionMultiply(dual, gfsdk_quaternionConjugate( dq.q0 ));
-
- return gfsdk_makeFloat3(t.x, t.y, t.z);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Profiler.cpp b/tools/ArtistTools/source/CoreLib/Utils/Profiler.cpp
deleted file mode 100644
index aab4de3..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Profiler.cpp
+++ /dev/null
@@ -1,82 +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 "nvToolsExt.h"
-#include <stdlib.h> // for rand()
-
-void ProfilerRangePush(const char* name) {
- unsigned int color = 0xFF000000 | ((rand()%256) << 16) | ((rand()%256) << 8) | (rand()%256);
- // Zero the structure
- nvtxEventAttributes_t event_attrib = {0};
- // Set the version and the size information
- event_attrib.version = NVTX_VERSION;
- event_attrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE;
- // Configure the attributes. 0 is the default for all attributes
- event_attrib.colorType = NVTX_COLOR_ARGB;
- event_attrib.color = color;
- event_attrib.messageType = NVTX_MESSAGE_TYPE_ASCII;
- event_attrib.message.ascii = name;
- nvtxRangePushEx(&event_attrib);
-}
-
-void ProfilerRangePush(const char* name, unsigned int color) {
- // Zero the structure
- nvtxEventAttributes_t event_attrib = {0};
- // Set the version and the size information
- event_attrib.version = NVTX_VERSION;
- event_attrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE;
- // Configure the attributes. 0 is the default for all attributes
- event_attrib.colorType = NVTX_COLOR_ARGB;
- event_attrib.color = color;
- event_attrib.messageType = NVTX_MESSAGE_TYPE_ASCII;
- event_attrib.message.ascii = name;
- nvtxRangePushEx(&event_attrib);
-}
-
-void ProfilerRangePop() {
- nvtxRangePop();
-}
-
-#include "Profiler.h"
-
-ScopedProfiler::ScopedProfiler(const char* name)
-{
- ProfilerRangePush(name);
-}
-
-ScopedProfiler::ScopedProfiler(const char* name, unsigned int color)
-{
- ProfilerRangePush(name, color);
-}
-
-ScopedProfiler::~ScopedProfiler()
-{
- ProfilerRangePop();
-}
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Profiler.h b/tools/ArtistTools/source/CoreLib/Utils/Profiler.h
deleted file mode 100644
index 5f00175..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Profiler.h
+++ /dev/null
@@ -1,51 +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 "corelib_global.h"
-
-// name - the name to be displayed
-void ProfilerRangePush(const char* name);
-
-// name - the name to be displayed
-// color - ARGB color. ex) 0xFFFF0000 = Red, 0xFF0000FF = Blue
-void ProfilerRangePush(const char* name, unsigned int color);
-
-void ProfilerRangePop();
-
-struct CORELIB_EXPORT ScopedProfiler
-{
- ScopedProfiler(const char* name);
-
- ScopedProfiler(const char* name, unsigned int color);
-
- ~ScopedProfiler();
-};
-
-#define FUNCTION_PROFILER() ScopedProfiler _scoped_function_profiler(__FUNCTION__);
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Settings.cpp b/tools/ArtistTools/source/CoreLib/Utils/Settings.cpp
deleted file mode 100644
index 5445bef..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Settings.cpp
+++ /dev/null
@@ -1,767 +0,0 @@
-/*******************************************************************************
-* NVIDIA Corporation
-* Software License Agreement - OpenAutomate SDK
-*
-* IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING
-* Do not use or load the OpenAutomate SDK and any associated materials
-* provided by NVIDIA on NVIDIA�s website (collectively, the "Software")
-* until You have carefully read the following terms and conditions. By
-* loading or using the Software, You agree to fully comply with the terms
-* and conditions of this Software License Agreement ("Agreement") by and
-* between NVIDIA Corporation, a Delaware corporation with its principal
-* place of business at 2701 San Tomas Expressway, Santa Clara, California
-* 95050 U.S.A. ("NVIDIA"), and You. If You do not wish to so agree, do not
-* install or use the Software.
-*
-* For the purposes of this Agreement:
-*
-* "Licensee," "You" and/or "Your" shall mean, collectively and
-* individually, Original Equipment Manufacturers, Independent Hardware
-* Vendors, Independent Software Vendors, and End-Users of the Software
-* pursuant to the terms and conditions of this Agreement.
-*
-* "Derivative Works" shall mean derivatives of the Software created by You
-* or a third party on Your behalf, which term shall include: (a) for
-* copyrightable or copyrighted material, any translation, abridgement,
-* revision or other form in which an existing work may be recast,
-* transformed or adapted; (b) for work protected by topography or mask
-* right, any translation, abridgement, revision or other form in which an
-* existing work may be recast, transformed or adapted; (c) for patentable
-* or patented material, any Improvement; and (d) for material protected by
-* trade secret, any new material derived from or employing such existing
-* trade secret.
-*
-* "Excluded License" is any license that requires as a condition of use,
-* modification and/or distribution of software subject to the Excluded
-* License, that such software or other software distributed and/or
-* combined with such software be (i) disclosed or distributed in source
-* code form, (ii) licensed for the purpose of making derivative works, or
-* (iii) redistributable at no charge.
-*
-* SECTION 1 - GRANT OF LICENSE.
-* NVIDIA agrees to provide the Software and any associated materials
-* pursuant to the terms and conditions of this Agreement. Subject to the
-* terms of this Agreement, NVIDIA grants to You a nonexclusive,
-* transferable, worldwide, revocable, limited, royalty-free, fully paid-up
-* license under NVIDIA�s copyrights to
-*
-* (a) install, deploy, use, have used execute, reproduce, display,
-* perform, run, modify the source code of the Software, or to prepare and
-* have prepared Derivative Works thereof the Software for Your own
-* internal development, testing and maintenance purposes to incorporate
-* the Software or Derivative Works thereof, in part or whole, into Your
-* software applications;
-*
-* (b) to transfer, distribute and sublicense the Software (in its
-* unmodified form as delivered to You by NVIDIA pursuant to this
-* Agreement) in any medium or technology for Your sublicensees to
-* incorporate the Software or Derivative Works thereof, in part or whole,
-* into their respective software applications; and
-*
-* (c) to transfer, distribute and sublicense Derivative Works (in object
-* code only) of the Software (i)_as incorporated in Your application
-* software in any medium or technology; and (ii) certified as OpenAutomate
-* Compatible Software.
-*
-* You may exercise your license rights pursuant to Subsection 1(b) and (c)
-* above pursuant to the terms and conditions of any form of end-user
-* software license agreement of Your choice, including but not limited to
-* an Excluded License.
-*
-* In the event NVIDIA certifies Your application software, incorporating
-* the Derivative Works (in object code only) of the Software, as
-* OpenAutomate compatible ("OpenAutomate Compatible Software"), NVIDIA
-* grants You a nonexclusive, worldwide, revocable, paid-up license to use
-* the name and trademark to "OpenAutomate Compatible" solely for the
-* purposes of identifying and/or marketing Your application software as
-* OpenAutomate Compatible Software; provided that Licensee fully complies
-* with the following:
-*
-* (x) Licensee agrees that it is strictly prohibited from using the name
-* and trademark of "OpenAutomate Compatible" if Your application software
-* is not OpenAutomate Compatible Software;
-*
-* (y) if NVIDIA objects to Your improper use of the "OpenAutomate
-* Compatible" name and trademark, You will take all reasonable steps
-* necessary to resolve NVIDIA�s objections. NVIDIA may reasonably monitor
-* the quality of Your application software bearing the "OpenAutomate
-* Compatible" name or trademark pursuant to this Agreement; and
-*
-* (z) any goodwill attached to NVIDIA�s trademarks, service marks, or
-* trade names belong to NVIDIA and this Agreement does not grant You any
-* right to use them.
-*
-* If You are not the final manufacturer or vendor of a computer system or
-* software program incorporating the Software, or if Your Contractors (as
-* defined below), affiliates or subsidiaries need to exercise any, some or
-* all of the license grant described above herein to the Software on Your
-* behalf, then You may transfer a copy of the Software, (and related
-* end-user documentation) to such recipient for use in accordance with the
-* terms of this Agreement, provided such recipient agrees to be fully
-* bound by the terms hereof. Except as expressly permitted in this
-* Agreement, Unless otherwise authorized in the Agreement, You shall not
-* otherwise assign, sublicense, lease, or in any other way transfer or
-* disclose Software to any third party. Unless otherwise authorized in the
-* Agreement, You shall not reverse- compile, disassemble,
-* reverse-engineer, or in any manner attempt to derive the source code of
-* the Software from the object code portions of the Software.
-*
-* Except as expressly stated in this Agreement, no license or right is
-* granted to You directly or by implication, inducement, estoppel or
-* otherwise. NVIDIA shall have the right to inspect or have an independent
-* auditor inspect Your relevant records to verify Your compliance with the
-* terms and conditions of this Agreement.
-*
-* SECTION 2 - CONFIDENTIALITY.
-* If applicable, any exchange of Confidential Information (as defined in
-* the NDA) shall be made pursuant to the terms and conditions of a
-* separately signed Non-Disclosure Agreement ("NDA") by and between NVIDIA
-* and You. For the sake of clarity, You agree that the Software is
-* Confidential Information of NVIDIA.
-*
-* If You wish to have a third party consultant or subcontractor
-* ("Contractor") perform work on Your behalf which involves access to or
-* use of Software, You shall obtain a written confidentiality agreement
-* from the Contractor which contains terms and obligations with respect to
-* access to or use of Software no less restrictive than those set forth in
-* this Agreement and excluding any distribution or sublicense rights, and
-* use for any other purpose than permitted in this Agreement. Otherwise,
-* You shall not disclose the terms or existence of this Agreement or use
-* NVIDIA's name in any publications, advertisements, or other
-* announcements without NVIDIA's prior written consent. Unless otherwise
-* provided in this Agreement, You do not have any rights to use any NVIDIA
-* trademarks or logos.
-*
-* SECTION 3 - OWNERSHIP OF SOFTWARE AND INTELLECTUAL PROPERTY RIGHTS.
-* All rights, title and interest to all copies of the Software remain with
-* NVIDIA, subsidiaries, licensors, or its suppliers. The Software is
-* copyrighted and protected by the laws of the United States and other
-* countries, and international treaty provisions. You may not remove any
-* copyright notices from the Software. NVIDIA may make changes to the
-* Software, or to items referenced therein, at any time and without
-* notice, but is not obligated to support or update the Software. Except
-* as otherwise expressly provided, NVIDIA grants no express or implied
-* right under any NVIDIA patents, copyrights, trademarks, or other
-* intellectual property rights.
-*
-* All rights, title and interest in the Derivative Works of the Software
-* remain with You subject to the underlying license from NVIDIA to the
-* Software. In Your sole discretion, You may grant NVIDIA, upon NVIDIA�s
-* request for such a license described herein, an irrevocable, perpetual,
-* nonexclusive, worldwide, royalty-free paid-up license to make, have
-* made, use, have used, sell, license, distribute, sublicense or otherwise
-* transfer Derivative Works created by You that add functionality or
-* improvement to the Software.
-*
-* You has no obligation to give NVIDIA any suggestions, comments or other
-* feedback ("Feedback") relating to the Software. However, NVIDIA may use
-* and include any Feedback that You voluntarily provide to improve the
-* Software or other related NVIDIA technologies. Accordingly, if You
-* provide Feedback, You agree NVIDIA and its licensees may freely use,
-* reproduce, license, distribute, and otherwise commercialize the Feedback
-* in the Software or other related technologies without the payment of any
-* royalties or fees.
-*
-* You may transfer the Software only if the recipient agrees to be fully
-* bound by these terms and conditions of this Agreement.
-*
-* SECTION 4 - NO WARRANTIES.
-* THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY
-* OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT,
-* OR FITNESS FOR A PARTICULAR PURPOSE. NVIDIA does not warrant or assume
-* responsibility for the accuracy or completeness of any information,
-* text, graphics, links or other items contained within the Software.
-* NVIDIA does not represent that errors or other defects will be
-* identified or corrected.
-*
-* SECTION 5 - LIMITATION OF LIABILITY.
-* EXCEPT WITH RESPECT TO THE MISUSE OF THE OTHER PARTY�S INTELLECTUAL
-* PROPERTY OR DISCLOSURE OF THE OTHER PARTY�S CONFIDENTIAL INFORMATION IN
-* BREACH OF THIS AGREEMENT, IN NO EVENT SHALL NVIDIA, SUBSIDIARIES,
-* LICENSORS, OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER
-* (INCLUDING, WITHOUT LIMITATION, INDIRECT, LOST PROFITS, CONSEQUENTIAL,
-* BUSINESS INTERRUPTION OR LOST INFORMATION) ARISING OUT OF THE USE OF OR
-* INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR
-* LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR
-* INCIDENTAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU
-* MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO
-* JURISDICTION. NOTWITHSTANDING THE FOREGOING, NVIDIA�S AGGREGATE
-* LIABILITY ARISING OUT OF THIS AGREEMENT SHALL NOT EXCEED ONE HUNDRED
-* UNITED STATES DOLLARS (USD$100).
-*
-* SECTION 6 - TERM.
-* This Agreement and the licenses granted hereunder shall be effective as
-* of the date You download the applicable Software ("Effective Date") and
-* continue for a period of one (1) year ("Initial Term") respectively,
-* unless terminated earlier in accordance with the "Termination" provision
-* of this Agreement. Unless either party notifies the other party of its
-* intent to terminate this Agreement at least three (3) months prior to
-* the end of the Initial Term or the applicable renewal period, this
-* Agreement will be automatically renewed for one (1) year renewal periods
-* thereafter, unless terminated in accordance with the "Termination"
-* provision of this Agreement.
-*
-* SECTION 7 - TERMINATION.
-* NVIDIA may terminate this Agreement at any time if You violate its
-* terms. Upon termination, You will immediately destroy the Software or
-* return all copies of the Software to NVIDIA, and certify to NVIDIA in
-* writing that such actions have been completed. Upon termination or
-* expiration of this Agreement the license grants to Licensee shall
-* terminate, except that sublicenses rightfully granted by Licensee under
-* this Agreement in connection with Section 1(b) and (c) of this Agreement
-* provided by Licensee prior to the termination or expiration of this
-* Agreement shall survive in accordance with their respective form of
-* license terms and conditions.
-*
-* SECTION 8 - MISCELLANEOUS.
-*
-* SECTION 8.1 - SURVIVAL.
-* Those provisions in this Agreement, which by their nature need to
-* survive the termination or expiration of this Agreement, shall survive
-* termination or expiration of the Agreement, including but not limited to
-* Sections 2, 3, 4, 5, 7, and 8.
-*
-* SECTION 8.2 - APPLICABLE LAWS.
-* Claims arising under this Agreement shall be governed by the laws of
-* Delaware, excluding its principles of conflict of laws and the United
-* Nations Convention on Contracts for the Sale of Goods. The state and/or
-* federal courts residing in Santa Clara County, California shall have
-* exclusive jurisdiction over any dispute or claim arising out of this
-* Agreement. You may not export the Software in violation of applicable
-* export laws and regulations.
-*
-* SECTION 8.3 - AMENDMENT.
-* The Agreement shall not be modified except by a written agreement that
-* names this Agreement and any provision to be modified, is dated
-* subsequent to the Effective Date, and is signed by duly authorized
-* representatives of both parties.
-*
-* SECTION 8.4 - NO WAIVER.
-* No failure or delay on the part of either party in the exercise of any
-* right, power or remedy under this Agreement or under law, or to insist
-* upon or enforce performance by the other party of any of the provisions
-* of this Agreement or under law, shall operate as a waiver thereof, nor
-* shall any single or partial exercise of any right, power or remedy
-* preclude other or further exercise thereof, or the exercise of any other
-* right, power or remedy; rather the provision, right, or remedy shall be
-* and remain in full force and effect.
-*
-* SECTION 8.5 - NO ASSIGNMENT.
-* This Agreement and Licensee�s rights and obligations herein, may not be
-* assigned, subcontracted, delegated, or otherwise transferred by Licensee
-* without NVIDIA�s prior written consent, and any attempted assignment,
-* subcontract, delegation, or transfer in violation of the foregoing will
-* be null and void. The terms of this Agreement shall be binding upon
-* Licensee�s assignees.
-*
-* SECTION 8.6 - GOVERNMENT RESTRICTED RIGHTS.
-* The parties acknowledge that the Software is subject to U.S. export
-* control laws and regulations. The parties agree to comply with all
-* applicable international and national laws that apply to the Software,
-* including the U.S. Export Administration Regulations, as well as
-* end-user, end-use and destination restrictions issued by U.S. and other
-* governments.
-*
-* The Software has been developed entirely at private expense and is
-* commercial computer software provided with RESTRICTED RIGHTS. Use,
-* duplication or disclosure of the Software by the U.S. Government or a
-* U.S. Government subcontractor is subject to the restrictions set forth
-* in the Agreement under which the Software was obtained pursuant to DFARS
-* 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the
-* Commercial Computer Software - Restricted Rights clause at FAR
-* 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San
-* Tomas Expressway, Santa Clara, CA 95050. Use of the Software by the
-* Government constitutes acknowledgment of NVIDIA's proprietary rights
-* therein.
-*
-* SECTION 8.7 - INDEPENDENT CONTRACTORS.
-* Licensee�s relationship to NVIDIA is that of an independent contractor,
-* and neither party is an agent or partner of the other. Licensee will
-* not have, and will not represent to any third party that it has, any
-* authority to act on behalf of NVIDIA.
-*
-* SECTION 8.8 - SEVERABILITY.
-* If for any reason a court of competent jurisdiction finds any provision
-* of this Agreement, or portion thereof, to be unenforceable, that
-* provision of the Agreement will be enforced to the maximum extent
-* permissible so as to affect the intent of the parties, and the remainder
-* of this Agreement will continue in full force and effect. This Agreement
-* has been negotiated by the parties and their respective counsel and will
-* be interpreted fairly in accordance with its terms and without any
-* strict construction in favor of or against either party.
-*
-* SECTION 8.9 - ENTIRE AGREEMENT.
-* This Agreement and NDA constitute the entire agreement between the
-* parties with respect to the subject matter contemplated herein, and
-* merges all prior and contemporaneous communications.
-*
-******************************************************************************/
-
-
-#include "settings.h"
-#include "Nv.h"
-
-char OptionsFileName[] = "FurViewerOptions.txt";
-//std::vector<void *> AllocBlocks;
-
-using namespace std;
-
-void Error(const char *fmt, ...);
-static int HexCharToInt(unsigned char c);
-bool GetExePath(char* exe_path);
-static int Hex2BytesToInt(const unsigned char *buf);
-static oaFloat StrToFloat(const char *buf);
-static void WriteFloat(FILE *fp, oaFloat val);
-static void StripNewLine(char *str);
-void *Alloc(size_t n);
-char *StrDup(const char *str);
-
-bool GetExePath(char* exe_path)
-{
-#if WIN32
- char delim = '\\';
-#else
- char delim = '/';
-#endif
-
- DWORD dwRet;
- dwRet = GetModuleFileNameA(NV_NULL, exe_path, MAX_PATH);
- if ( dwRet == 0 )
- {
- exe_path[0] = '\0';
- return false;
- }
-
- int i;
- for ( i = dwRet; i > 0; i-- )
- {
- if ( exe_path[i-1] == delim )
- break;
- }
- exe_path[i] = '\0';
-
- return true;
-}
-
-void Error(const char *fmt, ...)
-{
- va_list AP;
- va_start(AP, fmt);
-
- char msg[1024];
- //fprintf(msg, "ERROR: ");
- //vfprintf(msg, fmt, AP);
- //fprintf(msg, "\n");
- sprintf(msg, fmt, AP);
- OutputDebugStringA(msg);
- assert(0);
-// exit(-1);
-}
-
-static int HexCharToInt(unsigned char c)
-{
- if(c >= '0' && c <= '9')
- return((int)(c - '0'));
-
- c = tolower(c);
- if(c >= 'a' && c <= 'f')
- return((int)(c - 'a' + 10));
-
- return(0);
-}
-
-static int Hex2BytesToInt(const unsigned char *buf)
-{
- return(HexCharToInt(buf[0]) << 4 | HexCharToInt(buf[1]));
-}
-
-static oaFloat StrToFloat(const char *buf)
-{
- size_t Len = strlen(buf);
- if(Len != sizeof(oaFloat) * 2)
- return(0.0);
-
- oaFloat Ret;
- unsigned char *Buf = (unsigned char *)&Ret;
- for(int i=0; i < sizeof(oaFloat); ++i)
- {
- Buf[i] = Hex2BytesToInt((const unsigned char *)buf);
- buf += 2;
- }
-
- return(Ret);
-}
-
-static void WriteFloat(FILE *fp, oaFloat val)
-{
- unsigned char *Buf = (unsigned char *)&val;
- for(int i=0; i < sizeof(oaFloat); ++i)
- fprintf(fp, "%02x", Buf[i]);
-}
-
-static void StripNewLine(char *str)
-{
- size_t StrLen = strlen(str);
- if(StrLen == 0)
- return;
-
- for(size_t i=StrLen-1; i >= 0; --i)
- if(str[i] == '\n')
- {
- str[i] = 0;
- break;
- }
-}
-
-void *Alloc(size_t n)
-{
- void *Ret = malloc(n);
- assert(n != 0);
-
- //AllocBlocks.push_back(Ret);
- return(Ret);
-}
-
-char *StrDup(const char *str)
-{
- assert(str != NV_NULL);
- char *Ret = strdup(str);
-
- //AllocBlocks.push_back(Ret);
- return(Ret);
-}
-
-AppSettings::AppSettings()
-{
- int NumOptions = 0;
-}
-
-AppSettings::~AppSettings()
-{
- Cleanup();
-}
-
-void AppSettings::InitOptions(void)
-{
- {
- oaNamedOption *Option;
-
- // Resolution (enum)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/Resolution";
- Option->DataType = OA_TYPE_ENUM;
- Option->Value.Enum = "640x480";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "1024x768";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "1200x768";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "1600x1200";
-
- // AA (enum)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
-
- Option->Name = "User/AA";
- Option->DataType = OA_TYPE_ENUM;
- Option->Value.Enum = "Off";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "2X";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "4X";
-
- Options[NumOptions] = *Option;
- Option = &Options[NumOptions++];
- Option->Value.Enum = "8X";
-
- // device id (int)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/Device";
- Option->DataType = OA_TYPE_INT;
-
- Option->Value.Int = -1; // when -1 to choose a good GPU
-
- //Backdoor (enum)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/Backdoor";
- Option->DataType = OA_TYPE_STRING;
- Option->Value.String = "";
-
- // HideUI (bool)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/HideUI";
- Option->DataType = OA_TYPE_BOOL;
-
- Option->Value.Bool = OA_FALSE;
-
- // Perf mode (bool)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/PerfMode";
- Option->DataType = OA_TYPE_BOOL;
-
- Option->Value.Bool = OA_FALSE;
-
- // Play (bool)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/Play";
- Option->DataType = OA_TYPE_BOOL;
-
- Option->Value.Bool = OA_FALSE;
-
- // ProjectPath (string)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/ProjectPath";
- Option->DataType = OA_TYPE_STRING;
- Option->Value.String = "";
-
- // FurAssetPath (string)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/FurAssetPath";
- Option->DataType = OA_TYPE_STRING;
- Option->Value.String = "";
-
- // FurDemoPlaylist (string)
- Option = &Options[NumOptions++];
- oaInitOption(Option);
- Option->Name = "User/FurDemoPlaylist";
- Option->DataType = OA_TYPE_STRING;
- Option->Value.String = "";
-
- //Option = &Options[NumOptions++];
- //oaInitOption(Option);
- //Option->Name = "r2_slight_fade";
- //Option->DataType = OA_TYPE_FLOAT;
- //Option->MinValue.Float = 0.0;
- //Option->MaxValue.Float = 100.0;
- //Option->NumSteps = 200;
- }
-
- //****************************************************************************
- //*** Init OptionValues
- //****************************************************************************
-
- // Initialize default options
- for(int i=0; i < NumOptions; ++i)
- {
- string Name(Options[i].Name);
- OptionValueMap[Name].Name = Options[i].Name;
- OptionValueMap[Name].Type = Options[i].DataType;
- OptionValueMap[Name].Value = Options[i].Value;
- }
-
- InitDefaultOptions();
- ///////////////////////////////////////////////////////
- // Load any persistent options if they've been previously set
- ReadOptionsFile();
-}
-
-void AppSettings::InitDefaultOptions(void)
-{
- oaValue Value;
-
- Value.Enum = "1200x768";
- SetOptionValue("User/Resolution", OA_TYPE_ENUM, &Value);
-
- Value.Enum = "8X";
- SetOptionValue("User/AA", OA_TYPE_ENUM, &Value);
-}
-
-void AppSettings::SetOptionValue(const char *name,
- oaOptionDataType type,
- const oaValue *value)
-{
- string Name(name);
- assert(OptionValueMap.find(Name) != OptionValueMap.end());
- assert(OptionValueMap[Name].Type == type);
-
- switch(type)
- {
- case OA_TYPE_STRING:
- OptionValueMap[Name].Value.String = StrDup(value->String);
- break;
-
- case OA_TYPE_ENUM:
- OptionValueMap[Name].Value.Enum = StrDup(value->Enum);
- break;
-
- default:
- OptionValueMap[Name].Value = *value;
- }
-}
-
-void AppSettings::ReadOptionsFile(void)
-{
- char optionFile[MAX_PATH] = "";
- if(!GetExePath(optionFile))
- {
- fprintf(stderr, "Cannot get exe path\r\n");
- }
- strcat(optionFile, OptionsFileName);
-
-
- FILE *FP = fopen(optionFile, "rb");
- if(!FP)
- return;
-
- fprintf(stderr, "FurViewer: Reading options file \"%s\".\n",
- optionFile);
- fflush(stderr);
-
- char Line[1024] = "";
- int LineNum = 1;
- while (fgets(Line, sizeof(Line), FP) != NV_NULL)
- {
- StripNewLine(Line);
- if(Line[0] == 0)
- continue;
-
- char *Name = strtok(Line, "\t");
- char *Value = strtok(NV_NULL, "");
-
- if(!Name || !Value)
- {
- //Error("Invalid format in options file \"%s\" on line %d\n",
- //OptionsFileName,
- //LineNum);
- continue;
- }
-
- map<string, OptionValue>::const_iterator OptVal =
- OptionValueMap.find(string(Name));
-
- if(OptVal == OptionValueMap.end())
- Error("Unknown option \"%s\" defined in options file \"%s\" on line %d.",
- Name,
- OptionsFileName,
- LineNum);
-
- SetOptionValue(Name, OptVal->second.Type, Value);
-
- LineNum++;
- }
-
- fclose(FP);
-}
-
-void AppSettings::Cleanup(void)
-{
- //vector<void *>::iterator Iter = AllocBlocks.begin();
- //for(; Iter != AllocBlocks.end(); Iter++)
- // free(*Iter);
-
- //AllocBlocks.clear();
-}
-
-
-void AppSettings::WriteOptionsFile(FILE *fp)
-{
- map<string, OptionValue>::const_iterator Iter = OptionValueMap.begin();
- for(; Iter != OptionValueMap.end(); ++Iter)
- {
- fprintf(fp, "%s\t", Iter->second.Name);
- switch(Iter->second.Type)
- {
- case OA_TYPE_INT:
- fprintf(fp, "%d", Iter->second.Value.Int);
- break;
-
- case OA_TYPE_BOOL:
- fprintf(fp, "%d", (int)Iter->second.Value.Bool);
- break;
-
- case OA_TYPE_FLOAT:
- WriteFloat(fp, Iter->second.Value.Float);
- break;
-
- case OA_TYPE_STRING:
- fprintf(fp, "%s", Iter->second.Value.String);
- break;
-
- case OA_TYPE_ENUM:
- fprintf(fp, "%s", Iter->second.Value.Enum);
- break;
-
- }
-
- fprintf(fp, "\n");
- }
-}
-
-void AppSettings::WriteOptionsFile(void)
-{
- char optionFile[MAX_PATH] = "";
- if(!GetExePath(optionFile))
- {
- fprintf(stderr, "Cannot get exe path\r\n");
- }
- strcat(optionFile, OptionsFileName);
-
- fprintf(stderr, "FurViewer: Writing options file \"%s\".\n",
- optionFile);
- fflush(stderr);
-
- FILE *FP = fopen(optionFile, "wb");
- if(!FP)
- Error("Couldn't open \"%s\" for write.\n", optionFile);
-
- WriteOptionsFile(FP);
-
- fclose(FP);
-}
-
-void AppSettings::SetOptionValue(const char *name,
- oaOptionDataType type,
- const char *value)
-{
- assert(name != NV_NULL);
- assert(type != OA_TYPE_INVALID);
- assert(value != NV_NULL);
-
- oaValue Value;
- switch(type)
- {
- case OA_TYPE_INT:
- Value.Int = atoi(value);
- break;
-
- case OA_TYPE_FLOAT:
- Value.Float = StrToFloat(value);
- break;
-
- case OA_TYPE_BOOL:
- Value.Bool = atoi(value) ? OA_TRUE : OA_FALSE;
- break;
-
- case OA_TYPE_STRING:
- Value.String = (oaString)value;
- break;
-
- case OA_TYPE_ENUM:
- Value.Enum = (oaString)value;
- break;
- }
-
- SetOptionValue(name, type, &Value);
-}
-
-
-
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Settings.h b/tools/ArtistTools/source/CoreLib/Utils/Settings.h
deleted file mode 100644
index a845732..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Settings.h
+++ /dev/null
@@ -1,392 +0,0 @@
-/*******************************************************************************
-* NVIDIA Corporation
-* Software License Agreement - OpenAutomate SDK
-*
-* IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING
-* Do not use or load the OpenAutomate SDK and any associated materials
-* provided by NVIDIA on NVIDIA�s website (collectively, the "Software")
-* until You have carefully read the following terms and conditions. By
-* loading or using the Software, You agree to fully comply with the terms
-* and conditions of this Software License Agreement ("Agreement") by and
-* between NVIDIA Corporation, a Delaware corporation with its principal
-* place of business at 2701 San Tomas Expressway, Santa Clara, California
-* 95050 U.S.A. ("NVIDIA"), and You. If You do not wish to so agree, do not
-* install or use the Software.
-*
-* For the purposes of this Agreement:
-*
-* "Licensee," "You" and/or "Your" shall mean, collectively and
-* individually, Original Equipment Manufacturers, Independent Hardware
-* Vendors, Independent Software Vendors, and End-Users of the Software
-* pursuant to the terms and conditions of this Agreement.
-*
-* "Derivative Works" shall mean derivatives of the Software created by You
-* or a third party on Your behalf, which term shall include: (a) for
-* copyrightable or copyrighted material, any translation, abridgement,
-* revision or other form in which an existing work may be recast,
-* transformed or adapted; (b) for work protected by topography or mask
-* right, any translation, abridgement, revision or other form in which an
-* existing work may be recast, transformed or adapted; (c) for patentable
-* or patented material, any Improvement; and (d) for material protected by
-* trade secret, any new material derived from or employing such existing
-* trade secret.
-*
-* "Excluded License" is any license that requires as a condition of use,
-* modification and/or distribution of software subject to the Excluded
-* License, that such software or other software distributed and/or
-* combined with such software be (i) disclosed or distributed in source
-* code form, (ii) licensed for the purpose of making derivative works, or
-* (iii) redistributable at no charge.
-*
-* SECTION 1 - GRANT OF LICENSE.
-* NVIDIA agrees to provide the Software and any associated materials
-* pursuant to the terms and conditions of this Agreement. Subject to the
-* terms of this Agreement, NVIDIA grants to You a nonexclusive,
-* transferable, worldwide, revocable, limited, royalty-free, fully paid-up
-* license under NVIDIA�s copyrights to
-*
-* (a) install, deploy, use, have used execute, reproduce, display,
-* perform, run, modify the source code of the Software, or to prepare and
-* have prepared Derivative Works thereof the Software for Your own
-* internal development, testing and maintenance purposes to incorporate
-* the Software or Derivative Works thereof, in part or whole, into Your
-* software applications;
-*
-* (b) to transfer, distribute and sublicense the Software (in its
-* unmodified form as delivered to You by NVIDIA pursuant to this
-* Agreement) in any medium or technology for Your sublicensees to
-* incorporate the Software or Derivative Works thereof, in part or whole,
-* into their respective software applications; and
-*
-* (c) to transfer, distribute and sublicense Derivative Works (in object
-* code only) of the Software (i)_as incorporated in Your application
-* software in any medium or technology; and (ii) certified as OpenAutomate
-* Compatible Software.
-*
-* You may exercise your license rights pursuant to Subsection 1(b) and (c)
-* above pursuant to the terms and conditions of any form of end-user
-* software license agreement of Your choice, including but not limited to
-* an Excluded License.
-*
-* In the event NVIDIA certifies Your application software, incorporating
-* the Derivative Works (in object code only) of the Software, as
-* OpenAutomate compatible ("OpenAutomate Compatible Software"), NVIDIA
-* grants You a nonexclusive, worldwide, revocable, paid-up license to use
-* the name and trademark to "OpenAutomate Compatible" solely for the
-* purposes of identifying and/or marketing Your application software as
-* OpenAutomate Compatible Software; provided that Licensee fully complies
-* with the following:
-*
-* (x) Licensee agrees that it is strictly prohibited from using the name
-* and trademark of "OpenAutomate Compatible" if Your application software
-* is not OpenAutomate Compatible Software;
-*
-* (y) if NVIDIA objects to Your improper use of the "OpenAutomate
-* Compatible" name and trademark, You will take all reasonable steps
-* necessary to resolve NVIDIA�s objections. NVIDIA may reasonably monitor
-* the quality of Your application software bearing the "OpenAutomate
-* Compatible" name or trademark pursuant to this Agreement; and
-*
-* (z) any goodwill attached to NVIDIA�s trademarks, service marks, or
-* trade names belong to NVIDIA and this Agreement does not grant You any
-* right to use them.
-*
-* If You are not the final manufacturer or vendor of a computer system or
-* software program incorporating the Software, or if Your Contractors (as
-* defined below), affiliates or subsidiaries need to exercise any, some or
-* all of the license grant described above herein to the Software on Your
-* behalf, then You may transfer a copy of the Software, (and related
-* end-user documentation) to such recipient for use in accordance with the
-* terms of this Agreement, provided such recipient agrees to be fully
-* bound by the terms hereof. Except as expressly permitted in this
-* Agreement, Unless otherwise authorized in the Agreement, You shall not
-* otherwise assign, sublicense, lease, or in any other way transfer or
-* disclose Software to any third party. Unless otherwise authorized in the
-* Agreement, You shall not reverse- compile, disassemble,
-* reverse-engineer, or in any manner attempt to derive the source code of
-* the Software from the object code portions of the Software.
-*
-* Except as expressly stated in this Agreement, no license or right is
-* granted to You directly or by implication, inducement, estoppel or
-* otherwise. NVIDIA shall have the right to inspect or have an independent
-* auditor inspect Your relevant records to verify Your compliance with the
-* terms and conditions of this Agreement.
-*
-* SECTION 2 - CONFIDENTIALITY.
-* If applicable, any exchange of Confidential Information (as defined in
-* the NDA) shall be made pursuant to the terms and conditions of a
-* separately signed Non-Disclosure Agreement ("NDA") by and between NVIDIA
-* and You. For the sake of clarity, You agree that the Software is
-* Confidential Information of NVIDIA.
-*
-* If You wish to have a third party consultant or subcontractor
-* ("Contractor") perform work on Your behalf which involves access to or
-* use of Software, You shall obtain a written confidentiality agreement
-* from the Contractor which contains terms and obligations with respect to
-* access to or use of Software no less restrictive than those set forth in
-* this Agreement and excluding any distribution or sublicense rights, and
-* use for any other purpose than permitted in this Agreement. Otherwise,
-* You shall not disclose the terms or existence of this Agreement or use
-* NVIDIA's name in any publications, advertisements, or other
-* announcements without NVIDIA's prior written consent. Unless otherwise
-* provided in this Agreement, You do not have any rights to use any NVIDIA
-* trademarks or logos.
-*
-* SECTION 3 - OWNERSHIP OF SOFTWARE AND INTELLECTUAL PROPERTY RIGHTS.
-* All rights, title and interest to all copies of the Software remain with
-* NVIDIA, subsidiaries, licensors, or its suppliers. The Software is
-* copyrighted and protected by the laws of the United States and other
-* countries, and international treaty provisions. You may not remove any
-* copyright notices from the Software. NVIDIA may make changes to the
-* Software, or to items referenced therein, at any time and without
-* notice, but is not obligated to support or update the Software. Except
-* as otherwise expressly provided, NVIDIA grants no express or implied
-* right under any NVIDIA patents, copyrights, trademarks, or other
-* intellectual property rights.
-*
-* All rights, title and interest in the Derivative Works of the Software
-* remain with You subject to the underlying license from NVIDIA to the
-* Software. In Your sole discretion, You may grant NVIDIA, upon NVIDIA�s
-* request for such a license described herein, an irrevocable, perpetual,
-* nonexclusive, worldwide, royalty-free paid-up license to make, have
-* made, use, have used, sell, license, distribute, sublicense or otherwise
-* transfer Derivative Works created by You that add functionality or
-* improvement to the Software.
-*
-* You has no obligation to give NVIDIA any suggestions, comments or other
-* feedback ("Feedback") relating to the Software. However, NVIDIA may use
-* and include any Feedback that You voluntarily provide to improve the
-* Software or other related NVIDIA technologies. Accordingly, if You
-* provide Feedback, You agree NVIDIA and its licensees may freely use,
-* reproduce, license, distribute, and otherwise commercialize the Feedback
-* in the Software or other related technologies without the payment of any
-* royalties or fees.
-*
-* You may transfer the Software only if the recipient agrees to be fully
-* bound by these terms and conditions of this Agreement.
-*
-* SECTION 4 - NO WARRANTIES.
-* THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY
-* OF ANY KIND, INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT,
-* OR FITNESS FOR A PARTICULAR PURPOSE. NVIDIA does not warrant or assume
-* responsibility for the accuracy or completeness of any information,
-* text, graphics, links or other items contained within the Software.
-* NVIDIA does not represent that errors or other defects will be
-* identified or corrected.
-*
-* SECTION 5 - LIMITATION OF LIABILITY.
-* EXCEPT WITH RESPECT TO THE MISUSE OF THE OTHER PARTY�S INTELLECTUAL
-* PROPERTY OR DISCLOSURE OF THE OTHER PARTY�S CONFIDENTIAL INFORMATION IN
-* BREACH OF THIS AGREEMENT, IN NO EVENT SHALL NVIDIA, SUBSIDIARIES,
-* LICENSORS, OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER
-* (INCLUDING, WITHOUT LIMITATION, INDIRECT, LOST PROFITS, CONSEQUENTIAL,
-* BUSINESS INTERRUPTION OR LOST INFORMATION) ARISING OUT OF THE USE OF OR
-* INABILITY TO USE THE SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR
-* LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR
-* INCIDENTAL DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU
-* MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO
-* JURISDICTION. NOTWITHSTANDING THE FOREGOING, NVIDIA�S AGGREGATE
-* LIABILITY ARISING OUT OF THIS AGREEMENT SHALL NOT EXCEED ONE HUNDRED
-* UNITED STATES DOLLARS (USD$100).
-*
-* SECTION 6 - TERM.
-* This Agreement and the licenses granted hereunder shall be effective as
-* of the date You download the applicable Software ("Effective Date") and
-* continue for a period of one (1) year ("Initial Term") respectively,
-* unless terminated earlier in accordance with the "Termination" provision
-* of this Agreement. Unless either party notifies the other party of its
-* intent to terminate this Agreement at least three (3) months prior to
-* the end of the Initial Term or the applicable renewal period, this
-* Agreement will be automatically renewed for one (1) year renewal periods
-* thereafter, unless terminated in accordance with the "Termination"
-* provision of this Agreement.
-*
-* SECTION 7 - TERMINATION.
-* NVIDIA may terminate this Agreement at any time if You violate its
-* terms. Upon termination, You will immediately destroy the Software or
-* return all copies of the Software to NVIDIA, and certify to NVIDIA in
-* writing that such actions have been completed. Upon termination or
-* expiration of this Agreement the license grants to Licensee shall
-* terminate, except that sublicenses rightfully granted by Licensee under
-* this Agreement in connection with Section 1(b) and (c) of this Agreement
-* provided by Licensee prior to the termination or expiration of this
-* Agreement shall survive in accordance with their respective form of
-* license terms and conditions.
-*
-* SECTION 8 - MISCELLANEOUS.
-*
-* SECTION 8.1 - SURVIVAL.
-* Those provisions in this Agreement, which by their nature need to
-* survive the termination or expiration of this Agreement, shall survive
-* termination or expiration of the Agreement, including but not limited to
-* Sections 2, 3, 4, 5, 7, and 8.
-*
-* SECTION 8.2 - APPLICABLE LAWS.
-* Claims arising under this Agreement shall be governed by the laws of
-* Delaware, excluding its principles of conflict of laws and the United
-* Nations Convention on Contracts for the Sale of Goods. The state and/or
-* federal courts residing in Santa Clara County, California shall have
-* exclusive jurisdiction over any dispute or claim arising out of this
-* Agreement. You may not export the Software in violation of applicable
-* export laws and regulations.
-*
-* SECTION 8.3 - AMENDMENT.
-* The Agreement shall not be modified except by a written agreement that
-* names this Agreement and any provision to be modified, is dated
-* subsequent to the Effective Date, and is signed by duly authorized
-* representatives of both parties.
-*
-* SECTION 8.4 - NO WAIVER.
-* No failure or delay on the part of either party in the exercise of any
-* right, power or remedy under this Agreement or under law, or to insist
-* upon or enforce performance by the other party of any of the provisions
-* of this Agreement or under law, shall operate as a waiver thereof, nor
-* shall any single or partial exercise of any right, power or remedy
-* preclude other or further exercise thereof, or the exercise of any other
-* right, power or remedy; rather the provision, right, or remedy shall be
-* and remain in full force and effect.
-*
-* SECTION 8.5 - NO ASSIGNMENT.
-* This Agreement and Licensee�s rights and obligations herein, may not be
-* assigned, subcontracted, delegated, or otherwise transferred by Licensee
-* without NVIDIA�s prior written consent, and any attempted assignment,
-* subcontract, delegation, or transfer in violation of the foregoing will
-* be null and void. The terms of this Agreement shall be binding upon
-* Licensee�s assignees.
-*
-* SECTION 8.6 - GOVERNMENT RESTRICTED RIGHTS.
-* The parties acknowledge that the Software is subject to U.S. export
-* control laws and regulations. The parties agree to comply with all
-* applicable international and national laws that apply to the Software,
-* including the U.S. Export Administration Regulations, as well as
-* end-user, end-use and destination restrictions issued by U.S. and other
-* governments.
-*
-* The Software has been developed entirely at private expense and is
-* commercial computer software provided with RESTRICTED RIGHTS. Use,
-* duplication or disclosure of the Software by the U.S. Government or a
-* U.S. Government subcontractor is subject to the restrictions set forth
-* in the Agreement under which the Software was obtained pursuant to DFARS
-* 227.7202-3(a) or as set forth in subparagraphs (c)(1) and (2) of the
-* Commercial Computer Software - Restricted Rights clause at FAR
-* 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2701 San
-* Tomas Expressway, Santa Clara, CA 95050. Use of the Software by the
-* Government constitutes acknowledgment of NVIDIA's proprietary rights
-* therein.
-*
-* SECTION 8.7 - INDEPENDENT CONTRACTORS.
-* Licensee�s relationship to NVIDIA is that of an independent contractor,
-* and neither party is an agent or partner of the other. Licensee will
-* not have, and will not represent to any third party that it has, any
-* authority to act on behalf of NVIDIA.
-*
-* SECTION 8.8 - SEVERABILITY.
-* If for any reason a court of competent jurisdiction finds any provision
-* of this Agreement, or portion thereof, to be unenforceable, that
-* provision of the Agreement will be enforced to the maximum extent
-* permissible so as to affect the intent of the parties, and the remainder
-* of this Agreement will continue in full force and effect. This Agreement
-* has been negotiated by the parties and their respective counsel and will
-* be interpreted fairly in accordance with its terms and without any
-* strict construction in favor of or against either party.
-*
-* SECTION 8.9 - ENTIRE AGREEMENT.
-* This Agreement and NDA constitute the entire agreement between the
-* parties with respect to the subject matter contemplated herein, and
-* merges all prior and contemporaneous communications.
-*
-******************************************************************************/
-
-
-#ifndef _SETTINGS_H
-#define _SETTINGS_H
-
-#include <assert.h>
-#include <ctype.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <vector>
-#include <map>
-#include <string>
-#include <conio.h>
-#include <OpenAutomate.h>
-
-#include "corelib_global.h"
-
-#if WIN32
-# include <windows.h>
-# define SLEEP(ms) Sleep(ms)
-#else
-# include <unistd.h>
-# define SLEEP(ms) usleep(1000 * (ms))
-#endif
-
-void Error(const char *fmt, ...);
-bool GetExePath(char* exe_path);
-
-struct OptionValue
-{
- const char *Name;
- oaOptionDataType Type;
- oaValue Value;
-};
-
-class CORELIB_EXPORT AppSettings
-{
-public:
- AppSettings();
- ~AppSettings();
-
- static AppSettings& Inst()
- {
- static AppSettings s_inst;
- return s_inst;
- }
-
- void InitOptions();
-
- void WriteOptionsFile();
-
- void SetOptionValue(const char *name,
- oaOptionDataType type,
- const oaValue *value);
-
- int GetNumOptions(){return NumOptions;}
-
- oaNamedOption* GetOption(int i){return &Options[i];}
-
- OptionValue* GetOptionValue(char* opt_name)
- {
- return &OptionValueMap[opt_name];
- }
-
- std::map<std::string, OptionValue>* GetCurrentOptionMap()
- {
- return &OptionValueMap;
- }
-
-private:
-
- void Cleanup();
-
- void InitDefaultOptions();
-
- void ReadOptionsFile();
-
- void WriteOptionsFile(FILE *fp);
-
- void SetOptionValue(const char *name,
- oaOptionDataType type,
- const char *value);
-
- oaNamedOption Options[128];
- std::map<std::string, OptionValue> OptionValueMap;
-
- int NumOptions;
-};
-
-#endif \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Stats.cpp b/tools/ArtistTools/source/CoreLib/Utils/Stats.cpp
deleted file mode 100644
index d52aa14..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Stats.cpp
+++ /dev/null
@@ -1,76 +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 "Stats.h"
-
-void Stats::reset()
-{
- m_totalRenderTime = 0.0f;
- m_shadowRenderTime = 0.0f;
- m_meshRenderTime = 0.0f;
- m_hairRenderTime = 0.0f;
- m_hairStatsTime = 0.0f;
- m_totalUpdateTime = 0.0f;
- m_meshSkinningTime = 0.0f;
- m_hairSkinningTime = 0.0f;
- m_hairSimulationTime = 0.0f;
- m_queryTime = 0.0f;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Stats::add(const Stats& toAdd)
-{
- m_totalRenderTime += toAdd.m_totalRenderTime;
- m_shadowRenderTime += toAdd.m_shadowRenderTime;
- m_meshRenderTime += toAdd.m_meshRenderTime;
- m_hairRenderTime += toAdd.m_hairRenderTime;
- m_hairStatsTime += toAdd.m_hairStatsTime;
-
- m_totalUpdateTime += toAdd.m_totalUpdateTime;
- m_meshSkinningTime += toAdd.m_meshSkinningTime;
- m_hairSkinningTime += toAdd.m_hairSkinningTime;
- m_hairSimulationTime += toAdd.m_hairSimulationTime;
-
- m_queryTime += toAdd.m_queryTime;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void Stats::average(float numFrames)
-{
- m_totalRenderTime /= numFrames;
- m_shadowRenderTime /= numFrames;
- m_meshRenderTime /= numFrames;
- m_hairRenderTime /= numFrames;
- m_hairStatsTime /= numFrames;
- m_totalUpdateTime /= numFrames;
- m_meshSkinningTime /= numFrames;
- m_hairSkinningTime /= numFrames;
- m_hairSimulationTime /= numFrames;
- m_queryTime /= numFrames;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Stats.h b/tools/ArtistTools/source/CoreLib/Utils/Stats.h
deleted file mode 100644
index fb22e57..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Stats.h
+++ /dev/null
@@ -1,54 +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 "corelib_global.h"
-
-// scene statistics
-struct CORELIB_EXPORT Stats
-{
- double m_totalRenderTime;
- double m_shadowRenderTime;
- double m_meshRenderTime;
- double m_hairRenderTime;
- double m_hairStatsTime;
-
- double m_totalUpdateTime;
- double m_meshSkinningTime;
- double m_hairSkinningTime;
- double m_hairSimulationTime;
-
- double m_queryTime;
-
- Stats() { reset(); }
-
- void reset();
- void add(const Stats& toAdd);
- void average(float numFrames);
-}; \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Timer.cpp b/tools/ArtistTools/source/CoreLib/Utils/Timer.cpp
deleted file mode 100644
index 2161989..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Timer.cpp
+++ /dev/null
@@ -1,80 +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 "Timer.h"
-
-Timer::Timer(bool isStartNow)
-{
- ::QueryPerformanceFrequency(&m_ticksPerSecond);
- Reset(isStartNow);
-}
-
-void Timer::Reset(bool isStartNow)
-{
- m_isPaused = true;
- m_totalPausedTime.QuadPart = 0;
- m_lastPausedTime.QuadPart = 0;
- if (isStartNow)
- {
- Start();
- }
-}
-
-void Timer::Start()
-{
- if (m_isPaused)
- {
- LARGE_INTEGER timeNow;
- ::QueryPerformanceCounter(&timeNow);
- m_totalPausedTime.QuadPart += timeNow.QuadPart - m_lastPausedTime.QuadPart;
- m_isPaused = false;
- }
-}
-
-void Timer::Pause()
-{
- if (!m_isPaused)
- {
- m_isPaused = true;
- ::QueryPerformanceCounter(&m_lastPausedTime);
- }
-}
-
-LONGLONG Timer::GetTicksElapsed() const
-{
- LARGE_INTEGER timeNow;
- if (m_isPaused)
- {
- timeNow = m_lastPausedTime;
- }
- else
- {
- ::QueryPerformanceCounter(&timeNow);
- }
- return (timeNow.QuadPart - m_totalPausedTime.QuadPart);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Utils/Timer.h b/tools/ArtistTools/source/CoreLib/Utils/Timer.h
deleted file mode 100644
index c14ff97..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/Timer.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
-
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
-
-#include "corelib_global.h"
-
-class CORELIB_EXPORT Timer
-{
-public:
- Timer(bool isStartNow = false);
- void Start();
- void Reset(bool isStartNow = false);
- void Pause();
- bool IsRunning() const
- {
- return !m_isPaused;
- }
- double GetTimeInMilliSeconds() const
- {
- return double(GetTicksElapsed()*1000.0) / GetTicksPerSecond();
- }
- double GetTimeInSeconds() const
- {
- return double(GetTicksElapsed()) / GetTicksPerSecond();
- }
-
-public:
- bool m_isPaused;
-
- // Get time ticks elapsed
- LONGLONG GetTicksElapsed() const;
- // Get the timer frequency. Time tick count per second
- LONGLONG GetTicksPerSecond() const {
- return m_ticksPerSecond.QuadPart;
- }
- LARGE_INTEGER m_ticksPerSecond;
- LARGE_INTEGER m_lastPausedTime;
- LARGE_INTEGER m_totalPausedTime;
-};
diff --git a/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.cpp b/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.cpp
deleted file mode 100644
index d5486bc..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#include <windows.h>
-#include "ViewerOutput.h"
-
-ViewerOutput& ViewerOutput::Inst()
-{
- static ViewerOutput inst;
- return inst;
-}
-
-void ViewerOutput::RegisterPrinter( FrontPrinter* printer )
-{
- if(!printer) return;
-
- _printers.insert(printer);
-}
-
-void ViewerOutput::UnRegisterPrinter( FrontPrinter* printer )
-{
- if(!printer) return;
-
- auto itr = _printers.find(printer);
- if(itr != _printers.end())
- _printers.erase(itr);
-}
-
-void ViewerOutput::print( FrontPrinter::Effect e, unsigned long color, const char* fmt, ... )
-{
- va_list args;
- va_start(args, fmt);
-
- vsprintf_s(_buf, MAX_BUFFER_SIZE, fmt, args);
-
- va_end(args);
-
- for (auto itr = _printers.begin(); itr != _printers.end(); ++itr)
- {
- (*itr)->print(_buf, color, e);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-ViewerStream::~ViewerStream()
-{
- flush();
-}
-
-ViewerStream& ViewerStream::flush()
-{
- this->std::ostream::flush();
-
- if(_buffer.size() == 0)
- return (*this);
-
- ViewerOutput::Inst().print(_effect, _color, _buffer.buf);
- _buffer.reset();
-
- return (*this);
-}
-
-ViewerStream::ViewerStreamBuf::ViewerStreamBuf()
-{
- reset();
-}
-
-std::streamsize ViewerStream::ViewerStreamBuf::size()
-{
- return (pptr() - pbase());
-}
-
-void ViewerStream::ViewerStreamBuf::reset()
-{
- memset(buf, 0, sizeof(buf));
- setp(buf, buf + FURVIEWER_MAX_OUTPUT_CHAR);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.h b/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.h
deleted file mode 100644
index b1fb9f7..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/ViewerOutput.h
+++ /dev/null
@@ -1,136 +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 <set>
-
-#include "corelib_global.h"
-
-/*
- * !! CAUSION:
- * Not thread safe, should only output messages in the MAIN thread!
- * Otherwise, cannot guarantee the Qt Gui behavior.
- */
-
-// DON'T TRY TO WRITE CHARS MORE THAN THE FURVIEWER_MAX_OUTPUT_CHAR
-#define FURVIEWER_MAX_OUTPUT_CHAR 2048
-
-// c-style print
-#define viewer_msg(fmt, ...) ViewerOutput::Inst().print(FrontPrinter::NONE, 0, fmt, ##__VA_ARGS__)
-#define viewer_warn(fmt, ...) ViewerOutput::Inst().print(FrontPrinter::NONE, RGB(255,200,020), fmt, ##__VA_ARGS__)
-#define viewer_info(fmt, ...) ViewerOutput::Inst().print(FrontPrinter::NONE, RGB(118,185,000), fmt, ##__VA_ARGS__)
-#define viewer_err(fmt, ...) ViewerOutput::Inst().print(FrontPrinter::NONE, RGB(255,000,000), fmt, ##__VA_ARGS__)
-#define viewer_fatal(fmt, ...) ViewerOutput::Inst().print(FrontPrinter::BOLD, RGB(255,000,000), fmt, ##__VA_ARGS__)
-
-// c++ style output stream
-#define viewer_stream_msg ViewerStream(FrontPrinter::NONE, 0)
-#define viewer_stream_warn ViewerStream(FrontPrinter::NONE, RGB(255,200,020))
-#define viewer_stream_info ViewerStream(FrontPrinter::NONE, RGB(118,185,000))
-#define viewer_stream_err ViewerStream(FrontPrinter::NONE, RGB(255,000,000))
-#define viewer_stream_fatal ViewerStream(FrontPrinter::NONE, RGB(255,000,000))
-
-
-//////////////////////////////////////////////////////////////////////////
-// implementation
-//////////////////////////////////////////////////////////////////////////
-class FrontPrinter
-{
-public:
- enum Effect
- {
- NONE = 0x0,
- BOLD = 0x1,
- ITALIC = 0x2,
- UNDERLINE = 0x4
- };
-
- virtual void print(const char* txt, unsigned long color = 0, Effect e = NONE) = 0;
-};
-
-class CORELIB_EXPORT ViewerOutput
-{
-public:
- static ViewerOutput& Inst();
-
- void RegisterPrinter(FrontPrinter* printer);
- void UnRegisterPrinter(FrontPrinter* printer);
-
- void print(FrontPrinter::Effect e, unsigned long color, const char* fmt, ...);
-
-private:
- enum {MAX_BUFFER_SIZE = FURVIEWER_MAX_OUTPUT_CHAR + 1};
-
- char _buf[MAX_BUFFER_SIZE];
-
- std::set<FrontPrinter*> _printers;
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-// stream to support c++ style output
-
-#include <streambuf>
-#include <sstream>
-
-class ViewerStream : public std::ostream
-{
-public:
- explicit ViewerStream(FrontPrinter::Effect e, unsigned long color)
- : std::ostream(&_buffer)
- , _effect(e)
- , _color(color)
- {}
-
- ~ViewerStream();
-
- ViewerStream& flush();
-
-private:
-
- class ViewerStreamBuf : public std::streambuf
- {
- public:
- enum
- {
- STATIC_BUFFER_SIZE = FURVIEWER_MAX_OUTPUT_CHAR + 1,
- };
-
- ViewerStreamBuf();
-
- void reset();
- std::streamsize size();
-
- // fixed stack buffer
- char buf[STATIC_BUFFER_SIZE];
- };
-
- ViewerStreamBuf _buffer;
- FrontPrinter::Effect _effect;
- unsigned long _color;
-};
diff --git a/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.cpp b/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.cpp
deleted file mode 100644
index c48b0dc..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-#include "XMLHelper.h"
-#include <QtXml\QtXml>
-#include "ViewerOutput.h"
-
-static int gcounter = 0;
-static char gbuf[256];
-
-XMLFile::XMLFile(const QString& rootName)
- : _rootName(rootName)
-{
-}
-
-void XMLFile::load(const QString& filePath)
-{
- QFile file(filePath);
-
- if (!file.open(QIODevice::ReadOnly))
- {
- return;
- }
-
- QDomDocument xmlDoc;
- if (!xmlDoc.setContent(&file))
- {
- file.close();
- return;
- }
- file.close();
-
- if (xmlDoc.isNull() || xmlDoc.documentElement().tagName() != _rootName)
- {
- sprintf(gbuf, "The file you selected is empty or not a speficied file: %s.", filePath.toStdString().c_str());
- viewer_msg(gbuf);
- return;
- }
-
- loadItems(xmlDoc);
-
- //QDomNodeList elms = xmlDoc.documentElement().elementsByTagName(QObject::tr("StressSolverPreset"));
- //for (int i = 0; i < elms.count(); ++i)
- //{
- // StressSolverUserPreset preset("");
- // _userPresets.push_back(preset);
- // _loadStressSolverPreset(elms.at(i).toElement(), _userPresets[i]);
- //}
-}
-
-void XMLFile::save(const QString& filePath)
-{
- std::string rr = filePath.toStdString();
- rr;
-
- QFileInfo fileInfo(filePath);
- QDir fileDir = fileInfo.absoluteDir();
-
- QString tt = fileDir.absolutePath();
- std::string hh = tt.toStdString();
- hh;
-
- if (!fileDir.exists())
- {
- if (!fileDir.mkdir(fileDir.absolutePath()))
- {
- sprintf(gbuf, "Failed to crreate the folder: %s.", filePath.toStdString().c_str());
- viewer_msg(gbuf);
- return;
- }
- }
- QFile file(filePath);
- if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
- {
- return;
- }
- QTextStream out(&file);
-
- QDomDocument xmlDoc;
- QDomElement rootElm = xmlDoc.createElement(_rootName);
- xmlDoc.appendChild(rootElm);
-
- saveItems(xmlDoc);
-
- // 4 is count of indent
- xmlDoc.save(out, 4);
-}
-
-SingleItemKindFile::SingleItemKindFile(const QString& rootName, const QString& itemName)
- : XMLFile(rootName)
- , _itemName(itemName)
-{
-}
-
-void SingleItemKindFile::loadItems(QDomDocument xmlDoc)
-{
- QDomNodeList elms = xmlDoc.documentElement().elementsByTagName(_itemName);
- for (int i = 0; i < elms.count(); ++i)
- {
- QDomElement elm = elms.at(i).toElement();
- _items.push_back(elm.attribute(QObject::tr("Value")));
- }
-}
-
-void SingleItemKindFile::saveItems(QDomDocument xmlDoc)
-{
- for (int i = 0; i < _items.count(); ++i)
- {
- QDomElement elm = xmlDoc.createElement(_itemName);
- elm.setAttribute(QObject::tr("Value"), _items.at(i));
- xmlDoc.documentElement().appendChild(elm);
- }
-}
-
-bool SingleItemKindFile::isItemExist(const QString& item)
-{
- for (int i = 0; i < _items.count(); ++i)
- {
- if (_items.at(i) == item)
- return true;
- }
-
- return false;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.h b/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.h
deleted file mode 100644
index ca43033..0000000
--- a/tools/ArtistTools/source/CoreLib/Utils/XMLHelper.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#pragma once
-#include <QtCore\QString>
-#include <QtCore\QList>
-#include "corelib_global.h"
-
-class QDomDocument;
-
-class CORELIB_EXPORT XMLFile
-{
-public:
- XMLFile(const QString& rootName);
-
- void load(const QString& filePath);
- void save(const QString& filePath);
-
-protected:
- virtual void loadItems(QDomDocument xmlDoc) = 0;
- virtual void saveItems(QDomDocument xmlDoc) = 0;
-protected:
- QString _rootName;
-};
-
-class CORELIB_EXPORT SingleItemKindFile : public XMLFile
-{
-public:
- SingleItemKindFile(const QString& rootName, const QString& itemName);
-
- virtual void loadItems(QDomDocument xmlDoc);
- virtual void saveItems(QDomDocument xmlDoc);
-
- void addItemBack(const QString& item) { _items.push_back(item); }
- void addItemFront(const QString& item) { _items.push_back(item); }
- QList<QString>& getItems() { return _items; }
- bool isItemExist(const QString& item);
-
-private:
- QString _itemName;
- QList<QString> _items;
-};
diff --git a/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.cpp b/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.cpp
deleted file mode 100644
index 31a5dc5..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.cpp
+++ /dev/null
@@ -1,1593 +0,0 @@
-#include <QtWidgets/QShortcut>
-#include <QtWidgets/QAction>
-#include <QtWidgets/QMenu>
-#include <QtWidgets/QFileDialog>
-#include <QtWidgets/QMessageBox>
-#include <QtGui/QDesktopServices>
-#include <QtWidgets/QScrollBar>
-#include <QtWidgets/QGraphicsEllipseItem>
-#include <QtWidgets/QGraphicsView>
-#include <QtWidgets/QProgressDialog>
-
-#include <Windows.h>
-
-#include "AppMainWindow.h"
-#include "ExpandablePanel.h"
-
-#include "D3DWidget.h"
-
-#include "DisplayMeshesPanel.h"
-
-#include "DisplayPreferencesPanel.h"
-#include "DisplayScenePanel.h"
-#include "DisplayLightPanel.h"
-#include "ui_DisplayPreferencesPanel.h"
-#include "ui_DisplayScenePanel.h"
-#include "ui_DisplayLightPanel.h"
-#include "CameraBookmarksDialog.h"
-
-#include "SimpleScene.h"
-#include "GlobalSettings.h"
-
-#include "ViewerOutput.h"
-#include "Gamepad.h"
-#if USE_CURVE_EDITOR
-#include "CurveEditorMainWindow.h"
-#endif
-#ifndef NV_ARTISTTOOLS
-#include "ui_AppMainToolbar.h"
-#include "ui_AssetControlPanel.h"
-#include "ui_GeneralAttributesPanel.h"
-#include "ui_PhysicalMaterialsPanel.h"
-#include "ui_StyleMaterialsPanel.h"
-#include "ui_GraphicalMaterialsPanel.h"
-#include "BlastToolbar.h"
-#include "AssetControlPanel.h"
-#include "GraphicalMaterialPanel.h"
-#include "PhysicalMaterialPanel.h"
-#include "StyleMaterialPanel.h"
-#include "GeneralAttributePanel.h"
-#include "MaterialSetPanel.h"
-#include "LodPanel.h"
-#include "DisplayVisualizersPanel.h"
-#include "ui_DisplayVisualizersPanel.h"
-#include "DisplayMeshMaterialsPanel.h"
-#include "FurCharacter.h"
-#include "HairParams.h"
-#include "AboutDialog.h"
-#else
-#endif // NV_ARTISTTOOLS
-
-class MsgPrinter : public FrontPrinter
-{
-public:
- MsgPrinter(QTextBrowser* browser):_browser(browser)
- {
-
- }
-
- void print(const char* txt, unsigned long color /* = 0 */, Effect e /* = NONE */)
- {
- if(color == 0 && e == FrontPrinter::NONE)
- {
- _browser->insertPlainText(QString(txt)+"\n");
- }
- else
- {
- // output html text
- QString surfix;
- QString postfix;
- surfix.reserve(64);
- postfix.reserve(64);
- if(e & FrontPrinter::BOLD)
- {
- surfix = surfix + "<b>";
- postfix= postfix + "</b>";
- }
- else if(e & FrontPrinter::UNDERLINE)
- {
- surfix = surfix + "<u>";
- postfix= QString("</u>") + postfix;
- }
- else if(e & FrontPrinter::ITALIC)
- {
- surfix = surfix + "<i>";
- postfix= QString("</i>") + postfix;
- }
-
- if(color != 0)
- {
- int r = GetRValue(color);
- int g = GetGValue(color);
- int b = GetBValue(color);
-
- surfix = QString("<div style=\"color:rgb(%1,%2,%3);\">").arg(r).arg(g).arg(b) + surfix;
- postfix= postfix + QString("</div><br />");
- }
-
- QString html = surfix + QString(txt) + postfix;
- _browser->insertHtml(html);
- }
- // auto scroll to the bottom
- QScrollBar *sb = _browser->verticalScrollBar();
- if (sb) sb->setValue(sb->maximum());
- }
-
-private:
- QTextBrowser* _browser;
-};
-
-int AppMainWindow::_connectionMode = 0;
-bool AppMainWindow::_expertMode = false;
-AppMainWindow* gAppMainWindow = NV_NULL;
-
-void CreateAppMainWindow()
-{
- gAppMainWindow = new AppMainWindow;
-}
-
-void ReleaseAppMainWindow()
-{
- delete gAppMainWindow;
- gAppMainWindow = NV_NULL;
-}
-
-AppMainWindow& AppMainWindow::Inst()
-{
- return *gAppMainWindow;
-}
-
-AppMainWindow::AppMainWindow(QWidget *parent, Qt::WindowFlags flags)
- : QMainWindow(parent, flags)
- , _bookmarksMenu(0)
- ,_displayMeshesPanel(0)
- , _displayPreferencesPanel(0)
- , _displayScenePanel(0)
- ,_displayLightPanel(0)
-#if USE_CURVE_EDITOR
- ,_curveEditorInitizlized(false)
- , _curveEditorMainWindow(nullptr)
-#endif
- ,_bookmarkActionGroup(0)
- ,_actionAddBookmark(0)
- ,_actionEditBookmarks(0)
- , _recentMenu(NV_NULL)
- , _recentFileRecordFile("RecentFiles", "File")
-{
- setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
- setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
-
- ui.setupUi(this);
- //ui.dockOutputWindow->hide();
-
-#ifndef NV_ARTISTTOOLS
- _mainToolbar = 0;
- _physicalMaterialPanel = 0;
- _styleMaterialPanel = 0;
- _graphicalMaterialPanel = 0;
- _displayFurVisualizersPanel = 0;
- _assetControlPanel = 0;
- _generalAttributePanel = 0;
- _lodPanel = 0;
- _displayMeshMaterialsPanel;
-#if USE_MATERIAL_SET
- _materialSetPanel = 0;
-#endif
-#else
- CoreLib::Inst()->AppMainWindow_AppMainWindow();
-#endif // NV_ARTISTTOOLS
-
- _progressDialog.close(); // prevent show one empty progress dialog when it runs.
-
- m_bGizmoWithLocal = false;
- m_bGizmoWithDepthTest = false;
- m_bShowPlane = false;
-}
-
-void AppMainWindow::InitUI()
-{
- _d3dWidget = new D3DWidget(this);
- _d3dWidget->setMinimumSize(200, 200);
- ui.renderLayout->addWidget(_d3dWidget);
-
- InitShortCuts();
- InitMenuItems();
- InitToolbar();
- InitPluginTab();
- InitMainTab();
-
- InitMouseSchemes();
-
- updateUI();
-
- if (_connectionMode == 1) // master mode
- ui.sideBarTab->removeTab(1);
-
- if (_connectionMode == 2)
- ui.sideBarTab->removeTab(0);
-
-
- QString defFilePath;
-
- QString appDir = qApp->applicationDirPath();
- QDir dir(appDir);
- if (dir.cd("../../media"))
- defFilePath = dir.absolutePath();
-
- _lastFilePath = defFilePath;
-
- _navigationStyle = 0;
-
- // initialize the message printer
- _printer = new MsgPrinter(this->ui.outputWindow);
- ViewerOutput::Inst().RegisterPrinter(_printer);
-
-#ifndef NV_ARTISTTOOLS
-
- viewer_info(
- "<a href=\"https://developer.nvidia.com/hairworks\" style=\"color:rgb(118,180,0);\">NVIDIA Blast Version v"
- NV_HAIR_RELEASE_VERSION_STRING
- "</a>");
-
-#else
- CoreLib::Inst()->AppMainWindow_InitUI();
-#endif // NV_ARTISTTOOLS
-}
-
-AppMainWindow::~AppMainWindow()
-{
-}
-
-void AppMainWindow::setConnectionMode(int m)
-{
- _connectionMode = m;
-}
-
-void AppMainWindow::startProgress()
-{
- _progressDialog.setWindowModality(Qt::WindowModal);
- _progressDialog.show();
-}
-
-void AppMainWindow::setProgress(const char* label, int progress)
-{
- _progressDialog.setLabelText(label);
- if (progress >= 0)
- _progressDialog.setValue(progress);
-
- _progressDialog.update();
-}
-
-void AppMainWindow::endProgress()
-{
- _progressDialog.close();
-}
-
-void AppMainWindow::quit()
-{
- emit aboutToQuit();
-}
-
-void AppMainWindow::setProgressMaximum(int m)
-{
- _progressDialog.setMaximum(m);
-}
-
-void AppMainWindow::InitMenuItems()
-{
- QMenuBar* menu = ui.menuBar;
- QAction* act = NV_NULL;
-
- // file sub-menu
- QMenu* fileMenu = menu->addMenu("&File");
-
- if (_connectionMode != 1)
- {
- connect(ui.menuBar, SIGNAL(triggered(QAction*)), this, SLOT(menu_item_triggered(QAction*)));
-
- act = new QAction("Clear scene", this);
- act->setShortcut(QKeySequence::New);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_clearScene()));
- fileMenu->addAction(act);
-
- fileMenu->addSeparator();
-
- act = new QAction("Open fbx file", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_openfbx()));
- fileMenu->addAction(act);
-
- fileMenu->addSeparator();
-
- act = new QAction("Recents", this);
- fileMenu->addAction(act);
- _recentMenu = new QMenu("Recents", this);
- act->setMenu(_recentMenu);
-
- fileMenu->addSeparator();
-
- _loadRecentFile();
-
-#ifndef NV_ARTISTTOOLS
- fileMenu->addSeparator();
- act = new QAction("Open project file", this);
- act->setShortcut(QKeySequence::Open);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_openProject()));
- fileMenu->addAction(act);
-
- act = new QAction("Save project file", this);
- act->setShortcut(QKeySequence::Save);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_saveProject()));
- fileMenu->addAction(act);
-
- act = new QAction("Save project file as...", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_saveProjectAs()));
- fileMenu->addAction(act);
-
- fileMenu->addSeparator();
-
- act = new QAction("&Open hair file", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_openHair()));
- fileMenu->addAction(act);
-
- act = new QAction("&Save hair file", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_saveHair()));
- fileMenu->addAction(act);
-
- act = new QAction("Save hair file as...", this);
- act->setShortcut(QKeySequence::SaveAs);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_saveHairAs()));
- fileMenu->addAction(act);
-
- act = new QAction("Save all hairs...", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_saveAllHairs()));
- fileMenu->addAction(act);
-
- fileMenu->addSeparator();
-#else
- CoreLib::Inst()->AppMainWindow_InitMenuItems(ui.menuBar);
-#endif // NV_ARTISTTOOLS
- }
-
- act = new QAction("E&xit", this);
- act->setShortcut(QKeySequence::Quit);
- connect(act, SIGNAL(triggered()), this, SLOT(close()));
- fileMenu->addAction(act);
-
- // view submenu
- QMenu* viewMenu = menu->addMenu("&View");
- act = new QAction("Bookmarks", this);
- //connect(act, SIGNAL(triggered()), this, SLOT(menu_showOutput()));
- viewMenu->addAction(act);
- _bookmarksMenu = new QMenu("Bookmarks", this);
- connect(_bookmarksMenu, SIGNAL(triggered(QAction*)), this, SLOT(menu_bookmarkTriggered(QAction*)));
- act->setMenu(_bookmarksMenu);
- act = new QAction("Add Bookmark", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_addBookmark()));
- _bookmarksMenu->addAction(act);
- _actionAddBookmark = act;
- act = new QAction("Edit Bookmarks", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_editBookmarks()));
- _bookmarksMenu->addAction(act);
- _actionEditBookmarks = act;
- _bookmarksMenu->addSeparator();
- _bookmarkActionGroup = new QActionGroup(this);
-
- // window submenu
- QMenu* windowMenu = menu->addMenu("&Window");
- act = new QAction("Output", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_showOutput()));
- windowMenu->addAction(act);
-
- act = new QAction("Attribute Editor", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_showAttributeEditor()));
- windowMenu->addAction(act);
-
-#if USE_CURVE_EDITOR
- act = new QAction("Curve Editor", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_showCurveEditor()));
- windowMenu->addAction(act);
-#endif
-
- // help submenu
- QMenu* helpMenu = menu->addMenu("&Help");
-
- act = new QAction("Documentation", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_opendoc()));
- helpMenu->addAction(act);
-
- act = new QAction("&About", this);
- connect(act, SIGNAL(triggered()), this, SLOT(menu_about()));
- helpMenu->addAction(act);
-}
-
-void AppMainWindow::InitToolbar()
-{
- if (_connectionMode != 1)
- {
-#ifndef NV_ARTISTTOOLS
- _mainToolbar = new BlastToolbar(ui.centralWidget);
- ui.verticalLayout->insertWidget(0, _mainToolbar);
- connect(_mainToolbar->getUI().btnFileOpen, SIGNAL(clicked()), this, SLOT(menu_openProject()));
-#else
- CoreLib::Inst()->AppMainWindow_InitToolbar(ui.centralWidget, ui.verticalLayout);
-#endif // NV_ARTISTTOOLS
- }
-}
-
-void AppMainWindow::InitPluginTab()
-{
-#ifndef NV_ARTISTTOOLS
- QWidget *tabFur;
- QGridLayout *gridLayout;
- QFrame *furMaterialEditorArea;
- QVBoxLayout *furMaterialEditorAreaLayout;
- QScrollArea *furScrollArea;
- QWidget *furScrollAreaContents;
- QVBoxLayout *furScrollAreaLayout;
- QSpacerItem *verticalSpacer;
-
- tabFur = new QWidget();
- tabFur->setObjectName(QStringLiteral("tabFur"));
- gridLayout = new QGridLayout(tabFur);
- gridLayout->setSpacing(6);
- gridLayout->setContentsMargins(11, 11, 11, 11);
- gridLayout->setObjectName(QStringLiteral("gridLayout"));
- gridLayout->setContentsMargins(0, 0, 0, 0);
- furMaterialEditorArea = new QFrame(tabFur);
- furMaterialEditorArea->setObjectName(QStringLiteral("furMaterialEditorArea"));
- furMaterialEditorAreaLayout = new QVBoxLayout(furMaterialEditorArea);
- furMaterialEditorAreaLayout->setSpacing(6);
- furMaterialEditorAreaLayout->setContentsMargins(11, 11, 11, 11);
- furMaterialEditorAreaLayout->setObjectName(QStringLiteral("furMaterialEditorAreaLayout"));
- furMaterialEditorAreaLayout->setContentsMargins(2, 2, 2, 2);
-
- gridLayout->addWidget(furMaterialEditorArea, 1, 0, 1, 1);
-
- furScrollArea = new QScrollArea(tabFur);
- furScrollArea->setObjectName(QStringLiteral("furScrollArea"));
- furScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
- furScrollArea->setWidgetResizable(true);
- furScrollAreaContents = new QWidget();
- furScrollAreaContents->setObjectName(QStringLiteral("furScrollAreaContents"));
- furScrollAreaContents->setGeometry(QRect(0, 0, 359, 481));
- furScrollAreaLayout = new QVBoxLayout(furScrollAreaContents);
- furScrollAreaLayout->setSpacing(3);
- furScrollAreaLayout->setContentsMargins(11, 11, 11, 11);
- furScrollAreaLayout->setObjectName(QStringLiteral("furScrollAreaLayout"));
- furScrollAreaLayout->setContentsMargins(2, 2, 2, 2);
- verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
-
- furScrollAreaLayout->addItem(verticalSpacer);
-
- furScrollArea->setWidget(furScrollAreaContents);
-
- gridLayout->addWidget(furScrollArea, 0, 0, 1, 1);
-
- ui.sideBarTab->addTab(tabFur, QString());
-
- ui.sideBarTab->setTabText(ui.sideBarTab->indexOf(tabFur), QApplication::translate("AppMainWindowClass", "Hair", 0));
-
- ExpandablePanel* panel = 0;
- int pannelCnt = 0;
-
- if (_connectionMode == 0)
- {
- panel = new ExpandablePanel(furScrollAreaContents, false);
- _generalAttributePanel = new GeneralAttributePanel(panel);
- panel->AddContent(_generalAttributePanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Asset Selection");
-
- panel = new ExpandablePanel(furScrollAreaContents, false);
- _assetControlPanel = new AssetControlPanel(panel);
- panel->AddContent(_assetControlPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("General Settings");
-
- }
-
- panel = new ExpandablePanel(furScrollAreaContents);
- _displayFurVisualizersPanel = new DisplayFurVisualizersPanel(panel);
- panel->AddContent(_displayFurVisualizersPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Visualization");
-
- panel = new ExpandablePanel(furScrollAreaContents);
- _physicalMaterialPanel = new PhysicalMaterialPanel(panel);
- panel->AddContent(_physicalMaterialPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Physical");
-
- panel = new ExpandablePanel(furScrollAreaContents);
- _styleMaterialPanel = new StyleMaterialPanel(panel);
- panel->AddContent(_styleMaterialPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Style");
-
- panel = new ExpandablePanel(furScrollAreaContents);
- _graphicalMaterialPanel = new GraphicalMaterialPanel(panel);
- panel->AddContent(_graphicalMaterialPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Graphics");
-
- panel = new ExpandablePanel(furScrollAreaContents);
- _lodPanel = new LodPanel(panel);
- panel->AddContent(_lodPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Level Of Detail");
-
-#if USE_MATERIAL_SET
- panel = new ExpandablePanel(furScrollAreaContents);
- _materialSetPanel = new MaterialSetPanel(panel);
- panel->AddContent(_materialSetPanel);
- furScrollAreaLayout->insertWidget(pannelCnt++, panel);
- panel->SetTitle("Control Texture Channels");
- //_materialSetPanel->hide();
- //panel->SetCollapsed(true);
-#else
- ui.furMaterialEditorAreaLayout->setEnabled(false);
-#endif
-#else
- CoreLib::Inst()->AppMainWindow_InitPluginTab(ui.sideBarTab);
-#endif // NV_ARTISTTOOLS
-
-#if USE_CURVE_EDITOR
- _curveEditorMainWindow = new nvidia::CurveEditor::CurveEditorMainWindow( this);//nullptr);
- _curveEditorMainWindow->setResampleEnabled(false);
- ui.dockWidgetCurveEditor->setWidget(_curveEditorMainWindow);
- ui.dockWidgetCurveEditor->setWindowTitle(tr("Curve Editor"));
-
- connect(_curveEditorMainWindow, SIGNAL(CurveAttributeChanged(nvidia::CurveEditor::CurveAttribute*)), this, SLOT(onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute*)));
- connect(_curveEditorMainWindow, SIGNAL(ColorAttributeChanged(nvidia::CurveEditor::ColorAttribute*)), this, SLOT(onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute*)));
- connect(_curveEditorMainWindow, SIGNAL(ReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute*, bool, int)), this, SLOT(onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute*, bool, int)));
-//#else
-// ui.furCurveEditorAreaLayout->setEnabled(false);
-#endif
-}
-
-void AppMainWindow::InitMainTab()
-{
- int idx = 0;
-
- if (_connectionMode != 1)
- {
- ExpandablePanel* panel = new ExpandablePanel(ui.displayScrollAreaContents);
- _displayPreferencesPanel = new DisplayPreferencesPanel(panel);
- panel->AddContent(_displayPreferencesPanel);
- ui.displayScrollAreaLayout->insertWidget(idx++, panel);
- panel->SetTitle("Preferences");
-
- panel = new ExpandablePanel(ui.displayScrollAreaContents);
- _displayScenePanel = new DisplayScenePanel(panel);
- panel->AddContent(_displayScenePanel);
- ui.displayScrollAreaLayout->insertWidget(idx++, panel);
- panel->SetTitle("Scene");
-
- panel = new ExpandablePanel(ui.displayScrollAreaContents);
- _displayLightPanel = new DisplayLightPanel(panel);
- panel->AddContent(_displayLightPanel);
- ui.displayScrollAreaLayout->insertWidget(idx++, panel);
- panel->SetTitle("Light");
-
- panel = new ExpandablePanel(ui.displayScrollAreaContents);
- _displayMeshesPanel = new DisplayMeshesPanel(panel);
- panel->AddContent(_displayMeshesPanel);
- ui.displayScrollAreaLayout->insertWidget(idx++, panel);
- panel->SetTitle("Display Meshes");
- panel->setVisible(false);
- }
-
- if (_connectionMode != 1)
- {
-#ifndef NV_ARTISTTOOLS
- ExpandablePanel* panel = new ExpandablePanel(ui.displayScrollAreaContents);
- _displayMeshMaterialsPanel = new DisplayMeshMaterialsPanel(panel);
- panel->AddContent(_displayMeshMaterialsPanel);
- ui.displayScrollAreaLayout->insertWidget(idx++, panel);
- panel->SetTitle("Display Mesh Materials");
-#else
- CoreLib::Inst()->AppMainWindow_InitMainTab(ui.displayScrollAreaContents, ui.displayScrollAreaLayout, idx);
-#endif // NV_ARTISTTOOLS
- }
-}
-
-void AppMainWindow::InitShortCuts()
-{
- QShortcut* shortCut;
- shortCut = new QShortcut(QKeySequence(Qt::Key_F), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_frameall()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_H), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_hud()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_G), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_statistics()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_Space), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_pause()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_B), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_reset()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_Escape), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_escape()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_V), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_expert()));
-
- shortCut = new QShortcut(QKeySequence("Ctrl+X"), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_expert()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_D), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(demo_next()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_Right), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(demo_next()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_A), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(demo_prev()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_Left), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(demo_prev()));
-
- shortCut = new QShortcut(QKeySequence(Qt::Key_F2), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_output()));
-
- shortCut = new QShortcut(QKeySequence("Ctrl+F"), this);
- connect(shortCut, SIGNAL(activated()), this, SLOT(shortcut_fitcamera()));
-}
-
-//////////////////////////////////////////////////////////////////////////
-void AppMainWindow::updateBookmarkMenu()
-{
- // clear old menu items of camera bookmarks
- while (_bookmarkActionGroup->actions().size() > 0)
- {
- QAction* act = _bookmarkActionGroup->actions()[0];
- _bookmarkActionGroup->removeAction(act);
- delete act;
- }
- _bookmarksMenu->clear();
- _bookmarksMenu->addAction(_actionAddBookmark);
- _bookmarksMenu->addAction(_actionEditBookmarks);
- _bookmarksMenu->addSeparator();
-
- QList<QString> bookmarks = SimpleScene::Inst()->getBookmarkNames();
- int numBookmarks = bookmarks.size();
- for (int i = 0; i < numBookmarks; ++i)
- {
- QString bookmark = bookmarks[i];
-
- QAction* act = new QAction(bookmark, this);
- act->setCheckable(true);
- _bookmarksMenu->addAction(act);
- _bookmarkActionGroup->addAction(act);
- }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-void AppMainWindow::updateUI()
-{
- if (_bookmarksMenu && _bookmarkActionGroup)
- {
- updateBookmarkMenu();
- }
-
-#ifndef NV_ARTISTTOOLS
- if (_mainToolbar)
- _mainToolbar->updateValues();
-
- if (_graphicalMaterialPanel)
- _graphicalMaterialPanel->updateValues();
-
- if (_physicalMaterialPanel)
- _physicalMaterialPanel->updateValues();
-
- if (_styleMaterialPanel)
- _styleMaterialPanel->updateValues();
-
- if (_displayFurVisualizersPanel)
- _displayFurVisualizersPanel->updateValues();
-
- if (_lodPanel)
- _lodPanel->updateValues();
-
- if (_generalAttributePanel)
- _generalAttributePanel->updateValues();
-
- if (_assetControlPanel)
- _assetControlPanel->updateValues();
-
- if (_displayMeshMaterialsPanel)
- _displayMeshMaterialsPanel->updateValues();
-
-#if USE_MATERIAL_SET
- if (_materialSetPanel)
- _materialSetPanel->updateValues();
-#endif
-#else
- CoreLib::Inst()->AppMainWindow_updateUI();
-#endif // NV_ARTISTTOOLS
-
- if (_displayPreferencesPanel)
- _displayPreferencesPanel->updateValues();
-
- if (_displayScenePanel)
- _displayScenePanel->updateValues();
-
- if (_displayLightPanel)
- _displayLightPanel->updateValues();
-
- if (_displayMeshesPanel)
- _displayMeshesPanel->updateValues();
-
-#if USE_CURVE_EDITOR
- if (_curveEditorMainWindow)
- UpdateCurveEditor();
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////
-void AppMainWindow::updatePluginUI()
-{
- SimpleScene::Inst()->setIsUpdatingUI(true);
-
-#ifndef NV_ARTISTTOOLS
- if (_graphicalMaterialPanel)
- _graphicalMaterialPanel->updateValues();
-
- if (_physicalMaterialPanel)
- _physicalMaterialPanel->updateValues();
-
- if (_styleMaterialPanel)
- _styleMaterialPanel->updateValues();
-
- if (_lodPanel)
- _lodPanel->updateValues();
-
- if (_displayFurVisualizersPanel)
- _displayFurVisualizersPanel->updateValues();
-
- if (_generalAttributePanel)
- _generalAttributePanel->updateValues();
-
- if (_assetControlPanel)
- _assetControlPanel->updateValues();
-
-#if USE_MATERIAL_SET
- if (_materialSetPanel)
- _materialSetPanel->updateValues();
-#endif
-#else
- CoreLib::Inst()->AppMainWindow_updatePluginUI();
-#endif // NV_ARTISTTOOLS
-
-#if USE_CURVE_EDITOR
- if (_curveEditorMainWindow)
- UpdateCurveEditor();
-#endif
-
- SimpleScene::Inst()->setIsUpdatingUI(false);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-// event handlers
-
-
-//////////////////////////////////////////////////////////////////////////
-// event handlers
-bool AppMainWindow::openProject(QString fileName)
-{
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file= fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->LoadProject(dir, file) == false)
- {
- QMessageBox messageBox;
- messageBox.critical(0,"Error","File open error!");
- messageBox.setFixedSize(500,200);
-
- AppMainWindow::Inst().endProgress();
- char message[1024];
- sprintf(message, "Failed to open project file(\"%s\")", (const char*)file);
- viewer_err(message);
- return false;
- }
-
- AppMainWindow::Inst().endProgress();
- _lastFilePath = fileInfo.absoluteDir().absolutePath();
-
- updateUI();
- return true;
- }
- return false;
-}
-
-void AppMainWindow::processDragAndDrop(const QStringList& fileNames)
-{
- CoreLib::Inst()->SimpleScene_OpenFilesByDrop(fileNames);
- updateUI();
-}
-
-void AppMainWindow::removeBookmark(const QString& name)
-{
- QList<QAction*> bookmarks = _bookmarkActionGroup->actions();
- int bookmarkCount = bookmarks.size();
- for (int i = 0; i < bookmarkCount; ++i)
- {
- QAction* act = bookmarks.at(i);
- if (act->text() == name)
- {
- _bookmarkActionGroup->removeAction(act);
- _bookmarksMenu->removeAction(act);
- delete act;
- }
- }
-}
-
-void AppMainWindow::renameBookmark(const QString& oldName, const QString& newName)
-{
- QList<QAction*> bookmarks = _bookmarkActionGroup->actions();
- int bookmarkCount = bookmarks.size();
- for (int i = 0; i < bookmarkCount; ++i)
- {
- QAction* act = bookmarks.at(i);
- if (act->text() == oldName)
- {
- act->setText(newName);
- }
- }
-}
-
-#if USE_CURVE_EDITOR
-void AppMainWindow::UpdateCurveEditor()
-{
-#ifndef NV_ARTISTTOOLS
- _curveEditorMainWindow->setCurveAttributes(SimpleScene::Inst()->GetFurCharacter().GetCurveAttributes());
- _curveEditorMainWindow->setColorCurveAttributes(SimpleScene::Inst()->GetFurCharacter().GetColorAttributes());
-#else
- CoreLib::Inst()->AppMainWindow_UpdateCurveEditor();
-#endif // NV_ARTISTTOOLS
-
- _curveEditorMainWindow->update();
-}
-
-void AppMainWindow::ShowCurveEditor(int paramId)
-{
-#ifndef NV_ARTISTTOOLS
- _curveEditorMainWindow->setCurveAttributes(SimpleScene::Inst()->GetFurCharacter().GetCurveAttributes());
- _curveEditorMainWindow->setColorCurveAttributes(SimpleScene::Inst()->GetFurCharacter().GetColorAttributes());
- if (HAIR_PARAMS_ROOT_COLOR == paramId || HAIR_PARAMS_TIP_COLOR == paramId)
- {
- std::vector<nvidia::CurveEditor::ColorAttribute*> attributes = SimpleScene::Inst()->GetFurCharacter().GetColorAttributesByParamId(paramId);
- _curveEditorMainWindow->setSelectedColorAttribute(attributes.size() > 0 ? attributes[0] : nullptr);
- }
- else
- _curveEditorMainWindow->setSelectedCurveAttributes(SimpleScene::Inst()->GetFurCharacter().GetCurveAttributesByParamId(paramId));
-
-#else
- CoreLib::Inst()->AppMainWindow_ShowCurveEditor(paramId);
-#endif // NV_ARTISTTOOLS
-
- _curveEditorMainWindow->update();
-}
-#endif
-
-void AppMainWindow::menu_item_triggered(QAction* action)
-{
- qDebug("%s", __FUNCTION__);
-#ifdef NV_ARTISTTOOLS
-
- bool clickRecent = false;
- for (int i = 0; i < _recentFileActions.count(); ++i)
- {
- if (_recentFileActions.at(i) == action)
- {
- clickRecent = true;
- break;
- }
- }
-
- if (clickRecent)
- {
- QStringList recentFile;
- recentFile.push_back(action->text());
- CoreLib::Inst()->SimpleScene_OpenFilesByDrop(recentFile);
- return;
- }
-
- CoreLib::Inst()->menu_item_triggered(action);
-#endif // NV_ARTISTTOOLS
-}
-
-void AppMainWindow::menu_clearScene()
-{
- SimpleScene::Inst()->Clear();
- updateUI();
-}
-
-bool AppMainWindow::menu_openfbx()
-{
- /*
- QString lastDir = _lastFilePath;
- QString fileName = QFileDialog::getOpenFileName(this, "Open FBX File", lastDir, "FBX File (*.fbx)");
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file= fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->LoadSceneFromFbx(dir, file) == false)
- {
- QMessageBox messageBox;
- messageBox.critical(0,"Error","File open error!");
- messageBox.setFixedSize(500,200);
-
- AppMainWindow::Inst().endProgress();
-
- char message[1024];
- sprintf(message, "Failed to open fbx file(\"%s\")", (const char*)file);
- viewer_err(message);
-
- return false;
- }
-
- AppMainWindow::Inst().endProgress();
-
- _lastFilePath = fileInfo.absoluteDir().absolutePath();
-
- updateUI();
-
- return true;
- }
- return true;
- */
-
- // dir and file will get in blast open asset dialog
- bool res = SimpleScene::Inst()->LoadSceneFromFbx("", "");
- updateUI();
- return res;
-}
-
-void AppMainWindow::menu_addBookmark()
-{
- QString bookmark = SimpleScene::Inst()->createBookmark();
-
- QAction* act = new QAction(bookmark, this);
- act->setCheckable(true);
- _bookmarksMenu->addAction(act);
- _bookmarkActionGroup->addAction(act);
- act->setChecked(true);
-}
-
-void AppMainWindow::menu_editBookmarks()
-{
- CameraBookmarksDialog dlg(this);
- dlg.exec();
-}
-
-void AppMainWindow::menu_bookmarkTriggered(QAction* act)
-{
- if (_actionAddBookmark != act && _actionEditBookmarks != act)
- {
- SimpleScene::Inst()->activateBookmark(act->text());
- }
-}
-
-void AppMainWindow::menu_showOutput()
-{
- bool bVisibal = ui.dockOutputWindow->isVisible();
- ui.dockOutputWindow->setVisible(!bVisibal);
-}
-
-void AppMainWindow::menu_showAttributeEditor()
-{
- bool bVisibal = ui.dockWidget->isVisible();
- ui.dockWidget->setVisible(!bVisibal);
-}
-#if USE_CURVE_EDITOR
-void AppMainWindow::menu_showCurveEditor()
-{
- bool bVisibal = ui.dockWidgetCurveEditor->isVisible();
- ui.dockWidgetCurveEditor->setVisible(!bVisibal);
-}
-#endif
-void AppMainWindow::menu_about()
-{
- qDebug("%s", __FUNCTION__);
-#ifndef NV_ARTISTTOOLS
- AboutDialog::ShowAboutDialog();
-#else
- CoreLib::Inst()->AppMainWindow_menu_about();
-#endif // NV_ARTISTTOOLS
-}
-
-void AppMainWindow::menu_opendoc()
-{
- qDebug("%s", __FUNCTION__);
-
-#ifndef NV_ARTISTTOOLS
- QString appDir = QApplication::applicationDirPath();
- QString docsFile = QFileInfo(appDir + "/../../docs/User_Guide/Nvidia Blast.chm").absoluteFilePath();
-
- QUrl docsUrl = QUrl::fromLocalFile(docsFile);
- QUrl url = QUrl::fromUserInput(QString("http://docs.nvidia.com/gameworks/content/artisttools/hairworks/index.html"));
- QDesktopServices::openUrl(url);
-#else
- CoreLib::Inst()->AppMainWindow_menu_opendoc();
-#endif // NV_ARTISTTOOLS
-}
-
-void AppMainWindow::shortcut_frameall()
-{
- qDebug("ShortCut_F: frame all");
-}
-
-void AppMainWindow::shortcut_hud()
-{
- Gamepad::ShowHideHud();
- qDebug("ShortCut_S: statistics on/off");
-}
-
-void AppMainWindow::shortcut_statistics()
-{
- Gamepad::ShowHideStats();
- qDebug("ShortCut_S: statistics on/off");
-}
-
-void AppMainWindow::shortcut_reset()
-{
- Gamepad::ResetAnimation();
-}
-
-void AppMainWindow::shortcut_pause()
-{
- //_mainToolbar->on_btnPlayAnimation_clicked(); // this one has some delay
- //qDebug("ShortCut_Space: play/pause simualtion");
- Gamepad::PlayPauseAnimation();
-}
-
-bool AppMainWindow::IsExpertMode()
-{
- return _expertMode;
-}
-
-void AppMainWindow::demo_next()
-{
- Gamepad::DemoNext();
-}
-
-void AppMainWindow::demo_prev()
-{
- Gamepad::DemoPrev();
-}
-
-void AppMainWindow::shortcut_escape()
-{
- Gamepad::DemoEscape();
-}
-
-void AppMainWindow::shortcut_expert()
-{
- qDebug("ShortCut_F: expert mode on/off");
-
- _expertMode = !_expertMode;
- bool mode = !_expertMode;
-
- ui.menuBar->setVisible(mode);
- ui.dockWidget->setVisible(mode);
- ui.dockOutputWindow->setVisible(mode);
-#if USE_CURVE_EDITOR
- ui.dockWidgetCurveEditor->setVisible(mode);
-#endif
- ui.statusBar->setVisible(mode);
-
-#ifndef NV_ARTISTTOOLS
- if (_mainToolbar)
- _mainToolbar->setVisible(mode);
-#else
- CoreLib::Inst()->AppMainWindow_shortcut_expert(mode);
-#endif // NV_ARTISTTOOLS
-
- //bool bDemoMode = AppMainWindow::IsExpertMode();
- bool bMaxSized = AppMainWindow::Inst().isMaximized();
- if (!bMaxSized)
- {
- // resize before change to demo mode
- AppMainWindow::Inst().showMaximized();
- }
-
- _d3dWidget->update();
- Gamepad::ShowProjectName();
-}
-
-void AppMainWindow::shortcut_output()
-{
- ui.dockOutputWindow->show();
- _d3dWidget->update();
-}
-
-void AppMainWindow::shortcut_meshmat()
-{
-}
-
-void AppMainWindow::shortcut_fitcamera()
-{
- qDebug("ShortCut_Ctrl+F: fit camera");
- SimpleScene::Inst()->FitCamera();
-}
-
-#if USE_CURVE_EDITOR
-void AppMainWindow::onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute* attribute)
-{
-#ifndef NV_ARTISTTOOLS
- SimpleScene::Inst()->GetFurCharacter().updateCurveAttribute(attribute);
-#else
- CoreLib::Inst()->AppMainWindow_onCurveAttributeChanged(attribute);
-#endif // NV_ARTISTTOOLS
-}
-
-void AppMainWindow::onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute* attribute)
-{
-#ifndef NV_ARTISTTOOLS
- SimpleScene::Inst()->GetFurCharacter().updateColorAttribute(attribute);
- _graphicalMaterialPanel->updateValues();
-#else
- CoreLib::Inst()->AppMainWindow_onColorAttributeChanged(attribute);
-#endif // NV_ARTISTTOOLS
-}
-
-void AppMainWindow::onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute* attribute, bool reloadColorTex, int selectedCtrlPntIndex)
-{
-#ifndef NV_ARTISTTOOLS
- SimpleScene::Inst()->GetFurCharacter().reloadColorAttributeTexture(attribute, reloadColorTex, selectedCtrlPntIndex);
-#else
- CoreLib::Inst()->AppMainWindow_onReloadColorAttributeTexture(attribute, reloadColorTex, selectedCtrlPntIndex);
-#endif // NV_ARTISTTOOLS
-}
-#endif
-
-/*
- Maya Scheme:
- ALT + LMB -> Rotate
- ALT + MMB -> Pan
- ALT + RMB -> Zoom
-
- M-wheel -> Zoom
-
- 3dsMax Scheme:
- ALT + MMB -> Rotate
- N/A + MMB -> Pan
- ALT + SHFT + MMB -> Zoom
-
- M-wheel -> Zoom
-*/
-
-void AppMainWindow::InitMouseSchemes()
-{
- ShortCut alt_lmb = qMakePair(Qt::KeyboardModifiers(Qt::AltModifier), Qt::MouseButtons(Qt::LeftButton));
- ShortCut alt_mmb = qMakePair(Qt::KeyboardModifiers(Qt::AltModifier), Qt::MouseButtons(Qt::MiddleButton));
- ShortCut alt_rmb = qMakePair(Qt::KeyboardModifiers(Qt::AltModifier), Qt::MouseButtons(Qt::RightButton));
- ShortCut non_mmb = qMakePair(Qt::KeyboardModifiers(Qt::NoModifier), Qt::MouseButtons(Qt::MiddleButton));
- ShortCut alt_shft_mmb = qMakePair(Qt::KeyboardModifiers(Qt::AltModifier|Qt::ShiftModifier), Qt::MouseButtons(Qt::MiddleButton));
-
- _mayaScheme[alt_lmb] = 'R';
- _mayaScheme[alt_mmb] = 'P';
- _mayaScheme[alt_rmb] = 'Z';
-
- _maxScheme[alt_mmb] = 'R';
- _maxScheme[non_mmb] = 'P';
- _maxScheme[alt_shft_mmb] = 'Z';
-}
-
-char AppMainWindow::TestMouseScheme( Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons )
-{
- char op = TestDragCamera(modifiers, buttons);
-
- if (op != 0)
- return op;
-
- bool isKeyL = (GetAsyncKeyState('L') && 0x8000);
- if (isKeyL) //if(modifiers == Qt::KeyboardModifier(Qt::ControlModifier)) // ctrl is used by Selection Tool
- {
- if (buttons == Qt::MouseButton(Qt::LeftButton))
- return 'L';
- else if (buttons == Qt::MouseButton(Qt::MiddleButton))
- return 'K';
- }
-
- if (modifiers == Qt::KeyboardModifier(Qt::ShiftModifier))
- return 'W';
-
- return 0;
-}
-
-char AppMainWindow::TestDragCamera( Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons )
-{
- if(modifiers != Qt::NoModifier && modifiers != Qt::AltModifier) return 0;
-
- ShortCut input = qMakePair(modifiers, buttons);
-
- int scheme = _navigationStyle;
-
- // !! MUST MATCH THE ORDER OF ITEMS IN 'cbNavigationStyle'
- const int MAYA_SCHEME = 0;
- const int MAX_SCHEME = 1;
- if(scheme == MAYA_SCHEME)
- {
- auto itr = _mayaScheme.find(input);
- if(itr != _mayaScheme.end())
- return itr.value();
- }
- else
- {
- auto itr = _maxScheme.find(input);
- if(itr != _maxScheme.end())
- return itr.value();
- }
- return 0;
-}
-
-void AppMainWindow::addRecentFile(const QString filePath)
-{
- if (filePath.isEmpty())
- return;
-
- if (_recentFileRecordFile.getItems().count() > 0 && _recentFileRecordFile.getItems().first() == filePath)
- return;
-
- if (_recentFileActions.count() == 8)
- {
- QAction* act = _recentFileActions.last();
- _recentMenu->removeAction(act);
-
- _recentFileRecordFile.getItems().pop_back();
- _recentFileActions.pop_back();
- }
-
- if (_recentFileRecordFile.isItemExist(filePath))
- {
- _resetRecentFile(filePath);
- return;
- }
-
- QAction* act = new QAction(filePath, _recentMenu);
- if (_recentFileActions.count() > 0)
- _recentMenu->insertAction(_recentFileActions.first(), act);
- else
- _recentMenu->addAction(act);
-
- _recentFileActions.push_front(act);
-
- _recentFileRecordFile.getItems().push_front(filePath);
-
- _saveRecentFile();
-}
-
-void AppMainWindow::_resetRecentFile(const QString filePath)
-{
- if (filePath.isEmpty())
- return;
-
- if (_recentFileRecordFile.getItems().count() > 0 && _recentFileRecordFile.getItems().first() == filePath)
- return;
-
- if (!_recentFileRecordFile.isItemExist(filePath))
- return;
-
- QList<QAction*> actions;
- for (int i = 0; i < _recentFileActions.count(); ++i)
- {
- QAction* act = _recentFileActions.at(i);
- if (act->text() == filePath)
- actions.push_front(act);
- else
- actions.push_back(act);
- }
-
- _recentMenu->addActions(actions);
- _recentFileActions = actions;
-
- QList<QString> filesTMP;
- QList<QString>& filesCurrent = _recentFileRecordFile.getItems();
- for (int i = 0; i < filesCurrent.count(); ++i)
- {
- QString item = filesCurrent.at(i);
- if (item == filePath)
- filesTMP.push_front(item);
- else
- filesTMP.push_back(item);
- }
- filesCurrent.clear();
- filesCurrent = filesTMP;
-
- _saveRecentFile();
-}
-
-void AppMainWindow::_loadRecentFile()
-{
- QString recentFileRecordFile = QCoreApplication::applicationDirPath() + "/RecentFiles.rfs";
- _recentFileRecordFile.load(recentFileRecordFile);
-
- QList<QString> recentFiles = _recentFileRecordFile.getItems();
- _recentFileRecordFile.getItems().clear();
-
- for (int i = recentFiles.count() - 1; i >= 0; --i)
- {
- addRecentFile(recentFiles.at(i));
- }
-}
-
-void AppMainWindow::_saveRecentFile()
-{
- QString recentFileRecordFile = QCoreApplication::applicationDirPath() + "/RecentFiles.rfs";
- _recentFileRecordFile.save(recentFileRecordFile);
-}
-
-QString AppMainWindow::OpenTextureFile(QString title)
-{
- QString lastDir = _lastFilePath;
- QString titleStr = "Open Texture File";
- if(!title.isEmpty())
- titleStr = title;
-
- QString fileName = QFileDialog::getOpenFileName(this, titleStr, lastDir, "Images (*.dds *.png *.bmp *.jpg *.tga)");
- if(!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- _lastFilePath = fileInfo.absoluteDir().absolutePath();
- }
-
- return fileName;
-}
-
-void AppMainWindow::closeEvent (QCloseEvent *event)
-{
- ViewerOutput::Inst().UnRegisterPrinter(_printer);
-
- if (1)
- {
-#if USE_CURVE_EDITOR
- _curveEditorMainWindow->setParent(NULL);
-#endif
- event->accept();
- emit aboutToQuit();
- return;
- }
- if (SimpleScene::Inst()->IsProjectModified() || SimpleScene::Inst()->IsFurModified())
- {
- QMessageBox::StandardButton resBtn = QMessageBox::warning(
- this, tr("Blast Viewer"),
- tr("Save changes?\n"),
- QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
- QMessageBox::Yes);
- switch (resBtn)
- {
- case QMessageBox::Yes:
-#ifndef NV_ARTISTTOOLS
- if (!menu_saveHair())
- {
- event->ignore();
- return;
- }
- if (!menu_saveProject())
- {
- event->ignore();
- return;
- }
-#else
- if (!CoreLib::Inst()->AppMainWindow_closeEvent(event))
- {
- event->ignore();
- return;
- }
-#endif // NV_ARTISTTOOLS
- break;
- case QMessageBox::No:
- break;
- default:
- event->ignore();
- return;
- }
- }
- event->accept();
- emit aboutToQuit();
-}
-
-void AppMainWindow::updateMainToolbar()
-{
-#ifndef NV_ARTISTTOOLS
- if (_mainToolbar)
- _mainToolbar->updateValues();
-#else
- CoreLib::Inst()->AppMainWindow_updateMainToolbar();
-#endif // NV_ARTISTTOOLS
-}
-
-#ifndef NV_ARTISTTOOLS
-bool AppMainWindow::menu_openProject()
-{
- QString lastDir = _lastFilePath;
- QString fileName = QFileDialog::getOpenFileName(this, "Open Project File", lastDir, "Project File (*.blastProj)");
-
- return openProject(fileName);
-}
-
-bool AppMainWindow::menu_saveProject()
-{
- char message[1024];
-
- std::string projectFilePath = GlobalSettings::Inst().getAbsoluteFilePath();
- if (projectFilePath != "")
- {
- if (SimpleScene::Inst()->SaveProject(
- GlobalSettings::Inst().m_projectFileDir.c_str(),
- GlobalSettings::Inst().m_projectFileName.c_str()
- ) == false)
- {
- QMessageBox messageBox;
-
- sprintf(message, "Project file %s could not be saved!", (const char*)projectFilePath.c_str());
- messageBox.critical(0, "Error", message);
- messageBox.setFixedSize(500, 200);
- char message[1024];
- sprintf(message, "Failed to save project file(\"%s\")", (const char*)projectFilePath.c_str());
- viewer_err(message);
- return false;
- }
-
- sprintf(message, "Project file %s was saved.", (const char*)projectFilePath.c_str());
-
- /*
- QMessageBox messageBox;
- messageBox.information(0, "Info", message);
- messageBox.setFixedSize(500,200);
- */
- viewer_msg(message);
- return true;
- }
- else
- {
- return menu_saveProjectAs();
- }
- return false;
-}
-
-bool AppMainWindow::menu_saveProjectAs()
-{
- char message[1024];
-
- QString lastDir = _lastFilePath;
- QString fileName = QFileDialog::getSaveFileName(this, "Save Project File", lastDir, "Project File (*.blastProj)");
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->SaveProject(dir, file) == false)
- {
- QMessageBox messageBox;
- sprintf(message, "Project file %s could not be saved!", (const char*)file);
- messageBox.critical(0, "Error", message);
- messageBox.setFixedSize(500, 200);
- return false;
- }
-
- sprintf(message, "Project file %s was saved.", (const char*)file);
-
- /*
- QMessageBox messageBox;
- messageBox.information(0, "Info", message);
- messageBox.setFixedSize(500,200);
- */
-
- viewer_msg(message);
-
- _lastFilePath = fileInfo.absoluteDir().absolutePath();
- return true;
- }
- return false;
-}
-
-bool AppMainWindow::menu_openHair()
-{
- AppMainWindow& window = AppMainWindow::Inst();
- QString lastDir = window._lastFilePath;
- QString fileName = QFileDialog::getOpenFileName(&window, "Open Hair File", lastDir, "Apex Hair File (*.apx;*.apb)");
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->GetFurCharacter().LoadHairAsset(dir, file) == false)
- {
- QMessageBox messageBox;
- messageBox.critical(0, "Error", "File open error!");
- messageBox.setFixedSize(500, 200);
- char message[1024];
- sprintf(message, "Failed to open hair file(\"%s\")", (const char*)file);
- viewer_err(message);
- return false;
- }
-
- window._lastFilePath = fileInfo.absoluteDir().absolutePath();
-
- window.updateUI();
- return true;
- }
-
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-// event handlers
-bool AppMainWindow::menu_importHair()
-{
- AppMainWindow& window = AppMainWindow::Inst();
- QString lastDir = window._lastFilePath;
- QString fileName = QFileDialog::getOpenFileName(&window, "Import Hair File", lastDir, "Apex Hair File (*.apx;*.apb)");
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->GetFurCharacter().ImportSelectedHairAsset(dir, file) == false)
- {
- QMessageBox messageBox;
- messageBox.critical(0, "Error", "File open error!");
- messageBox.setFixedSize(500, 200);
- char message[1024];
- sprintf(message, "Failed to import hair file(\"%s\")", (const char*)file);
- viewer_err(message);
- return false;
- }
-
- window._lastFilePath = fileInfo.absoluteDir().absolutePath();
-
- window.updateUI();
- return true;
- }
- return false;
-}
-
-
-bool AppMainWindow::menu_saveHair()
-{
- return SimpleScene::Inst()->GetFurCharacter().SaveHairAsset();
-}
-
-bool AppMainWindow::menu_saveHairAs()
-{
- AppMainWindow& window = AppMainWindow::Inst();
- QString lastDir = window._lastFilePath;
- QString fileName = QFileDialog::getSaveFileName(&window, "Save as", lastDir, "Apex Hair File (*.apx;*.apb)");
- if (!fileName.isEmpty())
- {
- QFileInfo fileInfo(fileName);
- QByteArray dir = QDir::toNativeSeparators(fileInfo.absoluteDir().absolutePath()).toLocal8Bit();
- QByteArray file = fileInfo.fileName().toLocal8Bit();
-
- if (SimpleScene::Inst()->GetFurCharacter().SaveHairAssetAs(dir, file))
- {
- window.updateUI();
- }
-
- window._lastFilePath = fileInfo.absoluteDir().absolutePath();
- return true;
- }
- return false;
-}
-
-bool AppMainWindow::menu_saveAllHairs()
-{
- return SimpleScene::Inst()->GetFurCharacter().SaveAllHairs();
-}
-#endif // NV_ARTISTTOOLS \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.h b/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.h
deleted file mode 100644
index 823c14f..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/AppMainWindow.h
+++ /dev/null
@@ -1,221 +0,0 @@
-#ifndef APPMAINWINDOW_H
-#define APPMAINWINDOW_H
-
-#include <QtWidgets/QMainWindow>
-#include <QtWidgets/QProgressDialog>
-
-#include "ui_AppMainWindow.h"
-#include "UIGlobal.h"
-#include "XMLHelper.h"
-
-class StyleMaterialPanel;
-class AssetControlPanel;
-class PhysicalMaterialPanel;
-class GraphicalMaterialPanel;
-class DisplayFurVisualizersPanel;
-class GeneralAttributePanel;
-class BlastToolbar;
-class LodPanel;
-class DisplayMeshesPanel;
-class DisplayPreferencesPanel;
-class DisplayScenePanel;
-class DisplayLightPanel;
-class DisplayMeshMaterialsPanel;
-
-#if USE_CURVE_EDITOR
-namespace nvidia {
-namespace CurveEditor {
-
-class CurveEditorMainWindow;
-class CurveAttribute;
-class ColorAttribute;
-
-} // namespace CurveEditor
-} // namespace nvidia
-#endif
-
-#if USE_MATERIAL_SET
-class MaterialSetPanel;
-#endif
-
-class D3DWidget;
-class MsgPrinter;
-class AppMainWindow : public QMainWindow
-{
- Q_OBJECT
-
-public:
- AppMainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0);
- ~AppMainWindow();
-
- CORELIB_EXPORT static AppMainWindow& Inst();
-
- CORELIB_EXPORT void InitUI();
- CORELIB_EXPORT void updateUI();
- CORELIB_EXPORT void updatePluginUI();
-
- static bool IsExpertMode();
-
- D3DWidget* GetRenderWidget() {return _d3dWidget;}
- char TestMouseScheme(Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons);
-
- CORELIB_EXPORT QString OpenTextureFile(QString title = "");
-
- void setNavigationStyle(int index) { _navigationStyle = index; }
- int getNavigationStyle() { return _navigationStyle; }
-
- void closeEvent (QCloseEvent *event);
-
- CORELIB_EXPORT void startProgress();
- CORELIB_EXPORT void setProgressMaximum(int m);
- CORELIB_EXPORT void setProgress(const char* label, int progress = -1);
- CORELIB_EXPORT void endProgress();
- CORELIB_EXPORT void quit();
-
- CORELIB_EXPORT void updateMainToolbar();
- CORELIB_EXPORT void processDragAndDrop(const QStringList& fileNames);
- CORELIB_EXPORT bool openProject(QString fileName);
-
- CORELIB_EXPORT static void setConnectionMode(int);
-
- DisplayMeshesPanel* GetDisplayMeshesPanel() { return _displayMeshesPanel; }
- DisplayPreferencesPanel* GetDisplayPreferencesPanel() { return _displayPreferencesPanel; }
- DisplayScenePanel* GetDisplayScenePanel() { return _displayScenePanel; }
- DisplayLightPanel* GetDisplayLightPanel() { return _displayLightPanel; }
-
- void removeBookmark(const QString& name);
- void renameBookmark(const QString& oldName, const QString& newName);
-
-#if USE_CURVE_EDITOR
- CORELIB_EXPORT nvidia::CurveEditor::CurveEditorMainWindow* GetCurveEditorMainWindow() { return _curveEditorMainWindow; }
- CORELIB_EXPORT void UpdateCurveEditor();
- CORELIB_EXPORT void ShowCurveEditor(int paramId);
-#endif
-
- inline QString GetFilePath() { return _lastFilePath; }
-signals:
- void aboutToQuit();
-
- public slots:
- CORELIB_EXPORT void menu_item_triggered(QAction* action);
- CORELIB_EXPORT void menu_clearScene();
- CORELIB_EXPORT bool menu_openfbx();
- CORELIB_EXPORT void menu_addBookmark();
- CORELIB_EXPORT void menu_editBookmarks();
- CORELIB_EXPORT void menu_bookmarkTriggered(QAction* act);
- CORELIB_EXPORT void menu_showOutput();
- CORELIB_EXPORT void menu_showAttributeEditor();
- CORELIB_EXPORT void menu_about();
- CORELIB_EXPORT void menu_opendoc();
- CORELIB_EXPORT void shortcut_frameall();
- CORELIB_EXPORT void shortcut_hud();
- CORELIB_EXPORT void shortcut_statistics();
- CORELIB_EXPORT void shortcut_pause();
- CORELIB_EXPORT void shortcut_reset();
- CORELIB_EXPORT void shortcut_escape();
- CORELIB_EXPORT void shortcut_expert();
- CORELIB_EXPORT void demo_next();
- CORELIB_EXPORT void demo_prev();
- CORELIB_EXPORT void shortcut_output();
- CORELIB_EXPORT void shortcut_meshmat();
- CORELIB_EXPORT void shortcut_fitcamera();
-
-#if USE_CURVE_EDITOR
- CORELIB_EXPORT void menu_showCurveEditor();
- CORELIB_EXPORT void onCurveAttributeChanged(nvidia::CurveEditor::CurveAttribute* attribute);
- CORELIB_EXPORT void onColorAttributeChanged(nvidia::CurveEditor::ColorAttribute* attribute);
- CORELIB_EXPORT void onReloadColorAttributeTexture(nvidia::CurveEditor::ColorAttribute* attribute, bool reloadColorTex, int selectedCtrlPntIndex);
-#endif
-
- CORELIB_EXPORT void addRecentFile(const QString filePath);
-private:
- char TestDragCamera(Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons);
-
- void _resetRecentFile(const QString filePath);
- void _loadRecentFile();
- void _saveRecentFile();
-
-public:
- void InitMenuItems();
- void InitToolbar();
- void InitPluginTab();
- void InitMainTab();
- void InitMouseSchemes();
- void InitShortCuts();
- void updateBookmarkMenu();
-
- Ui::AppMainWindowClass ui;
-
- D3DWidget* _d3dWidget;
- QMenu* _recentMenu;
- QList<QAction*> _recentFileActions;
- SingleItemKindFile _recentFileRecordFile;
-
- QMenu* _bookmarksMenu;
-
- DisplayMeshesPanel* _displayMeshesPanel;
- DisplayPreferencesPanel* _displayPreferencesPanel;
- DisplayScenePanel* _displayScenePanel;
- DisplayLightPanel* _displayLightPanel;
-
-
-#if USE_CURVE_EDITOR
- bool _curveEditorInitizlized;
- nvidia::CurveEditor::CurveEditorMainWindow* _curveEditorMainWindow;
-#endif
-
- typedef QPair<Qt::KeyboardModifiers, Qt::MouseButtons> ShortCut;
- QMap<ShortCut, char> _mayaScheme;
- QMap<ShortCut, char> _maxScheme;
- QActionGroup* _bookmarkActionGroup;
- QAction* _actionAddBookmark;
- QAction* _actionEditBookmarks;
-
- QString _lastFilePath;
-
- int _navigationStyle;
-
- MsgPrinter* _printer;
-
- QProgressDialog _progressDialog;
-
-
- static bool _expertMode;
-
- CORELIB_EXPORT static int _connectionMode;
-
-#ifndef NV_ARTISTTOOLS
- BlastToolbar* GetMainToolbar() { return _mainToolbar; }
- DisplayFurVisualizersPanel* GetFurVisualizersPanel() { return _displayFurVisualizersPanel; }
-
-public slots:
- bool menu_openProject();
- bool menu_saveProject();
- bool menu_saveProjectAs();
- bool menu_openHair();
- bool menu_importHair();
- bool menu_saveHair();
- bool menu_saveHairAs();
- bool menu_saveAllHairs();
-
-private:
- BlastToolbar* _mainToolbar;
- AssetControlPanel* _assetControlPanel;
- GeneralAttributePanel* _generalAttributePanel;
- DisplayFurVisualizersPanel* _displayFurVisualizersPanel;
- StyleMaterialPanel* _styleMaterialPanel;
- PhysicalMaterialPanel* _physicalMaterialPanel;
- GraphicalMaterialPanel* _graphicalMaterialPanel;
- LodPanel* _lodPanel;
- DisplayMeshMaterialsPanel* _displayMeshMaterialsPanel;
-#if USE_MATERIAL_SET
- MaterialSetPanel* _materialSetPanel;
-#endif
-#endif // NV_ARTISTTOOLS
-
- bool m_bGizmoWithLocal;
- bool m_bGizmoWithDepthTest;
- bool m_bShowPlane;
-};
-
-#endif // APPMAINWINDOW_H
diff --git a/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.cpp b/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.cpp
deleted file mode 100644
index 445067a..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include "CameraBookmarksDialog.h"
-#include "SimpleScene.h"
-#include "AppMainWindow.h"
-#include <QtWidgets/QMessageBox>
-
-CameraBookmarksDialog::CameraBookmarksDialog(QWidget *parent)
- : QDialog(parent)
-{
- ui.setupUi(this);
-
- ui.buttonBox->button(QDialogButtonBox::Ok)->setFixedWidth(64);
- ui.buttonBox->button(QDialogButtonBox::Cancel)->setFixedWidth(64);
- ui.buttonBox->button(QDialogButtonBox::Ok)->setFixedHeight(23);
- ui.buttonBox->button(QDialogButtonBox::Cancel)->setFixedHeight(23);
- setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);
-
- QObject::connect(ui.buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(accept()));
- QObject::connect(ui.buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(reject()));
-
- ui.editBookmarkName->setEnabled(false);
- ui.btnRename->setEnabled(false);
- ui.btnDelete->setEnabled(false);
-
- _fillListWidget();
-}
-
-CameraBookmarksDialog::~CameraBookmarksDialog()
-{
-
-}
-
-void CameraBookmarksDialog::on_listWidgetBookmarks_itemSelectionChanged()
-{
- if (ui.listWidgetBookmarks->selectedItems().size() == 0)
- {
- ui.editBookmarkName->setEnabled(false);
- ui.btnRename->setEnabled(false);
- ui.btnDelete->setEnabled(false);
- }
- else
- {
- QListWidgetItem* item = ui.listWidgetBookmarks->selectedItems().at(0);
- ui.editBookmarkName->setEnabled(true);
- ui.btnRename->setEnabled(true);
- ui.btnDelete->setEnabled(true);
-
- ui.editBookmarkName->setText(item->text());
- }
-}
-
-void CameraBookmarksDialog::on_editBookmarkName_textChanged(QString val)
-{
-
-}
-
-void CameraBookmarksDialog::on_btnRename_clicked()
-{
- if (ui.editBookmarkName->text().isEmpty())
- {
- QListWidgetItem* item = ui.listWidgetBookmarks->selectedItems().at(0);
- ui.editBookmarkName->setText(item->text());
- }
- else
- {
- if (_isNameConflict(ui.editBookmarkName->text()))
- {
- QMessageBox::warning(this, tr("Warning"), tr("The new name is conflict with name of other camera bookmark!"));
- return;
- }
-
- QListWidgetItem* item = ui.listWidgetBookmarks->selectedItems().at(0);
- SimpleScene::Inst()->renameBookmark(item->text(), ui.editBookmarkName->text());
- AppMainWindow::Inst().renameBookmark(item->text(), ui.editBookmarkName->text());
- item->setText(ui.editBookmarkName->text());
- }
-
-}
-
-void CameraBookmarksDialog::on_btnDelete_clicked()
-{
- QListWidgetItem* item = ui.listWidgetBookmarks->selectedItems().at(0);
- SimpleScene::Inst()->removeBookmark(item->text());
- AppMainWindow::Inst().removeBookmark(item->text());
- ui.listWidgetBookmarks->takeItem(ui.listWidgetBookmarks->row(item));
- delete item;
-
-}
-
-void CameraBookmarksDialog::_fillListWidget()
-{
- QList<QString> bookmarks = SimpleScene::Inst()->getBookmarkNames();
- ui.listWidgetBookmarks->addItems(bookmarks);
-}
-
-bool CameraBookmarksDialog::_isNameConflict(const QString& name)
-{
- QList<QString> bookmarks = SimpleScene::Inst()->getBookmarkNames();
- int bookmarkCount = bookmarks.size();
- for (int i = 0; i < bookmarkCount; ++i)
- {
- if (bookmarks.at(i) == name)
- return true;
- }
-
- return false;
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.h b/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.h
deleted file mode 100644
index 13caa42..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/CameraBookmarksDialog.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef CAMERABOOKMARKSDIALOG_H
-#define CAMERABOOKMARKSDIALOG_H
-
-#include <QtWidgets/QDialog>
-#include "ui_CameraBookmarksDialog.h"
-
-#include "corelib_global.h"
-
-class CameraBookmarksDialog : public QDialog
-{
- Q_OBJECT
-
-public:
- CameraBookmarksDialog(QWidget *parent = 0);
- ~CameraBookmarksDialog();
-
-private slots:
-CORELIB_EXPORT void on_listWidgetBookmarks_itemSelectionChanged();
-CORELIB_EXPORT void on_editBookmarkName_textChanged(QString val);
-CORELIB_EXPORT void on_btnRename_clicked();
-CORELIB_EXPORT void on_btnDelete_clicked();
-
-private:
- void _fillListWidget();
- bool _isNameConflict(const QString& name);
-
-private:
- Ui::CameraBookmarksDialog ui;
-};
-
-#endif // CAMERABOOKMARKSDIALOG_H
diff --git a/tools/ArtistTools/source/CoreLib/Window/D3DWidget.cpp b/tools/ArtistTools/source/CoreLib/Window/D3DWidget.cpp
deleted file mode 100644
index 73aabfc..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/D3DWidget.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-#include <QtGui/QResizeEvent>
-#include <QtGui/QMouseEvent>
-#include <QtCore/QTimer>
-#include <QtCore/QMimeData>
-
-#include "D3DWidget.h"
-#include "AppMainWindow.h"
-#include "SimpleScene.h"
-
-D3DWidget::D3DWidget( QWidget* parent )
- : QWidget(parent, Qt::MSWindowsOwnDC) // Same settings as used in Qt's QGLWidget
-{
- // same settings as used in QGLWidget to avoid 'white flickering'
- setAttribute(Qt::WA_PaintOnScreen);
- setAttribute(Qt::WA_NoSystemBackground);
-
- // to get rid of 'black flickering'
- setAttribute(Qt::WA_OpaquePaintEvent, true);
-
- QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- sizePolicy.setHorizontalStretch(0);
- sizePolicy.setVerticalStretch(0);
- setSizePolicy(sizePolicy);
-
- _appWindow = qobject_cast<AppMainWindow*>(parent);
- this->setAcceptDrops(true);
-
- setMouseTracking(true);
-}
-
-void D3DWidget::dragEnterEvent(QDragEnterEvent *e)
-{
- CoreLib::Inst()->D3DWidget_dragEnterEvent(e);
- e->acceptProposedAction();
-}
-
-void D3DWidget::dragMoveEvent(QDragMoveEvent *e)
-{
- CoreLib::Inst()->D3DWidget_dragMoveEvent(e);
- e->acceptProposedAction();
-}
-
-void D3DWidget::dragLeaveEvent(QDragLeaveEvent *e)
-{
- CoreLib::Inst()->D3DWidget_dragLeaveEvent(e);
- //e->acceptProposedAction();
-}
-
-void D3DWidget::dropEvent(QDropEvent *e)
-{
- CoreLib::Inst()->D3DWidget_dropEvent(e);
-
- const QMimeData* data = e->mimeData();
- QString name = data->objectName();
-
- bool hasUrls = data->hasUrls();
- if (!hasUrls)
- return;
-
- QList<QUrl> urlList = data->urls();
- QStringList fileNames;
- for (int i = 0; i < urlList.size() && i < 32; ++i) {
- fileNames.append(urlList.at(i).toLocalFile());
- }
-
- e->acceptProposedAction();
-
- AppMainWindow::Inst().processDragAndDrop(fileNames);
-}
-
-void D3DWidget::paintEvent( QPaintEvent* e )
-{
- SimpleScene::Inst()->Draw();
-}
-
-void D3DWidget::Shutdown()
-{
- SimpleScene::Inst()->Shutdown();
-}
-
-void D3DWidget::Timeout()
-{
- SimpleScene::Inst()->Timeout();
-}
-
-void D3DWidget::resizeEvent( QResizeEvent* e )
-{
- int w = e->size().width();
- int h = e->size().height();
- // resize calls D3D11RenderWindow::Resize
- SimpleScene::Inst()->Resize(w,h);
- // D3DWidget_resizeEvent calls resize in DeviceManager
- CoreLib::Inst()->D3DWidget_resizeEvent(e);
-}
-
-void D3DWidget::mouseMoveEvent( QMouseEvent* e )
-{
- atcore_float2 pos = gfsdk_makeFloat2(e->x(), e->y());
- SimpleScene::Inst()->onMouseMove(pos);
-
- Q_ASSERT(_appWindow != NV_NULL);
- char mode = _appWindow->TestMouseScheme(e->modifiers(), e->buttons());
- CoreLib::Inst()->D3DWidget_mouseMoveEvent(e);
- if (!e->isAccepted())
- {
- return;
- }
- if(mode == 0) return;
- SimpleScene::Inst()->Drag(mode);
-}
-
-void D3DWidget::wheelEvent(QWheelEvent* e)
-{
- SimpleScene::Inst()->onMouseWheel(e->delta());
- SimpleScene::Inst()->WheelZoom();
-
- CoreLib::Inst()->D3DWidget_wheelEvent(e);
-}
-
-void D3DWidget::mousePressEvent( QMouseEvent* e )
-{
- atcore_float2 pos = gfsdk_makeFloat2(e->x(), e->y());
- SimpleScene::Inst()->onMouseDown(pos);
-
- CoreLib::Inst()->D3DWidget_mousePressEvent(e);
-}
-
-void D3DWidget::mouseReleaseEvent( QMouseEvent* e )
-{
- atcore_float2 pos = gfsdk_makeFloat2(e->x(), e->y());
- SimpleScene::Inst()->onMouseUp(pos);
-
- CoreLib::Inst()->D3DWidget_mouseReleaseEvent(e);
-}
-
-void D3DWidget::keyPressEvent( QKeyEvent* e )
-{
- CoreLib::Inst()->D3DWidget_keyPressEvent(e);
-}
-
-void D3DWidget::keyReleaseEvent( QKeyEvent* e )
-{
- CoreLib::Inst()->D3DWidget_keyReleaseEvent(e);
-}
-
-void D3DWidget::contextMenuEvent(QContextMenuEvent *e)
-{
- CoreLib::Inst()->D3DWidget_contextMenuEvent(e);
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Window/D3DWidget.h b/tools/ArtistTools/source/CoreLib/Window/D3DWidget.h
deleted file mode 100644
index 0de9a1e..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/D3DWidget.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef D3DWidget_h__
-#define D3DWidget_h__
-
-#include <QtWidgets/QWidget>
-#include "Nv.h"
-
-#include "corelib_global.h"
-
-class AppMainWindow;
-class D3DWidget : public QWidget
-{
- Q_OBJECT
-
-public:
-
- D3DWidget(QWidget* parent);
- virtual ~D3DWidget(){}
-
-signals:
- void DropSignal();
-
-public slots:
-CORELIB_EXPORT void Timeout();
-CORELIB_EXPORT void Shutdown();
-
-protected:
- // return NULL to ignore system painter
- virtual QPaintEngine *paintEngine() const { return NV_NULL; }
-
- // QWidget events
- virtual void resizeEvent(QResizeEvent* e);
- virtual void paintEvent(QPaintEvent* e);
- virtual void mousePressEvent(QMouseEvent* e);
- virtual void mouseReleaseEvent(QMouseEvent* e);
- virtual void mouseMoveEvent(QMouseEvent* e);
- virtual void wheelEvent ( QWheelEvent * e);
- virtual void keyPressEvent(QKeyEvent* e);
- virtual void keyReleaseEvent(QKeyEvent* e);
-
- virtual void dragEnterEvent(QDragEnterEvent *e);
- virtual void dragMoveEvent(QDragMoveEvent *e);
- virtual void dragLeaveEvent(QDragLeaveEvent *e);
- virtual void dropEvent(QDropEvent *e);
-
- virtual void contextMenuEvent(QContextMenuEvent *e);
-
-private:
- AppMainWindow* _appWindow;
-};
-
-#endif // D3DWidget_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.cpp b/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.cpp
deleted file mode 100644
index ec267a3..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.cpp
+++ /dev/null
@@ -1,263 +0,0 @@
-#include "AppMainWindow.h"
-#include "DisplayLightPanel.h"
-
-#include "Light.h"
-#include "GlobalSettings.h"
-
-#include <QtWidgets/QColorDialog>
-#include <QtCore/QFileInfo>
-
-DisplayLightPanel::DisplayLightPanel(QWidget* parent)
- :
- QWidget(parent)
-{
- ui.setupUi(this);
- _isUpdatingUI = false;
-
- ConfigSpinBox<SlideSpinBoxF>(ui.spinLightDistance, 0.0, 1000.0, 0.1);
- ConfigSpinBox<SlideSpinBoxF>(ui.spinLightIntensity, 0.0, 5.0, 0.01);
-
- ui.btnLightColorTex->setIcon(QIcon(":/AppMainWindow/images/TextureEnabled_icon.png"));
- ui.btnLightColorTex->setIconSize(QSize(12,12));
- ui.btnLightColorTexReload->setIcon(QIcon(":/AppMainWindow/images/Refresh_icon.png"));
- ui.btnLightColorTexClear->setIcon(QIcon(":/AppMainWindow/images/Remove_icon.png"));
-
- connect(ui.listSelectedLight, SIGNAL(itemSelectionChanged()), this, SLOT(onListSelectionChanged()));
-}
-
-void DisplayLightPanel::onListSelectionChanged()
-{
- if (_isUpdatingUI)
- return;
-
- int numSelected = ui.listSelectedLight->selectedItems().count();
-
- // change selection only when there is something selected
- if (numSelected > 0)
- {
- int numItems = ui.listSelectedLight->count();
- {
- for (int i = 0; i < numItems; i++)
- {
- bool selected = ui.listSelectedLight->item(i)->isSelected();
- Light::GetLight(i)->m_selected = selected;
- }
- }
- }
-
- updateUI();
-}
-
-void DisplayLightPanel::on_cbShadowMapResolution_currentIndexChanged( int index )
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->SetShadowMapResolution(index);
- }
-}
-
-void DisplayLightPanel::on_btnLightUseShadow_stateChanged(int state)
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->m_useShadows = state;
- }
-}
-
-void DisplayLightPanel::on_btnVisualizeLight_stateChanged(int state)
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->m_visualize = state;
- }
-}
-
-void DisplayLightPanel::on_btnLightEnable_stateChanged(int state)
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->m_enable = state;
- }
-}
-
-void DisplayLightPanel::on_btnLinkLightEnable_stateChanged(int state)
-{
- Light::SetLinkLightOption(state != 0 ? true : false);
-}
-
-void DisplayLightPanel::on_spinLightDistance_valueChanged(double v)
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->SetDistance(v);
- }
-}
-
-void DisplayLightPanel::on_spinLightIntensity_valueChanged(double v)
-{
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->m_intensity = v;
- }
-}
-
-void DisplayLightPanel::on_btnVisualizeShadowMap_stateChanged(int state)
-{
- GlobalSettings::Inst().m_visualizeShadowMap = state;
-}
-
-void DisplayLightPanel::setButtonColor(QPushButton *button, float r, float g, float b)
-{
- QColor specColor;
- specColor.setRgbF(r,g,b);
- QString specBtnStyle = QString("background-color: rgb(%1,%2,%3);")
- .arg(specColor.red())
- .arg(specColor.green())
- .arg(specColor.blue());
- button->setStyleSheet(specBtnStyle);
-}
-
-
-static bool getNewColor(atcore_float3& color)
-{
- QColor currentColor;
- currentColor.setRgbF(color.x, color.y, color.z);
-
- QColor newColor = QColorDialog::getColor(currentColor, NV_NULL);
- if(newColor.isValid())
- {
- qreal r,g,b;
- newColor.getRgbF(&r, &g, &b);
-
- color.x = r;
- color.y = g;
- color.z = b;
- return true;
- }
-
- return false;
-}
-
-void DisplayLightPanel::on_btnLightColor_clicked()
-{
- Light* pLight = Light::GetFirstSelectedLight();
-
- atcore_float3 color = pLight->m_color;
-
- if (getNewColor(color))
- setButtonColor(ui.btnLightColor, color.x, color.y, color.z);
-
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight || !pLight->m_selected)
- continue;
-
- pLight->m_color = color;
- }
-}
-
-inline void SetTextureIcon(QPushButton* pButton, bool enabled)
-{
- if (enabled)
- pButton->setIcon(QIcon(":/AppMainWindow/images/TextureEnabled_icon.png"));
- else
- pButton->setIcon(QIcon(":/AppMainWindow/images/TextureIsUsed_icon.png"));
-}
-
-void DisplayLightPanel::on_btnLightColorTex_clicked()
-{
- QString texName = AppMainWindow::Inst().OpenTextureFile();
- QFileInfo fileInfo(texName);
- QByteArray ba = fileInfo.absoluteFilePath().toLocal8Bit();
-
- if (Light::SetEnvTextureFromFilePath((const char*)ba))
- SetTextureIcon(ui.btnLightColorTex, Light::GetEnvTextureFilePath().empty());
-}
-
-void DisplayLightPanel::on_btnLightColorTexReload_clicked()
-{
- std::string path = Light::GetEnvTextureFilePath();
- if (Light::SetEnvTextureFromFilePath(path.c_str()))
- SetTextureIcon(ui.btnLightColorTex, Light::GetEnvTextureFilePath().empty());
-}
-
-void DisplayLightPanel::on_btnLightColorTexClear_clicked()
-{
- Light::SetEnvTextureFromFilePath(nullptr);
- SetTextureIcon(ui.btnLightColorTex, Light::GetEnvTextureFilePath().empty());
-}
-
-void DisplayLightPanel::updateUI()
-{
- Light* pLight = Light::GetFirstSelectedLight();
- if (!pLight)
- return;
-
- atcore_float3& color = pLight->m_color;
- setButtonColor(ui.btnLightColor, color.x, color.y, color.z);
-
- ui.btnVisualizeLight->setChecked(pLight->m_visualize);
-
- ui.spinLightDistance->setValue(pLight->GetDistance());
- ui.spinLightIntensity->setValue(pLight->m_intensity);
-
- ui.btnLightUseShadow->setChecked(pLight->m_useShadows);
- ui.btnLightEnable->setChecked(pLight->m_enable);
-
- ui.btnVisualizeShadowMap->setChecked(GlobalSettings::Inst().m_visualizeShadowMap);
-
- ui.cbShadowMapResolution->setCurrentIndex(pLight->m_shadowMapResolutionIndex);
-
- ui.btnLinkLightEnable->setChecked(Light::GetLinkLightOption());
-
- SetTextureIcon(ui.btnLightColorTex, Light::GetEnvTextureFilePath().empty());
-}
-
-void DisplayLightPanel::updateValues()
-{
- _isUpdatingUI = true;
-
- ui.listSelectedLight->clear();
- for (int i = 0; i < 4; i++)
- {
- Light* pLight = Light::GetLight(i);
- if (!pLight)
- continue;
-
- const char* lightName = pLight->m_name.c_str();
- bool selected = pLight->m_selected;
-
- ui.listSelectedLight->addItem(lightName);
- ui.listSelectedLight->item(i)->setSelected(selected);
- }
- ui.listSelectedLight->setSelectionMode(QAbstractItemView::ExtendedSelection);
-
- updateUI();
-
- _isUpdatingUI = false;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.h b/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.h
deleted file mode 100644
index e22eae4..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayLightPanel.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef DisplayLightPanel_h__
-#define DisplayLightPanel_h__
-
-#include <QtWidgets/QWidget>
-#include "ui_DisplayLightPanel.h"
-
-#include "corelib_global.h"
-
-class DisplayLightPanel : public QWidget
-{
- Q_OBJECT
-
-public:
- DisplayLightPanel(QWidget* parent);
-
- public:
- CORELIB_EXPORT void updateValues();
-
- public slots:
- CORELIB_EXPORT void onListSelectionChanged();
-
- CORELIB_EXPORT void on_spinLightDistance_valueChanged(double v);
- CORELIB_EXPORT void on_spinLightIntensity_valueChanged(double v);
-
- CORELIB_EXPORT void on_btnLightUseShadow_stateChanged(int state);
- CORELIB_EXPORT void on_btnVisualizeLight_stateChanged(int state);
- CORELIB_EXPORT void on_btnLightEnable_stateChanged(int state);
- CORELIB_EXPORT void on_btnLinkLightEnable_stateChanged(int state);
-
- CORELIB_EXPORT void on_btnLightColor_clicked();
- CORELIB_EXPORT void on_btnLightColorTex_clicked();
- CORELIB_EXPORT void on_btnLightColorTexReload_clicked();
- CORELIB_EXPORT void on_btnLightColorTexClear_clicked();
-
- CORELIB_EXPORT void on_btnVisualizeShadowMap_stateChanged(int state);
-
- CORELIB_EXPORT void on_cbShadowMapResolution_currentIndexChanged(int index);
-
-private:
- Ui::DisplayLightPanel ui;
- bool _isUpdatingUI;
- void setButtonColor(QPushButton *button, float r, float g, float b);
-
- void updateUI();
-};
-
-#endif
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.cpp b/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.cpp
deleted file mode 100644
index 67ca141..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-#include "DisplayMeshesPanel.h"
-
-#include <QtWidgets/QGridLayout>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QPushButton>
-
-#include "AppMainWindow.h"
-
-#include "SimpleScene.h"
-
-#ifndef NV_ARTISTTOOLS
-#include "FurCharacter.h"
-#else
-#endif // NV_ARTISTTOOLS
-
-//////////////////////////////////////////////////////////////////////////
-// DisplayMeshItem
-
-StateViewItem::StateViewItem( QWidget* parent, unsigned int id, MeshViewState view /*= VS_VISIABLE*/ )
- : _id(id)
-{
- static QIcon iconVisible(":/AppMainWindow/images/visibilityToggle_visible.png");
- static QIcon iconNotVisible(":/AppMainWindow/images/visibilityToggle_notVisible.png");
-
- _parent = qobject_cast<DisplayMeshesPanel*>(parent);
-
- _layout = new QHBoxLayout(this);
- _layout->setObjectName(QString::fromUtf8("boxLayout"));
- _layout->setMargin(0);
-
- this->setLayout(_layout);
-
- _btn = new QPushButton(this);
-
- _btn->setObjectName(QString::fromUtf8("btnToggleView"));
- QSizePolicy sizePolicy1(QSizePolicy::Ignored, QSizePolicy::Fixed);
- sizePolicy1.setHorizontalStretch(0);
- sizePolicy1.setVerticalStretch(0);
- sizePolicy1.setHeightForWidth(_btn->sizePolicy().hasHeightForWidth());
- _btn->setSizePolicy(sizePolicy1);
- _btn->setMinimumSize(QSize(16, 16));
- _btn->setMaximumSize(QSize(16, 16));
- _btn->setAutoFillBackground(false);
- _btn->setCheckable(true);
- _btn->setChecked(view == VS_VISIABLE);
- _btn->setIcon( (view == VS_VISIABLE) ? iconVisible : iconNotVisible);
-
- _layout->addWidget(_btn);
-
- _spacer = new QSpacerItem(20, 40, QSizePolicy::Expanding, QSizePolicy::Ignored);
- _layout->addItem(_spacer);
-
- QMetaObject::connectSlotsByName(this);
-}
-
-void StateViewItem::on_btnToggleView_clicked()
-{
- static QIcon iconVisible(":/AppMainWindow/images/visibilityToggle_visible.png");
- static QIcon iconNotVisible(":/AppMainWindow/images/visibilityToggle_notVisible.png");
-
- bool bVis = _btn->isChecked();
- _btn->setIcon(bVis ? iconVisible : iconNotVisible);
-
- _parent->EmitToggleSignal(_id, bVis);
-
- qDebug("%s", __FUNCTION__);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-DisplayMeshesPanel::DisplayMeshesPanel( QWidget* parent )
- :QFrame(parent)
-{
- _layout = new QGridLayout(this);
- _layout->setObjectName(QString::fromUtf8("gridLayout"));
-
- this->setLayout(_layout);
-
- //QString styleSheet =
- // "QPushButton#btnToggleView:checked {border:2px solid gray; background:rgb(118,180,0);} \n" \
- // "QPushButton#btnToggleView:pressed {border:2px solid gray; background:rgb(118,180,0);}";
- //setStyleSheet(styleSheet);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void DisplayMeshesPanel::updateValues()
-{
- ClearItems();
-
-#ifndef NV_ARTISTTOOLS
- FurCharacter& character = SimpleScene::Inst()->GetFurCharacter();
- int nMesh = character.GetMeshCount();
- for (int i = 0; i < nMesh; ++i)
- {
- bool used = character.GetMeshUsed(i);
- if (!used)
- continue;
-
- const char* name = character.GetMeshName(i);
- bool visible = character.GetMeshVisible(i);
-
- StateViewItem::MeshViewState visState = visible ? StateViewItem::VS_VISIABLE : StateViewItem::VS_INVISIBLE;
-
- AddMeshItem(QString(name), i, visState);
- }
-#else
- CoreLib::Inst()->DisplayMeshesPanel_updateValues();
-#endif // NV_ARTISTTOOLS
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void DisplayMeshesPanel::AddMeshItem( QString name, unsigned int id, StateViewItem::MeshViewState view )
-{
- StateViewItem* item;
- item = new StateViewItem(this, id, view);
-
- QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Fixed);
- sizePolicy1.setHorizontalStretch(0);
- sizePolicy1.setVerticalStretch(0);
-
- QLabel* label = new QLabel(name, this);
- label->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
- label->setSizePolicy(sizePolicy1);
-
- int row = _items.size();
- _layout->addWidget(label, row, 0, 1, 1);
-
- _layout->addWidget(item, row, 1, 1, 1);
-
- Q_ASSERT(_items.find(id) == _items.end());
-
- ItemUI ui;
- ui.label = label;
- ui.viewItem = item;
- _items[id] = ui;
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void DisplayMeshesPanel::EmitToggleSignal( unsigned int id, bool visible )
-{
- emit MeshViewSignal(id, visible);
-
-#ifndef NV_ARTISTTOOLS
- FurCharacter& character = SimpleScene::Inst()->GetFurCharacter();
- character.SetMeshVisible(id, visible);
-#else
- CoreLib::Inst()->DisplayMeshesPanel_EmitToggleSignal(id, visible);
-#endif // NV_ARTISTTOOLS
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void DisplayMeshesPanel::RemoveMeshItem( unsigned int id )
-{
- if(_items.find(id) != _items.end())
- {
- ItemUI ui = _items[id];
- delete ui.label;
- delete ui.viewItem;
- _items.remove(id);
- }
- else
- {
- Q_ASSERT("Mesh item doesn't exist!!");
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////
-void DisplayMeshesPanel::ClearItems()
-{
- Q_FOREACH(ItemUI ui, _items)
- {
- delete ui.label;
- delete ui.viewItem;
- }
-
- _items.clear();
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.h b/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.h
deleted file mode 100644
index ecc5b49..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayMeshesPanel.h
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef DisplayMeshesPanel_h__
-#define DisplayMeshesPanel_h__
-
-#include <QtWidgets/QFrame>
-#include <QtCore/QMap>
-#ifndef NV_ARTISTTOOLS
-#include "ui_LodPanel.h"
-#else
-#include <QtWidgets/QLabel>
-#endif // NV_ARTISTTOOLS
-
-#include "corelib_global.h"
-
-class QPushButton;
-class QGridLayout;
-class QHBoxLayout;
-class QSpacerItem;
-
-class DisplayMeshesPanel;
-class StateViewItem : public QWidget
-{
- Q_OBJECT
-
-public:
- enum MeshViewState
- {
- VS_INVISIBLE = 0,
- VS_VISIABLE = 1,
- };
-
- StateViewItem(QWidget* parent, unsigned int id, MeshViewState view = VS_VISIABLE);
-
- public slots:
- CORELIB_EXPORT void on_btnToggleView_clicked();
-
-private:
- unsigned int _id;
-
- QHBoxLayout* _layout;
- QPushButton* _btn;
- QSpacerItem* _spacer;
-
- DisplayMeshesPanel* _parent;
-};
-
-class DisplayMeshesPanel : public QFrame
-{
- Q_OBJECT
-
-public:
- DisplayMeshesPanel(QWidget* parent);
-
- void updateValues();
-
- // client code should make sure the 'id' is unique!
- CORELIB_EXPORT void AddMeshItem(QString name, unsigned int id, StateViewItem::MeshViewState view = StateViewItem::VS_VISIABLE);
- CORELIB_EXPORT void RemoveMeshItem(unsigned int id);
- CORELIB_EXPORT void ClearItems();
-
-signals:
- void MeshViewSignal(unsigned int id, bool visible);
-
-protected:
- virtual void EmitToggleSignal(unsigned int id, bool visible);
-
-private:
- QGridLayout* _layout;
-
- struct ItemUI
- {
- StateViewItem* viewItem;
- QLabel* label;
- };
-
- QMap<unsigned int, ItemUI> _items;
-
- friend class StateViewItem;
-};
-
-#endif // GraphicalMaterialPanel_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.cpp b/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.cpp
deleted file mode 100644
index 3f010fb..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.cpp
+++ /dev/null
@@ -1,915 +0,0 @@
-#include "DisplayPreferencesPanel.h"
-
-#include "AppMainWindow.h"
-
-#include "SimpleScene.h"
-#include "GlobalSettings.h"
-#include <QtWidgets/QInputDialog>
-#include <QtWidgets/QMessageBox>
-#include <QtWidgets/QFileDialog>
-
-#include "PlaylistParams.h"
-//#include <Nv/Blast/NvHairCommon.h>
-#include "NvParameterized.h"
-#include "XmlSerializer.h"
-#include "NsFileBuffer.h"
-#include "NvTraits.h"
-#include "NsMemoryBuffer.h"
-#include "ViewerOutput.h"
-#include "Settings.h"
-
-#include "Gamepad.h"
-
-const QString sPlaylistExt = "plist";
-bool bRefreshingComboBox = false;
-
-DisplayPreferencesPanel::DisplayPreferencesPanel(QWidget* parent)
- :
- QWidget(parent)
- , idxCurrentPlaylist(-1)
- , idxCurrentProj(-1)
- , playlistProjectsDirty(false)
-{
- ui.setupUi(this);
-
- ui.btnBackgroundTex->setIcon(QIcon(":/AppMainWindow/images/TextureEnabled_icon.png"));
- ui.btnBackgroundTex->setIconSize(QSize(12,12));
- ui.btnBackgroundTexClear->setIcon(QIcon(":/AppMainWindow/images/Remove_icon.png"));
-
- ui.btnPlaylistsRename->setIcon(QIcon(":/AppMainWindow/images/EditWrench.png"));
- ui.btnPlaylistsAdd->setIcon(QIcon(":/AppMainWindow/images/Add.png"));
- ui.btnPlaylistsReload->setIcon(QIcon(":/AppMainWindow/images/refreshReload.png"));
- ui.btnPlaylistsRemove->setIcon(QIcon(":/AppMainWindow/images/Remove_icon.png"));
-
- ui.btnPlaylistAddProj->setIcon(QIcon(":/AppMainWindow/images/Add.png"));
- ui.btnPlaylistRemoveProj->setIcon(QIcon(":/AppMainWindow/images/Remove_icon.png"));
- ui.btnPlaylistProjGoUp->setIcon(QIcon(":/AppMainWindow/images/Up.png"));
- ui.btnPlaylistProjGoDown->setIcon(QIcon(":/AppMainWindow/images/Down.png"));
-
- ui.btnPlaylistsPlay->setIcon(QIcon(":/AppMainWindow/images/playlist.png"));
-
- //QObject::connect(ui.listWidgetPlaylist, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(playlistDoubleClicked(QListWidgetItem*)));
-
- ConfigSpinBox<SlideSpinBoxF>(ui.spinCameraFOV, 5.0, 180.0, 1.0);
-}
-
-DisplayPreferencesPanel::~DisplayPreferencesPanel()
-{
-}
-
-void DisplayPreferencesPanel::on_spinRenderPlayRateFPS_valueChanged(double v)
-{
- GlobalSettings::Inst().setRenderFps((float)v);
-}
-
-void DisplayPreferencesPanel::on_spinSimulationRateFPS_valueChanged(double v)
-{
- GlobalSettings::Inst().setSimulationFps((float)v);
-}
-
-void DisplayPreferencesPanel::on_spinCameraFOV_valueChanged(double v)
-{
- GlobalSettings::Inst().m_fovAngle = v;
-}
-
-void DisplayPreferencesPanel::on_cbAntialiasing_currentIndexChanged( int index )
-{
- GlobalSettings::Inst().m_msaaOption = index;
-}
-
-void DisplayPreferencesPanel::on_cbUpAxis_currentIndexChanged( int index )
-{
- switch (index)
- {
- case 0: // y up
- SimpleScene::Inst()->ResetUpDir(false);
- break;
- case 1: // z up
- SimpleScene::Inst()->ResetUpDir(true);
- break;
- }
- SimpleScene::Inst()->SetProjectModified(true);
-}
-
-void DisplayPreferencesPanel::on_cbHandedness_currentIndexChanged( int index )
-{
- switch (index)
- {
- case 0: // rhs
- SimpleScene::Inst()->ResetLhs(false);
- break;
- case 1: // lhs
- SimpleScene::Inst()->ResetLhs(true);
- break;
- }
- SimpleScene::Inst()->SetProjectModified(true);
-}
-
-void DisplayPreferencesPanel::on_cbSceneUnit_currentIndexChanged( int index )
-{
- GlobalSettings::Inst().m_sceneUnitIndex = index;
-}
-
-void DisplayPreferencesPanel::on_cbNavigationStyle_currentIndexChanged( int index )
-{
- AppMainWindow::Inst().setNavigationStyle(index);
-}
-
-void DisplayPreferencesPanel::on_btnBackgroundTex_clicked()
-{
- if (SimpleScene::Inst()->LoadBackgroundTextureFile())
- ui.btnBackgroundTex->setIcon(QIcon(":/AppMainWindow/images/TextureIsUsed_icon.png"));
- else
- ui.btnBackgroundTex->setIcon(QIcon(":/AppMainWindow/images/TextureEnabled_icon.png"));
-
- updateValues();
- SimpleScene::Inst()->SetProjectModified(true);
-}
-
-void DisplayPreferencesPanel::on_btnBackgroundTexClear_clicked()
-{
- SimpleScene::Inst()->ClearBackgroundTexture();
- ui.btnBackgroundTex->setIcon(QIcon(":/AppMainWindow/images/TextureEnabled_icon.png"));
- updateValues();
-}
-
-void DisplayPreferencesPanel::updateValues()
-{
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- ui.spinRenderPlayRateFPS->setValue(globalSettings.m_renderFps);
- ui.spinSimulationRateFPS->setValue(globalSettings.m_simulationFps);
- ui.cbUpAxis->setCurrentIndex(globalSettings.m_zup);
- ui.cbHandedness->setCurrentIndex(globalSettings.m_lhs);
- ui.spinCameraFOV->setValue(globalSettings.m_fovAngle);
- ui.cbSceneUnit->setCurrentIndex(globalSettings.m_sceneUnitIndex);
- ui.cbNavigationStyle->setCurrentIndex(AppMainWindow::Inst().getNavigationStyle());
- ui.cbAntialiasing->setCurrentIndex(globalSettings.m_msaaOption);
-
- savePlaylistProjects();
- reloadComboxBoxPlaylists();
-
- //// sync playlist to gamepad
- //static bool bOnce = true;
- //if (bOnce)
- //{
- // bOnce = false;
- // assignPlayPlaylistToGamepad(0);
- //}
-}
-
-void DisplayPreferencesPanel::reloadComboxBoxPlaylists()
-{
- playlistsLoader.loadPlaylistsFromMediaPath();
- // set playlist combo box
- //idxCurrentPlaylist = ui.cbPlaylists->currentIndex();
- bRefreshingComboBox = true;
- ui.cbPlaylists->clear();
- int count = playlistsLoader.playlists.size();
- for (int i = 0; i < count; ++i)
- {
- QFileInfo& fi = playlistsLoader.playlists[i];
- std::string fn = fi.fileName().toUtf8().data();
- ui.cbPlaylists->addItem(fi.fileName());
- }
- bRefreshingComboBox = false;
- if (idxCurrentPlaylist > count || idxCurrentPlaylist < 0)
- idxCurrentPlaylist = 0;
-
- ui.cbPlaylists->setCurrentIndex(idxCurrentPlaylist);
-
- // refresh project list
- reloadListboxPorjectsFromPlayist();
-}
-
-void DisplayPreferencesPanel::runDemoCommandline()
-{
- // run demos if command line asks
- static bool once = true;
- if (once)
- {
- once = false;
- std::string demoPlaylist = AppSettings::Inst().GetOptionValue("User/FurDemoPlaylist")->Value.String;
- if (demoPlaylist.size() > 1)
- {
- QString demoList = QString(demoPlaylist.c_str()).toUpper();
- int count = playlistsLoader.playlists.size();
- for (int i = 0; i < count; ++i)
- {
- QFileInfo& fi = playlistsLoader.playlists[i];
- QString fname = fi.fileName().toUpper();
- if (fname == demoList)
- {
- idxCurrentPlaylist = i;
- ui.cbPlaylists->setCurrentIndex(idxCurrentPlaylist);
- playPlaylist(idxCurrentPlaylist);
- return;
- }
- }
- viewer_msg(QString("Cannot find playlist, " + demoList).toUtf8().data());
- }
- }
-}
-
-void DisplayPreferencesPanel::reloadListboxPorjectsFromPlayist()
-{
- int count = playlistsLoader.getProjectsInPlaylist(idxCurrentPlaylist, playlistProjects);
- refreshListboxPorjects();
-}
-
-void DisplayPreferencesPanel::savePlaylistProjects()
-{
- if (playlistProjectsDirty)
- {
- playlistsLoader.saveProjectsInPlaylist(idxCurrentPlaylist, playlistProjects);
- playlistProjectsDirty = false;
- }
-}
-
-void DisplayPreferencesPanel::refreshListboxPorjects()
-{
- int count = playlistProjects.size();
- ui.listWidgetPlaylist->clear();
- ui.listWidgetPlaylist->setSortingEnabled(false);
- ui.listWidgetPlaylist->setSelectionMode(QAbstractItemView::SingleSelection);
- QStringList tips;
- for (int i = 0; i < count; ++i)
- {
- QString fullName = playlistsLoader.convertToAbsoluteFilePath(playlistProjects[i]);
- QFileInfo fi(fullName);
- tips.append(fi.absoluteFilePath());
- std::string tmp = fi.absoluteFilePath().toUtf8().data();
- ui.listWidgetPlaylist->addItem(fi.fileName());
- }
- ui.listWidgetPlaylist->setTips(tips);
- if (idxCurrentProj > count || idxCurrentProj < 0)
- {
- idxCurrentProj = 0;
- }
- ui.listWidgetPlaylist->setCurrentRow(idxCurrentProj);
-}
-
-void DisplayPreferencesPanel::SelectPlayList(QString& name)
-{
- QString newName = name.toUpper();
- int count = playlistsLoader.playlists.size();
- for (int i = 0; i < count; ++i)
- {
- QFileInfo& fi = playlistsLoader.playlists[i];
- if (fi.baseName().toUpper() == newName)
- {
- ui.cbPlaylists->setCurrentIndex(i);
- break;
- }
- }
-}
-
-void DisplayPreferencesPanel::on_cbPlaylists_currentIndexChanged(int index)
-{
- savePlaylistProjects();
- if (!bRefreshingComboBox)
- {
- idxCurrentPlaylist = ui.cbPlaylists->currentIndex();
- reloadListboxPorjectsFromPlayist();
- }
-}
-
-void DisplayPreferencesPanel::SelectProject(QString& name)
-{
- QString newName = name.toUpper();
- std::string strNew = newName.toUtf8().data();
- int count = playlistProjects.size();
- for (int i = 0; i < count; ++i)
- {
- QString& str = playlistProjects[i];
- //QFileInfo fi(str);
- //std::string stmp = fi.absoluteFilePath().toUtf8().data();
- //if (fi.absoluteFilePath().toUpper() == newName)
- if (str.toUpper() == newName)
- {
- ui.listWidgetPlaylist->setCurrentRow(i);
- break;
- }
- }
-}
-
-void DisplayPreferencesPanel::on_listWidgetPlaylist_itemSelectionChanged()
-{
- idxCurrentProj = ui.listWidgetPlaylist->currentRow();
-}
-
-void DisplayPreferencesPanel::on_listWidgetPlaylist_itemDoubleClicked(QListWidgetItem* pItem)
-{
- idxCurrentProj = ui.listWidgetPlaylist->currentRow();
- if (idxCurrentProj < 0)
- return;
- QString fn = playlistProjects[idxCurrentProj];
- QString fullname = PlaylistsLoader::convertToAbsoluteFilePath(fn);
- AppMainWindow::Inst().openProject(fullname);
- char msg[1024];
- sprintf(msg, "Blast Viewer - %s", fullname.toUtf8().data());
- AppMainWindow::Inst().setWindowTitle(msg);
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistsRename_clicked()
-{
- idxCurrentPlaylist = ui.cbPlaylists->currentIndex();
- if (idxCurrentPlaylist < 0)
- return;
-
- QFileInfo& fi = playlistsLoader.playlists[idxCurrentPlaylist];
- bool isOK = false;
- QString newBaseName = QInputDialog::getText(NULL, "Rename Playlist - " + fi.fileName(),
- "Input a new name for the playlist, " + fi.fileName(), QLineEdit::Normal,
- fi.baseName(), &isOK);
- if (isOK)
- {
- bool ok = playlistsLoader.rename(idxCurrentPlaylist, newBaseName);
- if (ok)
- {
- reloadComboxBoxPlaylists();
- SelectPlayList(newBaseName);
- }
- else
- {
- QMessageBox::warning(this, "Fail to rename a playlist",
- "Fail to rename a playlist. The failure could relate to name duplication or hardware failure.",
- QMessageBox::Close);
- }
- }
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistsAdd_clicked()
-{
- savePlaylistProjects();
-
- bool isOK = false;
- QString sInput = QInputDialog::getText(NULL, "Create New Playlist", "Input a name for the new playlist.", QLineEdit::Normal, "", &isOK);
- if (isOK)
- {
- QString newName = sInput.trimmed();
- bool ok = playlistsLoader.add(newName);
- if (ok)
- {
- reloadComboxBoxPlaylists();
- // select the new one
- SelectPlayList(newName);
- }
- else
- {
- QMessageBox::warning(this, "Fail to add new playlist",
- "Fail to add new playlist. The failure could relate to name duplication or hardware failure.",
- QMessageBox::Close);
- }
- }
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistsReload_clicked()
-{
- savePlaylistProjects();
- reloadComboxBoxPlaylists();
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistsRemove_clicked()
-{
- savePlaylistProjects();
- idxCurrentPlaylist = ui.cbPlaylists->currentIndex();
- if (idxCurrentPlaylist < 0)
- return;
-
- bool ok = playlistsLoader.remove(idxCurrentPlaylist);
- if (ok)
- {
- reloadComboxBoxPlaylists();
- }
- else
- {
- QMessageBox::warning(this, "Fail to remove a playlist",
- "Fail to remove a playlist. The failure could relate to hardware.",
- QMessageBox::Close);
- }
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistAddProj_clicked()
-{
- static QString lastPath;
- if (lastPath.size() < 1)
- {
- lastPath = PlaylistsLoader::mediaPath;
- }
- QString fileNameInput = QFileDialog::getOpenFileName(this, "Open Project File", lastPath, "Project File (*.blastProj)");
- if (!QFile::exists(fileNameInput))
- return;
- std::string tmp = fileNameInput.toUtf8().data();
- QString fileName = PlaylistsLoader::convertToSaveingFilePath(fileNameInput);
- if (fileName.size() < 1)
- {
- return;
- }
- lastPath = QFileInfo(fileNameInput).absolutePath();
- std::string tmp2 = fileName.toUtf8().data();
- playlistProjects.append(fileName);
- refreshListboxPorjects();
- //QFileInfo fi(fileName);
- SelectProject(fileName);// fi.absoluteFilePath());
- playlistProjectsDirty = true;
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistProjGoUp_clicked()
-{
- idxCurrentProj = ui.listWidgetPlaylist->currentRow();
- if (idxCurrentProj <= 0)
- return;
-
- QString tmp = playlistProjects[idxCurrentProj];
- playlistProjects[idxCurrentProj] = playlistProjects[idxCurrentProj - 1];
- playlistProjects[idxCurrentProj - 1] = tmp;
-
- refreshListboxPorjects();
- SelectProject(tmp);
-
- playlistProjectsDirty = true;
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistProjGoDown_clicked()
-{
- int count = playlistProjects.size();
- idxCurrentProj = ui.listWidgetPlaylist->currentRow();
- if (idxCurrentProj < 0 || idxCurrentProj>= count -1)
- return;
-
- QString tmp = playlistProjects[idxCurrentProj];
- playlistProjects[idxCurrentProj] = playlistProjects[idxCurrentProj + 1];
- playlistProjects[idxCurrentProj + 1] = tmp;
-
- refreshListboxPorjects();
- SelectProject(tmp);
-
- playlistProjectsDirty = true;
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistRemoveProj_clicked()
-{
- int count = playlistProjects.size();
- idxCurrentProj = ui.listWidgetPlaylist->currentRow();
- if (idxCurrentProj < 0 || idxCurrentProj >= count)
- {
- return;
- }
-
- playlistProjects.removeAt(idxCurrentProj);
-
- refreshListboxPorjects();
- playlistProjectsDirty = true;
-}
-
-void DisplayPreferencesPanel::assignPlayPlaylistToGamepad(int idx)
-{
- if (idx == -1)
- idx = idxCurrentPlaylist;
- int count = playlistsLoader.getProjectsInPlaylist(idx, playlistProjects);
- if (count < 1)
- {
- viewer_msg("Playlist is empty.");
- return;
- }
- QList<QString> files;
- for (int i = 0; i < count; ++i)
- {
- QString fname = PlaylistsLoader::convertToAbsoluteFilePath(playlistProjects[i]);
- if (fname.size() > 0)
- {
- files.append(fname);
- }
- }
-
- Gamepad& theGamepad = Gamepad::Instance();
- theGamepad.SetDemoProjects(files);
-}
-
-void DisplayPreferencesPanel::playPlaylist(int idx)
-{
- assignPlayPlaylistToGamepad(idx);
- Gamepad& theGamepad = Gamepad::Instance();
- theGamepad.SetDemoMode(true);
-}
-
-void DisplayPreferencesPanel::on_btnPlaylistsPlay_clicked()
-{
- savePlaylistProjects();
-
- idxCurrentPlaylist = ui.cbPlaylists->currentIndex();
- if (idxCurrentPlaylist < 0)
- {
- viewer_msg("No available playlists.");
- return;
- }
- playPlaylist(idxCurrentPlaylist);
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////
-using namespace nvidia;
-using namespace nvidia::parameterized;
-
-QString PlaylistsLoader::projectPath;
-QString PlaylistsLoader::mediaPath;
-
-#include "FoundationHolder.h"
-
-struct PlaylistParamsContext
-{
- //nvidia::NvFoundation* mFoundation;
- NvParameterized::Traits* mTraits;
- PlaylistParamsFactory* mPlaylistParamsFactory;
-};
-
-PlaylistsLoader::PlaylistsLoader()
- :pContext(nullptr)
-{
-}
-
-PlaylistsLoader::~PlaylistsLoader()
-{
-}
-
-void PlaylistsLoader::CreatePlaylistParamsContext()
-{
- if (pContext)
- return;
-
- PlaylistParamsContext* context = new PlaylistParamsContext;
- //context->mFoundation = FoundationHolder::GetFoundation();
- FoundationHolder::GetFoundation();
- //assert(context->mFoundation != NV_NULL);
-
- context->mTraits = NvParameterized::createTraits();
- context->mPlaylistParamsFactory = new PlaylistParamsFactory;
- context->mTraits->registerFactory(*context->mPlaylistParamsFactory);
- pContext = context;
-}
-
-void PlaylistsLoader::ReleasePlaylistParamsContext()
-{
- if (pContext)
- {
- pContext->mTraits->release();
- delete pContext->mPlaylistParamsFactory;
- delete pContext;
- pContext = nullptr;
- }
-}
-
-void PlaylistsLoader::loadPlaylistsFromMediaPath()
-{
- std::string t1 = projectPath.toUtf8().data();
- if (projectPath.isEmpty())
- {
- QString appDir = qApp->applicationDirPath();
- QDir dirTmp(appDir);
- if (dirTmp.cd("./media/playlists"))
- projectPath = dirTmp.absolutePath();
- else if (dirTmp.cd("../media/playlists"))
- projectPath = dirTmp.absolutePath();
- else if (dirTmp.cd("../../media/playlists"))
- projectPath = dirTmp.absolutePath();
- else if (dirTmp.cd("../../media"))
- {
- bool ok = dirTmp.mkdir("playlists");
- if (dirTmp.cd("playlists"))
- {
- projectPath = dirTmp.absolutePath();
- }
- }
- if (projectPath.isEmpty())
- {
- projectPath = qApp->applicationDirPath();
- mediaPath = projectPath;
- }
- else
- {
- if (dirTmp.cd(".."))
- {
- mediaPath = dirTmp.absolutePath();
- }
- else
- {
- mediaPath = projectPath + "/..";
- }
- }
- }
- if (!projectPath.isEmpty())
- {
- playlists.clear();
-
- QStringList filters;
- filters << (QString("*.") + sPlaylistExt);
- QDirIterator dir_iterator(projectPath, filters, QDir::Files | QDir::NoSymLinks, QDirIterator::NoIteratorFlags); //QDirIterator::Subdirectories
- while (dir_iterator.hasNext())
- {
- dir_iterator.next();
- QFileInfo file_info = dir_iterator.fileInfo();
- std::string absolute_file_path = file_info.absoluteFilePath().toUtf8().data();
- playlists.append(file_info);
- }
- }
-}
-
-bool PlaylistsLoader::rename(int idx, QString& newBaseName)
-{
- int count = playlists.size();
- if (idx >= 0 && idx < count)
- {
- QFileInfo& finfo = playlists[idx];
- QString fn = finfo.baseName().toUpper();
- QString fnNew = newBaseName.toUpper();
- if (fn != fnNew)
- {
- QFileInfo nfi(projectPath, newBaseName + "." + sPlaylistExt);
- QString fullNewName = nfi.absoluteFilePath();
- std::string fntmp = fullNewName.toUtf8().data();
- bool exist = QFile::exists(fullNewName);
- if (exist)
- {
- return false;
- }
- bool ok = QFile::rename(finfo.absoluteFilePath(), fullNewName);
- if (ok)
- {
- finfo.setFile(fullNewName);
- exist = QFile::exists(fullNewName);
- if (!exist)
- {
- return false;
- }
- }
- return ok;
- }
- return true;
- }
- return false;
-}
-
-bool PlaylistsLoader::remove(int idx)
-{
- int count = playlists.size();
- if (idx >= 0 && idx < count)
- {
- QFileInfo& finfo = playlists[idx];
- std::string fn = finfo.fileName().toUtf8().data();
- bool ok = QFile::remove(finfo.absoluteFilePath());
- if (ok)
- {
- playlists.removeAt(idx);
- }
- return ok;
- }
- return false;
-}
-
-bool PlaylistsLoader::saveProjectsInPlaylist(int idx, QList<QString>& projects)
-{
- int count = playlists.size();
- if (idx < 0 || idx >= count)
- return false;
-
- CreatePlaylistParamsContext();
- if (!pContext)
- return false;
-
- std::string tempFilePath = playlists[idx].absoluteFilePath().toUtf8().data();
- NvParameterized::XmlSerializer serializer(pContext->mTraits);
- NvFileBuf* stream = new NvFileBufferBase(tempFilePath.c_str(), NvFileBuf::OPEN_WRITE_ONLY);
- if (!stream || !stream->isOpen())
- {
- // file open error
- if (stream) stream->release();
- return false;
- }
- NvParameterized::Traits* traits = pContext->mTraits;
- int numObjects = 0;
- const int kMaxObjects = 1;
- NvParameterized::Interface* objects[kMaxObjects];
-
- PlaylistParams* params = new PlaylistParams(traits);
- objects[numObjects++] = params;
- NvParameterized::Interface* iface = static_cast<NvParameterized::Interface*>(params);
-
- std::vector<std::string> strArray;
- std::vector<const char*> strOutput;
-
- if (1)
- {
- nvidia::parameterized::PlaylistParams* params = static_cast<nvidia::parameterized::PlaylistParams*>(iface);
- nvidia::parameterized::PlaylistParamsNS::ParametersStruct& targetDesc = params->parameters();
-
- NvParameterized::Handle handle(iface);
- if (iface->getParameterHandle("blastProjFilePaths", handle) == NvParameterized::ERROR_NONE)
- {
- int num = projects.size();
- strArray.resize(num);
- strOutput.resize(num);
-
- for (int i = 0; i < num; i++)
- {
- std::string proj = projects[i].toUtf8().data();
- strArray[i] = proj;
- strOutput[i] = strArray[i].c_str();
- }
-
- handle.resizeArray(num);
- handle.setParamStringArray(&strOutput[0], num);
- }
- }
-
- NV_ASSERT(numObjects <= kMaxObjects);
- NvParameterized::Serializer::ErrorType serError = NvParameterized::Serializer::ERROR_NONE;
- bool isUpdate = false;
- serError = serializer.serialize(*stream, (const NvParameterized::Interface**)&objects[0], numObjects, isUpdate);
- for (int idx = 0; idx < numObjects; ++idx)
- {
- delete objects[idx];
- }
- stream->release();
- ReleasePlaylistParamsContext();
- return true;
-}
-
-QString PlaylistsLoader::convertToAbsoluteFilePath(QString& filePath)
-{
- QString fname;
- bool bCanBeRelativePath = false;
- bool bAbsPath = (filePath.indexOf(':') >= 0);
- if (bAbsPath)
- {
- if (QFile::exists(filePath))
- {
- fname = filePath;
- }
- else
- {
- viewer_msg(QString(filePath + " does not exist.").toUtf8().data());
- }
- std::string tmp2 = fname.toUtf8().data();
- return fname;
- }
- else
- {
- QFileInfo fi(mediaPath + "/" + filePath);
- fname = fi.absoluteFilePath();
- if (!QFile::exists(fname))
- {
- viewer_msg(QString(filePath + " does not exist.").toUtf8().data());
- fname = "";
- }
- std::string tmp2 = fname.toUtf8().data();
- return fname;
- }
-}
-
-QString PlaylistsLoader::convertToSaveingFilePath(QString& filePath)
-{
- std::string t1 = mediaPath.toUtf8().data();
- std::string t2 = projectPath.toUtf8().data();
- QString fname;
- bool bCanBeRelativePath = false;
- bool bAbsPath = (filePath.indexOf(':') >= 0);
- if (bAbsPath)
- {
- if (QFile::exists(filePath))
- {
- QFileInfo fi(filePath);
- int pos = fi.absoluteFilePath().indexOf(mediaPath, Qt::CaseInsensitive);
- if (pos >= 0 && mediaPath.length())
- {
- // convert to relative path
- fname = filePath.right(filePath.size() - (pos + mediaPath.size() + 1));
- }
- else
- {
- fname = fi.absoluteFilePath();
- }
- }
- else
- {
- fname = "";
- viewer_msg(QString(filePath + " does not exist.").toUtf8().data());
- }
- std::string tmp = fname.toUtf8().data();
- return fname;
- }
- // do more try
- QString tag = "media";
- int pos = filePath.indexOf(tag, Qt::CaseInsensitive);
- if (pos >= 0)
- {
- fname = filePath.right(filePath.size() - (pos + tag.size() + 1));
- }
- else
- {
- fname = filePath;
- }
- std::string tmp3 = fname.toUtf8().data();
- QFileInfo fi(mediaPath + "/" + fname);
- std::string tmp = fi.absoluteFilePath().toUtf8().data();
- if (!QFile::exists(fi.absoluteFilePath()))
- {
- viewer_msg(QString(filePath + " does not exist.").toUtf8().data());
- fname = "";
- }
- std::string tmp2 = fname.toUtf8().data();
- return fname;
-}
-
-int PlaylistsLoader::getProjectsInPlaylist(int idx, QList<QString>& projects)
-{
- projects.clear();
-
- int count = playlists.size();
- if (idx < 0 || idx >= count)
- return 0;
-
- CreatePlaylistParamsContext();
- if (!pContext)
- return 0;
-
- std::string tempFilePath = playlists[idx].absoluteFilePath().toUtf8().data();
- NvFileBuf* stream = new NvFileBufferBase(tempFilePath.c_str(), NvFileBuf::OPEN_READ_ONLY);
- if (!stream || !stream->isOpen())
- {
- // file open error
- if (stream)
- stream->release();
- return 0;
- }
-
- NvParameterized::Serializer::DeserializedData data;
- NvParameterized::Serializer::ErrorType serError = NvParameterized::Serializer::ERROR_NONE;
- NvParameterized::XmlSerializer serializer(pContext->mTraits);
- bool isUpdated = false;
- serError = serializer.deserialize(*stream, data, isUpdated);
- if (data.size() < 1)
- {
- if (stream)
- stream->release();
- return 0;
- }
-
- for (int idx = 0; idx < (int)data.size(); ++idx)
- {
- NvParameterized::Interface* iface = data[idx];
- if (::strcmp(iface->className(), PlaylistParams::staticClassName()) == 0)
- {
- nvidia::parameterized::PlaylistParams* params = static_cast<nvidia::parameterized::PlaylistParams*>(iface);
- nvidia::parameterized::PlaylistParamsNS::ParametersStruct& srcDesc = params->parameters();
- NvParameterized::Handle handle(iface);
- if (iface->getParameterHandle("blastProjFilePaths", handle) == NvParameterized::ERROR_NONE)
- {
- int arraySize;
- handle.getArraySize(arraySize);
- char** strArray = new char*[arraySize];
- handle.getParamStringArray(strArray, arraySize);
- for (int idx = 0; idx < arraySize; ++idx)
- {
- QString fileName = PlaylistsLoader::convertToSaveingFilePath(QString(strArray[idx]));
- if (fileName.size() > 0)
- {
- std::string tmp = fileName.toUtf8().data();
- projects.append(fileName);
- }
- }
- delete[] strArray;
- }
- }
- }
- stream->release();
- ReleasePlaylistParamsContext();
- return projects.size();
-}
-
-bool PlaylistsLoader::add(QString& name)
-{
- int count = playlists.size();
- for (int i = 0; i < count; ++i)
- {
- QFileInfo& fi = playlists[i];
- if (fi.baseName().toUpper() == name.toUpper())
- {
- return false;
- }
- }
- QFileInfo nfi(projectPath, name + "." + sPlaylistExt);
- QFile newFile(nfi.absoluteFilePath());
- if (newFile.exists())
- {
- return false;
- }
- newFile.open(QIODevice::WriteOnly);
- newFile.close();
- bool exist = QFile::exists(nfi.absoluteFilePath());
- if (!exist)
- {
- return false;
- }
- playlists.append(nfi);
- return true;
-} \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.h b/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.h
deleted file mode 100644
index eb57b12..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayPreferencesPanel.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef DisplayPreferencesPanel_h__
-#define DisplayPreferencesPanel_h__
-
-#include <QtWidgets/QWidget>
-#include <QtCore/QDir>
-#include <QtCore/QDirIterator>
-#include "TipListView.h"
-#include "ui_DisplayPreferencesPanel.h"
-
-#include "corelib_global.h"
-
-struct PlaylistParamsContext;
-
-class PlaylistsLoader
-{
-public:
- PlaylistsLoader();
- ~PlaylistsLoader();
-
- void loadPlaylistsFromMediaPath();
- bool rename(int idx, QString& newName);
- bool remove(int idx);
- bool add(QString& name);
- bool saveProjectsInPlaylist(int idx, QList<QString>& projects);
- int getProjectsInPlaylist(int idx, QList<QString>& projects);
-
- static QString convertToSaveingFilePath(QString& filePath);
- static QString convertToAbsoluteFilePath(QString& filePath);
-
- QList<QFileInfo> playlists;
- static QString projectPath;
- static QString mediaPath;
-
-private:
- void CreatePlaylistParamsContext();
- void ReleasePlaylistParamsContext();
- PlaylistParamsContext* pContext;
-};
-
-class DisplayPreferencesPanel : public QWidget
-{
- Q_OBJECT
-
-public:
- DisplayPreferencesPanel(QWidget* parent);
- ~DisplayPreferencesPanel();
-
- public:
- void updateValues();
-
- public slots:
- CORELIB_EXPORT void on_spinRenderPlayRateFPS_valueChanged(double v);
- CORELIB_EXPORT void on_spinSimulationRateFPS_valueChanged(double v);
- CORELIB_EXPORT void on_spinCameraFOV_valueChanged(double v);
-
- CORELIB_EXPORT void on_cbSceneUnit_currentIndexChanged(int index);
- CORELIB_EXPORT void on_cbAntialiasing_currentIndexChanged(int index);
- CORELIB_EXPORT void on_cbUpAxis_currentIndexChanged(int index);
- CORELIB_EXPORT void on_cbHandedness_currentIndexChanged(int index);
- CORELIB_EXPORT void on_cbNavigationStyle_currentIndexChanged(int index);
- CORELIB_EXPORT void on_btnBackgroundTex_clicked();
- CORELIB_EXPORT void on_btnBackgroundTexClear_clicked();
-
- CORELIB_EXPORT void on_cbPlaylists_currentIndexChanged(int index);
- CORELIB_EXPORT void SelectPlayList(QString& name);
- CORELIB_EXPORT void on_listWidgetPlaylist_itemSelectionChanged();
- CORELIB_EXPORT void on_listWidgetPlaylist_itemDoubleClicked(QListWidgetItem* pItem);
- CORELIB_EXPORT void SelectProject(QString& name);
-
- CORELIB_EXPORT void on_btnPlaylistsRename_clicked();
- CORELIB_EXPORT void on_btnPlaylistsAdd_clicked();
- CORELIB_EXPORT void on_btnPlaylistsReload_clicked();
- CORELIB_EXPORT void on_btnPlaylistsRemove_clicked();
-
- CORELIB_EXPORT void on_btnPlaylistAddProj_clicked();
- CORELIB_EXPORT void on_btnPlaylistProjGoUp_clicked();
- CORELIB_EXPORT void on_btnPlaylistProjGoDown_clicked();
- CORELIB_EXPORT void on_btnPlaylistRemoveProj_clicked();
-
- CORELIB_EXPORT void on_btnPlaylistsPlay_clicked();
- CORELIB_EXPORT void assignPlayPlaylistToGamepad(int idx = -1);
- CORELIB_EXPORT void playPlaylist(int idx);
-
- CORELIB_EXPORT void reloadComboxBoxPlaylists();
- CORELIB_EXPORT void refreshListboxPorjects();
- CORELIB_EXPORT void reloadListboxPorjectsFromPlayist();
- CORELIB_EXPORT void savePlaylistProjects();
-
- CORELIB_EXPORT void runDemoCommandline();
-
-private:
- Ui::DisplayPreferencesPanel ui;
- PlaylistsLoader playlistsLoader;
- QList<QString> playlistProjects;
- bool playlistProjectsDirty;
- int idxCurrentPlaylist;
- int idxCurrentProj;
-};
-
-#endif // DisplayScene_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.cpp b/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.cpp
deleted file mode 100644
index 7c0e382..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include "DisplayScenePanel.h"
-
-#include "AppMainWindow.h"
-
-#include "SimpleScene.h"
-#include "GlobalSettings.h"
-
-DisplayScenePanel::DisplayScenePanel(QWidget* parent)
- :
- QWidget(parent)
-{
- ui.setupUi(this);
-}
-
-void DisplayScenePanel::on_btnVisualizeWind_stateChanged(int state)
-{
- GlobalSettings::Inst().m_visualizeWind = state;
-}
-
-void DisplayScenePanel::on_btnShowGrid_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showGrid = state;
-}
-
-void DisplayScenePanel::on_btnShowAxis_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showAxis = state;
-}
-
-void DisplayScenePanel::on_btnShowWireframe_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showWireframe = state;
-}
-
-void DisplayScenePanel::on_btnUseLighting_stateChanged(int state)
-{
- GlobalSettings::Inst().m_useLighting = state;
-}
-
-void DisplayScenePanel::on_cbRenderType_currentIndexChanged(int index)
-{
- GlobalSettings::Inst().m_renderStyle = index;
-}
-
-void DisplayScenePanel::on_btnShowHUD_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showHUD = state;
-}
-
-void DisplayScenePanel::on_btnComputeStats_stateChanged(int state)
-{
- GlobalSettings::Inst().m_computeStatistics = state;
-}
-
-void DisplayScenePanel::on_btnComputeProfile_stateChanged(int state)
-{
- GlobalSettings::Inst().m_computeProfile = state;
-}
-
-void DisplayScenePanel::on_btnShowGraphicsMesh_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showGraphicsMesh = state;
-}
-
-void DisplayScenePanel::on_btnShowSkinnedOnly_stateChanged(int state)
-{
- GlobalSettings::Inst().m_showSkinnedMeshOnly = state;
- AppMainWindow::Inst().updateUI();
-}
-
-void DisplayScenePanel::on_btnSkinningDQ_stateChanged(int state)
-{
- GlobalSettings::Inst().m_useDQ = state;
-}
-
-void DisplayScenePanel::on_checkBoxGizmoWithLocal_stateChanged(int state)
-{
- AppMainWindow::Inst().m_bGizmoWithLocal = state;
- CoreLib::Inst()->AppMainWindow_updateMainToolbar();
-}
-
-void DisplayScenePanel::on_checkBoxGizmoWithDepthTest_stateChanged(int state)
-{
- AppMainWindow::Inst().m_bGizmoWithDepthTest = state;
-}
-
-void DisplayScenePanel::on_checkBoxShowPlane_stateChanged(int state)
-{
- AppMainWindow::Inst().m_bShowPlane = state;
-}
-
-void DisplayScenePanel::updateValues()
-{
- GlobalSettings& globalSettings = GlobalSettings::Inst();
-
- ui.btnShowGrid->setChecked(globalSettings.m_showGrid);
- ui.btnShowAxis->setChecked(globalSettings.m_showAxis);
- ui.cbRenderType->setCurrentIndex(globalSettings.m_renderStyle);
- ui.btnShowHUD->setChecked(globalSettings.m_showHUD);
- ui.btnComputeStats->setChecked(globalSettings.m_computeStatistics);
- ui.btnUseLighting->setChecked(globalSettings.m_useLighting);
- ui.btnShowGraphicsMesh->setChecked( globalSettings.m_showGraphicsMesh);
- ui.btnShowSkinnedOnly->setChecked( globalSettings.m_showSkinnedMeshOnly);
- ui.checkBoxGizmoWithLocal->setChecked(AppMainWindow::Inst().m_bGizmoWithLocal);
- ui.checkBoxGizmoWithDepthTest->setChecked(AppMainWindow::Inst().m_bGizmoWithDepthTest);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.h b/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.h
deleted file mode 100644
index cd277b6..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/DisplayScenePanel.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef DisplayScenePanel_h__
-#define DisplayScenePanel_h__
-
-#include <QtWidgets/QWidget>
-#include "ui_DisplayScenePanel.h"
-
-#include "corelib_global.h"
-
-class DisplayScenePanel : public QWidget
-{
- Q_OBJECT
-
-public:
- DisplayScenePanel(QWidget* parent);
-
- public:
- void updateValues();
-
- public slots:
- CORELIB_EXPORT void on_btnVisualizeWind_stateChanged(int state);
- CORELIB_EXPORT void on_btnShowGrid_stateChanged(int state);
- CORELIB_EXPORT void on_btnShowAxis_stateChanged(int state);
- CORELIB_EXPORT void on_cbRenderType_currentIndexChanged(int index);
- CORELIB_EXPORT void on_btnShowWireframe_stateChanged(int state);
- CORELIB_EXPORT void on_btnShowHUD_stateChanged(int state);
- CORELIB_EXPORT void on_btnComputeStats_stateChanged(int state);
- CORELIB_EXPORT void on_btnComputeProfile_stateChanged(int state);
- CORELIB_EXPORT void on_btnUseLighting_stateChanged(int state);
- CORELIB_EXPORT void on_btnShowGraphicsMesh_stateChanged(int state);
- CORELIB_EXPORT void on_btnShowSkinnedOnly_stateChanged(int state);
- CORELIB_EXPORT void on_btnSkinningDQ_stateChanged(int state);
- CORELIB_EXPORT void on_checkBoxGizmoWithLocal_stateChanged(int state);
- CORELIB_EXPORT void on_checkBoxGizmoWithDepthTest_stateChanged(int state);
- CORELIB_EXPORT void on_checkBoxShowPlane_stateChanged(int state);
-
-
-private:
- Ui::DisplayScenePanel ui;
-};
-
-#endif // DisplayScene_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.cpp b/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.cpp
deleted file mode 100644
index 0fe96d1..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-#include <QtWidgets/QLabel>
-#include <QtGui/QImage>
-#include <QtWidgets/QVBoxLayout>
-#include <QtGui/QMouseEvent>
-#include <QtGui/QPaintEvent>
-#include <QtGui/QPainter>
-#include <QtGui/QPainterPath>
-#include "ExpandablePanel.h"
-#include "Nv.h"
-
-static QImage S_TriangleRight;
-static QImage S_TriangleDown;
-
-void InitTriangleResources(int w, int h)
-{
- S_TriangleRight = QImage(w, h, QImage::Format_ARGB32);
- S_TriangleDown = QImage(w, h, QImage::Format_ARGB32);
-
- S_TriangleRight.fill(QColor(0, 0, 0, 0));
- S_TriangleDown.fill(QColor(0, 0, 0, 0));
-
- QPainter painter(&S_TriangleRight);
- painter.setRenderHints(QPainter::Antialiasing,true);
-
- QPainterPath path;
- path.moveTo(0, 0);
- path.lineTo(w, h>>1);
- path.lineTo(0, h);
- path.lineTo(0, 0);
- painter.setPen(Qt::NoPen);
- painter.fillPath(path, QBrush(QColor(50, 50, 50)));
-
- // a painter cannot switch device?
- QPainter painter2(&S_TriangleDown);
- painter2.setRenderHint(QPainter::Antialiasing,true);
- path = QPainterPath(); // trick to clear up a path
- path.moveTo(0, 0);
- path.lineTo(w, 0);
- path.lineTo(w>>1, h);
- path.lineTo(0, 0);
- painter2.setPen(Qt::NoPen);
- painter2.fillPath(path, QBrush(QColor(50, 50, 50)));
-}
-
-class TitleLabelImpl : public TitleLabel
-{
- enum
- {
- IMAGE_H = 10,
- IMAGE_W = 10,
- FIXED_H = 20,
- };
-
-public:
- TitleLabelImpl(QWidget* parent, bool collapsed)
- : TitleLabel(parent)
- , _collapsed(collapsed)
- {
- QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- sizePolicy.setHorizontalStretch(0);
- sizePolicy.setVerticalStretch(0);
- sizePolicy.setHeightForWidth(this->sizePolicy().hasHeightForWidth());
- this->setSizePolicy(sizePolicy);
- this->setMinimumSize(QSize(0, FIXED_H));
- this->setMaximumSize(QSize(16777215, FIXED_H));
- //this->setStyleSheet(QString::fromUtf8("background:rgb(219,219,219);border:1px solid rgb(185,185,185);"));
- this->setFrameShape(QFrame::NoFrame);
- this->setFrameShadow(QFrame::Plain);
- this->setTextFormat(Qt::AutoText);
- this->setScaledContents(false);
- this->setAlignment(Qt::AlignCenter);
-
- if(S_TriangleDown.isNull() || S_TriangleRight.isNull())
- InitTriangleResources(IMAGE_W, IMAGE_H);
- }
-
- void paintEvent(QPaintEvent * e)
- {
- QLabel::paintEvent(e);
-
- QPainter painter(this);
- painter.setRenderHints(QPainter::Antialiasing,true);
-
- const int L = 10;
- const int T = (FIXED_H - IMAGE_H)/2;
- QRect rc(L, T, IMAGE_W, IMAGE_H);
-
- // [later] transform the painter should also work;
- // but i don't get the expected results, so have to use two images
- if(_collapsed)
- painter.drawImage(rc, S_TriangleRight);
- else
- painter.drawImage(rc, S_TriangleDown);
-
- }
-
- bool Collapsed() {return _collapsed;}
- void SetCollapsed(bool b)
- {
- _collapsed = b;
- this->update();
- }
-
-protected:
- virtual void mousePressEvent(QMouseEvent* e)
- {
- if(e->buttons() == Qt::LeftButton)
- {
- _collapsed = !_collapsed;
- this->update();
- emit LPressSignal();
- }
- }
-
-private:
- bool _collapsed;
-};
-
-ExpandablePanel::ExpandablePanel(QWidget* parent, bool collapsed)
- : QFrame(parent)
- , _pContent(NV_NULL)
-{
- //_pContent = new QWidget(this);
- Init(collapsed);
-}
-
-ExpandablePanel::ExpandablePanel( QWidget* content, QWidget* parent /*= 0*/ )
- : QFrame(parent)
- , _pContent(content)
-{
- Init();
-}
-
-ExpandablePanel::~ExpandablePanel()
-{
-
-}
-
-void ExpandablePanel::SetCollapsed(bool b)
-{
- if (_pTitle)
- _pTitle->SetCollapsed(b);
-}
-
-void ExpandablePanel::Init(bool collapsed)
-{
- setAutoFillBackground(true);
- setFrameShape(QFrame::StyledPanel);
- setFrameShadow(QFrame::Sunken);
- _pMainLayout = new QVBoxLayout(this);
- _pMainLayout->setSpacing(2);
- _pMainLayout->setContentsMargins(0, 0, 0, 0);
- _pMainLayout->setObjectName(QString::fromUtf8("mainLayout"));
-
- _pTitle = new TitleLabelImpl(this, collapsed);
- _pTitle->setText("TitleLabel");
- _pMainLayout->addWidget(_pTitle);
-
- connect(_pTitle, SIGNAL(LPressSignal()), this, SLOT(TitlePress()));
-
- if(_pContent)
- _pMainLayout->addWidget(_pContent);
-}
-
-void ExpandablePanel::SetTitle( const QString& title )
-{
- _pTitle->setText(title);
-}
-
-void ExpandablePanel::TitlePress()
-{
- if(_pTitle->Collapsed())
- {
- _pContent->hide();
- }
- else // expanded
- {
- _pContent->show();
- }
-}
-
-void ExpandablePanel::AddContent( QWidget* content )
-{
- // only support one widget as content right now
- if (_pContent != NV_NULL) return;
-
- _pMainLayout->addWidget(content);
- _pContent = content;
-}
-
diff --git a/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.h b/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.h
deleted file mode 100644
index ba3018d..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/ExpandablePanel.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef ExpandablePanel_h__
-#define ExpandablePanel_h__
-
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QFrame>
-#include <QtWidgets/QLabel>
-
-#include "corelib_global.h"
-
-class TitleLabelImpl;
-class QString;
-class QVBoxLayout;
-
-class TitleLabel : public QLabel
-{
- Q_OBJECT
-
-public:
- TitleLabel(QWidget* parent):QLabel(parent){}
-
-signals:
- void LPressSignal();
-};
-
-class ExpandablePanel : public QFrame
-{
- Q_OBJECT
-
-public:
- CORELIB_EXPORT explicit ExpandablePanel(QWidget* parent, bool collapsed = false);
- explicit ExpandablePanel(QWidget* content, QWidget* parent);
- virtual ~ExpandablePanel();
-
- CORELIB_EXPORT void SetTitle(const QString& title);
- void SetCollapsed(bool b);
- QWidget* Content() {return _pContent;}
- CORELIB_EXPORT void AddContent(QWidget* content);
-
-public slots:
-CORELIB_EXPORT void TitlePress();
-
-private:
- void Init(bool collapsed = false);
-
-private:
- QVBoxLayout* _pMainLayout;
- TitleLabelImpl* _pTitle;
- QWidget* _pContent;
-};
-
-#endif // ExpandablePanel_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/OutputWindow.cpp b/tools/ArtistTools/source/CoreLib/Window/OutputWindow.cpp
deleted file mode 100644
index 08867e3..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/OutputWindow.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "AppMainWindow.h"
-#include "OutputWindow.h"
-
-#include <QtGUI/QContextMenuEvent>
-
-OutputWindow::OutputWindow(QWidget* parent)
- :
- QTextBrowser(parent)
-{
- ui.setupUi(this);
-}
-
-void OutputWindow::contextMenuEvent(QContextMenuEvent *event)
-{
- QMenu *menu = createStandardContextMenu();
-
- QAction* act = new QAction("&Clear All", this);
- connect(act, SIGNAL(triggered()), this, SLOT(clear()));
- menu->addAction(act);
- menu->exec(event->globalPos());
- delete menu;
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/OutputWindow.h b/tools/ArtistTools/source/CoreLib/Window/OutputWindow.h
deleted file mode 100644
index 5d19bb6..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/OutputWindow.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef OutputWindow_h__
-#define OutputWindow_h__
-
-#include <QtWidgets/QTextBrowser>
-#include "ui_OutputWindow.h"
-
-#include "UIGlobal.h"
-
-class CORELIB_EXPORT OutputWindow : public QTextBrowser
-{
- Q_OBJECT
-
-public:
- OutputWindow(QWidget* parent);
-
- void contextMenuEvent(QContextMenuEvent *event);
-
-private:
- Ui::OutputWindow ui;
-};
-
-#endif // DisplayScene_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.cpp b/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.cpp
deleted file mode 100644
index b127f1c..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "SlideSpinBox.h"
-
-void SlideSpinBoxSlots::timeout()
-{
- //qDebug("%s", __FUNCTION__);
- this->_cb->on_timeout();
-}
-
-void ConfigSpinBoxInt(SlideSpinBoxInt* spinBox, int minv, int maxv, int step)
-{
- spinBox->blockSignals(true);
- spinBox->setRange(minv, maxv);
- spinBox->setSingleStep(step);
- spinBox->AutoConfigDragRange();
- spinBox->setKeyboardTracking(false);
- spinBox->blockSignals(false);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.h b/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.h
deleted file mode 100644
index eeb7626..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBox.h
+++ /dev/null
@@ -1,284 +0,0 @@
-#ifndef SlideSpinBox_h__
-#define SlideSpinBox_h__
-
-#include <QtWidgets/QStyle>
-#include <QtWidgets/QStyleOptionSpinBox>
-#include <QtWidgets/QAbstractSpinBox>
-#include <QtGui/QMouseEvent>
-#include <QtCore/QTimer>
-#include <QtWidgets/QDoubleSpinBox>
-#include <QtWidgets/QSpinBox>
-
-#include "corelib_global.h"
-
-/*
- A Lesson: never use a template to sub-class QWidgets!
- Qt doesn't moc template widget classes;
- So we have to use a specific 'slots-callback' pair to let the moc system work...
- */
-class SlideSpinBoxCallback
-{
-public:
- virtual void on_timeout() = 0;
-};
-
-class SlideSpinBoxSlots : public QObject
-{
- Q_OBJECT
-
-public:
- SlideSpinBoxSlots(SlideSpinBoxCallback* cb)
- : _cb (cb)
- {}
-
- public slots:
- CORELIB_EXPORT void timeout();
-
-private:
- SlideSpinBoxCallback* _cb;
-};
-
-template<typename SpinWidget, typename ValueType>
-class SlideSpinBox : public SpinWidget, public SlideSpinBoxCallback
-{
-
-public:
- void on_timeout()
- {
- //qDebug("%s", __FUNCTION__);
- EmitDragValueChanged();
- }
-
-public:
- typedef ValueType value_type;
-
- SlideSpinBox(QWidget* parent = 0)
- : SpinWidget(parent)
- , _dragRange(DEFAULT_DRAG_RANGE)
- {
- setAccelerated(true);
-
- ResetCustState();
-
- _pSlots = new SlideSpinBoxSlots(this);
-
- _dragTimer.setParent(this);
- _dragTimer.setInterval(DRAG_TIMER_INTERVAL);
- _dragTimer.setSingleShot(true);
- connect(&_dragTimer, SIGNAL(timeout()), _pSlots, SLOT(timeout()));
- }
-
- ~SlideSpinBox()
- {
- delete _pSlots;
- }
-
- void SetDragRange(int range)
- {
- if(range < MIN_DRAG_RANGE)
- range = MIN_DRAG_RANGE;
- else if(range > MAX_DRAG_RANGE)
- range = MAX_DRAG_RANGE;
-
- _dragRange = range;
- }
-
- void AutoConfigDragRange()
- {
- ValueType minv = this->minimum();
- ValueType maxv = this->maximum();
-
- double vrange = maxv - minv;
- double step = 1.0;
-
- if(vrange <= 1.0)
- {
- step = 0.01;
- }
- else if(vrange <= 10.0)
- {
- step = 0.1;
- }
-
- double pixelError = 2.0;
- double dragRange = vrange * pixelError / step;
-
- SetDragRange((int)dragRange);
- }
-
-protected:
- void mouseMoveEvent ( QMouseEvent * event )
- {
- if(!_dragBegin)
- {
- QAbstractSpinBox::mouseMoveEvent(event);
- return;
- }
-
- if(!_dragging)
- {
- _dragging = true;
- _cursor = this->cursor();
-
- this->setCursor(Qt::SizeVerCursor);
- }
-
- //if(_dragging)
- //{
- // _dragTimer.start(); // always restart, we only need the timeout event;
- //}
-
- event->accept();
- DragValue(event->pos());
- }
-
- void mousePressEvent( QMouseEvent * event )
- {
- if(event->button() == Qt::LeftButton)
- {
- SetupCustState(event);
- }
-
- if(_dragging)
- blockSignals(true);
- QAbstractSpinBox::mousePressEvent(event);
- if(_dragging)
- blockSignals(false);
- }
-
- void mouseReleaseEvent( QMouseEvent * event )
- {
- if(_dragging)
- {
- setCursor(_cursor);
- _dragTimer.stop();
- }
-
- QAbstractSpinBox::mouseReleaseEvent(event);
- //if(_dragBegin)
- // EmitDragValueChanged();
-
- ResetCustState();
- }
-
- void timerEvent(QTimerEvent *event)
- {
- if(_dragging)
- {
- // stop timer event to disable acceleration/auto-stepping
- event->ignore();
- return;
- }
-
- event->accept();
-
- if(_dragBegin) blockSignals(true);
- QAbstractSpinBox::timerEvent(event);
- if(_dragBegin) blockSignals(false);
- }
-
-private:
- enum
- {
- MIN_DRAG_RANGE = 50,
- MAX_DRAG_RANGE = 500,
-
- DEFAULT_DRAG_RANGE = 100,
-
- DRAG_TIMER_INTERVAL= 30, // in msec
- };
-
- bool SetupCustState(QMouseEvent* event)
- {
- QStyleOptionSpinBox opt;
- this->initStyleOption(&opt);
- QStyle::SubControl hitControl = this->style()->hitTestComplexControl(QStyle::CC_SpinBox, &opt, event->pos());
- if(hitControl != QStyle::SC_SpinBoxUp && hitControl != QStyle::SC_SpinBoxDown)
- return false;
-
- _pressPosition = event->pos();
- _dragging = false;
- _dragBegin = true;
- _pressValue = this->value();
- _dragValue = this->value();
-
- return true;
- }
-
- void ResetCustState()
- {
- _dragBegin = false;
- _dragging = false;
- }
-
- void DragValue(const QPoint& pos)
- {
- ValueType valueRange = this->maximum() - this->minimum();
-
- double dh = (double)(_pressPosition.y() - pos.y());
- double dv = valueRange * dh / (double)_dragRange;
- ValueType v = _pressValue + (ValueType)dv;
-
- //blockSignals(true);
- setValue(v);
- //blockSignals(false);
- }
-
- void EmitDragValueChanged()
- {
- //if(this->value() != _pressValue) // value are always bound by qt (and decimal settings)
- if(this->value() != _dragValue)
- {
- _dragValue = this->value();
- emit valueChanged(this->value());
- }
- }
-
- int _dragRange;
-
- QPoint _pressPosition;
- ValueType _pressValue;
- ValueType _dragValue;
-
- bool _dragging;
- bool _dragBegin;
- QCursor _cursor;
-
- QTimer _dragTimer;
- SlideSpinBoxSlots* _pSlots;
-};
-
-typedef SlideSpinBox<QDoubleSpinBox, double> SlideSpinBoxF;
-typedef SlideSpinBox<QSpinBox, int> SlideSpinBoxInt;
-
-template<typename CustSpinBox>
-class ConfigSpinBox
-{
-public:
- typedef typename CustSpinBox::value_type ValueType;
-
- ConfigSpinBox(CustSpinBox* spinBox, ValueType minv, ValueType maxv, ValueType step = (ValueType)1)
- {
- spinBox->blockSignals(true);
- spinBox->setRange(minv, maxv);
- spinBox->setSingleStep(step);
- spinBox->AutoConfigDragRange();
- spinBox->setKeyboardTracking(false);
- SpecificConfig<ValueType>(spinBox);
- spinBox->blockSignals(false);
- }
-
- template<typename T>
- void SpecificConfig(CustSpinBox* spinBox){}
-
- template<>
- void SpecificConfig<double>(CustSpinBox* spinBox)
- {
- spinBox->setDecimals(2.0);
- }
-};
-
-#include "corelib_global.h"
-CORELIB_EXPORT void ConfigSpinBoxInt(SlideSpinBoxInt* spinBox, int minv, int maxv, int step = (int)1);
-
-#endif // SlideSpinBox_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBoxInt.h b/tools/ArtistTools/source/CoreLib/Window/SlideSpinBoxInt.h
deleted file mode 100644
index 393adee..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/SlideSpinBoxInt.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef SlideSpinBoxInt_h__
-#define SlideSpinBoxInt_h__
-
-#include <QtWidgets/QStyle>
-#include <QtWidgets/QStyleOptionSpinBox>
-#include <QtWidgets/QAbstractSpinBox>
-#include <QtGui/QMouseEvent>
-#include <QtCore/QTimer>
-#include <QtWidgets/QDoubleSpinBox>
-#include <QtWidgets/QSpinBox>
-#include <SlideSpinBox.h>
-
-// use this header as a trick to make moc work right
-
-#endif // SlideSpinBoxInt_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/TipListView.cpp b/tools/ArtistTools/source/CoreLib/Window/TipListView.cpp
deleted file mode 100644
index b91fd3e..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/TipListView.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "TipListView.h"
-#include <QtWidgets/QToolTip>
-#include <QtCore/QEvent>
-#include <QtGUI/QEvent.h>
-
-
-TipListView::TipListView(QWidget* parent)
- :QListWidget(parent)
-{
-}
-
-void TipListView::setTips(QStringList& tips)
-{
- mTips = tips;
-}
-
-bool TipListView::event(QEvent *evt)
-{
- if (evt->type() == QEvent::ToolTip)
- {
- if (mTips.size() > 0)
- {
- QHelpEvent *helpEvent = (QHelpEvent *)(evt);
- const QPoint& pos = helpEvent->pos();
- QListWidgetItem* pItem = itemAt(pos);
- int index = 0, num = count();
- for (int i = 0; i < num; ++i)
- {
- QListWidgetItem* pi = item(i);
- if (pi == pItem && mTips.size() > i)
- {
- QToolTip::showText(helpEvent->globalPos(), mTips[i]);
- return true;
- }
- }
- }
- //QToolTip::hideText();
- //evt->ignore();
- //return true;
- }
- return QListWidget::event(evt);
-}
diff --git a/tools/ArtistTools/source/CoreLib/Window/TipListView.h b/tools/ArtistTools/source/CoreLib/Window/TipListView.h
deleted file mode 100644
index 6913baa..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/TipListView.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef TipListView_h__
-#define TipListView_h__
-
-#include <QtWidgets/QWidget>
-#include <QtWidgets/QListWidget>
-#include <QtCore/QEvent>
-
-#include "corelib_global.h"
-
-class TipListView : public QListWidget
-{
- Q_OBJECT
-
-public:
- TipListView(QWidget* parent = 0);
-
- void setTips(QStringList& tips);
-
-protected:
- bool event(QEvent *);
-private:
-
- QStringList mTips;
-
-};
-#endif // TipListView_h__
diff --git a/tools/ArtistTools/source/CoreLib/Window/UIGlobal.h b/tools/ArtistTools/source/CoreLib/Window/UIGlobal.h
deleted file mode 100644
index 3d50132..0000000
--- a/tools/ArtistTools/source/CoreLib/Window/UIGlobal.h
+++ /dev/null
@@ -1,37 +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
-
-#define USE_MATERIAL_SET 1
-#define USE_CURVE_EDITOR 0
-#define USE_TEXTURE_BRIGHTNESS 0
-
-#define USE_INTERNAL_GRAPHICAL_MATERIAL 0
-
-#include "corelib_global.h" \ No newline at end of file
diff --git a/tools/ArtistTools/source/CoreLib/corelib_global.h b/tools/ArtistTools/source/CoreLib/corelib_global.h
deleted file mode 100644
index b3c0016..0000000
--- a/tools/ArtistTools/source/CoreLib/corelib_global.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef CORELIB_GLOBAL_H
-#define CORELIB_GLOBAL_H
-
-#include <QtCore/qglobal.h>
-#include <Nv/NvBlastCommon.h>
-
-#ifdef CORELIB_LIB
-# define CORELIB_EXPORT Q_DECL_EXPORT
-#else
-# define CORELIB_EXPORT Q_DECL_IMPORT
-#endif
-
-#pragma warning(disable:4018)
-#pragma warning(disable:4099)
-#pragma warning(disable:4101)
-#pragma warning(disable:4267)
-#pragma warning(disable:4273)
-#pragma warning(disable:4996)
-
-#endif // CORELIB_GLOBAL_H