diff --git a/korman/exporter/material.py b/korman/exporter/material.py index 9ddadc9..d189a5e 100644 --- a/korman/exporter/material.py +++ b/korman/exporter/material.py @@ -1266,7 +1266,12 @@ class MaterialConverter: state.shadeFlags |= hsGMatState.kShadeWhite if bm.emit: - state.shadeFlags |= hsGMatState.kShadeEmissive + # Lightmapped emissive layers seem to cause cascading render issues. Skip flagging it + # and just hope that the ambient color bump is good enough. + if bo.plasma_modifiers.lightmap.bake_lightmap: + self._report.warn("A lightmapped and emissive material??? You like living dangerously...", indent=3) + else: + state.shadeFlags |= hsGMatState.kShadeEmissive # Colors layer.ambient = self.get_material_ambient(bo, bm) diff --git a/korman/exporter/mesh.py b/korman/exporter/mesh.py index e8f1ac7..fb2127e 100644 --- a/korman/exporter/mesh.py +++ b/korman/exporter/mesh.py @@ -281,11 +281,10 @@ class MeshConverter(_MeshManager): if check_layer_shading_animation(base_layer): return False - # Reject emissive and shadeless because the kLiteMaterial equation has lots of options - # that are taken away by VtxNonPreshaded that are useful here. + # kShadeWhite (used for shadeless) is not handled for kLiteVtxNonPreshaded if material_idx is not None: bm = mesh.materials[material_idx] - if bm.emit or bm.use_shadeless: + if bm.use_shadeless: return False mods = bo.plasma_modifiers