summaryrefslogtreecommitdiffstats
path: root/Projects
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2017-11-13 04:14:15 +0000
committerEgor Yusov <egor.yusov@gmail.com>2017-11-13 04:14:15 +0000
commit1b2530749ea3dc4937cdd7aa37e5a144e6d10183 (patch)
treede2a77d6c8ce8a33c2b3070c66549f429e43a017 /Projects
parentUpdated submodules (diff)
downloadDiligentEngine-1b2530749ea3dc4937cdd7aa37e5a144e6d10183.tar.gz
DiligentEngine-1b2530749ea3dc4937cdd7aa37e5a144e6d10183.zip
Updated to version 2.1
Diffstat (limited to 'Projects')
-rw-r--r--Projects/Asteroids/Screenshot.pngbin0 -> 698187 bytes
-rw-r--r--Projects/Asteroids/asteroids.vcxproj6
-rw-r--r--Projects/Asteroids/src/WinWrapper.cpp28
-rw-r--r--Projects/Asteroids/src/asteroids_DE.cpp50
-rw-r--r--Projects/Asteroids/src/asteroids_DE.h11
-rw-r--r--Projects/Asteroids/src/settings.h2
6 files changed, 59 insertions, 38 deletions
diff --git a/Projects/Asteroids/Screenshot.png b/Projects/Asteroids/Screenshot.png
new file mode 100644
index 0000000..8dba7fd
--- /dev/null
+++ b/Projects/Asteroids/Screenshot.png
Binary files differ
diff --git a/Projects/Asteroids/asteroids.vcxproj b/Projects/Asteroids/asteroids.vcxproj
index 4239f13..fe3fe14 100644
--- a/Projects/Asteroids/asteroids.vcxproj
+++ b/Projects/Asteroids/asteroids.vcxproj
@@ -52,7 +52,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>WIN32;NOMINMAX;_CRT_SECURE_NO_WARNINGS;ENGINE_DLL;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>SDK\Include;$(IntDir);..\..\diligentcore\Graphics\GraphicsEngine\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D11\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D12\interface;..\..\diligentcore\Graphics\GraphicsEngineOpenGl\interface;..\..\diligentcore\Graphics\GraphicsTools\include;..\..\diligentcore\Platforms\interface;..\..\diligenttools\RenderScript\include;..\..\diligenttools\TextureLoader\interface;..\..\diligentcore\Common\interface;..\..\diligentcore\Common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>SDK\Include;$(IntDir);..\..\diligentcore\Graphics\GraphicsEngine\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D11\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D12\interface;..\..\diligentcore\Graphics\GraphicsEngineOpenGl\interface;..\..\diligentcore\Graphics\GraphicsTools\include;..\..\diligentcore\Graphics\HLSL2GLSLConverterLib\interface;..\..\diligentcore\Platforms\interface;..\..\diligenttools\RenderScript\include;..\..\diligenttools\TextureLoader\interface;..\..\diligentcore\Common\interface;..\..\diligentcore\Common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@@ -81,7 +81,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>WIN32;NOMINMAX;_CRT_SECURE_NO_WARNINGS;ENGINE_DLL;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>SDK\Include;$(IntDir);..\..\diligentcore\Graphics\GraphicsEngine\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D11\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D12\interface;..\..\diligentcore\Graphics\GraphicsEngineOpenGl\interface;..\..\diligentcore\Graphics\GraphicsTools\include;..\..\diligentcore\Platforms\interface;..\..\diligenttools\RenderScript\include;..\..\diligenttools\TextureLoader\interface;..\..\diligentcore\Common\interface;..\..\diligentcore\Common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>SDK\Include;$(IntDir);..\..\diligentcore\Graphics\GraphicsEngine\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D11\interface;..\..\diligentcore\Graphics\GraphicsEngineD3D12\interface;..\..\diligentcore\Graphics\GraphicsEngineOpenGl\interface;..\..\diligentcore\Graphics\GraphicsTools\include;..\..\diligentcore\Graphics\HLSL2GLSLConverterLib\interface;..\..\diligentcore\Platforms\interface;..\..\diligenttools\RenderScript\include;..\..\diligenttools\TextureLoader\interface;..\..\diligentcore\Common\interface;..\..\diligentcore\Common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@@ -236,7 +236,7 @@ copy "%(RelativeDir)%(Filename).pdb" "$(TargetDir)"</Command>
<ProjectReference Include="..\..\diligentcore\Common\build\Win32\Common.vcxproj">
<Project>{7380f7e6-315f-4b4e-92eb-e6aeee865298}</Project>
</ProjectReference>
- <ProjectReference Include="..\..\diligentcore\External\glew-1.10.0\build\Win32\glew_static.vcxproj">
+ <ProjectReference Include="..\..\diligentcore\External\glew\build\Win32\glew_static.vcxproj">
<Project>{664e6f0d-6784-4760-9565-d54f8eb1edf4}</Project>
</ProjectReference>
<ProjectReference Include="..\..\diligentcore\Graphics\GraphicsEngineD3D11\build\Win32\GraphicsEngineD3D11.vcxproj">
diff --git a/Projects/Asteroids/src/WinWrapper.cpp b/Projects/Asteroids/src/WinWrapper.cpp
index 2771709..9fabd17 100644
--- a/Projects/Asteroids/src/WinWrapper.cpp
+++ b/Projects/Asteroids/src/WinWrapper.cpp
@@ -201,6 +201,12 @@ LRESULT CALLBACK WindowProc(
gSettings.submitRendering = !gSettings.submitRendering;
std::cout << "Submit Rendering: " << gSettings.submitRendering << std::endl;
return 0;
+ case 'B':
+ if (gSettings.mode == Settings::RenderMode::DiligentD3D12) {
+ gSettings.resourceBindingMode = (gSettings.resourceBindingMode + 1) % 3;
+ gLastFrameRenderMode = static_cast<Settings::RenderMode>(-1);
+ }
+ return 0;
case VK_ADD:
case VK_OEM_PLUS:
@@ -217,7 +223,7 @@ LRESULT CALLBACK WindowProc(
case '2': gSettings.mode = gd3d12Available ? Settings::RenderMode::NativeD3D12 : gSettings.mode; return 0;
case '3': gSettings.mode = gd3d11Available ? Settings::RenderMode::DiligentD3D11 : gSettings.mode; return 0;
case '4': gSettings.mode = gd3d12Available ? Settings::RenderMode::DiligentD3D12 : gSettings.mode; return 0;
- //case '5': gSettings.mode = Settings::RenderMode::DiligentGL; return 0;
+ case '5': gSettings.mode = Settings::RenderMode::DiligentGL; return 0;
case VK_ESCAPE:
SendMessage(hWnd, WM_CLOSE, 0, 0);
@@ -325,15 +331,15 @@ int InitWorkload(HWND hWnd, AsteroidsSimulation &asteroids)
break;
case Settings::RenderMode::DiligentD3D11:
- gWorkloadDE = new AsteroidsDE::Asteroids(gSettings.numThreads, &asteroids, &gGUI, hWnd, Diligent::DeviceType::D3D11);
+ gWorkloadDE = new AsteroidsDE::Asteroids(gSettings, &asteroids, &gGUI, hWnd, Diligent::DeviceType::D3D11);
break;
case Settings::RenderMode::DiligentD3D12:
- gWorkloadDE = new AsteroidsDE::Asteroids(gSettings.numThreads, &asteroids, &gGUI, hWnd, Diligent::DeviceType::D3D12);
+ gWorkloadDE = new AsteroidsDE::Asteroids(gSettings, &asteroids, &gGUI, hWnd, Diligent::DeviceType::D3D12);
break;
case Settings::RenderMode::DiligentGL:
- gWorkloadDE = new AsteroidsDE::Asteroids(gSettings.numThreads, &asteroids, &gGUI, hWnd, Diligent::DeviceType::OpenGL);
+ gWorkloadDE = new AsteroidsDE::Asteroids(gSettings, &asteroids, &gGUI, hWnd, Diligent::DeviceType::OpenGL);
break;
}
@@ -363,6 +369,8 @@ int main(int argc, char** argv)
gSettings.closeAfterSeconds = atof(argv[++a]);
} else if (_stricmp(argv[a], "-nod3d11") == 0) {
gd3d11Available = false;
+ } else if (_stricmp(argv[a], "-singlethreaded") == 0) {
+ gSettings.multithreadedRendering = false;
} else if (_stricmp(argv[a], "-warp") == 0) {
gSettings.warp = true;
} else if (_stricmp(argv[a], "-nod3d12") == 0) {
@@ -522,6 +530,7 @@ int main(int argc, char** argv)
// Update GUI
{
const char *ModeStr = nullptr;
+ const char *resBindModeStr = "";
float updateTime = 0;
float renderTime = 0;
switch (gSettings.mode)
@@ -544,6 +553,12 @@ int main(int argc, char** argv)
case Settings::RenderMode::DiligentD3D12:
ModeStr = "Diligent D3D12";
gWorkloadDE->GetPerfCounters(updateTime, renderTime);
+ switch (gSettings.resourceBindingMode)
+ {
+ case 0: resBindModeStr = "-d";break;
+ case 1: resBindModeStr = "-m";break;
+ case 2: resBindModeStr = "-tm";break;
+ }
break;
case Settings::RenderMode::DiligentGL:
@@ -551,13 +566,14 @@ int main(int argc, char** argv)
gWorkloadDE->GetPerfCounters(updateTime, renderTime);
break;
}
- float filterScale = 0.05f;
+
+ float filterScale = 0.02f;
filteredUpdateTime = filteredUpdateTime * (1.f - filterScale) + filterScale * updateTime;
filteredRenderTime = filteredRenderTime * (1.f - filterScale) + filterScale * renderTime;
filteredFrameTime = filteredFrameTime * (1.f - filterScale) + filterScale * (float)frameTime;
char buffer[256];
- sprintf(buffer, "Asteroids %s (%dt) - %4.2f ms (%4.2f ms / %4.2f ms)", ModeStr, gSettings.multithreadedRendering ? gSettings.numThreads : 1,
+ sprintf(buffer, "Asteroids %s%s (%dt) - %4.2f ms (%4.2f ms / %4.2f ms)", ModeStr, resBindModeStr, gSettings.multithreadedRendering ? gSettings.numThreads : 1,
1000.f * filteredFrameTime, 1000.f * filteredUpdateTime, 1000.f * filteredRenderTime);
SetWindowText(hWnd, buffer);
diff --git a/Projects/Asteroids/src/asteroids_DE.cpp b/Projects/Asteroids/src/asteroids_DE.cpp
index 0cb3ddf..a657881 100644
--- a/Projects/Asteroids/src/asteroids_DE.cpp
+++ b/Projects/Asteroids/src/asteroids_DE.cpp
@@ -39,13 +39,9 @@ using namespace Diligent;
namespace Diligent
{
#ifdef ENGINE_DLL
- CreateDeviceAndContextsD3D11Type CreateDeviceAndContextsD3D11 = nullptr;
- CreateSwapChainD3D11Type CreateSwapChainD3D11 = nullptr;
-
- CreateDeviceAndContextsD3D12Type CreateDeviceAndContextsD3D12 = nullptr;
- CreateSwapChainD3D12Type CreateSwapChainD3D12 = nullptr;
-
- CreateDeviceAndSwapChainGLType CreateDeviceAndSwapChainGL = nullptr;
+ GetEngineFactoryD3D11Type GetEngineFactoryD3D11 = nullptr;
+ GetEngineFactoryD3D12Type GetEngineFactoryD3D12 = nullptr;
+ GetEngineFactoryOpenGLType GetEngineFactoryOpenGL = nullptr;
#endif
}
@@ -76,11 +72,12 @@ void Asteroids::InitDevice(HWND hWnd, DeviceType DevType)
(Uint32)EngineD3D11DebugFlags::VerifyCommittedResourceRelevance;
#ifdef ENGINE_DLL
- if(!CreateDeviceAndContextsD3D11 || !CreateSwapChainD3D11)
- LoadGraphicsEngineD3D11(CreateDeviceAndContextsD3D11, CreateSwapChainD3D11);
+ if(!GetEngineFactoryD3D11)
+ LoadGraphicsEngineD3D11(GetEngineFactoryD3D11);
#endif
- CreateDeviceAndContextsD3D11( DeviceAttribs, &mDevice, ppContexts.data(), mNumSubsets-1 );
- CreateSwapChainD3D11( mDevice, ppContexts[0], SwapChainDesc, hWnd, &mSwapChain );
+ auto *pFactoryD3D11 = GetEngineFactoryD3D11();
+ pFactoryD3D11->CreateDeviceAndContextsD3D11( DeviceAttribs, &mDevice, ppContexts.data(), mNumSubsets-1 );
+ pFactoryD3D11->CreateSwapChainD3D11( mDevice, ppContexts[0], SwapChainDesc, hWnd, &mSwapChain );
}
else
{
@@ -91,11 +88,12 @@ void Asteroids::InitDevice(HWND hWnd, DeviceType DevType)
Attribs.DynamicDescriptorAllocationChunkSize[0] = 4*2048;
#endif
#ifdef ENGINE_DLL
- if(!CreateDeviceAndContextsD3D12 || !CreateSwapChainD3D12)
- LoadGraphicsEngineD3D12(CreateDeviceAndContextsD3D12, CreateSwapChainD3D12);
+ if(!GetEngineFactoryD3D12)
+ LoadGraphicsEngineD3D12(GetEngineFactoryD3D12);
#endif
- CreateDeviceAndContextsD3D12( Attribs, &mDevice, ppContexts.data(), mNumSubsets-1 );
- CreateSwapChainD3D12( mDevice, ppContexts[0], SwapChainDesc, hWnd, &mSwapChain );
+ auto *pFactoryD3D12 = GetEngineFactoryD3D12();
+ pFactoryD3D12->CreateDeviceAndContextsD3D12( Attribs, &mDevice, ppContexts.data(), mNumSubsets-1 );
+ pFactoryD3D12->CreateSwapChainD3D12( mDevice, ppContexts[0], SwapChainDesc, hWnd, &mSwapChain );
}
mDeviceCtxt.Attach(ppContexts[0]);
@@ -107,10 +105,12 @@ void Asteroids::InitDevice(HWND hWnd, DeviceType DevType)
case DeviceType::OpenGL:
#ifdef ENGINE_DLL
- if(!CreateDeviceAndSwapChainGL)
- LoadGraphicsEngineOpenGL(CreateDeviceAndSwapChainGL);
+ if(GetEngineFactoryOpenGL == nullptr)
+ {
+ LoadGraphicsEngineOpenGL(GetEngineFactoryOpenGL);
+ }
#endif
- CreateDeviceAndSwapChainGL(
+ GetEngineFactoryOpenGL()->CreateDeviceAndSwapChainGL(
EngineCreationAttribs, &mDevice, &mDeviceCtxt, SwapChainDesc, hWnd, &mSwapChain );
break;
@@ -120,14 +120,16 @@ void Asteroids::InitDevice(HWND hWnd, DeviceType DevType)
}
}
-Asteroids::Asteroids(UINT NumThreads, AsteroidsSimulation* asteroids, GUI* gui, HWND hWnd, Diligent::DeviceType DevType)
+Asteroids::Asteroids(const Settings &settings, AsteroidsSimulation* asteroids, GUI* gui, HWND hWnd, Diligent::DeviceType DevType)
: mAsteroids(asteroids)
, mGUI(gui)
{
QueryPerformanceFrequency((LARGE_INTEGER*)&mPerfCounterFreq);
- mNumSubsets = std::max(NumThreads,1u);
- mNumSubsets = std::min(NumThreads,32u);
+ mNumSubsets = std::max(settings.numThreads,1);
+ mNumSubsets = std::min(settings.numThreads,32);
+
+ m_BindingMode = static_cast<BindingMode>(settings.resourceBindingMode);
InitDevice(hWnd, DevType);
@@ -675,7 +677,7 @@ void Asteroids::RenderSubset(Diligent::Uint32 SubsetNum,
auto dynamicData = &dynamicAsteroidData[drawIdx];
{
- MapHelper<DrawConstantBuffer> drawConstants(pCtx, mDrawConstantBuffer, MAP_WRITE_DISCARD, 0);
+ MapHelper<DrawConstantBuffer> drawConstants(pCtx, mDrawConstantBuffer, MAP_WRITE, MAP_FLAG_DISCARD);
XMStoreFloat4x4(&drawConstants->mWorld, dynamicData->world);
XMStoreFloat4x4(&drawConstants->mViewProjection, viewProjection);
drawConstants->mSurfaceColor = staticData->surfaceColor;
@@ -794,7 +796,7 @@ void Asteroids::Render(float frameTime, const OrbitCamera& camera, const Setting
// Draw skybox
{
{
- MapHelper<SkyboxConstantBuffer> skyboxConstants(mDeviceCtxt, mSkyboxConstantBuffer, MAP_WRITE_DISCARD, 0);
+ MapHelper<SkyboxConstantBuffer> skyboxConstants(mDeviceCtxt, mSkyboxConstantBuffer, MAP_WRITE, MAP_FLAG_DISCARD);
XMStoreFloat4x4(&skyboxConstants->mViewProjection, camera.ViewProjection());
}
@@ -819,7 +821,7 @@ void Asteroids::Render(float frameTime, const OrbitCamera& camera, const Setting
controlVertices.reserve(mGUI->size());
{
- MapHelper<SpriteVertex> vertexBase(mDeviceCtxt, mSpriteVertexBuffer, MAP_WRITE_DISCARD, 0);
+ MapHelper<SpriteVertex> vertexBase(mDeviceCtxt, mSpriteVertexBuffer, MAP_WRITE, MAP_FLAG_DISCARD);
auto vertexEnd = (SpriteVertex*)vertexBase;
for (int i = -1; i < (int)mGUI->size(); ++i) {
diff --git a/Projects/Asteroids/src/asteroids_DE.h b/Projects/Asteroids/src/asteroids_DE.h
index 271d511..7507097 100644
--- a/Projects/Asteroids/src/asteroids_DE.h
+++ b/Projects/Asteroids/src/asteroids_DE.h
@@ -13,6 +13,7 @@
#include "RenderDevice.h"
#include "SwapChain.h"
#include "DeviceContext.h"
+#include "RefCntAutoPtr.h"
#include <map>
#include <mutex>
#include <atomic>
@@ -22,7 +23,7 @@
#include "simulation.h"
#include "util.h"
#include "gui.h"
-#include "RefCntAutoPtr.h"
+
namespace AsteroidsDE {
@@ -41,7 +42,7 @@ struct SkyboxConstantBuffer {
class Asteroids {
public:
- Asteroids(UINT NumThreads, AsteroidsSimulation* asteroids, GUI* gui, HWND hWnd, Diligent::DeviceType DevType);
+ Asteroids(const Settings &settings, AsteroidsSimulation* asteroids, GUI* gui, HWND hWnd, Diligent::DeviceType DevType);
~Asteroids();
void Render(float frameTime, const OrbitCamera& camera, const Settings& settings);
@@ -59,9 +60,9 @@ private:
enum class BindingMode
{
- Dynamic = 1,
- Mutable = 2,
- TextureMutable = 3
+ Dynamic = 0,
+ Mutable = 1,
+ TextureMutable = 2
}m_BindingMode = BindingMode::TextureMutable;
AsteroidsSimulation* mAsteroids = nullptr;
diff --git a/Projects/Asteroids/src/settings.h b/Projects/Asteroids/src/settings.h
index d130eca..5ca7d2a 100644
--- a/Projects/Asteroids/src/settings.h
+++ b/Projects/Asteroids/src/settings.h
@@ -76,6 +76,8 @@ struct Settings
DiligentGL
}mode = DiligentD3D11;
+ int resourceBindingMode = 2; // Only for DiligentD3D12 mode
+
bool lockFrameRate = false;
bool animate = true;