2019-06-05 20:20:12 -04:00
|
|
|
TARGET_DIR?=../resources/shaders
|
|
|
|
|
|
|
|
EMPTY=
|
|
|
|
|
|
|
|
SHADERS=\
|
2020-06-23 15:40:51 -04:00
|
|
|
d3d9/fill.fs.glsl \
|
|
|
|
d3d9/fill.vs.glsl \
|
|
|
|
d3d9/tile.fs.glsl \
|
|
|
|
d3d9/tile.vs.glsl \
|
|
|
|
d3d9/tile_clip_combine.fs.glsl \
|
|
|
|
d3d9/tile_clip_combine.vs.glsl \
|
|
|
|
d3d9/tile_clip_copy.fs.glsl \
|
|
|
|
d3d9/tile_clip_copy.vs.glsl \
|
|
|
|
d3d9/tile_copy.fs.glsl \
|
|
|
|
d3d9/tile_copy.vs.glsl \
|
|
|
|
debug/solid.fs.glsl \
|
|
|
|
debug/solid.vs.glsl \
|
|
|
|
debug/texture.fs.glsl \
|
|
|
|
debug/texture.vs.glsl \
|
2020-03-02 23:04:09 -05:00
|
|
|
blit.fs.glsl \
|
|
|
|
blit.vs.glsl \
|
2020-05-08 00:26:41 -04:00
|
|
|
clear.fs.glsl \
|
|
|
|
clear.vs.glsl \
|
2019-06-05 20:20:12 -04:00
|
|
|
demo_ground.fs.glsl \
|
|
|
|
demo_ground.vs.glsl \
|
|
|
|
reproject.fs.glsl \
|
|
|
|
reproject.vs.glsl \
|
|
|
|
stencil.fs.glsl \
|
|
|
|
stencil.vs.glsl \
|
|
|
|
$(EMPTY)
|
|
|
|
|
2020-04-23 21:00:52 -04:00
|
|
|
COMPUTE_SHADERS=\
|
2020-06-23 15:40:51 -04:00
|
|
|
d3d11/bin.cs.glsl \
|
|
|
|
d3d11/bound.cs.glsl \
|
|
|
|
d3d11/dice.cs.glsl \
|
|
|
|
d3d11/fill.cs.glsl \
|
|
|
|
d3d11/propagate.cs.glsl \
|
|
|
|
d3d11/sort.cs.glsl \
|
|
|
|
d3d11/tile.cs.glsl \
|
2020-04-23 21:00:52 -04:00
|
|
|
$(EMPTY)
|
|
|
|
|
2019-06-05 20:20:12 -04:00
|
|
|
INCLUDES=\
|
2020-06-23 15:40:51 -04:00
|
|
|
d3d11/fill_compute.inc.glsl \
|
|
|
|
fill_area.inc.glsl \
|
|
|
|
tile_fragment.inc.glsl \
|
|
|
|
tile_vertex.inc.glsl \
|
2019-06-05 20:20:12 -04:00
|
|
|
$(EMPTY)
|
|
|
|
|
|
|
|
OUT=\
|
|
|
|
$(SHADERS:%=$(TARGET_DIR)/gl3/%) \
|
2020-05-07 19:33:03 -04:00
|
|
|
$(SHADERS:%=$(TARGET_DIR)/gl4/%) \
|
2019-06-05 20:20:12 -04:00
|
|
|
$(SHADERS:%.glsl=$(TARGET_DIR)/metal/%.metal) \
|
2019-06-05 17:35:46 -04:00
|
|
|
$(SHADERS:%.glsl=build/metal/%.spv) \
|
2020-05-07 19:33:03 -04:00
|
|
|
$(COMPUTE_SHADERS:%=$(TARGET_DIR)/gl4/%) \
|
2020-04-23 21:00:52 -04:00
|
|
|
$(COMPUTE_SHADERS:%.glsl=$(TARGET_DIR)/metal/%.metal) \
|
|
|
|
$(COMPUTE_SHADERS:%.glsl=build/metal/%.spv) \
|
2019-06-05 20:20:12 -04:00
|
|
|
$(EMPTY)
|
|
|
|
|
2020-05-07 19:33:03 -04:00
|
|
|
GLSL_3_VERSION=330
|
|
|
|
GLSL_4_VERSION=430
|
2020-09-12 16:49:28 -04:00
|
|
|
|
|
|
|
GLSLANG?=glslangValidator
|
2019-06-05 20:20:12 -04:00
|
|
|
GLSLANGFLAGS=--auto-map-locations -I.
|
2019-06-05 17:35:46 -04:00
|
|
|
GLSLANGFLAGS_METAL=$(GLSLANGFLAGS) -DPF_ORIGIN_UPPER_LEFT=1
|
2019-06-05 20:20:12 -04:00
|
|
|
|
2019-06-05 17:35:46 -04:00
|
|
|
SPIRVCROSS?=spirv-cross
|
2020-04-23 21:00:52 -04:00
|
|
|
SPIRVCROSSFLAGS=--msl --msl-version 020100
|
2019-06-05 20:20:12 -04:00
|
|
|
|
2019-06-05 17:35:46 -04:00
|
|
|
GLSL_VERSION_HEADER="\#version {{version}}"
|
|
|
|
HEADER="// Automatically generated from files in pathfinder/shaders/. Do not edit!"
|
|
|
|
|
2020-05-07 19:33:03 -04:00
|
|
|
GLSL_SED_ARGS=-e "s/\#version .*//" -e "s/\#line.*$$//"
|
2019-06-05 20:20:12 -04:00
|
|
|
|
2020-06-23 15:40:51 -04:00
|
|
|
GLSL_SHADER_TYPE.fs=frag
|
|
|
|
GLSL_SHADER_TYPE.vs=vert
|
|
|
|
GLSL_SHADER_TYPE.cs=comp
|
|
|
|
|
2019-06-05 20:20:12 -04:00
|
|
|
all: $(OUT)
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
|
|
|
|
clean:
|
|
|
|
rm -f $(OUT)
|
|
|
|
|
2020-06-23 15:40:51 -04:00
|
|
|
build/metal/%.spv: %.glsl $(INCLUDES)
|
2020-09-12 16:49:28 -04:00
|
|
|
mkdir -p $(dir $@) && $(GLSLANG) $(GLSLANGFLAGS_METAL) -G$(GLSL_VERSION) -S $(GLSL_SHADER_TYPE$(suffix $(basename $(notdir $<)))) -o $@ $<
|
2020-05-07 19:33:03 -04:00
|
|
|
|
2020-06-23 15:40:51 -04:00
|
|
|
$(TARGET_DIR)/gl3/%.glsl: %.glsl $(INCLUDES)
|
2020-09-12 16:49:28 -04:00
|
|
|
mkdir -p $(dir $@) && echo $(GLSL_VERSION_HEADER) > $@ && echo $(HEADER) >> $@ && ( $(GLSLANG) $(GLSLANGFLAGS) -S $(GLSL_SHADER_TYPE$(suffix $(basename $(notdir $<)))) -E $< | sed $(GLSL_SED_ARGS) >> $@ ) || ( rm $@ && exit 1 )
|
2020-04-23 21:00:52 -04:00
|
|
|
|
2020-06-23 15:40:51 -04:00
|
|
|
$(TARGET_DIR)/gl4/%.glsl: %.glsl $(INCLUDES)
|
2020-09-12 16:49:28 -04:00
|
|
|
mkdir -p $(dir $@) && echo $(GLSL_VERSION_HEADER) > $@ && echo $(HEADER) >> $@ && ( $(GLSLANG) $(GLSLANGFLAGS) -S $(GLSL_SHADER_TYPE$(suffix $(basename $(notdir $<)))) -E $< | sed $(GLSL_SED_ARGS) >> $@ ) || ( rm $@ && exit 1 )
|
2020-05-07 19:33:03 -04:00
|
|
|
|
2020-06-23 15:40:51 -04:00
|
|
|
$(TARGET_DIR)/metal/%.metal: build/metal/%.spv
|
|
|
|
mkdir -p $(dir $@) && echo $(HEADER) > $@ && ( $(SPIRVCROSS) $(SPIRVCROSSFLAGS) $< >> $@ ) || ( rm $@ && exit 1 )
|