diff --git a/make_radiantshader.sh b/make_radiantshader.sh new file mode 100755 index 00000000..7c43d60f --- /dev/null +++ b/make_radiantshader.sh @@ -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