mirror of
https://gitlab.com/xonotic/xonotic
synced 2024-12-15 19:35:24 +00:00
add a shell script port of shade.vbs
This commit is contained in:
parent
84c897e857
commit
0c6082674f
119
misc/tools/shadescript/shade.sh
Normal file
119
misc/tools/shadescript/shade.sh
Normal file
@ -0,0 +1,119 @@
|
||||
#!/bin/sh
|
||||
|
||||
case "$#" in
|
||||
2)
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $1 directory shader.template"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
LF="
|
||||
"
|
||||
|
||||
exec 3>"scripts/$1.shader"
|
||||
template=`cat "$2"`
|
||||
|
||||
find "textures/$1" -type f -path "textures/*/*/*.*" -not -name '*_norm.*' -not -name '*_glow.*' -not -name '*_gloss.*' -not -name '*_reflect.*' -not -name '*.xcf' | while IFS= read -r F; do
|
||||
F=${F%.*}
|
||||
|
||||
noLightmap=false
|
||||
isLiquid=false
|
||||
isTransparent=false
|
||||
bounceScale=1.00
|
||||
shaderString="$template"
|
||||
shaderHead=
|
||||
shaderTail=
|
||||
shaderQUI=
|
||||
shaderDiffuse=
|
||||
diffuseExtra=
|
||||
|
||||
case "$F" in
|
||||
*decal*)
|
||||
noLightmap=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# material type
|
||||
case "$F" in
|
||||
*water*)
|
||||
noLightmap=true
|
||||
isLiquid=true
|
||||
shaderHead="$shaderHead surfaceparm trans\n surfaceparm water\n qer_trans 20\n"
|
||||
;;
|
||||
*slime*)
|
||||
noLightmap=true
|
||||
isLiquid=true
|
||||
shaderHead="$shaderHead surfaceparm trans\n surfaceparm slime\n qer_trans 20\n"
|
||||
;;
|
||||
*lava*)
|
||||
noLightmap=true
|
||||
isLiquid=true
|
||||
shaderHead="$shaderHead surfaceparm trans\n surfaceparm lava\n qer_trans 20\n"
|
||||
;;
|
||||
*glass*)
|
||||
noLightmap=true
|
||||
shaderHead="$shaderHead surfaceparm trans\n"
|
||||
diffuseExtra="$diffuseExtra blendfunc add\n"
|
||||
;;
|
||||
*metal*)
|
||||
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
|
||||
shaderHead="$shaderHead surfaceparm metalsteps\n"
|
||||
;;
|
||||
esac
|
||||
|
||||
# what is it used for
|
||||
case "$F" in
|
||||
*grate*)
|
||||
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
|
||||
shaderHead="$shaderHead surfaceparm trans\n"
|
||||
diffuseExtra="$diffuseExtra blendfunc blend\n"
|
||||
;;
|
||||
esac
|
||||
|
||||
# further properties
|
||||
case "$F" in
|
||||
*shiny*)
|
||||
bounceScale=`echo "$bounceScale + 0.25" | bc -l`
|
||||
;;
|
||||
esac
|
||||
case "$F" in
|
||||
*dirt*|*terrain*|*old*)
|
||||
bounceScale=`echo "$bounceScale - 0.25" | bc -l`
|
||||
shaderHead="$shaderHead surfaceparm dust\n"
|
||||
;;
|
||||
esac
|
||||
|
||||
shaderDiffuse="$F"
|
||||
if [ -f "$F""_gloss.tga" ] || [ -f "$F""_gloss.jpg" ] || [ -f "$F""_gloss.png" ]; then
|
||||
bounceScale=`echo "$bounceScale - 0.25" | bc -l`
|
||||
fi
|
||||
|
||||
if [ -f "$F""_qei.tga" ] || [ -f "$F""_qei.jpg" ] || [ -f "$F""_qei.png" ]; then
|
||||
shaderQUI="$F""_qei"
|
||||
else
|
||||
shaderQUI="$F"
|
||||
fi
|
||||
|
||||
if ! $noLightmap; then
|
||||
shaderTail=" {\n map \$lightmap\n rgbGen identity\n tcGen lightmap\n blendfunc filter\n }"
|
||||
fi
|
||||
case "$bounceScale" in
|
||||
1|1.0|1.00)
|
||||
;;
|
||||
*)
|
||||
shaderHead="$shaderHead q3map_bouncescale $bounceScale\n"
|
||||
;;
|
||||
esac
|
||||
|
||||
shaderName="`echo "$F" | cut -d / -f 1-2`/`echo "$F" | cut -d / -f 3`-`echo "$F" | cut -d / -f 4`"
|
||||
echo "$shaderString$LF$LF" | sed -e "
|
||||
s,%shader_name%,$shaderName,g;
|
||||
s,%qei_name%,$shaderQUI,g;
|
||||
s,%shader_head%,$shaderHead,g;
|
||||
s,%diffuse_map%,$shaderDiffuse,g;
|
||||
s,%diffuse_map_extra%,$diffuseExtra,g;
|
||||
s,%shader_tail%,$shaderTail,g;
|
||||
" >&3
|
||||
done
|
Loading…
Reference in New Issue
Block a user