Skip to content
Snippets Groups Projects
__init__.py 163 KiB
Newer Older
  • Learn to ignore specific revisions
  •             min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
                
        diffuse_ramp_input: EnumProperty(
                name="Input",
                description="How the ramp maps on the surface",   
                items=(("SHADER", "Shader", ""),
                       ("ENERGY", "Energy", ""),
                       ("NORMAL", "Normal", ""),
                       ("RESULT", "Result", "")),
                default="SHADER")
                
        diffuse_shader: EnumProperty(
                name="Diffuse Shader Model",
                description="How the ramp maps on the surface",   
                items=(("LAMBERT", "Lambert", "Use a Lambertian shader"),
                       ("OREN_NAYAR", "Oren-Nayar", "Use an Oren-Nayar shader"),
                       ("MINNAERT", "Minnaert", "Use a Minnaert shader"),
                       ("FRESNEL", "Fresnel", "Use a Fresnel shader")),
                default="LAMBERT")
    
        diffuse_toon_size: FloatProperty(
                name="Size",
                description="Size of diffuse toon area",
                min=0.0, max=3.14, soft_min=0.0, soft_max=3.14, default=0.5, precision=3)
                
        diffuse_toon_smooth: FloatProperty(
                name="Smooth",
                description="Smoothness of diffuse toon area",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.1, precision=3)
    
        emit: FloatProperty(
                name="Emit",
                description="Amount of light to emit",
                min=0.0, soft_min=0.0, #max=inf, soft_max=inf,
                default=0.0, precision=3)
    
        mirror_color: FloatVectorProperty(
                name="Mirror color",
                description=("Mirror color of the material"),
                precision=4, step=0.01, min=0, #max=inf, soft_max=1,
                default=(0.6,0.6,0.6), options={'ANIMATABLE'}, subtype='COLOR')
                
        roughness: FloatProperty(
                name="Roughness",
                description="Oren-Nayar Roughness",
                min=0.0, max=3.14, soft_min=0.0, soft_max=3.14, default=0.5, precision=3)
    
        halo: BoolProperty(
                name="Halo", description=" Halo settings for the material",
                default=False)
                #(was readonly in Blender2.79, never None)
                
        line_color: FloatVectorProperty(
                name="Line color",
                description=("Line color used for Freestyle line rendering"),
                precision=4, step=0.01, min=0, #max=inf, soft_max=1,
                default=(0.0,0.0,0.0), options={'ANIMATABLE'}, subtype='COLOR')
    
        #diffuse_ramp:
        ##Color ramp used to affect diffuse shading
                ##Type:	ColorRamp, (readonly)    
        
                #cr_node = bpy.data.materials['Material'].node_tree.nodes['ColorRamp']
                #layout.template_color_ramp(cr_node, "color_ramp", expand=True)
                
                #ou
                
                #class bpy.types.ColorRamp(bpy_struct)            
    
        line_priority: IntProperty(
                name="Recursion Limit",
                description="The line color of a higher priority is used at material boundaries",
                min=0, max=32767, default=0)
                
        specular_color: FloatVectorProperty(
                name="Specular color",
                description=("Specular color of the material "),
                precision=4, step=0.01, min=0, #max=inf, soft_max=1,
                default=(1.0,1.0,1.0), options={'ANIMATABLE'}, subtype='COLOR')
    
        specular_hardness: IntProperty(
                name="Hardness",
                description="How hard (sharp) the specular reflection is",
                min=1, max=511, default=50)
                
        specular_intensity: FloatProperty(
                name="Intensity",
                description="How intense (bright) the specular reflection is",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.5, precision=3)
    
    
        specular_ior: FloatProperty(
                name="IOR",
                description="Specular index of refraction",
                min=-10.0, max=10.0, soft_min=0.0, soft_max=10.0, default=1.0, precision=3)
    
        ior: FloatProperty(
                name="IOR",
                description="Index of refraction",
                min=-10.0, max=10.0, soft_min=0.0, soft_max=10.0, default=1.0, precision=3)   
    
    
        specular_shader: EnumProperty(
                name="Specular Shader Model",
                description="How the ramp maps on the surface",   
                items=(("COOKTORR", "CookTorr", "Use a Cook-Torrance shader"),
                       ("PHONG", "Phong", "Use a Phong shader"),
                       ("BLINN", "Blinn", "Use a Blinn shader"),
                       ("TOON", "Toon", "Use a Toon shader"),
                       ("WARDISO", "WardIso", "Use a Ward anisotropic shader")),
                default="COOKTORR")           
    
        specular_slope: FloatProperty(
                name="Slope",
                description="The standard deviation of surface slope",
                min=0.0, max=0.4, soft_min=0.0, soft_max=0.4, default=0.1, precision=3)
    
        specular_toon_size: FloatProperty(
                name="Size",
                description="Size of specular toon area",
                min=0.0, max=0.53, soft_min=0.0, soft_max=0.53, default=0.5, precision=3)
    
        specular_toon_smooth: FloatProperty(
                name="Smooth",
                description="Smoothness of specular toon area",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.1, precision=3)
                
                
        translucency: FloatProperty(
                name="Translucency",
                description="Amount of diffuse shading on the back side",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.0, precision=3)
                
        transparency_method: EnumProperty(
                name="Specular Shader Model",
                description="Method to use for rendering transparency",   
                items=(("MASK", "Mask", "Mask the background"),
                       ("Z_TRANSPARENCY", "Z Transparency", "Use alpha buffer for transparent faces"),#TO DEPRECATE
                       ("RAYTRACE", "Raytrace", "Use raytracing for transparent refraction rendering")),
                default="MASK")
                
        type: EnumProperty(
                name="Type",
                description="Material type defining how the object is rendered",   
                items=(("SURFACE", "Surface", "Render object as a surface"),
                       ("WIRE", "Wire", "Render the edges of faces as wires (not supported in raytracing)"),#TO UPDATE > USE MACRO AND CHNGE DESCRIPTION
                       ("VOLUME", "Volume", "Render object as a volume"),
                       ("‘HALO’", "Halo", "Render object as halo particles")), #TO UPDATE > USE MACRO AND CHNGE DESCRIPTION
                default="SURFACE")
                
        use_cast_shadows: BoolProperty(
                name="Cast", description="Allow this material to cast shadows",
                default=True)
                
        use_cast_shadows_only: BoolProperty(
                name="Cast Only", description="Make objects with this material "
                                              "appear invisible (not rendered), only "
                                              "casting shadows",
                default=False)
                
        use_cubic: BoolProperty(
                name="Cubic Interpolation", description="Use cubic interpolation for diffuse "
                                                        "values, for smoother transitions",
                default=False)
    
        use_diffuse_ramp: BoolProperty(
                name="Ramp", description="Toggle diffuse ramp operations",
                default=False)
                
        use_light_group_exclusive: BoolProperty(
                name="Exclusive", description="Material uses the light group exclusively"
                                              "- these lamps are excluded from other "
                                              "scene lighting",
                default=False)
                
        use_light_group_local: BoolProperty(
                name="Local", description="When linked in, material uses local light"
                                          " group with the same name",
                default=False)
                
        use_mist: BoolProperty(
                name="Use Mist", description="Use mist with this material "
                                          "(in world settings)",
                default=True)
                
        use_nodes: BoolProperty(
                name="Nodes", description="Use shader nodes to render the material",#Add Icon in UI or here? icon='NODES'
                default=False)
                
        use_object_color: BoolProperty(
                name="Object Color", description="Modulate the result with a per-object color",
                default=False)
                
        use_only_shadow: BoolProperty(
                name="Shadows Only", description="Render shadows as the material’s alpha "
                                                 "value, making the material transparent "
                                                 "except for shadowed areas",
                default=False)
                
        use_shadeless: BoolProperty(
                name="Shadeless", description="Make this material insensitive to "
                                              "light or shadow",
                default=False)
                
        use_shadows: BoolProperty(
                name="Receive", description="Allow this material to receive shadows",
                default=True)
    
        use_sky: BoolProperty(
                name="Sky", description="Render this material with zero alpha, "
                                            "with sky background in place (scanline only)",
                default=False)
                
        use_specular_ramp: BoolProperty(
                name="Ramp", description="Toggle specular ramp operations",
                default=False)
                
        use_tangent_shading: BoolProperty(
                name="Tangent Shading", description="Use the material’s tangent vector instead"
                                         "of the normal for shading - for "
                                         "anisotropic shading effects",
                default=False)
                
        use_transparent_shadows: BoolProperty(
                name="Receive Transparent", description="Allow this object to receive transparent "
                                                        "shadows cast through other object",
                default=False) #linked to fake caustics
                
        use_vertex_color_light: BoolProperty(
                name="Vertex Color Light", description="Add vertex colors as additional lighting",
                default=False)
                
        use_vertex_color_paint: BoolProperty(
                name="Vertex Color Paint", description="Replace object base color with vertex "
                                                       "colors (multiply with ‘texture face’ "
                                                       "face assigned textures)",
                default=False)
    
        
        specular_ramp_blend: EnumProperty(
                name="Specular ramp blend",
                description="Blending method of the ramp and the specular color",   
                items=(("MIX", "Mix", ""),
                       ("ADD", "Add", ""),
                       ("MULTIPLY", "Multiply", ""),
                       ("SUBTRACT", "Subtract", ""),
                       ("SCREEN", "Screen", ""),
                       ("DIVIDE", "Divide", ""),
                       ("DIFFERENCE", "Difference", ""),
                       ("DARKEN", "Darken", ""),
                       ("LIGHTEN", "Lighten", ""),
                       ("OVERLAY", "Overlay", ""),
                       ("DODGE", "Dodge", ""),
                       ("BURN", "Burn", ""),
                       ("HUE", "Hue", ""),
                       ("SATURATION", "Saturation", ""),
                       ("VALUE", "Value", ""),
                       ("COLOR", "Color", ""),
                       ("SOFT_LIGHT", "Soft light", ""),
                       ("LINEAR_LIGHT", "Linear light", "")),
                default="MIX")
    
        specular_ramp_factor: FloatProperty(
                name="Factor",
                description="Blending factor (also uses alpha in Colorband)",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
                
        specular_ramp_input: EnumProperty(
                name="Input",
                description="How the ramp maps on the surface",   
                items=(("SHADER", "Shader", ""),
                       ("ENERGY", "Energy", ""),
                       ("NORMAL", "Normal", ""),
                       ("RESULT", "Result", "")),
                default="SHADER")            
    
    
    
        irid_enable: BoolProperty(
    
                description="Newton's thin film interference (like an oil slick on a puddle of "
    
                            "water or the rainbow hues of a soap bubble.)",
    
        mirror_use_IOR: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Correct Reflection",
    
                description="Use same IOR as raytrace transparency to calculate mirror reflections. "
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=False)
    
    
        mirror_metallic: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Metallic Reflection",
                description="mirror reflections get colored as diffuse (for metallic materials)",
                default=False)
    
    
        conserve_energy: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Conserve Energy",
    
                description="Light transmitted is more correctly reduced by mirror reflections, "
    
                            "also the sum of diffuse and translucency gets reduced below one ",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=True)
    
    
        irid_amount: FloatProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="amount",
    
                description="Contribution of the iridescence effect to the overall surface color. "
                            "As a rule of thumb keep to around 0.25 (25% contribution) or less, "
                            "but experiment. If the surface is coming out too white, try lowering "
    
                            "the diffuse and possibly the ambient values of the surface",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=0.0, max=1.0, soft_min=0.01, soft_max=1.0, default=0.25)
    
    
        irid_thickness: FloatProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="thickness",
    
                description="A very thin film will have a high frequency of color changes while a "
    
                            "thick film will have large areas of color",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1)
    
    
        irid_turbulence: FloatProperty(
    
                name="turbulence", description="This parameter varies the thickness",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=0.0, max=10.0, soft_min=0.000, soft_max=1.0, default=0)
    
    
        interior_fade_color: FloatVectorProperty(
    
                name="Interior Fade Color", description="Color of filtered attenuation for transparent "
    
                precision=4, step=0.01, min=0.0, soft_max=1.0,
                default=(0, 0, 0), options={'ANIMATABLE'}, subtype='COLOR')
    
    
        caustics_enable: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Caustics",
    
                description="use only fake refractive caustics (default) or photon based "
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=True)
    
    
        fake_caustics: BoolProperty(
    
                name="Fake Caustics", description="use only (Fast) fake refractive caustics",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=True)
    
    
        fake_caustics_power: FloatProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Fake caustics power",
    
                description="Values typically range from 0.0 to 1.0 or higher. Zero is no caustics. "
                            "Low, non-zero values give broad hot-spots while higher values give "
    
                min=0.00, max=10.0, soft_min=0.00, soft_max=5.0, default=0.07)
    
        refraction_caustics: BoolProperty(
    
                name="Refractive Caustics", description="hotspots of light focused when going through the material",
                default=True)
    
        photons_dispersion: FloatProperty(
    
                description="Light passing through will be separated according to wavelength. "
                            "This ratio of refractive indices for violet to red controls how much "
    
                            "the colors are spread out 1 = no dispersion, good values are 1.01 to 1.1",
    
                min=1.0000, max=10.000, soft_min=1.0000, soft_max=1.1000, precision=4, default=1.0000)
    
        photons_dispersion_samples: IntProperty(
    
                name="Dispersion Samples", description="Number of color-steps for dispersion",
                min=2, max=128, default=7)
    
    
        photons_reflection: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Reflective Photon Caustics",
                description="Use this to make your Sauron's ring ;-P",
                default=False)
    
    
        refraction_type: EnumProperty(
    
                       ("1", "Fake Caustics", "use fake caustics"),
    
                       ("2", "Photons Caustics", "use photons for refractive caustics")],
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                description="use fake caustics (fast) or true photons for refractive Caustics",
    
        ##################################CustomPOV Code############################
    
        replacement_text: StringProperty(
    
                description="Type the declared name in custom POV code or an external "
    
        def use_material_nodes_callback(self, context):
            if hasattr(context.space_data, "tree_type"):
                context.space_data.tree_type = 'ObjectNodeTree'
            mat=context.object.active_material
            if mat.pov.material_use_nodes:
                mat.use_nodes=True
                tree = mat.node_tree
                tree.name=mat.name
                links = tree.links
                default = True
                if len(tree.nodes) == 2:
                    o = 0
                    m = 0
                    for node in tree.nodes:
                        if node.type in {"OUTPUT","MATERIAL"}:
                            tree.nodes.remove(node)
                            default = True
                    for node in tree.nodes:
                        if node.bl_idname == 'PovrayOutputNode':
                            o+=1
                        if node.bl_idname == 'PovrayTextureNode':
                            m+=1
                    if o == 1 and m == 1:
                        default = False
                elif len(tree.nodes) == 0:
                    default = True
                else:
                    default = False
                if default:
                    output = tree.nodes.new('PovrayOutputNode')
                    output.location = 200,200
                    tmap = tree.nodes.new('PovrayTextureNode')
                    tmap.location = 0,200
                    links.new(tmap.outputs[0],output.inputs[0])
                    tmap.select = True
    
                    tree.nodes.active = tmap
    
            else:
                mat.use_nodes=False
    
    
        def use_texture_nodes_callback(self, context):
            tex=context.object.active_material.active_texture
            if tex.pov.texture_use_nodes:
                tex.use_nodes=True
                if len(tex.node_tree.nodes)==2:
                    for node in tex.node_tree.nodes:
                        if node.type in {"OUTPUT","CHECKER"}:
                            tex.node_tree.nodes.remove(node)
            else:
                tex.use_nodes=False
    
        def node_active_callback(self, context):
            items = []
            mat=context.material
            mat.node_tree.nodes
            for node in mat.node_tree.nodes:
                node.select=False
            for node in mat.node_tree.nodes:
                if node.name==mat.pov.material_active_node:
                    node.select=True
                    mat.node_tree.nodes.active=node
    
                    return node
    
        def node_enum_callback(self, context):
            items = []
            mat=context.material
            nodes=mat.node_tree.nodes
            for node in nodes:
                items.append(("%s"%node.name,"%s"%node.name,""))
            return items
    
        def pigment_normal_callback(self, context):
            render = context.scene.pov.render
            items = [("pigment", "Pigment", ""),("normal", "Normal", "")]
            if render == 'hgpovray':
                items = [("pigment", "Pigment", ""),("normal", "Normal", ""),("modulation", "Modulation", "")]
            return items
    
        def glow_callback(self, context):
            scene = context.scene
            ob = context.object
            ob.pov.mesh_write_as_old = ob.pov.mesh_write_as
            if scene.pov.render == 'uberpov' and ob.pov.glow:
                ob.pov.mesh_write_as = 'NONE'
            else:
                ob.pov.mesh_write_as = ob.pov.mesh_write_as_old
    
    
        material_use_nodes: BoolProperty(name="Use nodes", description="", update=use_material_nodes_callback, default=False)
        material_active_node: EnumProperty(name="Active node", description="", items=node_enum_callback, update=node_active_callback)
        preview_settings: BoolProperty(name="Preview Settings", description="",default=False)
        object_preview_transform: BoolProperty(name="Transform object", description="",default=False)
        object_preview_scale: FloatProperty(name="XYZ", min=0.5, max=2.0, default=1.0)
        object_preview_rotate: FloatVectorProperty(name="Rotate", description="", min=-180.0, max=180.0,default=(0.0,0.0,0.0), subtype='XYZ')
        object_preview_bgcontrast: FloatProperty(name="Contrast", min=0.0, max=1.0, default=0.5)
    
    
    #TODO?: class MaterialRaytraceTransparency(PropertyGroup):    
    
        
    class MaterialRaytraceMirror(PropertyGroup):
        bl_description = "Raytraced reflection settings for the Material",  
        use: BoolProperty(
                name="Mirror", 
                description="Enable raytraced reflections",
                default=False)
                
    
        depth: IntProperty(
                name="Depth",
                description="Maximum allowed number of light inter-reflections",
                min=0, max=32767, default=2)
    
        distance: FloatProperty(
                name="Max Dist",
                description="Maximum distance of reflected rays "
                            "(reflections further than this range "
                            "fade to sky color or material color)",
                min=0.0, max=100000.0, soft_min=0.0, soft_max=10000.0, default=0.0, precision=3)
    
        fade_to: EnumProperty(
                items=[
                       ("FADE_TO_SKY", "Fade to sky", ""),
                       ("FADE_TO_MATERIAL", "Fade to material color", "")],
                name="Fade-out Color",
                description="The color that rays with no intersection within the "
                            "Max Distance take (material color can be best for "
                            "indoor scenes, sky color for outdoor)",
                default="FADE_TO_SKY")
    
        fresnel: FloatProperty(
                name="Fresnel",
                description="Power of Fresnel for mirror reflection",
                min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=0.0, precision=3)
    
        fresnel_factor: FloatProperty(
                name="Blend",
                description="Blending factor for Fresnel",
                min=0.0, max=5.0, soft_min=0.0, soft_max=5.0, default=1.250, precision=3)
    
        gloss_anisotropic: FloatProperty(
                name="Anisotropic",
                description="The shape of the reflection, from 0.0 (circular) "
                            "to 1.0 (fully stretched along the tangent",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
    
        gloss_factor: FloatProperty(
                name="Amount",
                description="The shininess of the reflection  "
                            "(values < 1.0 give diffuse, blurry reflections)",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
    
        gloss_samples: IntProperty(
                name="Samples",
                description="Number of cone samples averaged for blurry reflections",
                min=0, max=1024, default=18)
    
        gloss_threshold: FloatProperty(
                name="Threshold",
                description="Threshold for adaptive sampling (if a sample "
                            "contributes less than this amount [as a percentage], "
                            "sampling is stopped)",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.005, precision=3)
    
    
        mirror_color: FloatVectorProperty(
                name="Mirror color",
                description=("Mirror color of the material"),
                precision=4, step=0.01,
                default=(1.0,1.0,1.0), options={'ANIMATABLE'}, subtype='COLOR')
                
    
        reflect_factor: FloatProperty(
                name="Reflectivity",
                description="Amount of mirror reflection for raytrace",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
                
    class MaterialSubsurfaceScattering(PropertyGroup):
        bl_description = "Subsurface scattering settings for the material",          
    
        use: BoolProperty(
                name="Subsurface Scattering", 
                description="Enable diffuse subsurface scatting "
                            "effects in a material",
                default=False)
    
                
                
        back: FloatProperty(
                name="Back",
                description="Back scattering weight",
                min=0.0, max=10.0, soft_min=0.0, soft_max=10.0, default=1.0, precision=3)
    
    
        color: FloatVectorProperty(
                name="Scattering color",
                description=("Scattering color"),
                precision=4, step=0.01,
                default=(0.604,0.604,0.604), options={'ANIMATABLE'}, subtype='COLOR')
    
        color_factor: FloatProperty(
                name="Color",
                description="Blend factor for SSS colors",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=1.0, precision=3)
    
        error_threshold: FloatProperty(
                name="Error",
                description="Error tolerance (low values are slower and higher quality)",
                default=0.050, precision=3)
    
        front: FloatProperty(
                name="Front",
                description="Front scattering weight",
                min=0.0, max=2.0, soft_min=0.0, soft_max=2.0, default=1.0, precision=3)
    
        ior: FloatProperty(
                name="IOR", description="Index of refraction (higher values are denser)",
                min=-10.0, max=10.0,default=1.3)
    
        radius: FloatVectorProperty(
                name="RGB Radius",
                description=("Mean red/green/blue scattering path length"),
                precision=4, step=0.01, min=0.001,
                default=(1.0,1.0,1.0), options={'ANIMATABLE'})
    
        scale: FloatProperty(
                name="Scale",
                description="Object scale factor",
                default=0.100, precision=3)
    
        texture_factor: FloatProperty(
                name="Texture",
                description="Texture scattering blend factor",
                min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.0, precision=3)
                    
                # halo
    
                    # Halo settings for the material
                    # Type:	MaterialHalo, (readonly, never None)            
                # alpha¶
    
                    # Alpha transparency of the material
                    # Type:	float in [0, 1], default 0.0
    
                # ambient
    
                    # Amount of global ambient color the material receives
                    # Type:	float in [0, 1], default 0.0
    
                # darkness
    
                    # Minnaert darkness
                    # Type:	float in [0, 2], default 0.0
    
                # diffuse_color
    
                    # Diffuse color of the material
                    # Type:	float array of 3 items in [0, inf], default (0.0, 0.0, 0.0)
    
                # diffuse_fresnel
    
                    # Power of Fresnel
                    # Type:	float in [0, 5], default 0.0
    
                # diffuse_fresnel_factor
    
                    # Blending factor of Fresnel
                    # Type:	float in [0, 5], default 0.0
    
                # diffuse_intensity
    
                    # Amount of diffuse reflection
                    # Type:	float in [0, 1], default 0.0
    
                # diffuse_ramp
    
                    # Color ramp used to affect diffuse shading
                    # Type:	ColorRamp, (readonly)
    
                # diffuse_ramp_blend
    
                    # Blending method of the ramp and the diffuse color
                    # Type:	enum in [‘MIX’, ‘ADD’, ‘MULTIPLY’, ‘SUBTRACT’, ‘SCREEN’, ‘DIVIDE’, ‘DIFFERENCE’, ‘DARKEN’, ‘LIGHTEN’, ‘OVERLAY’, ‘DODGE’, ‘BURN’, ‘HUE’, ‘SATURATION’, ‘VALUE’, ‘COLOR’, ‘SOFT_LIGHT’, ‘LINEAR_LIGHT’], default ‘MIX’
    
                # diffuse_ramp_factor
    
                    # Blending factor (also uses alpha in Colorband)
                    # Type:	float in [0, 1], default 0.0
    
                # diffuse_ramp_input
    
                    # How the ramp maps on the surface
                    # Type:	enum in [‘SHADER’, ‘ENERGY’, ‘NORMAL’, ‘RESULT’], default ‘SHADER’
    
                # diffuse_shader
    
                        # LAMBERT Lambert, Use a Lambertian shader.
                        # OREN_NAYAR Oren-Nayar, Use an Oren-Nayar shader.
                        # TOON Toon, Use a toon shader.
                        # MINNAERT Minnaert, Use a Minnaert shader.
                        # FRESNEL Fresnel, Use a Fresnel shader.
    
                    # Type:	enum in [‘LAMBERT’, ‘OREN_NAYAR’, ‘TOON’, ‘MINNAERT’, ‘FRESNEL’], default ‘LAMBERT’
    
                # diffuse_toon_size
    
                    # Size of diffuse toon area
                    # Type:	float in [0, 3.14], default 0.0
    
                # diffuse_toon_smooth
    
                    # Smoothness of diffuse toon area
                    # Type:	float in [0, 1], default 0.0
    
                # emit
    
                    # Amount of light to emit
                    # Type:	float in [0, inf], default 0.0
    
                # game_settings
    
                    # Game material settings
                    # Type:	MaterialGameSettings, (readonly, never None)
    
                # halo
    
                    # Halo settings for the material
                    # Type:	MaterialHalo, (readonly, never None)
    
                # invert_z
    
                    # Render material’s faces with an inverted Z buffer (scanline only)
                    # Type:	boolean, default False
    
                # light_group
    
                    # Limit lighting to lamps in this Group
                    # Type:	Group
    
                # line_color
    
                    # Line color used for Freestyle line rendering
                    # Type:	float array of 4 items in [0, inf], default (0.0, 0.0, 0.0, 0.0)
    
                # line_priority
    
                    # The line color of a higher priority is used at material boundaries
                    # Type:	int in [0, 32767], default 0
    
                # mirror_color
    
                    # Mirror color of the material
                    # Type:	float array of 3 items in [0, inf], default (0.0, 0.0, 0.0)
    
                # node_tree
    
                    # Node tree for node based materials
                    # Type:	NodeTree, (readonly)
    
                # offset_z
    
                    # Give faces an artificial offset in the Z buffer for Z transparency
                    # Type:	float in [-inf, inf], default 0.0
    
                # paint_active_slot
    
                    # Index of active texture paint slot
                    # Type:	int in [0, 32767], default 0
    
                # paint_clone_slot
    
                    # Index of clone texture paint slot
                    # Type:	int in [0, 32767], default 0
    
                # pass_index
    
                    # Index number for the “Material Index” render pass
                    # Type:	int in [0, 32767], default 0
    
                # physics
    
                    # Game physics settings
                    # Type:	MaterialPhysics, (readonly, never None)
    
                # preview_render_type
    
                    # Type of preview render
    
                        # FLAT Flat, Flat XY plane.
                        # SPHERE Sphere, Sphere.
                        # CUBE Cube, Cube.
                        # MONKEY Monkey, Monkey.
                        # HAIR Hair, Hair strands.
                        # SPHERE_A World Sphere, Large sphere with sky.
    
                    # Type:	enum in [‘FLAT’, ‘SPHERE’, ‘CUBE’, ‘MONKEY’, ‘HAIR’, ‘SPHERE_A’], default ‘FLAT’
    
                # raytrace_mirror
    
                    # Raytraced reflection settings for the material
                    # Type:	MaterialRaytraceMirror, (readonly, never None)
    
                # raytrace_transparency
    
                    # Raytraced transparency settings for the material
                    # Type:	MaterialRaytraceTransparency, (readonly, never None)
    
                # roughness
    
                    # Oren-Nayar Roughness
                    # Type:	float in [0, 3.14], default 0.0
    
                # shadow_buffer_bias
    
                    # Factor to multiply shadow buffer bias with (0 is ignore)
                    # Type:	float in [0, 10], default 0.0
    
                # shadow_cast_alpha
    
                    # Shadow casting alpha, in use for Irregular and Deep shadow buffer
                    # Type:	float in [0.001, 1], default 0.0
    
                # shadow_only_type
    
                    # How to draw shadows
    
                        # SHADOW_ONLY_OLD Shadow and Distance, Old shadow only method.
                        # SHADOW_ONLY Shadow Only, Improved shadow only method.
                        # SHADOW_ONLY_SHADED Shadow and Shading, Improved shadow only method which also renders lightless areas as shadows.
    
                    # Type:	enum in [‘SHADOW_ONLY_OLD’, ‘SHADOW_ONLY’, ‘SHADOW_ONLY_SHADED’], default ‘SHADOW_ONLY_OLD’
    
                # shadow_ray_bias
    
                    # Shadow raytracing bias to prevent terminator problems on shadow boundary
                    # Type:	float in [0, 0.25], default 0.0
    
                # specular_alpha
    
                    # Alpha transparency for specular areas
                    # Type:	float in [0, 1], default 0.0
    
                # specular_color
    
                    # Specular color of the material
                    # Type:	float array of 3 items in [0, inf], default (0.0, 0.0, 0.0)
    
                # specular_hardness
    
                    # How hard (sharp) the specular reflection is
                    # Type:	int in [1, 511], default 0
    
                # specular_intensity
    
                    # How intense (bright) the specular reflection is
                    # Type:	float in [0, 1], default 0.0
    
                # specular_ior
    
                    # Specular index of refraction
                    # Type:	float in [1, 10], default 0.0
    
                # specular_ramp
    
                    # Color ramp used to affect specular shading
                    # Type:	ColorRamp, (readonly)
    
                # specular_ramp_blend
    
                    # Blending method of the ramp and the specular color
                    # Type:	enum in [‘MIX’, ‘ADD’, ‘MULTIPLY’, ‘SUBTRACT’, ‘SCREEN’, ‘DIVIDE’, ‘DIFFERENCE’, ‘DARKEN’, ‘LIGHTEN’, ‘OVERLAY’, ‘DODGE’, ‘BURN’, ‘HUE’, ‘SATURATION’, ‘VALUE’, ‘COLOR’, ‘SOFT_LIGHT’, ‘LINEAR_LIGHT’], default ‘MIX’
    
                # specular_ramp_factor
    
                    # Blending factor (also uses alpha in Colorband)
                    # Type:	float in [0, 1], default 0.0
    
                # specular_ramp_input
    
                    # How the ramp maps on the surface
                    # Type:	enum in [‘SHADER’, ‘ENERGY’, ‘NORMAL’, ‘RESULT’], default ‘SHADER’
                # specular_shader
    
                        # COOKTORR CookTorr, Use a Cook-Torrance shader.
                        # PHONG Phong, Use a Phong shader.
                        # BLINN Blinn, Use a Blinn shader.
                        # TOON Toon, Use a toon shader.
                        # WARDISO WardIso, Use a Ward anisotropic shader.
    
                    # Type:	enum in [‘COOKTORR’, ‘PHONG’, ‘BLINN’, ‘TOON’, ‘WARDISO’], default ‘COOKTORR’
    
                # specular_slope
    
                    # The standard deviation of surface slope
                    # Type:	float in [0, 0.4], default 0.0
    
                # specular_toon_size
    
                    # Size of specular toon area
                    # Type:	float in [0, 1.53], default 0.0
    
                # specular_toon_smooth
    
                    # Smoothness of specular toon area
                    # Type:	float in [0, 1], default 0.0
    
                # strand
    
                    # Strand settings for the material
                    # Type:	MaterialStrand, (readonly, never None)
    
                # subsurface_scattering
    
                    # Subsurface scattering settings for the material
                    # Type:	MaterialSubsurfaceScattering, (readonly, never None)
    
                # texture_paint_images
    
                    # Texture images used for texture painting
                    # Type:	bpy_prop_collection of Image, (readonly)
    
                # texture_paint_slots
    
                    # Texture slots defining the mapping and influence of textures
                    # Type:	bpy_prop_collection of TexPaintSlot, (readonly)
    
                # texture_slots
    
                    # Texture slots defining the mapping and influence of textures
                    # Type:	MaterialTextureSlots bpy_prop_collection of MaterialTextureSlot, (readonly)
    
                # translucency
    
                    # Amount of diffuse shading on the back side
                    # Type:	float in [0, 1], default 0.0
    
                # transparency_method
    
                    # Method to use for rendering transparency
    
                        # MASK Mask, Mask the background.
                        # Z_TRANSPARENCY Z Transparency, Use alpha buffer for transparent faces.
                        # RAYTRACE Raytrace, Use raytracing for transparent refraction rendering.
    
                    # Type:	enum in [‘MASK’, ‘Z_TRANSPARENCY’, ‘RAYTRACE’], default ‘MASK’
    
                # type
    
                    # Material type defining how the object is rendered
    
                        # SURFACE Surface, Render object as a surface.
                        # WIRE Wire, Render the edges of faces as wires (not supported in raytracing).
                        # VOLUME Volume, Render object as a volume.
                        # HALO Halo, Render object as halo particles.
    
                    # Type:	enum in [‘SURFACE’, ‘WIRE’, ‘VOLUME’, ‘HALO’], default ‘SURFACE’
    
                # use_cast_approximate
    
                    # Allow this material to cast shadows when using approximate ambient occlusion
                    # Type:	boolean, default False
    
                # use_cast_buffer_shadows
    
                    # Allow this material to cast shadows from shadow buffer lamps
                    # Type:	boolean, default False
    
                # use_cast_shadows
    
                    # Allow this material to cast shadows
                    # Type:	boolean, default False
    
                # use_cast_shadows_only
    
                    # Make objects with this material appear invisible (not rendered), only casting shadows
                    # Type:	boolean, default False
    
                # use_cubic
    
                    # Use cubic interpolation for diffuse values, for smoother transitions
                    # Type:	boolean, default False
    
                # use_diffuse_ramp
    
                    # Toggle diffuse ramp operations
                    # Type:	boolean, default False
    
                # use_face_texture
    
                    # Replace the object’s base color with color from UV map image textures
                    # Type:	boolean, default False
    
                # use_face_texture_alpha
    
                    # Replace the object’s base alpha value with alpha from UV map image textures
                    # Type:	boolean, default False
    
                # use_full_oversampling
    
                    # Force this material to render full shading/textures for all anti-aliasing samples
                    # Type:	boolean, default False
    
                # use_light_group_exclusive
    
                    # Material uses the light group exclusively - these lamps are excluded from other scene lighting
                    # Type:	boolean, default False
    
                # use_light_group_local
    
                    # When linked in, material uses local light group with the same name
                    # Type:	boolean, default False
    
                # use_mist
    
                    # Use mist with this material (in world settings)
                    # Type:	boolean, default False
    
                # use_nodes
    
                    # Use shader nodes to render the material
                    # Type:	boolean, default False
    
                # use_object_color
    
                    # Modulate the result with a per-object color
                    # Type:	boolean, default False