adding custom pipeline for water (what a journey to do so...)

This commit is contained in:
2025-06-02 00:00:08 +02:00
parent ce9335ba6a
commit f6decee5fa
22 changed files with 355 additions and 122 deletions

View File

@@ -2,11 +2,16 @@ NAME = vox
SRCS += $(wildcard $(addsuffix /*.cpp, ./Application))
SHADER_SRCS = $(wildcard $(addsuffix /*.nzsl, ./Resources/Shaders))
BIN_DIR = Bin
OBJ_DIR = Objects
RES_DIR = Resources
SHADER_DIR = Resources/Shaders/Build
SHADER_MODULE_DIR = ScopEngine/Assets/Shaders/Modules
OBJS = $(addprefix $(OBJ_DIR)/, $(SRCS:.cpp=.o))
SPVS = $(addprefix $(SHADER_DIR)/, $(SHADER_SRCS:.nzsl=.spv))
CXX = clang++
CXXFLAGS = -std=c++20 -I ScopEngine/Runtime/Includes -I Application -I ScopEngine/ThirdParty/KVF -I ScopEngine/ThirdParty -D KVF_IMPL_VK_NO_PROTOTYPES
@@ -58,15 +63,25 @@ $(OBJ_DIR)/%.o: %.cpp
all: $(NAME)
$(NAME): $(OBJ_DIR) $(BIN_DIR) engine $(OBJS)
@printf "$(COLOR)($(_BOLD)100%%$(_RESET)$(COLOR)) $(_RESET)Compiling $(_BOLD)Resources/Fragment.nzsl$(_RESET)\n"
@$(NZSLC) --compile=spv Resources/Fragment.nzsl -o Resources/ --optimize --module="ScopEngine/Assets/Shaders/Modules"
@printf "$(COLOR)($(_BOLD)100%%$(_RESET)$(COLOR)) $(_RESET)Compiling $(_BOLD)Resources/Screen.nzsl$(_RESET)\n"
@$(NZSLC) --compile=spv Resources/PostProcess.nzsl -o Resources/ --optimize --module="ScopEngine/Assets/Shaders/Modules"
$(NAME): $(OBJ_DIR) $(BIN_DIR) shaders engine $(OBJS)
@printf "Linking $(_BOLD)$(NAME)$(_RESET)\n"
@$(CXX) -o $(BIN_DIR)/$(NAME) $(OBJS) $(LDFLAGS)
@printf "$(_BOLD)$(NAME)$(_RESET) compiled $(COLOR)$(_BOLD)successfully$(_RESET)\n"
SPVS_TOTAL = $(words $(SPVS))
N_SPVS := $(shell find $(SHADERS_DIR) -type f -name '*.spv.h' 2>/dev/null | wc -l)
SPVS_TOTAL := $(shell echo $$(( $(SPVS_TOTAL) - $(N_SPVS) )))
ifeq ($(SPVS_TOTAL), 0) # Same
SPVS_TOTAL := 1
endif
CURR_SPV = 0
$(SHADER_DIR)/%.spv: %.nzsl
@$(eval CURR_SPV=$(shell echo $$(( $(CURR_SPV) + 1 ))))
@$(eval PERCENT=$(shell echo $$(( $(CURR_SPV) * 100 / $(SPVS_TOTAL) ))))
@printf "$(COLOR)($(_BOLD)%3s%%$(_RESET)$(COLOR)) $(_RESET)Compiling $(_BOLD)$<$(_RESET)\n" "$(PERCENT)"
@$(NZSLC) --compile=spv $< -o $(SHADER_DIR) --optimize --module=$(SHADER_MODULE_DIR)
engine:
@make -j$(JOBS) -C ScopEngine DEBUG=$(DEBUG) --no-print-directory
@@ -76,10 +91,18 @@ $(OBJ_DIR):
$(BIN_DIR):
@mkdir -p $(BIN_DIR)
$(SHADER_DIR):
@mkdir -p $(SHADER_DIR)
shaders: $(SHADER_DIR) $(SPVS)
run:
@$(BIN_DIR)/$(NAME) $(RES_DIR)/42.obj
re-shaders:
clean-shaders:
@$(RM) $(SHADER_DIR)
re-shaders: clean-shaders shaders
@make -C ScopEngine re-shaders
clean:
@@ -92,4 +115,4 @@ fclean: clean
re: fclean all
.PHONY: all run clean fclean re re-shaders
.PHONY: all run clean fclean re clean-shaders re-shaders