3 if ! [ -d "textures" ] && ! [ -d "env" ]; then
4 echo "Sorry, must be run from a directory with a textures subfolder. Giving up."
13 echo scripts/$dir.shader
15 cat <<EOF >>"scripts/$dir.shader"
20 // maybe: surfaceparm nonsolid
22 surfaceparm alphashadow
28 // or: alphafunc GE128
45 echo >&2 "appending to scripts/$dir.shader"
46 echo scripts/$dir.shader
48 cat <<EOF >>"scripts/$dir.shader"
53 surfaceparm nolightmap
56 q3map_sunExt .5 .5 .7 42 90 2 16 // red green blue intensity degrees elevation deviance samples
57 q3map_surfacelight 150 // intensity
65 echo "$1" | sed 's/\.[Jj][Pp][Gg]$\|\.[Tt][Gg][Aa]$\|\.[Pp][Nn][Gg]$//;'
68 allshadernames() # prints all shader names or texture names
70 cat scripts/*.shader 2>/dev/null | tr '\r' '\n' | {
72 while IFS= read -r LINE; do
73 LINE=`echo "$LINE" | sed 's,//.*,,; s/\s\+/ /g; s/^ //; s/ $//; s/"//g;'`
74 [ -n "$LINE" ] || continue
91 echo "`texnormalize "$1"`_up"
115 allshaders=`allshadernames`
121 sh=`texnormalize "$1"`
122 case "$lf$allshaders$lf" in
132 convert "$1" -depth 8 RGBA:- | xxd -c 4 -g 1 | grep -v " ff " >/dev/null
138 [ -d "textures" ] && find textures -type f \( -iname \*.tga -o -iname \*.png \) -print | while IFS= read -r TEX; do
139 case `texnormalize "$TEX"` in
140 *_norm|*_shirt|*_pants|*_glow|*_gloss|*_bump)
141 # ignore these (they are used implicitly)
145 if has_shader "$TEX"; then
146 echo>&2 " $TEX has an associated shader, ignoring."
148 if has_alpha "$TEX"; then
149 echo>&2 "*** $TEX has alpha but no shader, creating default alpha shader."
152 echo>&2 " $TEX has no shader and no alpha, fine."
156 [ -d "env" ] && find env -type f \( -iname \*_up.tga -o -iname \*_up.png -o -iname \*_up.jpg \) -print | while IFS= read -r TEX; do
157 if has_shader "$TEX"; then
158 echo>&2 " $TEX has an associated shader, ignoring."
160 echo>&2 "*** $TEX is sky but has no shader, creating default sky shader."
167 aashaders=`autoshaders`
169 if [ -n "$aashaders" ]; then
171 The following shader files have been automatically created or appended to:
175 Please edit them to your needs, and possibly rename them.