forked from brenocq/atta
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
147 lines (125 loc) · 5.97 KB
/
Makefile
File metadata and controls
147 lines (125 loc) · 5.97 KB
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
#----------- Folders ------------
BIN = bin/
LIB = lib/
SRC = src/
SRC_SIM = ${SRC}simulator/
SRC_OBJS = ${SRC_SIM}objects/
SRC_OBJS_BSC= ${SRC_OBJS}basic/
SRC_VULKAN = ${SRC_SIM}vulkan/
SRC_PHY = ${SRC_SIM}physics/
SRC_CNST = ${SRC_PHY}constraints/
SRC_FOR = ${SRC_PHY}forces/
SRC_HLP = ${SRC_SIM}helpers/
SRC_IMGUI = ${LIB}imgui/
SRC_UI = ${SRC_VULKAN}ui/
SRC_RT = ${SRC_VULKAN}rayTracing/
SRC_PIP = ${SRC_VULKAN}pipeline/
SRC_ASSETS = ${SRC}assets/
SRC_DEMO = ${SRC}demo/
OBJ = obj/
SHA = ${SRC}shaders/
SHA_RT = ${SHA}rayTracing/
#------------ Files -------------
FILES =
FILES_SIM = simulator scene object
FILES_VULKAN = application window instance debugMessenger debugCommon physicalDevice device surface swapChain helpers imageView shaderModule renderPass frameBuffer commandPool commandBuffers semaphore fence vertex buffer vertexBuffer stagingBuffer indexBuffer descriptorSetLayout uniformBuffer descriptorPool descriptorSets stbImage texture image sampler depthBuffer tinyObjLoader model colorBuffer descriptorBinding vulkan descriptorSetManager material imageMemoryBarrier procedural modelViewController
FILES_PHY = physicsEngine objectPhysics
FILES_CNST = constraint fixedConstraint hingeConstraint
FILES_FOR = force forceGenerator
FILES_HLP = log drawHelper debugDrawer
FILES_IMGUI = imgui imgui_demo imgui_widgets imgui_draw imgui_impl_glfw imgui_impl_vulkan
FILES_UI = userInterface uiRenderPass uiFrameBuffer
FILES_RT = rayTracing deviceProcedures accelerationStructure bottomLevelAccelerationStructure topLevelAccelerationStructure rayTracingPipeline shaderBindingTable
FILES_PIP = pipeline pipelineLayout graphicsPipeline linePipeline
FILES_OBJS_BSC = importedObject plane box sphere cylinder
FILES_DEMO = ttzinho/ttzinho
#SHADERS = graphics/graphicsShader line/lineShader
#SHADERS_RT = rayTracing.rchit rayTracing.rgen rayTracing.rmiss rayTracing.procedural.rchit rayTracing.procedural.rint
#------------ Helpers -------------
CC = g++
VULKAN_SDK_PATH = /home/breno/Programs/VulkanSDK/1.2.141.2/x86_64
CFLAGS = -std=c++17 -I$(VULKAN_SDK_PATH)/include -Wall -O3
LDFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lstdc++fs -lvulkan -I${LIB} -I${SRC}
#---------- Text style ----------
RED = \033[0;31m
GREEN = \033[0;32m
NC = \033[0m
BOLD = \033[1m
OBJECTS=$(patsubst %, ${OBJ}%.o, ${FILES})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_SIM})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_VULKAN})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_PHY})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_CNST})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_FOR})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_HLP})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_IMGUI})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_UI})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_RT})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_PIP})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_OBJS_BSC})
OBJECTS+=$(patsubst %, ${OBJ}%.o, ${FILES_DEMO})
SHADERS_VERT=$(patsubst %, ${SHA}%.vert, ${SHADERS})
SHADERS_FRAG=$(patsubst %, ${SHA}%.frag, ${SHADERS})
EXECUTABLE=${BIN}simulator
#------------ Build -------------
# Compile project files
${OBJ}%.o: ${SRC}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_SIM}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_VULKAN}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_PHY}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_CNST}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_FOR}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_HLP}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_IMGUI}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_UI}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_RT}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_PIP}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_OBJS_BSC}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
${OBJ}%.o: ${SRC_DEMO}%.cpp
@/bin/echo -e "${GREEN}Compiling $<${NC}"
${CC} ${CFLAGS} -c $< -o $@ ${LDFLAGS}
build: ${OBJECTS} ${SHADERS_VERT} ${SHADERS_FRAG} ${SRC}main.cpp
@/bin/echo -e "${GREEN}${BOLD}---------- Building ----------${NC}"
$(VULKAN_SDK_PATH)/bin/glslc ${SHA}graphics/graphicsShader.vert -o ${SHA}graphics/graphicsShader.vert.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA}graphics/graphicsShader.frag -o ${SHA}graphics/graphicsShader.frag.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA}line/lineShader.vert -o ${SHA}line/lineShader.vert.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA}line/lineShader.frag -o ${SHA}line/lineShader.frag.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA_RT}rayTracing.procedural.rchit -o ${SHA_RT}rayTracing.procedural.rchit.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA_RT}rayTracing.procedural.rint -o ${SHA_RT}rayTracing.procedural.rint.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA_RT}rayTracing.rchit -o ${SHA_RT}rayTracing.rchit.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA_RT}rayTracing.rgen -o ${SHA_RT}rayTracing.rgen.spv
$(VULKAN_SDK_PATH)/bin/glslc ${SHA_RT}rayTracing.rmiss -o ${SHA_RT}rayTracing.rmiss.spv
${CC} ${CFLAGS} ${SRC}main.cpp ${OBJECTS} -o ${EXECUTABLE} ${LDFLAGS}
#------------ Run -------------
run: build
@/bin/echo -e "${GREEN}${BOLD}---------- Running ----------${NC}"
@LD_LIBRARY_PATH=$(VULKAN_SDK_PATH)/lib VK_LAYER_PATH=$(VULKAN_SDK_PATH)/etc/vulkan/explicit_layer.d ./${EXECUTABLE}
#------------ Clean -------------
clean:
@/bin/echo -e "${GREEN}${BOLD}---------- Cleaning ----------${NC}"
rm -rf ${OBJECTS}
rm -rf ${EXECUTABLE}