summaryrefslogtreecommitdiffstats
path: root/Projects
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2017-12-11 05:47:18 +0000
committerEgor Yusov <egor.yusov@gmail.com>2017-12-11 05:47:18 +0000
commit09b8471f2d4e0991ecaeb06394cc7492c433473a (patch)
treebc2011dc4268f69f2ff6a4044a6aa1c1f0b0ce0c /Projects
parentCMake: Added grouping of projects in VS solution; removed VS configurations f... (diff)
downloadDiligentEngine-09b8471f2d4e0991ecaeb06394cc7492c433473a.tar.gz
DiligentEngine-09b8471f2d4e0991ecaeb06394cc7492c433473a.zip
Enabled cmake build
Diffstat (limited to 'Projects')
-rw-r--r--Projects/Asteroids/CMakeLists.txt175
-rw-r--r--Projects/Asteroids/src/WinWrapper.cpp10
-rw-r--r--Projects/Asteroids/src/asteroids_DE.cpp3
-rw-r--r--Projects/Asteroids/src/asteroids_d3d12.cpp3
-rw-r--r--Projects/CMakeLists.txt5
5 files changed, 186 insertions, 10 deletions
diff --git a/Projects/Asteroids/CMakeLists.txt b/Projects/Asteroids/CMakeLists.txt
new file mode 100644
index 0000000..8a3be34
--- /dev/null
+++ b/Projects/Asteroids/CMakeLists.txt
@@ -0,0 +1,175 @@
+cmake_minimum_required (VERSION 3.8)
+
+project(Asteroids CXX)
+
+set(SOURCE
+ src/asteroids_d3d11.cpp
+ src/asteroids_d3d12.cpp
+ src/asteroids_DE.cpp
+ src/camera.cpp
+ src/DDSTextureLoader.cpp
+ src/mesh.cpp
+ src/simplexnoise1234.c
+ src/simulation.cpp
+ src/texture.cpp
+ src/WinWrapper.cpp
+)
+
+set(INCLUDE
+ src/asteroids_d3d11.h
+ src/asteroids_d3d12.h
+ src/asteroids_DE.h
+ src/camera.h
+ src/dds.h
+ src/DDSTextureLoader.h
+ src/descriptor.h
+ src/mesh.h
+ src/noise.h
+ src/settings.h
+ src/simplexnoise1234.h
+ src/simulation.h
+ src/subset_d3d12.h
+ src/texture.h
+ src/upload_heap.h
+ src/util.h
+)
+
+set(SHADERS
+ src/asteroid_ps.hlsl
+ src/asteroid_ps_d3d11.hlsl
+ src/asteroid_vs.hlsl
+ src/font_ps.hlsl
+ src/skybox_ps.hlsl
+ src/skybox_vs.hlsl
+ src/sprite_ps.hlsl
+ src/sprite_vs.hlsl
+)
+
+set(GUI
+ src/font.h
+ src/gui.h
+ src/intel_clear_bd_50_usascii.inl
+ src/sprite.h
+ src/stb_font_consolas_bold_50_usascii.inl
+)
+
+set(MEDIA
+ DiligentD3D11.dds
+ DiligentD3D12.dds
+ DiligentGL.dds
+ directx11.dds
+ directx12.dds
+ starbox_1024.dds
+)
+
+if(WIN32)
+ add_executable(Asteroids WIN32
+ ${SOURCE}
+ ${INCLUDE}
+ ${SHADERS}
+ ${GUI}
+ ${MEDIA}
+ SDK/Include/d3dx12.h
+ src/common_defines.h
+ readme.md
+ )
+ set_target_properties(Asteroids PROPERTIES
+ LINK_FLAGS "/SUBSYSTEM:CONSOLE"
+ VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ )
+ copy_required_dlls(Asteroids)
+
+else()
+ message(FATAL_ERROR "Unsupported platform")
+endif()
+
+
+add_custom_target(AsteroidsShaders)
+
+set(SHADER_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/Shaders)
+file(MAKE_DIRECTORY ${SHADER_OUTPUT_DIR})
+
+macro(COMPILE_SHADER FILE SHADER_MODEL)
+ get_filename_component(FILE_NAME_WE ${FILE} NAME_WE)
+ get_filename_component(FILE_NAME ${FILE} NAME)
+ set(OUT_FILE ${SHADER_OUTPUT_DIR}/${FILE_NAME_WE}.h)
+
+ add_custom_command(TARGET AsteroidsShaders
+ # Unfortunately it is not possible to set TARGET directly to GraphicsEngineD3D12-static/shared
+ # because PRE_BUILD is only supported on Visual Studio 8 or later. For all other generators
+ # PRE_BUILD is treated as PRE_LINK.
+ COMMAND ${FXC} /T ${SHADER_MODEL} ${FILE_NAME} /E ${FILE_NAME_WE} /O3 /Vn g_${FILE_NAME_WE} /Fh ${OUT_FILE} /nologo
+ MAIN_DEPENDENCY ${FILE} # the primary input source file to the command
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src
+ COMMENT "Compiling shader ${FILE}"
+ VERBATIM
+ )
+endmacro()
+
+COMPILE_SHADER(src/asteroid_ps.hlsl ps_5_1)
+COMPILE_SHADER(src/asteroid_ps_d3d11.hlsl ps_5_0)
+COMPILE_SHADER(src/asteroid_vs.hlsl vs_5_0)
+COMPILE_SHADER(src/font_ps.hlsl ps_5_0)
+COMPILE_SHADER(src/skybox_ps.hlsl ps_5_0)
+COMPILE_SHADER(src/skybox_vs.hlsl vs_5_0)
+COMPILE_SHADER(src/sprite_ps.hlsl ps_5_0)
+COMPILE_SHADER(src/sprite_vs.hlsl vs_5_0)
+
+add_dependencies(Asteroids AsteroidsShaders)
+
+target_compile_definitions(Asteroids PRIVATE NOMINMAX)
+
+target_include_directories(Asteroids
+PRIVATE
+ Src
+ SDK/Include
+ ${CMAKE_CURRENT_BINARY_DIR}/Shaders
+)
+
+target_link_libraries(Asteroids
+PRIVATE
+ BuildSettings
+ GraphicsEngine
+ GraphicsEngineD3D11-shared
+ GraphicsEngineD3D12-shared
+ GraphicsEngineOpenGL-shared
+ TargetPlatform
+ TextureLoader
+ GraphicsTools
+ d3dcompiler.lib
+ d3d12.lib
+ d3d11.lib
+ ninput.lib
+ winmm.lib
+ dxgi.lib
+ shcore.lib
+)
+
+if(MSVC)
+ set_header_file_only_property("${SHADERS}")
+
+ # Disable MSVC-specific warnings
+ # - w4201: nonstandard extension used: nameless struct/union
+ # - w4324: structure was padded due to alignment specifier
+ # - w4238: nonstandard extension used: class rvalue used as lvalue
+ target_compile_options(Asteroids PRIVATE /wd4201 /wd4324 /wd4238)
+ # Enable link-time code generation for release builds (I was not able to
+ # find any way to set these settings through interface library BuildSettings)
+ set_target_properties(Asteroids PROPERTIES
+ LINK_FLAGS_RELEASE /LTCG
+ LINK_FLAGS_MINSIZEREL /LTCG
+ LINK_FLAGS_RELWITHDEBINFO /LTCG
+ )
+endif()
+
+source_group("src" FILES ${SOURCE})
+source_group("include" FILES ${INCLUDE})
+source_group("shaders" FILES
+ ${SHADERS}
+ src/common_defines.h
+)
+source_group("SDK" FILES SDK/Include/d3dx12.h)
+source_group("GUI" FILES ${GUI})
+source_group("media" FILES ${MEDIA})
+
+
diff --git a/Projects/Asteroids/src/WinWrapper.cpp b/Projects/Asteroids/src/WinWrapper.cpp
index 65446c5..1da3a20 100644
--- a/Projects/Asteroids/src/WinWrapper.cpp
+++ b/Projects/Asteroids/src/WinWrapper.cpp
@@ -473,8 +473,6 @@ int main(int argc, char** argv)
// main loop
double elapsedTime = 0.0;
double frameTime = 0.0;
- int lastMouseX = 0;
- int lastMouseY = 0;
POINTER_INFO pointerInfo = {};
timeBeginPeriod(1);
@@ -573,15 +571,15 @@ int main(int argc, char** argv)
filteredFrameTime = filteredFrameTime * (1.f - filterScale) + filterScale * (float)frameTime;
char buffer[256];
- 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);
+ sprintf_s(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);
if (gSettings.lockFrameRate) {
- sprintf(buffer, "(Locked)");
+ sprintf_s(buffer, "(Locked)");
} else {
- sprintf(buffer, "%.0f fps", 1.0f / filteredFrameTime);
+ sprintf_s(buffer, "%.0f fps", 1.0f / filteredFrameTime);
}
gFPSControl->Text(buffer);
}
diff --git a/Projects/Asteroids/src/asteroids_DE.cpp b/Projects/Asteroids/src/asteroids_DE.cpp
index a657881..73ba096 100644
--- a/Projects/Asteroids/src/asteroids_DE.cpp
+++ b/Projects/Asteroids/src/asteroids_DE.cpp
@@ -592,7 +592,6 @@ void Asteroids::CreateGUIResources()
auto control = i >= 0 ? (*mGUI)[i] : mSprite.get();
if (control->TextureFile().length() > 0 && mSpriteTextures.find(control->TextureFile()) == mSpriteTextures.end()) {
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
- ID3D11ShaderResourceView* textureSRV = nullptr;
auto path = NarrowString(converter.from_bytes(control->TextureFile()).c_str());
TextureLoadInfo loadInfo;
loadInfo.IsSRGB = true;
@@ -722,7 +721,7 @@ void Asteroids::Render(float frameTime, const OrbitCamera& camera, const Setting
if( m_BindingMode == BindingMode::TextureMutable )
{
- for(auto &srb=mAsteroidsSRBs.begin(); srb!=mAsteroidsSRBs.end(); ++srb)
+ for(auto srb=mAsteroidsSRBs.begin(); srb!=mAsteroidsSRBs.end(); ++srb)
{
mDeviceCtxt->TransitionShaderResources(mAsteroidsPSO, *srb);
}
diff --git a/Projects/Asteroids/src/asteroids_d3d12.cpp b/Projects/Asteroids/src/asteroids_d3d12.cpp
index 1d6fcdd..c2ba3e5 100644
--- a/Projects/Asteroids/src/asteroids_d3d12.cpp
+++ b/Projects/Asteroids/src/asteroids_d3d12.cpp
@@ -548,7 +548,7 @@ void Asteroids::CreateSubsets(UINT numHeapsPerFrame)
for (UINT f = 0; f < NUM_FRAMES_TO_BUFFER; f++) {
// Per-frame data
auto frame = &mFrame[f];
- auto dynamicUploadGPUVA = frame->mDynamicUpload->Heap()->GetGPUVirtualAddress();
+ //auto dynamicUploadGPUVA = frame->mDynamicUpload->Heap()->GetGPUVirtualAddress();
for (UINT subsetIdx = 0; subsetIdx < mSubsetCount; ++subsetIdx) {
void* memory = _aligned_malloc(sizeof(SubsetD3D12), 64);
@@ -793,7 +793,6 @@ void Asteroids::Render(float frameTime, const OrbitCamera& camera, const Setting
}
else
{
- LONG64 SubsetUpdateTicks = 0, SubsetRenderTicks = 0;
for (unsigned int subsetIdx = 0; subsetIdx < mSubsetCount; ++subsetIdx) {
RenderSubset(swapChainBuffer->mRenderTargetView, mCurrentFrameIndex, frameTime,
frame->mSubsets[subsetIdx], subsetIdx, camera.Eye(), camera.ViewProjection(), settings);
diff --git a/Projects/CMakeLists.txt b/Projects/CMakeLists.txt
new file mode 100644
index 0000000..b12529a
--- /dev/null
+++ b/Projects/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 3.3)
+
+if(PLATFORM_WIN32)
+ add_subdirectory(Asteroids)
+endif()