]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/export_material.py
Use filtering options from Blender texture
[libs/gl.git] / blender / io_mspgl / export_material.py
index 86fce780c00b22e151aaa04ee79f0941d2ddf3a8..3f0117d40a210909ce5075ec9b952e68619d661a 100644 (file)
@@ -12,27 +12,26 @@ def get_colormap(srgb):
        else:
                return lambda x: x
 
-def image_name(i):
-       fp = i.filepath
-       if fp:
-               return os.path.split(fp)[1]
-       else:
-               return i.name
-
 
 class MaterialExporter:
        def __init__(self):
                self.textures = 'REF'
 
-       def export_technique_resources(self, material, resources):
+       def create_texture_exporter(self):
                from .export_texture import TextureExporter
                texture_export = TextureExporter()
+               if self.textures=='INLINE':
+                       texture_export.pixels = 'INLINE'
+               return texture_export
+
+       def export_technique_resources(self, material, resources):
+               texture_export = self.create_texture_exporter()
 
                mat_name = material.name+".mat"
                if mat_name not in resources:
                        resources[mat_name] = self.export_material(material)
 
-               if self.textures=='INLINE':
+               if self.textures!='NONE':
                        for s in material.texture_slots:
                                if s and s.texture.type=='IMAGE' and s.texture.image:
                                        tex_name = s.texture.name+".tex2d"
@@ -59,7 +58,10 @@ class MaterialExporter:
 
                        st = Statement("inherit", material.technique)
                        for s, t in textures.items():
-                               st.sub.append(Statement("texture", s, image_name(t.image)))
+                               if t.default_filter:
+                                       st.sub.append(Statement("texture", s, image_name(t.image)))
+                               else:
+                                       st.sub.append(tech_res.create_reference_statement("texture", s, resources[t.name+".tex2d"]))
                        if material.override_material:
                                st.sub.append(tech_res.create_reference_statement("material", "surface", mat_res))
                        tech_res.statements.append(st)
@@ -69,9 +71,12 @@ class MaterialExporter:
 
                        if "diffuse_map" in textures:
                                diffuse_tex = textures["diffuse_map"]
+                               tex_res = resources[diffuse_tex.name+".tex2d"]
                                ss = Statement("texunit", 0)
                                if self.textures=='INLINE':
-                                       ss.sub.append(tech_res.create_embed_statement("texture2d", resources[diffuse_tex.name+".tex2d"]))
+                                       ss.sub.append(tech_res.create_embed_statement("texture2d", tex_res))
+                               elif not diffuse_tex.default_filter:
+                                       ss.sub.append(tech_res.create_reference_statement("texture2d", tex_res))
                                else:
                                        ss.sub.append(Statement("texture", image_name(diffuse_tex.image)))
                                st.sub.append(ss)