add make_radiantshader.sh

This commit is contained in:
Marco Cawthorne 2024-03-10 16:18:03 -07:00
parent 48b76b8786
commit 8533f6d228
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
1 changed files with 102 additions and 0 deletions

102
make_radiantshader.sh Executable file
View File

@ -0,0 +1,102 @@
#!/bin/sh
# Converts .mat files in a gamedir
# to a bunch of .shader files.
# It also overwrites scripts/shaderlist.txt
# So don't mix environments!
ROOT_DIR="$(pwd)"
LEGACY_OUT="$ROOT_DIR/$1/scripts"
SHADERLIST="$ROOT_DIR/$1/scripts/shaderlist.txt"
echo "Dumping all ..mat files into one..."
if [ -f "$SHADERLIST" ]
then
rm "$SHADERLIST"
fi
# scan a dir inside textures/???/
scan_dir()
{
SHADER_FILE="$LEGACY_OUT/$1.shader"
cd "$1"
MAT_COUNT=$(ls | grep \.mat | wc -l | tr -d '\n')
echo "...$MAT_COUNT .mat files counted"
if [ "$MAT_COUNT" -eq 0 ]
then
exit
fi
echo "// THIS FILE HAS BEEN AUTOMATICALLY GENERATED!" > "$SHADER_FILE"
echo "// Please refer to the original documentation." >> "$SHADER_FILE"
echo "// This shader is for development purposes ONLY." >> "$SHADER_FILE"
echo "" >> "$SHADER_FILE"
find * -type f -name '*.mat'| while read SHADER_N; do
BASENAME=$(echo "$SHADER_N" | cut -d '.' -f 1)
NAME="textures/$1/$BASENAME"
echo "$NAME" >> "$SHADER_FILE"
cat "$SHADER_N" >> "$SHADER_FILE"
sed -i 's|$diffusemap|'"${NAME}".tga'|g' "$SHADER_FILE"
done;
#echo "Stripping GLSL parameters..."
sed -i '/program /d' "$SHADER_FILE"
sed -i '/reflectcube/d' "$SHADER_FILE"
sed -i '/reflectmask /d' "$SHADER_FILE"
sed -i '/normalmap /d' "$SHADER_FILE"
sed -i '/specularmap /d' "$SHADER_FILE"
#echo "Replacing diffusemap calls with qer_editorimage..."
sed -i 's/diffusemap /qer_editorimage /g' "$SHADER_FILE"
#echo "Swapping DDS references with TARGA..."
sed -i 's/.dds/.tga/g' "$SHADER_FILE"
sed -i 's/$rt:base/textures\/dev\/rtsurface.tga/g' "$SHADER_FILE"
sed -i 's/.shader//g' "$SHADER_FILE"
echo "$1" >> "$SHADERLIST"
echo "...written $SHADER_FILE"
}
# iterate over all 'categories' inside textures/
scan_textures()
{
NEW_ROOT="$(pwd)/$1/textures"
cd "$NEW_ROOT"
ls | while read TEXTURE_DIR
do
cd "$NEW_ROOT"
if [ -d "$TEXTURE_DIR" ]
then
echo "Texture dir: $TEXTURE_DIR ($1)"
scan_dir "$TEXTURE_DIR" "$LEGACY_OUT"
fi
done
}
#mkdir -p "$(dirname "$LEGACY_OUT")"
# Start with any possible pk3dirs
find "$1" -type d -name '*.pk3dir'| while read PKDIR; do
cd "$ROOT_DIR"
if [ -d "$PKDIR/textures/" ]
then
scan_textures "$PKDIR"
fi
done
cd "$ROOT_DIR"
# Then look into the loose dir
if [ -d "$1/textures" ]
then
scan_textures "$1"
fi