@ -36,7 +36,8 @@ def encode():
help = " Output file or directory. If outputting to a file, input filenames must be only a single item. By default, files are decoded in place. " ,
)
@click.argument ( ' filenames ' , nargs = - 1 , type = click . Path ( exists = True , readable = True , dir_okay = False ) )
def encode_format ( encoder , four_cc , flip , remove , suffix , output , filenames ) :
def encode_format ( encoder , four_cc , flip , remove , suffix , output , filenames , swizzle = False ) :
filenames = [ f for f in filenames if not f . endswith ( ' .dds ' ) ]
path_pairs = common . path_pairs ( filenames , output , suffix , ' .dds ' )
with click . progressbar (
@ -48,6 +49,11 @@ def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames):
if flip :
image = image . transpose ( Image . FLIP_TOP_BOTTOM )
if swizzle :
bands = image . split ( )
one = Image . new ( ' L ' , image . size , 0xFF )
image = Image . merge ( ' RGBA ' , ( one , bands [ 1 ] , bands [ 1 ] , bands [ 0 ] ) )
dds . encode ( image , encoder , four_cc ) . save ( outpath )
if remove :
@ -107,8 +113,11 @@ def encode_auto(level, black, threecolor, flip, remove, suffix, output, filename
bc1_encoder = quicktex . s3tc . bc1 . BC1Encoder ( level , mode )
bc3_encoder = quicktex . s3tc . bc3 . BC3Encoder ( level )
filenames = [ f for f in filenames if not f . endswith ( ' .dds ' ) ]
path_pairs = common . path_pairs ( filenames , output , suffix , ' .dds ' )
assert len ( filenames ) > 0
with click . progressbar (
path_pairs , show_eta = False , show_pos = True , item_show_func = lambda x : str ( x [ 0 ] ) if x else ' '
) as bar :
@ -175,9 +184,16 @@ def encode_bc1(level, black, threecolor, **kwargs):
default = 18 ,
help = ' Quality level to use. Higher values = higher quality, but slower. ' ,
)
def encode_bc3 ( level , * * kwargs ) :
@click.option (
' -n/-N ' ,
' --normal/--no-normal ' ,
type = bool ,
default = False ,
help = ' Perform a BC3nm swizzle, copying the red channel into the alpha [default: no-normal] ' ,
)
def encode_bc3 ( level , normal , * * kwargs ) :
""" Encode images to BC4 (RGBA, 8-bit interpolated alpha). """
encode_format . callback ( quicktex . s3tc . bc3 . BC3Encoder ( level ) , ' DXT5 ' , * * kwargs )
encode_format . callback ( quicktex . s3tc . bc3 . BC3Encoder ( level ) , ' DXT5 ' , swizzle = normal , * * kwargs )
@click.command ( ' bc4 ' )