-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild_shader.sh
More file actions
139 lines (125 loc) · 3.28 KB
/
build_shader.sh
File metadata and controls
139 lines (125 loc) · 3.28 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
#!/bin/bash
# Check if slangc is available
if ! command -v slangc &> /dev/null; then
if [ -z "$VULKAN_SDK" ]; then
echo "slangc not found in PATH and VULKAN_SDK not set. Skipping shader compilation."
exit 0
fi
SLANGC="$VULKAN_SDK/bin/slangc"
if [ ! -f "$SLANGC" ]; then
echo "slangc not found. Skipping shader compilation."
exit 0
fi
else
SLANGC="slangc"
fi
# Create shader output directories
mkdir -p "./GLSL"
mkdir -p "./SPIRV"
mkdir -p "./DXIL"
mkdir -p "./MSL"
mkdir -p "./WGSL"
SHADER_NAME="microui"
SHADER_FILE="${SHADER_NAME}.slang"
SHADER_ERROR=false
# Compile to GLSL (vertex)
if ! "$SLANGC" "$SHADER_FILE" \
-entry vs_main \
-stage vertex \
-target glsl \
-profile glsl_450 \
-o "./GLSL/${SHADER_NAME}.vert"; then
echo "Failed to compile vertex shader to GLSL"
SHADER_ERROR=true
fi
# Compile to GLSL (fragment)
if ! "$SLANGC" "$SHADER_FILE" \
-entry fs_main \
-stage fragment \
-target glsl \
-profile glsl_450 \
-o "./GLSL/${SHADER_NAME}.frag"; then
echo "Failed to compile fragment shader to GLSL"
SHADER_ERROR=true
fi
# Compile to SPIR-V (vertex)
if ! "$SLANGC" "$SHADER_FILE" \
-entry vs_main \
-fvk-use-entrypoint-name \
-stage vertex \
-target spirv \
-o "./SPIRV/${SHADER_NAME}.vert.spv"; then
echo "Failed to compile vertex shader to SPIR-V"
SHADER_ERROR=true
fi
# Compile to SPIR-V (fragment)
if ! "$SLANGC" "$SHADER_FILE" \
-entry fs_main \
-fvk-use-entrypoint-name \
-stage fragment \
-target spirv \
-o "./SPIRV/${SHADER_NAME}.frag.spv"; then
echo "Failed to compile fragment shader to SPIR-V"
SHADER_ERROR=true
fi
# Compile to DXIL (vertex)
if ! "$SLANGC" "$SHADER_FILE" \
-entry vs_main \
-stage vertex \
-target dxil \
-profile sm_6_0 \
-o "./DXIL/${SHADER_NAME}.vert.dxil"; then
echo "Failed to compile vertex shader to DXIL"
SHADER_ERROR=true
fi
# Compile to DXIL (fragment)
if ! "$SLANGC" "$SHADER_FILE" \
-entry fs_main \
-stage fragment \
-target dxil \
-profile sm_6_0 \
-o "./DXIL/${SHADER_NAME}.frag.dxil"; then
echo "Failed to compile fragment shader to DXIL"
SHADER_ERROR=true
fi
# Compile to MSL (vertex)
if ! "$SLANGC" "$SHADER_FILE" \
-entry vs_main \
-stage vertex \
-target metal \
-fvk-b-shift 0 0 \
-o "./MSL/${SHADER_NAME}.vert.metal"; then
echo "Failed to compile vertex shader to MSL"
SHADER_ERROR=true
fi
# Compile to MSL (fragment)
if ! "$SLANGC" "$SHADER_FILE" \
-entry fs_main \
-stage fragment \
-target metal \
-fvk-b-shift 0 0 \
-o "./MSL/${SHADER_NAME}.frag.metal"; then
echo "Failed to compile fragment shader to MSL"
SHADER_ERROR=true
fi
# Compile to WGSL (vertex)
if ! "$SLANGC" "$SHADER_FILE" \
-entry vs_main \
-stage vertex \
-target wgsl \
-o "./WGSL/${SHADER_NAME}.vert.wgsl"; then
echo "Failed to compile vertex shader to WGSL"
SHADER_ERROR=true
fi
# Compile to WGSL (fragment)
if ! "$SLANGC" "$SHADER_FILE" \
-entry fs_main \
-stage fragment \
-target wgsl \
-o "./WGSL/${SHADER_NAME}.frag.wgsl"; then
echo "Failed to compile fragment shader to WGSL"
SHADER_ERROR=true
fi
if [ "$SHADER_ERROR" = true ]; then
echo "Some shader compilations failed"
fi