Skip to content
Snippets Groups Projects
__init__.py 177 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### BEGIN GPL LICENSE BLOCK #####
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    #
    #  This program is free software; you can redistribute it and/or
    #  modify it under the terms of the GNU General Public License
    #  as published by the Free Software Foundation; either version 2
    #  of the License, or (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software Foundation,
    #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    #
    # ##### END GPL LICENSE BLOCK #####
    
    
        "name": "Persistence of Vision",
        "author": "Campbell Barton, "
                  "Maurice Raybaud, "
                  "Leonid Desyatkov, "
                  "Bastien Montagne, "
                  "Constantin Rahn, "
                  "Silvio Falcinelli",
    
        "version": (0, 1, 0),
    
        "blender": (2, 81, 0),
    
        "location": "Render Properties > Render Engine > Persistence of Vision",
        "description": "Persistence of Vision integration for blender",
    
    meta-androcto's avatar
    meta-androcto committed
        "wiki_url": "https://docs.blender.org/manual/en/dev/addons/"
                    "render/povray.html",
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    
    
    if "bpy" in locals():
    
        import importlib
        importlib.reload(ui)
        importlib.reload(render)
    
        importlib.reload(shading)
    
        importlib.reload(update_files)
    
    
    else:
        import bpy
    
        from bpy.utils import register_class, unregister_class
    
        #import addon_utils # To use some other addons
    
        import nodeitems_utils #for Nodes
        from nodeitems_utils import NodeCategory, NodeItem #for Nodes
    
        from bl_operators.presets import AddPresetBase
    
        from bpy.types import (
                AddonPreferences,
                PropertyGroup,
    
                )
        from bpy.props import (
                StringProperty,
                BoolProperty,
                IntProperty,
                FloatProperty,
                FloatVectorProperty,
                EnumProperty,
                PointerProperty,
    
                )
        from . import (
                ui,
                render,
                update_files,
                )
    
    def string_strip_hyphen(name):
        return name.replace("-", "")
    
    
    def active_texture_name_from_uilist(self,context):
        mat = context.scene.view_layers["View Layer"].objects.active.active_material
        index = mat.pov.active_texture_index
        name = mat.pov_texture_slots[index].name
        newname = mat.pov_texture_slots[index].texture
        tex = bpy.data.textures[name]
        tex.name = newname
        mat.pov_texture_slots[index].name = newname
    
    
    def active_texture_name_from_search(self,context):
        mat = context.scene.view_layers["View Layer"].objects.active.active_material
        index = mat.pov.active_texture_index
        name = mat.pov_texture_slots[index].texture_search
        try:
            tex = bpy.data.textures[name]
            mat.pov_texture_slots[index].name = name
            mat.pov_texture_slots[index].texture = name
        except:
            pass
    
    
    ###############################################################################
    # Scene POV properties.
    ###############################################################################
    
    class RenderPovSettingsScene(PropertyGroup):
    
        #Linux SDL-window enable
    
        sdl_window_enable: BoolProperty(
    
                name="Enable SDL window",
                description="Enable the SDL window in Linux OS",
                default=True)
    
        # File Options
    
        text_block: StringProperty(
    
                description="Name of POV scene to use. "
    
                            "Set when clicking Run to render current text only",
                maxlen=1024)
    
        tempfiles_enable: BoolProperty(
    
                name="Enable Tempfiles",
    
                description="Enable the OS-Tempfiles. Otherwise set the path where"
                            " to save the files",
    
                default=True)
    
        pov_editor: BoolProperty(
    
                name="POV editor",
                description="Don't Close POV editor after rendering (Overridden"
    
                            " by /EXIT command)",
    
        deletefiles_enable: BoolProperty(
    
                name="Delete files",
    
                description="Delete files after rendering. "
                            "Doesn't work with the image",
    
                default=True)
    
        scene_name: StringProperty(
    
                name="Scene Name",
    
                description="Name of POV scene to create. Empty name will use "
    
                            "the name of the blend file",
    
        scene_path: StringProperty(
    
                name="Export scene path",
    
                # Bug in POV-Ray RC3
                # description="Path to directory where the exported scene "
    
                            # "(POV and INI) is created",
    
                description="Path to directory where the files are created",
    
                maxlen=1024, subtype="DIR_PATH")
    
        renderimage_path: StringProperty(
    
                name="Rendered image path",
    
                description="Full path to directory where the rendered image is "
                            "saved",
    
                maxlen=1024, subtype="DIR_PATH")
    
        list_lf_enable: BoolProperty(
    
                name="LF in lists",
    
                description="Enable line breaks in lists (vectors and indices). "
                            "Disabled: lists are exported in one line",
    
                default=True)
    
        # Not a real pov option, just to know if we should write
    
        radio_enable: BoolProperty(
    
                name="Enable Radiosity",
    
                description="Enable POV radiosity calculation",
    
        radio_display_advanced: BoolProperty(
    
                name="Advanced Options",
                description="Show advanced options",
                default=False)
    
        media_enable: BoolProperty(
    
                name="Enable Media",
    
                description="Enable POV atmospheric media",
    
                default=False)
    
        media_samples: IntProperty(
    
                description="Number of samples taken from camera to first object "
    
                            "encountered along ray path for media calculation",
    
                min=1, max=100, default=35)
    
        media_scattering_type: EnumProperty(
    
                name="Scattering Type",
                description="Scattering model",
                items=(('1', "1 Isotropic", "The simplest form of scattering because"
                                          " it is independent of direction."),
                       ('2', "2 Mie haze ", "For relatively small particles such as "
                                          "minuscule water droplets of fog, cloud "
                                          "particles, and particles responsible "
                                          "for the polluted sky. In this model the"
                                          " scattering is extremely directional in"
                                          " the forward direction i.e. the amount "
                                          "of scattered light is largest when the "
                                          "incident light is anti-parallel to the "
                                          "viewing direction (the light goes "
                                          "directly to the viewer). It is smallest"
                                          " when the incident light is parallel to"
                                          " the viewing direction. "),
                       ('3', "3 Mie murky", "Like haze but much more directional"),
                       ('4', "4 Rayleigh", "For extremely small particles such as "
                                         "molecules of the air. The amount of "
                                         "scattered light depends on the incident"
                                         " light angle. It is largest when the "
                                         "incident light is parallel or "
                                         "anti-parallel to the viewing direction "
                                         "and smallest when the incident light is "
                                         "perpendicular to viewing direction."),
                       ('5', "5 Henyey-Greenstein", "The default eccentricity value "
                                                  "of zero defines isotropic "
                                                  "scattering while positive "
                                                  "values lead to scattering in "
                                                  "the direction of the light and "
                                                  "negative values lead to "
                                                  "scattering in the opposite "
                                                  "direction of the light. Larger "
                                                  "values of e (or smaller values "
                                                  "in the negative case) increase "
                                                  "the directional property of the"
    
                                                  " scattering.")),
    
        media_diffusion_scale: FloatProperty(
    
                name="Scale", description="Scale factor of Media Diffusion Color",
                precision=12, step=0.00000001, min=0.000000001, max=1.0,
                default=(1.0))
    
        media_diffusion_color: FloatVectorProperty(
    
                name="Media Diffusion Color", description="The atmospheric media color",
    
                precision=4, step=0.01, min=0, soft_max=1,
    
                default=(0.001, 0.001, 0.001),
    
                options={'ANIMATABLE'},
    
        media_absorption_scale: FloatProperty(
    
                name="Scale", description="Scale factor of Media Absorption Color. "
                                          "use 1/depth of media volume in meters",
                precision=12, step=0.000001, min=0.000000001, max=1.0,
                default=(0.00002))
    
        media_absorption_color: FloatVectorProperty(
    
                name="Media Absorption Color", description="The atmospheric media absorption color",
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.0, 0.0, 0.0),
                options={'ANIMATABLE'},
    
                subtype='COLOR')
    
        media_eccentricity: FloatProperty(
    
                name="Media Eccenticity Factor", description="Positive values lead"
                     " to scattering in the direction of the light and negative "
                     "values lead to scattering in the opposite direction of the "
                     "light. Larger values of e (or smaller values in the negative"
                     " case) increase the directional property of the scattering.",
                precision=2, step=0.01, min=-1.0, max=1.0,
                default=(0.0),
                options={'ANIMATABLE'})
    
        baking_enable: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Enable Baking",
    
                description="Enable POV texture baking",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=False)
    
        indentation_character: EnumProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Indentation",
                description="Select the indentation type",
    
                items=(('NONE', "None", "No indentation"),
                       ('TAB', "Tabs", "Indentation with tabs"),
                       ('SPACE', "Spaces", "Indentation with spaces")),
                default='SPACE')
    
        indentation_spaces: IntProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Quantity of spaces",
                description="The number of spaces for indentation",
    
                min=1, max=10, default=4)
    
        comments_enable: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Enable Comments",
    
                description="Add comments to pov file",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=True)
    
    
        # Real pov options
    
        command_line_switches: StringProperty(
    
                description="Command line switches consist of a + (plus) or - "
                            "(minus) sign, followed by one or more alphabetic "
                            "characters and possibly a numeric value",
    
        antialias_enable: BoolProperty(
    
                name="Anti-Alias", description="Enable Anti-Aliasing",
                default=True)
    
        antialias_method: EnumProperty(
    
                name="Method",
    
                description="AA-sampling method. Type 1 is an adaptive, "
                            "non-recursive, super-sampling method. Type 2 is an "
                            "adaptive and recursive super-sampling method. Type 3 "
                            "is a stochastic halton based super-sampling method",
    
                items=(("0", "non-recursive AA", "Type 1 Sampling in POV"),
                       ("1", "recursive AA", "Type 2 Sampling in POV"),
                       ("2", "stochastic AA", "Type 3 Sampling in POV")),
    
                default="1")
    
        antialias_confidence: FloatProperty(
    
                name="Antialias Confidence",
                description="how surely the computed color "
                            "of a given pixel is indeed"
                            "within the threshold error margin",
    
                min=0.0001, max=1.0000, default=0.9900, precision=4)
    
        antialias_depth: IntProperty(
    
                name="Antialias Depth", description="Depth of pixel for sampling",
                min=1, max=9, default=3)
    
        antialias_threshold: FloatProperty(
    
                name="Antialias Threshold", description="Tolerance for sub-pixels",
    
                min=0.0, max=1.0, soft_min=0.05, soft_max=0.5, default=0.03)
    
        jitter_enable: BoolProperty(
    
                description="Enable Jittering. Adds noise into the sampling "
                            "process (it should be avoided to use jitter in "
                            "animation)",
    
        jitter_amount: FloatProperty(
    
                name="Jitter Amount", description="Amount of jittering",
    
                min=0.0, max=1.0, soft_min=0.01, soft_max=1.0, default=1.0)
    
        antialias_gamma: FloatProperty(
    
                description="POV-Ray compares gamma-adjusted values for super "
                            "sampling. Antialias Gamma sets the Gamma before "
                            "comparison",
    
                min=0.0, max=5.0, soft_min=0.01, soft_max=2.5, default=2.5)
    
        alpha_mode: EnumProperty(
                name="Alpha",
                description="Representation of alpha information in the RGBA pixels",
                items=(("SKY", "Sky", "Transparent pixels are filled with sky color"),
                       ("TRANSPARENT", "Transparent", "Transparent, World background is transparent with premultiplied alpha")),
                default="SKY")
    
        use_shadows: BoolProperty(
                name="Shadows",
                description="Calculate shadows while rendering",
                default=True)
    
    
        max_trace_level: IntProperty(
    
                description="Number of reflections/refractions allowed on ray "
                            "path",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=1, max=256, default=5)
    
    
    #######NEW from Lanuhum
    
        adc_bailout_enable: BoolProperty(
    
        adc_bailout: FloatProperty(
    
                name="ADC Bailout",
                description="",
                min=0.0, max=1000.0,default=0.00392156862745, precision=3)
    
    
        ambient_light_enable: BoolProperty(
    
        ambient_light: FloatVectorProperty(
    
                name="Ambient Light",
                description="Ambient light is used to simulate the effect of inter-diffuse reflection",
    
                precision=4, step=0.01, min=0, soft_max=1,
    
                default=(1, 1, 1), options={'ANIMATABLE'}, subtype='COLOR',
        )
    
        global_settings_advanced: BoolProperty(
    
        irid_wavelength_enable: BoolProperty(
    
        irid_wavelength: FloatVectorProperty(
    
                name="Irid Wavelength",
                description=(
                    "Iridescence calculations depend upon the dominant "
                    "wavelengths of the primary colors of red, green and blue light"
                ),
    
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.25,0.18,0.14), options={'ANIMATABLE'}, subtype='COLOR')
    
    
        charset: EnumProperty(
    
                description="This allows you to specify the assumed character set of all text strings",
    
                items=(("ascii", "ASCII", ""),
                       ("utf8", "UTF-8", ""),
                       ("sys", "SYS", "")),
                default="utf8")
    
    
        max_intersections_enable: BoolProperty(
    
        max_intersections: IntProperty(
    
                description="POV-Ray uses a set of internal stacks to collect ray/object intersection points",
    
        number_of_waves_enable: BoolProperty(
    
        number_of_waves: IntProperty(
    
                description=(
                    "The waves and ripples patterns are generated by summing a series of waves, "
                    "each with a slightly different center and size"
                ),
    
        noise_generator_enable: BoolProperty(
    
        noise_generator: IntProperty(
    
                description="There are three noise generators implemented",
    
        ########################### PHOTONS #######################################
    
        photon_enable: BoolProperty(
    
                name="Photons",
                description="Enable global photons",
                default=False)
    
    
        photon_enable_count: BoolProperty(
    
                name="Spacing / Count",
                description="Enable count photons",
                default=False)
    
    
        photon_count: IntProperty(
    
                name="Count",
                description="Photons count",
                min=1, max=100000000, default=20000)
    
        photon_spacing: FloatProperty(
    
                description="Average distance between photons on surfaces. half "
                            "this get four times as many surface photons",
                min=0.001, max=1.000, default=0.005,
                soft_min=0.001, soft_max=1.000, precision=3)
    
        photon_max_trace_level: IntProperty(
    
                description="Number of reflections/refractions allowed on ray "
                            "path",
    
                min=1, max=256, default=5)
    
    
        photon_adc_bailout: FloatProperty(
    
                description="The adc_bailout for photons. Use adc_bailout = "
    
                            "0.01 / brightest_ambient_object for good results",
    
                min=0.0, max=1000.0, default=0.1,
                soft_min=0.0, soft_max=1.0, precision=3)
    
        photon_gather_min: IntProperty(
    
                name="Gather Min", description="Minimum number of photons gathered"
                                               "for each point",
    
                min=1, max=256, default=20)
    
    
        photon_gather_max: IntProperty(
    
                name="Gather Max", description="Maximum number of photons gathered for each point",
                min=1, max=256, default=100)
    
        photon_map_file_save_load: EnumProperty(
    
                name="Operation",
                description="Load or Save photon map file",
                items=(("NONE", "None", ""),
                       ("save", "Save", ""),
                       ("load", "Load", "")),
                default="NONE")
    
    
        photon_map_filename: StringProperty(
    
                name="Filename",
                description="",
                maxlen=1024)
    
    
        photon_map_dir: StringProperty(
    
                name="Directory",
                description="",
                maxlen=1024, subtype="DIR_PATH")
    
    
        photon_map_file: StringProperty(
    
                name="File",
                description="",
                maxlen=1024, subtype="FILE_PATH")
    
        #########RADIOSITY########
    
        radio_adc_bailout: FloatProperty(
    
                description="The adc_bailout for radiosity rays. Use "
    
                            "adc_bailout = 0.01 / brightest_ambient_object for good results",
    
                min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default=0.0039, precision=4)
    
        radio_always_sample: BoolProperty(
    
                description="Only use the data from the pretrace step and not gather "
    
                            "any new samples during the final radiosity pass",
    
        radio_brightness: FloatProperty(
    
                description="Amount objects are brightened before being returned "
    
                min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default=1.0)
    
    
        radio_count: IntProperty(
    
                description="Number of rays for each new radiosity value to be calculated "
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=1, max=10000, soft_max=1600, default=35)
    
        radio_error_bound: FloatProperty(
    
                description="One of the two main speed/quality tuning values, "
    
                min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1.8)
    
    
        radio_gray_threshold: FloatProperty(
    
                description="One of the two main speed/quality tuning values, "
    
                min=0.0, max=1.0, soft_min=0, soft_max=1, default=0.0)
    
    
        radio_low_error_factor: FloatProperty(
    
                description="Just enough samples is slightly blotchy. Low error changes error "
    
                            "tolerance for less critical last refining pass",
    
                min=0.000001, max=1.0, soft_min=0.000001, soft_max=1.0, default=0.5)
    
        radio_media: BoolProperty(
    
                name="Media", description="Radiosity estimation can be affected by media",
    
        radio_subsurface: BoolProperty(
    
                name="Subsurface", description="Radiosity estimation can be affected by Subsurface Light Transport",
                default=False)
    
    
        radio_minimum_reuse: FloatProperty(
    
                description="Fraction of the screen width which sets the minimum radius of reuse "
    
                            "for each sample point (At values higher than 2% expect errors)",
    
                min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default=0.015, precision=3)
    
        radio_maximum_reuse: FloatProperty(
    
                name="Maximum Reuse",
                description="The maximum reuse parameter works in conjunction with, and is similar to that of minimum reuse, "
    
                            "the only difference being that it is an upper bound rather than a lower one",
    
        radio_nearest_count: IntProperty(
    
                description="Number of old ambient values blended together to "
    
                min=1, max=20, default=1)
    
        radio_normal: BoolProperty(
    
                name="Normals", description="Radiosity estimation can be affected by normals",
                default=False)
    
    
        radio_recursion_limit: IntProperty(
    
                description="how many recursion levels are used to calculate "
    
                min=1, max=20, default=1)
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    
    
        radio_pretrace_start: FloatProperty(
    
                description="Fraction of the screen width which sets the size of the "
    
                            "blocks in the mosaic preview first pass",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=0.01, max=1.00, soft_min=0.02, soft_max=1.0, default=0.08)
    
    
        radio_pretrace_end: FloatProperty(
    
                description="Fraction of the screen width which sets the size of the blocks "
    
                min=0.000925, max=1.00, soft_min=0.01, soft_max=1.00, default=0.04, precision=3)
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
    
    
    ###############################################################################
    # Material POV properties.
    ###############################################################################
    
    class MaterialTextureSlot(PropertyGroup):
    
        bl_idname="pov_texture_slots",
    
        bl_description="Texture_slots from Blender-2.79",
        
        texture : StringProperty(update=active_texture_name_from_uilist)
        texture_search : StringProperty(update=active_texture_name_from_search)
    
    
        alpha_factor: FloatProperty(
                name="Alpha",
                description="Amount texture affects alpha",
                default = 0.0)
    
        ambient_factor: FloatProperty(
                name="",
                description="Amount texture affects ambient",
                default = 0.0)
    
        bump_method: EnumProperty(
                name="",
                description="Method to use for bump mapping",
                items=(("BUMP_ORIGINAL", "Bump Original", ""),
                       ("BUMP_COMPATIBLE", "Bump Compatible", ""),
                       ("BUMP_DEFAULT", "Bump Default", ""),
                       ("BUMP_BEST_QUALITY", "Bump Best Quality", "")),
                default="BUMP_ORIGINAL")            
    
        bump_objectspace: EnumProperty(
                name="",
                description="Space to apply bump mapping in",
                items=(("BUMP_VIEWSPACE", "Bump Viewspace", ""),
                       ("BUMP_OBJECTSPACE", "Bump Objectspace", ""),
                       ("BUMP_TEXTURESPACE", "Bump Texturespace", "")),
                default="BUMP_VIEWSPACE")
    
        density_factor: FloatProperty(
                name="",
                description="Amount texture affects density",
                default = 0.0)
    
        diffuse_color_factor: FloatProperty(
                name="",
                description="Amount texture affects diffuse color",
                default = 0.0)
    
        diffuse_factor: FloatProperty(
                name="",
                description="Amount texture affects diffuse reflectivity",
                default = 0.0)
    
        displacement_factor: FloatProperty(
                name="",
                description="Amount texture displaces the surface",
                default = 0.0)
    
        emission_color_factor: FloatProperty(
                name="",
                description="Amount texture affects emission color",
                default = 0.0)
    
        emission_factor: FloatProperty(
                name="",
                description="Amount texture affects emission",
                default = 0.0)
    
        emit_factor: FloatProperty(
                name="",
                description="Amount texture affects emission",
                default = 0.0)
    
        hardness_factor: FloatProperty(
                name="",
                description="Amount texture affects hardness",
                default = 0.0)
    
        mapping: EnumProperty(
                name="",
                description="",
                items=(("FLAT", "Flat", ""),
                       ("CUBE", "Cube", ""),
                       ("TUBE", "Tube", ""),
                       ("SPHERE", "Sphere", "")),
                default="FLAT")            
    
        mapping_x: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")      
    
        mapping_y: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")   
    
        mapping_z: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")   
    
        mirror_factor: FloatProperty(
                name="",
                description="Amount texture affects mirror color",
                default = 0.0)
    
        normal_factor: FloatProperty(
                name="",
                description="Amount texture affects normal values",
                default = 0.0)
    
        normal_map_space: EnumProperty(
                name="",
                description="Sets space of normal map image",
                items=(("CAMERA", "Camera", ""),
                       ("WORLD", "World", ""),
                       ("OBJECT", "Object", ""),
                       ("TANGENT", "Tangent", "")),
                default="CAMERA") 
    
        object: StringProperty(
                name="Object",
                description="Object to use for mapping with Object texture coordinates",
                default ="")
    
        raymir_factor: FloatProperty(
                name="",
                description="Amount texture affects ray mirror",
                default = 0.0)
    
        reflection_color_factor: FloatProperty(
                name="",
                description="Amount texture affects color of out-scattered light",
                default = 0.0)
    
        reflection_factor: FloatProperty(
                name="",
                description="Amount texture affects brightness of out-scattered light",
                default = 0.0)
    
        scattering_factor: FloatProperty(
                name="",
                description="Amount texture affects scattering",
                default = 0.0)
    
        specular_color_factor: FloatProperty(
                name="",
                description="Amount texture affects specular color",
                default = 0.0)
    
        specular_factor: FloatProperty(
                name="",
                description="Amount texture affects specular reflectivity",
                default = 0.0)
    
        texture_coords: EnumProperty(
                name="",
                description="",
                items=(("GLOBAL", "Global", ""),
                       ("OBJECT", "Object", ""),
                       ("UV", "UV", ""),
                       ("ORCO", "Original Coordinates", ""),
                       ("STRAND", "Strand", ""),
                       ("STICKY", "Sticky", ""),
                       ("WINDOW", "Window", ""),
                       ("NORMAL", "Normal", ""),
                       ("REFLECTION", "Reflection", ""),
                       ("STRESS", "Stress", ""),
                       ("TANGENT", "Tangent", "")),
                default="GLOBAL")
    
        translucency_factor: FloatProperty(
                name="",
                description="Amount texture affects translucency",
                default = 0.0)
    
        transmission_color_factor: FloatProperty(
                name="",
                description="Amount texture affects result color after light has been scattered/absorbed",
                default = 0.0)
    
        use: BoolProperty(
                name="",
                description="Enable this material texture slot",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default = True)
    
    
        use_from_dupli: BoolProperty(
                name="",
                description="Dupli’s instanced from verts, faces or particles, inherit texture coordinate from their parent",
                default = False)
    
        use_from_original: BoolProperty(
                name="",
                description="Dupli’s derive their object coordinates from the original objects transformation",
                default = False)
    
        use_map_alpha: BoolProperty(
                name="",
                description="Causes the texture to affect the alpha value",
                default = False)
    
        use_map_ambient: BoolProperty(
                name="",
                description="Causes the texture to affect the value of ambient",
                default = False)
    
        use_map_color_diffuse: BoolProperty(
                name="",
                description="Causes the texture to affect basic color of the material",
                default = False)
    
        use_map_color_emission: BoolProperty(
                name="",
                description="Causes the texture to affect the color of emission",
                default = False)
    
        use_map_color_reflection: BoolProperty(
                name="",
                description="Causes the texture to affect the color of scattered light",
                default = False)
    
        use_map_color_spec: BoolProperty(
                name="",
                description="Causes the texture to affect the specularity color",
                default = False)
    
        use_map_color_transmission: BoolProperty(
                name="",
                description="Causes the texture to affect the result color after other light has been scattered/absorbed",
                default = False)
    
        use_map_density: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s density",
                default = False)
    
        use_map_diffuse: BoolProperty(
                name="",
                description="Causes the texture to affect the value of the materials diffuse reflectivity",
                default = False)
    
        use_map_displacement: BoolProperty(
                name="",
                description="Let the texture displace the surface",
                default = False)
    
        use_map_emission: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s emission",
                default = False)
    
        use_map_emit: BoolProperty(
                name="",
                description="Causes the texture to affect the emit value",
                default = False)
    
        use_map_hardness: BoolProperty(
                name="",
                description="Causes the texture to affect the hardness value",
                default = False)
    
        use_map_mirror: BoolProperty(
                name="",
                description="Causes the texture to affect the mirror color",
                default = False)
    
        use_map_normal: BoolProperty(
                name="",
                description="Causes the texture to affect the rendered normal",
                default = False)
    
        use_map_raymir: BoolProperty(
                name="",
                description="Causes the texture to affect the ray-mirror value",
                default = False)
    
        use_map_reflect: BoolProperty(
                name="",
                description="Causes the texture to affect the reflected light’s brightness",
                default = False)
    
        use_map_scatter: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s scattering",
                default = False)
    
        use_map_specular: BoolProperty(
                name="",
                description="Causes the texture to affect the value of specular reflectivity",
                default = False)
    
        use_map_translucency: BoolProperty(
                name="",
                description="Causes the texture to affect the translucency value",
                default = False)
    
        use_map_warp: BoolProperty(
                name="",
                description="Let the texture warp texture coordinates of next channels",
                default = False)
    
        uv_layer: StringProperty(
                name="",
                description="UV layer to use for mapping with UV texture coordinates",
                default = "")
    
        warp_factor: FloatProperty(
                name="",
                description="Amount texture affects texture coordinates of next channels",
                default = 0.0)
        
     
    #######################################"    
        
        blend_factor: FloatProperty(
                    name="Blend",
                    description="Amount texture affects color progression of the "
                                "background",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
        horizon_factor: FloatProperty(
                    name="Horizon",
                    description="Amount texture affects color of the horizon"
                                "",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
        object: StringProperty(
                    name="Object",
                    description="Object to use for mapping with Object texture coordinates",
                    default="")
    
        texture_coords: EnumProperty(
                    name="Coordinates",
                    description="Texture coordinates used to map the texture onto the background",
                    items=(("VIEW", "View", "Use view vector for the texture coordinates"),
                           ("GLOBAL", "Global", "Use global coordinates for the texture coordinates (interior mist)"),
                           ("ANGMAP", "AngMap", "Use 360 degree angular coordinates, e.g. for spherical light probes"),
                           ("SPHERE", "Sphere", "For 360 degree panorama sky, spherical mapped, only top half"),
                           ("EQUIRECT", "Equirectangular", "For 360 degree panorama sky, equirectangular mapping"),
                           ("TUBE", "Tube", "For 360 degree panorama sky, cylindrical mapped, only top half"),
                           ("OBJECT", "Object", "Use linked object’s coordinates for texture coordinates")),
                    default="VIEW")
    
        use_map_blend: BoolProperty(
                    name="Blend Map", description="Affect the color progression of the background",
                    default=True)
    
        use_map_horizon: BoolProperty(
                    name="Horizon Map", description="Affect the color of the horizon",
                    default=False)
    
        use_map_zenith_down: BoolProperty(
                    name="", description="Affect the color of the zenith below",
                    default=False)
    
        use_map_zenith_up: BoolProperty(
                    name="Zenith Up Map", description="Affect the color of the zenith above",
                    default=False)
    
        zenith_down_factor: FloatProperty(
                    name="Zenith Down",
                    description="Amount texture affects color of the zenith below",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
        zenith_up_factor: FloatProperty(
                    name="Zenith Up",
                    description="Amount texture affects color of the zenith above",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
    
                    
    # former Space properties from  removed Blender Internal added below at superclass level 
    # so as to be available in World, Material, Light for texture slots use  
    
    bpy.types.ID.use_limited_texture_context = BoolProperty(
            name="",
            description="Use the limited version of texture user (for ‘old shading’ mode)",
            default=True)
    bpy.types.ID.texture_context = EnumProperty(
            name="Texture context",
            description="Type of texture data to display and edit",
            items=(('MATERIAL', "", "Show material textures", "MATERIAL",0), #"Show material textures"
                   ('WORLD', "", "Show world textures", "WORLD",1), #"Show world textures"
    
                   ('LIGHT', "", "Show lamp textures", "LIGHT",2), #"Show lamp textures"
    
                   ('PARTICLES', "", "Show particles textures", "PARTICLES",3), #"Show particles textures"
                   ('LINESTYLE', "", "Show linestyle textures", "LINE_DATA",4), #"Show linestyle textures"
                   ('OTHER', "", "Show other data textures", "TEXTURE_DATA",5)), #"Show other data textures"
            default = 'MATERIAL')
    
    bpy.types.ID.active_texture_index = IntProperty(
            name = "Index for texture_slots",
            default = 0)
                    
    
    class RenderPovSettingsMaterial(PropertyGroup):
    
    ######################Begin Old Blender Internal Props#########################
    
        #former Space properties from  removed Blender Internal
        use_limited_texture_context: BoolProperty(
                name="",
                description="Use the limited version of texture user (for ‘old shading’ mode)",
                default=True)
        texture_context: EnumProperty(
                name="Texture context",
                description="Type of texture data to display and edit",
                items=(('MATERIAL', "", "Show material textures", "MATERIAL",0), #"Show material textures"
                       ('WORLD', "", "Show world textures", "WORLD",1), #"Show world textures"
                       ('LAMP', "", "Show lamp textures", "LIGHT",2), #"Show lamp textures"
                       ('PARTICLES', "", "Show particles textures", "PARTICLES",3), #"Show particles textures"
                       ('LINESTYLE', "", "Show linestyle textures", "LINE_DATA",4), #"Show linestyle textures"