]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/properties.py
Support exporting ambient occlusion postprocessor from Blender
[libs/gl.git] / blender / io_mspgl / properties.py
index 469bc26844f7bea0f8424df45ca21e6f86ab4af1..236e79f30118fa80b377f5580caac99adb3f2e69 100644 (file)
@@ -85,8 +85,13 @@ class MspGLMaterialProperties(bpy.types.Panel):
                self.layout.prop(mat, "render_mode")
                if mat.render_mode=='CUSTOM':
                        self.layout.prop(mat, "shader")
                self.layout.prop(mat, "render_mode")
                if mat.render_mode=='CUSTOM':
                        self.layout.prop(mat, "shader")
+                       if mat.shadow_method!='NONE':
+                               self.layout.prop(mat, "shadow_shader")
                elif mat.render_mode=='EXTERNAL':
                        self.layout.prop(mat, "technique")
                elif mat.render_mode=='EXTERNAL':
                        self.layout.prop(mat, "technique")
+               if mat.render_mode=='BUILTIN':
+                       self.layout.prop(mat, "receive_shadows")
+                       self.layout.prop(mat, "image_based_lighting")
                self.layout.prop(mat, "array_atlas")
                if mat.array_atlas:
                        self.layout.prop(mat, "array_layer")
                self.layout.prop(mat, "array_atlas")
                if mat.array_atlas:
                        self.layout.prop(mat, "array_layer")
@@ -148,6 +153,19 @@ class MspGLLightProperties(bpy.types.Panel):
                if light.use_shadow:
                        self.layout.prop(light, "shadow_map_size")
 
                if light.use_shadow:
                        self.layout.prop(light, "shadow_map_size")
 
+class MspGLRenderProperties(bpy.types.Panel):
+       bl_idname = "WORLD_PT_mspgl_properties"
+       bl_label = "MspGL properties"
+       bl_space_type = "PROPERTIES"
+       bl_region_type = "WINDOW"
+       bl_context = "render"
+
+       def draw(self, context):
+               scene = context.scene
+               self.layout.prop(scene, "use_hdr")
+               if scene.eevee.use_gtao:
+                       self.layout.prop(scene, "ao_samples")
+
 class MspGLUniform(bpy.types.PropertyGroup):
        name: bpy.props.StringProperty(name="Name", description="Name of the uniform variable")
        size: bpy.props.IntProperty(name="Size", description="Number of elements in the uniform", min=1, max=4, default=4)
 class MspGLUniform(bpy.types.PropertyGroup):
        name: bpy.props.StringProperty(name="Name", description="Name of the uniform variable")
        size: bpy.props.IntProperty(name="Size", description="Number of elements in the uniform", min=1, max=4, default=4)
@@ -164,7 +182,8 @@ class MspGLUniformList(bpy.types.UIList):
                        layout.prop(uniform, "name", text="", emboss=False, icon_value=icon)
                        layout.label(text="({})".format(", ".join("{:.3f}".format(v) for v in uniform.values[:uniform.size])))
 
                        layout.prop(uniform, "name", text="", emboss=False, icon_value=icon)
                        layout.label(text="({})".format(", ".join("{:.3f}".format(v) for v in uniform.values[:uniform.size])))
 
-classes = [MspGLSceneProperties, MspGLMeshProperties, MspGLObjectProperties, MspGLMaterialProperties, MspGLTextureNodeProperties, MspGLLightProperties, MspGLUniform, MspGLUniformList]
+classes = [MspGLSceneProperties, MspGLMeshProperties, MspGLObjectProperties, MspGLMaterialProperties,
+       MspGLTextureNodeProperties, MspGLLightProperties, MspGLRenderProperties, MspGLUniform, MspGLUniformList]
 
 def register_properties():
        for c in classes:
 
 def register_properties():
        for c in classes:
@@ -179,6 +198,8 @@ def register_properties():
                        ("CONTENTS", "Contents only", "Objects in the scene will be exported, but not the scene itself"),
                        ("SCENE", "Scene", "The scene will be exported"),
                        ("SEQUENCE", "Sequence", "The scene will be exported along with a rendering sequence")))
                        ("CONTENTS", "Contents only", "Objects in the scene will be exported, but not the scene itself"),
                        ("SCENE", "Scene", "The scene will be exported"),
                        ("SEQUENCE", "Sequence", "The scene will be exported along with a rendering sequence")))
+       bpy.types.Scene.use_hdr = bpy.props.BoolProperty(name="High dynamic range", description="Use a range render target with a floating point format", default=False)
+       bpy.types.Scene.ao_samples = bpy.props.IntProperty(name="Ambient occlusion samples", description="Number of samples to use for ambient occlusion", min=8, max=128, default=32)
 
        bpy.types.Mesh.winding_test = bpy.props.BoolProperty(name="Winding test", description="Perform winding test to skip back faces")
        bpy.types.Mesh.smoothing = bpy.props.EnumProperty(name="Smoothing", description="Smoothing method to use", default="MSPGL",
 
        bpy.types.Mesh.winding_test = bpy.props.BoolProperty(name="Winding test", description="Perform winding test to skip back faces")
        bpy.types.Mesh.smoothing = bpy.props.EnumProperty(name="Smoothing", description="Smoothing method to use", default="MSPGL",
@@ -208,7 +229,10 @@ def register_properties():
                        ("CUSTOM", "Custom shader", "Use a custom shader"),
                        ("EXTERNAL", "External technique", "Use an externally defined technique")))
        bpy.types.Material.technique = bpy.props.StringProperty(name="Custom technique", description="Name of an external technique to use for rendering")
                        ("CUSTOM", "Custom shader", "Use a custom shader"),
                        ("EXTERNAL", "External technique", "Use an externally defined technique")))
        bpy.types.Material.technique = bpy.props.StringProperty(name="Custom technique", description="Name of an external technique to use for rendering")
-       bpy.types.Material.shader = bpy.props.StringProperty(name="Custom shader", description="Name of an external technique to use for rendering")
+       bpy.types.Material.shader = bpy.props.StringProperty(name="Custom shader", description="Name of a custom shader to use for rendering")
+       bpy.types.Material.shadow_shader = bpy.props.StringProperty(name="Custom shadow shader", description="Name of a custom shader to use for shadow pass")
+       bpy.types.Material.receive_shadows = bpy.props.BoolProperty(name="Receive shadows", description="Receive shadows from a shadow map", default=True)
+       bpy.types.Material.image_based_lighting = bpy.props.BoolProperty(name="Image based lighting", description="Use an environment map for ambient lighting", default=False)
        bpy.types.Material.array_atlas = bpy.props.BoolProperty(name="Texture array atlas", description="The material is stored in a texture array")
        bpy.types.Material.array_layer = bpy.props.IntProperty("Texture array layer", description="Layer of the texture array atlas to use")
        bpy.types.Material.material_atlas = bpy.props.BoolProperty(name="Material atlas", description="Make this material part of a material atlas")
        bpy.types.Material.array_atlas = bpy.props.BoolProperty(name="Texture array atlas", description="The material is stored in a texture array")
        bpy.types.Material.array_layer = bpy.props.IntProperty("Texture array layer", description="Layer of the texture array atlas to use")
        bpy.types.Material.material_atlas = bpy.props.BoolProperty(name="Material atlas", description="Make this material part of a material atlas")