No need for material tilesheet flag

This commit is contained in:
luboslenco 2019-01-22 12:38:47 +01:00
parent 3c25095c94
commit c81d4949ca
5 changed files with 22 additions and 9 deletions

View file

@ -1964,8 +1964,7 @@ class ArmoryExporter:
elif not bpy.data.worlds['Arm'].arm_minimize:
self.output['name'] += '.json'
# Fix material variants
# Skinned and non-skined objects can not share material
# Create unique material variants for skinning, tilesheets, particles
matvars = []
matslots = []
for bo in scene_objects:
@ -1983,6 +1982,21 @@ class ArmoryExporter:
mat.name = mat_name
matvars.append(mat)
slot.material = mat
elif bo.arm_tilesheet != '':
for slot in bo.material_slots:
if slot.material == None or slot.material.library != None:
continue
if slot.material.name.endswith('_armtile'):
continue
matslots.append(slot)
mat_name = slot.material.name + '_armtile'
mat = bpy.data.materials.get(mat_name)
if mat == None:
mat = slot.material.copy()
mat.name = mat_name
mat.arm_tilesheet_flag = True
matvars.append(mat)
slot.material = mat
# Particle and non-particle objects can not share material
for psys in bpy.data.particles:
bo = psys.instance_object
@ -2175,7 +2189,7 @@ class ArmoryExporter:
# Remove created material variants
for slot in matslots: # Set back to original material
orig_mat = bpy.data.materials[slot.material.name[:-8]] # _armskin or _armpart
orig_mat = bpy.data.materials[slot.material.name[:-8]] # _armskin, _armpart, _armtile
orig_mat.export_uvs = slot.material.export_uvs
orig_mat.export_vcols = slot.material.export_vcols
orig_mat.export_tangents = slot.material.export_tangents

View file

@ -142,7 +142,7 @@ def make(context_id, rpasses, shadowmap=False):
if con_depth.is_elem('tex'):
vert.add_out('vec2 texCoord')
vert.add_uniform('float texUnpack', link='_texUnpack')
if mat_state.material.arm_tilesheet_mat:
if mat_state.material.arm_tilesheet_flag:
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
else:

View file

@ -122,7 +122,7 @@ def make_base(con_mesh, parse_opacity):
if con_mesh.is_elem('tex'):
vert.add_out('vec2 texCoord')
vert.add_uniform('float texUnpack', link='_texUnpack')
if mat_state.material.arm_tilesheet_mat:
if mat_state.material.arm_tilesheet_flag:
if mat_state.material.arm_particle_flag and rpdat.arm_particles == 'GPU':
make_particle.write_tilesheet(vert)
else:
@ -301,7 +301,7 @@ def make_forward_mobile(con_mesh):
if con_mesh.is_elem('tex'):
vert.add_out('vec2 texCoord')
vert.add_uniform('float texUnpack', link='_texUnpack')
if mat_state.material.arm_tilesheet_mat:
if mat_state.material.arm_tilesheet_flag:
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
else:
@ -451,7 +451,7 @@ def make_forward_solid(con_mesh):
if con_mesh.is_elem('tex'):
vert.add_out('vec2 texCoord')
vert.add_uniform('float texUnpack', link='_texUnpack')
if mat_state.material.arm_tilesheet_mat:
if mat_state.material.arm_tilesheet_flag:
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
else:

View file

@ -187,9 +187,9 @@ def init_properties():
('spherical', 'Spherical', 'Spherical'),
('cylindrical', 'Cylindrical', 'Cylindrical')],
name="Billboard", default='off', description="Track camera", update=assets.invalidate_shader_cache)
bpy.types.Material.arm_tilesheet_flag = BoolProperty(name="Tilesheet Flag", description="This material is used for tilesheet", default=False)
bpy.types.Material.arm_particle_flag = BoolProperty(name="Particle Flag", description="This material is used for particles", default=False)
bpy.types.Material.arm_particle_fade = BoolProperty(name="Particle Fade", description="Fade particles in and out", default=False)
bpy.types.Material.arm_tilesheet_mat = BoolProperty(name="Tilesheet", description="Generate tilesheet shaders", default=False)
bpy.types.Material.arm_blending = BoolProperty(name="Blending", description="Enable additive blending", default=False)
bpy.types.Material.arm_blending_source = EnumProperty(
items=[('blend_one', 'One', 'One'),

View file

@ -215,7 +215,6 @@ class MaterialPropsPanel(bpy.types.Panel):
layout.prop(mat, 'arm_custom_material')
layout.prop(mat, 'arm_skip_context')
layout.prop(mat, 'arm_particle_fade')
layout.prop(mat, 'arm_tilesheet_mat')
layout.prop(mat, 'arm_billboard')
layout.prop(mat, 'arm_blending')
col = layout.column()