blob: 0995dbbe95f90dd420467161232734657d81c72d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
cmake_minimum_required (VERSION 3.10)
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(PIXEL_SHADERS
src/asteroid_ps.hlsl
src/asteroid_ps_d3d11.hlsl
src/asteroid_ps_diligent.hlsl
src/font_ps.hlsl
src/skybox_ps.hlsl
src/sprite_ps.hlsl
)
set(VERTEX_SHADERS
src/asteroid_vs.hlsl
src/asteroid_vs_diligent.hlsl
src/skybox_vs.hlsl
src/sprite_vs.hlsl
)
set(SHADERS ${PIXEL_SHADERS} ${VERTEX_SHADERS})
set(COMPILED_SHADERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/CompiledShaders)
file(MAKE_DIRECTORY "${COMPILED_SHADERS_DIR}")
set_source_files_properties(${SHADERS} PROPERTIES
VS_SHADER_ENTRYPOINT "%(Filename)"
VS_SHADER_MODEL 5.0
VS_SHADER_VARIABLE_NAME "g_%(Filename)"
VS_SHADER_OUTPUT_HEADER_FILE "${COMPILED_SHADERS_DIR}/%(Filename).h"
)
set_source_files_properties(${PIXEL_SHADERS} PROPERTIES VS_SHADER_TYPE Pixel)
set_source_files_properties(${VERTEX_SHADERS} PROPERTIES VS_SHADER_TYPE Vertex)
set_source_files_properties(src/asteroid_ps.hlsl PROPERTIES VS_SHADER_MODEL 5.1)
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
src/shader_common.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()
target_include_directories(Asteroids
PRIVATE
Src
SDK/Include
${CMAKE_CURRENT_BINARY_DIR}/CompiledShaders
)
get_supported_backends(ENGINE_LIBRARIES)
target_link_libraries(Asteroids
PRIVATE
Diligent-BuildSettings
Diligent-TargetPlatform
Diligent-TextureLoader
Diligent-Common
Diligent-GraphicsTools
${ENGINE_LIBRARIES}
d3d11.lib
d3d12.lib
ninput.lib
winmm.lib
dxgi.lib
shcore.lib
)
set_common_target_properties(Asteroids)
if(MSVC)
target_compile_definitions(Asteroids PRIVATE NOMINMAX)
# 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)
endif()
source_group("src" FILES ${SOURCE})
source_group("include" FILES ${INCLUDE})
source_group("shaders" FILES
${SHADERS}
src/common_defines.h
src/shader_common.h
)
source_group("SDK" FILES SDK/Include/d3dx12.h)
source_group("GUI" FILES ${GUI})
source_group("media" FILES ${MEDIA})
|