add options to not generate mipmaps and dont delete if input=output

main
Andrew Cassidy 3 years ago
parent 57bfefd5be
commit 8c320b4ede

@ -10,8 +10,12 @@ def flip(file, output):
result = subprocess.run([convertcmd, '-flip', file, output], capture_output=True) result = subprocess.run([convertcmd, '-flip', file, output], capture_output=True)
result.check_returncode() result.check_returncode()
def nvcompress(format, file, output): def nvcompress(format, file, output, mips = True):
result = subprocess.run([compresscmd, format, file, output], capture_output=True) args = [format]
if not mips:
args.append('-nomips')
result = subprocess.run([compresscmd] + args + [file, output], capture_output=True)
result.check_returncode() result.check_returncode()
def nvdecompress(file, output): def nvdecompress(file, output):

@ -10,6 +10,7 @@ import dds
parser = argparse.ArgumentParser(description="Converts any number of textures to dds format. automatically chooses dxt1 or dxt5 depending on if the source image has anything in its alpha channel.") parser = argparse.ArgumentParser(description="Converts any number of textures to dds format. automatically chooses dxt1 or dxt5 depending on if the source image has anything in its alpha channel.")
parser.add_argument('files', type=str, nargs='*', help = "input texture files") parser.add_argument('files', type=str, nargs='*', help = "input texture files")
parser.add_argument('--format', type=str, choices=['auto', 'DXT1', 'DXT5'], default = "auto", help = "output texture format (default: %(default)s)") parser.add_argument('--format', type=str, choices=['auto', 'DXT1', 'DXT5'], default = "auto", help = "output texture format (default: %(default)s)")
parser.add_argument('--nomips', '-n', dest='mips', action='store_false', help = "Do not generate mipmaps")
parser.add_argument('--convertcmd', type=str, metavar='CMD', default="convert", help="name of imagemagick's convert tool (default: %(default)s)") parser.add_argument('--convertcmd', type=str, metavar='CMD', default="convert", help="name of imagemagick's convert tool (default: %(default)s)")
parser.add_argument('--compresscmd', type=str, metavar='CMD', default="nvcompress", help="name of the nvidia dds compress tool (default: %(default)s)") parser.add_argument('--compresscmd', type=str, metavar='CMD', default="nvcompress", help="name of the nvidia dds compress tool (default: %(default)s)")
@ -26,11 +27,12 @@ with tempfile.TemporaryDirectory() as tempDir:
output = os.path.splitext(file)[0] + ".dds" output = os.path.splitext(file)[0] + ".dds"
dds.flip(file, tmpOutput) dds.flip(file, tmpOutput)
if (args.format == "auto" and dds.alpha(file) < 255) or args.format == "DXT5": if (args.format == "auto" and dds.alpha(file) < 255) or args.format == "DXT5":
format = "-bc3" format = "-bc3"
else: else:
format = "-bc1" format = "-bc1"
dds.nvcompress(format, tmpOutput, output) dds.nvcompress(format, tmpOutput, output, args.mips)
os.remove(file) if os.path.basename(file) != os.path.basename(output):
os.remove(file)

@ -20,4 +20,5 @@ for argv in args.files:
output = os.path.splitext(file)[0] + f".tga" output = os.path.splitext(file)[0] + f".tga"
dds.nvdecompress(file, output) dds.nvdecompress(file, output)
os.remove(file) if os.path.basename(file) != os.path.basename(output):
os.remove(file)
Loading…
Cancel
Save