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
							 |