41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
|
from enum import IntEnum
|
||
|
|
||
|
|
||
|
class EmissionType(IntEnum):
|
||
|
NO_EMISSION = 0
|
||
|
"""The material has no emission at all."""
|
||
|
|
||
|
SHADELESS = 1
|
||
|
"""The material is emissive and does not interact with lights/shadows."""
|
||
|
|
||
|
SHADED = 2
|
||
|
"""The material is emissive and interacts with lights/shadows."""
|
||
|
|
||
|
@staticmethod
|
||
|
def get_effective_combination(a: 'EmissionType', b: 'EmissionType') -> 'EmissionType':
|
||
|
# Shaded emission always has precedence over shadeless emission
|
||
|
if a == EmissionType.SHADED or b == EmissionType.SHADED:
|
||
|
return EmissionType.SHADED
|
||
|
|
||
|
if a == EmissionType.SHADELESS and b == EmissionType.SHADELESS:
|
||
|
return EmissionType.SHADELESS
|
||
|
|
||
|
# If only one input is shadeless we still need shaded emission
|
||
|
if a == EmissionType.SHADELESS or b == EmissionType.SHADELESS:
|
||
|
return EmissionType.SHADED
|
||
|
|
||
|
return EmissionType.NO_EMISSION
|
||
|
|
||
|
|
||
|
data = None # ShaderData
|
||
|
material = None
|
||
|
nodes = None
|
||
|
mat_users = None
|
||
|
bind_constants = None # Merged with mat_context bind constants
|
||
|
bind_textures = None # Merged with mat_context bind textures
|
||
|
batch = False
|
||
|
texture_grad = False # Sample textures using textureGrad()
|
||
|
con_mesh = None # Mesh context
|
||
|
uses_instancing = False # Whether the current material has at least one user with instancing enabled
|
||
|
emission_type = EmissionType.NO_EMISSION
|