khanat-opennel-code/code/nel/tools/3d/build_gamedata/processes/shape/sh/build.sh

237 lines
7.2 KiB
Bash
Raw Normal View History

2010-05-06 00:08:41 +00:00
#!/bin/bash
rm log.log 2> /dev/null
# *** Build shape files (.shape)
# Get the database directory
database_directory=`cat ../../cfg/site.cfg | grep "database_directory" | sed -e 's/database_directory//g' | sed -e 's/ //g' | sed -e 's/=//g'`
# Bin
tga_2_dds='tga2dds.exe'
build_coarse_mesh='build_coarse_mesh.exe'
lightmap_optimizer='lightmap_optimizer.exe'
build_clodtex='build_clodtex.exe'
build_shadow_skin='build_shadow_skin.exe'
# Log error
echo ------- > log.log
echo --- Build ShadowSkin shape >> log.log
echo ------- >> log.log
echo -------
echo --- Build ShadowSkin shape
echo -------
date >> log.log
date
# build shadow skin?
do_build_shadow_skin=`cat ../../cfg/config.cfg | grep -w "build_shadow_skin" | sed -e 's/build_shadow_skin//' | sed -e 's/ //g' | sed -e 's/=//g'`
build_shadow_skin_ratio=`cat ../../cfg/config.cfg | grep "build_shadow_skin_ratio" | sed -e 's/build_shadow_skin_ratio//' | sed -e 's/ //g' | sed -e 's/=//g'`
build_shadow_skin_maxface=`cat ../../cfg/config.cfg | grep "build_shadow_skin_maxface" | sed -e 's/build_shadow_skin_maxface//' | sed -e 's/ //g' | sed -e 's/=//g'`
# if config wanted then must compute shadowSkin
if ( test "$do_build_shadow_skin" = "1" )
then
for i in shape_not_optimized/*.[sS][hH][aA][pP][eE] ; do
if ( test -f $i )
then
dest=`echo $i | sed -e 's/shape_not_optimized/shape/g'`
# if date is newer in shape_not_optimized than in shape, compute
if ( ! test -e $dest ) || ( test $i -nt $dest )
then
# NB: overwrite shape_not_optimized, because will be cloded/copied below to shapes/
$build_shadow_skin $i $i $build_shadow_skin_ratio $build_shadow_skin_maxface
fi
fi
done
fi
# Log error
echo ------- >> log.log
echo --- Build shape : Copy Shape / build CLodTex >> log.log
echo ------- >> log.log
echo -------
echo --- Build shape : Copy Shape / build CLodTex
echo -------
date >> log.log
date
# Get the lod config file in the database
clod_config_file=`cat ../../cfg/config.cfg | grep "clod_config_file" | sed -e 's/clod_config_file//' | sed -e 's/ //g' | sed -e 's/=//g'`
# if clod cfg is setup, build clod
if (test -f $database_directory/$clod_config_file)
then
# build the shape with clod texture. convert from 'shape_not_optimized' to 'shape'
$build_clodtex -d $database_directory/$clod_config_file clod shape_not_optimized shape
else
# just copy shape_not_optimized to shape
./sh/transfert_shape_optimize.bat
fi
# Log error
echo ------- >> log.log
echo --- Build shape : optimize lightmaps >> log.log
echo ------- >> log.log
echo -------
echo --- Build shape : optimize lightmaps
echo -------
date >> log.log
date
# copy lightmap_not_optimized to lightmap
./sh/transfert_lightmap_optimize.bat
quality_flag=`cat ../../cfg/site.cfg | grep "build_quality" | grep "1"`
# Optimize lightmaps if any. Additionnaly, output a file indicating which lightmaps are 8 bits
$lightmap_optimizer ./lightmap ./shape ./tag ./list_lm_8bit.txt
# Convert lightmap in 16 bits mode if they are not 8 bits lightmap
echo ------- >> log.log
echo --- Build shape : convert lightmaps in 16 or 8 bits >> log.log
echo ------- >> log.log
echo -------
echo --- Build shape : convert lightmaps in 16 or 8 bits
echo -------
date >> log.log
date
for i in lightmap/*.[tT][gG][aA] ; do
if ( test -f $i )
then
# Destination file
dest=`echo $i | sed -e 's/lightmap/lightmap_16_bits/g'`
# Convert the lightmap in 16 bits mode
if ( ! test -e $dest ) || ( test $i -nt $dest )
then
fileTest=`echo $i | sed -e 's&lightmap/&&g'`
file8Bit=`cat ./list_lm_8bit.txt | grep "$fileTest"`
if ( test "$file8Bit" = "$fileTest" )
then
echo "export $fileTest in 8bit format"
$tga_2_dds $i -o $dest -a tga8 2>> log.log
else
echo "export $fileTest in 16bit format"
$tga_2_dds $i -o $dest -a tga16 2>> log.log
fi
fi
fi
# Idle
../../idle.bat
done
# Log error
echo ------- >> log.log
echo --- Build shape : build coarse meshes >> log.log
echo ------- >> log.log
echo -------
echo --- Build shape : build coarse meshes
echo -------
date >> log.log
date
# Get the build gamedata directory
build_gamedata_directory=`cat ../../cfg/site.cfg | grep "build_gamedata_directory" | sed -e 's/build_gamedata_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Get texture pathes
map_source_directories=`cat ../../cfg/directories.cfg | grep "map_source_directory" | sed -e 's/map_source_directory//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Get the texture mul size
texture_mul_size_value=`cat ../../cfg/config.cfg | grep "texture_mul_size_value" | sed -e 's/texture_mul_size_value//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Get the coarse mesh texture name
coarse_mesh_texture_names=`cat ../../cfg/config.cfg | grep "coarse_mesh_texture_names" | sed -e 's/coarse_mesh_texture_names//' | sed -e 's/ //g' | sed -e 's/=//g'`
# Copy the config file header
cat cfg/config_header.cfg | sed -e "s/texture_mul_size_value/$texture_mul_size_value/g" > cfg/config_generated.cfg
# Corse meshes for this process ?
if ( test "$coarse_mesh_texture_names" ) then
# Add the shape directory
echo ' "'shape_with_coarse_mesh'"', >> cfg/config_generated.cfg
# For each texture path
for i in $map_source_directories ; do
# Add the path
echo ' "'$database_directory/$i'"', >> cfg/config_generated.cfg
# Idle
../../idle.bat
done
# Add the shape list header
echo '};' >> cfg/config_generated.cfg
echo ' ' >> cfg/config_generated.cfg
echo 'list_mesh =' >> cfg/config_generated.cfg
echo '{' >> cfg/config_generated.cfg
# For each shape with coarse mesh
for i in shape_with_coarse_mesh/*.[sS][hH][aA][pP][eE]; do
if ( test -f $i )
then
# Destination file
src=`echo $i | sed -e 's&shape_with_coarse_mesh/&&g'`
dest=`echo $i | sed -e 's&shape_with_coarse_mesh&shape_with_coarse_mesh_builded&g'`
# Add the shape
echo ' "'$src'", "'$dest'",' >> cfg/config_generated.cfg
# Destination file
dest=`echo $i | sed -e 's/lightmap/lightmap_16_bits/g'`
fi
# Idle
../../idle.bat
done
echo '};' >> cfg/config_generated.cfg
# Add output bitmap list
echo ' ' >> cfg/config_generated.cfg
echo 'output_textures = {' >> cfg/config_generated.cfg
# For each shape with coarse mesh
for i in $coarse_mesh_texture_names ; do
# Add the path
echo ' "shape_with_coarse_mesh/'$i'.tga"', >> cfg/config_generated.cfg
done
# Close the config file
echo '};' >> cfg/config_generated.cfg
# Execute the build
$build_coarse_mesh cfg/config_generated.cfg
# Log error
echo ------- >> log.log
echo --- Build shape : convert coarse texture to dds without mipmaps >> log.log
echo ------- >> log.log
echo -------
echo --- Build shape : convert coarse texture to dds without mipmaps
echo -------
date >> log.log
date
# Convert the coarse texture to dds
for i in $coarse_mesh_texture_names ; do
if ( test -f shape_with_coarse_mesh/$i.tga )
then
$tga_2_dds shape_with_coarse_mesh/$i.tga -o shape_with_coarse_mesh_builded/$i.dds -a 5 2>> log.log
fi
done
else
echo --- No coarse meshes texture defined >> log.log
echo --- No coarse meshes texture defined
fi