X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_texture.py;h=dd8191ce9f108652b2924ee1a77fbd0197d0f94c;hp=bb3eb28d243ae79a86503dc2bc1e9258adb3d184;hb=6ac405143184ff9f8e8114183a2d8f7b224d2779;hpb=ea3e95735fcd9d6a80d23dbd90667eb2f1c95ef4 diff --git a/blender/io_mspgl/export_texture.py b/blender/io_mspgl/export_texture.py index bb3eb28d..dd8191ce 100644 --- a/blender/io_mspgl/export_texture.py +++ b/blender/io_mspgl/export_texture.py @@ -1,13 +1,43 @@ +import os + class TextureExporter: + def __init__(self): + self.inline_data = True + def export_texture(self, texture): from .datafile import Resource, Statement, Token tex_res = Resource(texture.name+".tex2d") - tex_res.statements.append(Statement("min_filter", Token("LINEAR"))) - tex_res.statements.append(Statement("storage", Token("RGBA"), texture.image.size[0], texture.image.size[1])) - texdata = "" - for p in texture.image.pixels: - texdata += "\\x%02X"%int(p*255) - tex_res.statements.append(Statement("raw_data", texdata)) + if texture.use_interpolation: + if texture.use_mipmap: + tex_res.statements.append(Statement("filter", Token('LINEAR_MIPMAP_LINEAR'))) + tex_res.statements.append(Statement("generate_mipmap", True)) + else: + tex_res.statements.append(Statement("filter", Token('LINEAR'))) + tex_res.statements.append(Statement("max_anisotropy", texture.filter_eccentricity)) + else: + if texture.use_mipmap: + tex_res.statements.append(Statement("filter", Token('NEAREST_MIPMAP_NEAREST'))) + tex_res.statements.append(Statement("generate_mipmap", True)) + else: + tex_res.statements.append(Statement("filter", Token('NEAREST'))) + + fn = os.path.basename(texture.image.filepath) + if not self.inline_data and fn: + tex_res.statements.append(Statement("external_image", fn)) + else: + texdata = "" + colorspace = texture.image.colorspace_settings.name + if texture.use_alpha: + fmt = 'SRGB_ALPHA' if colorspace=='sRGB' else 'RGBA' + for p in texture.image.pixels: + texdata += "\\x{:02X}".format(int(p*255)) + else: + fmt = 'SRGB' if colorspace=='sRGB' else 'RGB' + for i in range(0, len(texture.image.pixels), 4): + for j in range(3): + texdata += "\\x{:02X}".format(int(texture.image.pixels[i+j]*255)) + tex_res.statements.append(Statement("storage", Token(fmt), texture.image.size[0], texture.image.size[1])) + tex_res.statements.append(Statement("raw_data", texdata)) return tex_res