Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2018-04-20 13:49:02 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-04-20 13:49:02 +0300
commit6f61983da3c78658d5de4b4ae0412672c52bebe5 (patch)
tree4777ca4db9b63fe7f3c8912b6ac086e7bd6d7aca /release
parent7d38379e496aabe668dd4d1f1f4af6c243b306dc (diff)
parent89bdc208d146eaf08f90c3dec2eb92f66b933d00 (diff)
Merge branch 'blender2.8' into blender2.8-workbench
Diffstat (limited to 'release')
-rw-r--r--release/scripts/freestyle/modules/parameter_editor.py13
-rw-r--r--release/scripts/modules/bpy/ops.py15
-rw-r--r--release/scripts/presets/keyconfig/3dsmax.py11
-rw-r--r--release/scripts/presets/keyconfig/maya.py11
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py130
-rw-r--r--release/scripts/startup/bl_operators/presets.py29
-rw-r--r--release/scripts/startup/bl_ui/properties_data_lamp.py212
-rw-r--r--release/scripts/startup/bl_ui/properties_data_mesh.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py11
-rw-r--r--release/scripts/startup/bl_ui/properties_freestyle.py15
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py909
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py33
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_cloth.py12
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py31
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_fluid.py8
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_rigidbody.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_softbody.py14
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py201
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py11
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py677
-rw-r--r--release/scripts/startup/bl_ui/properties_world.py192
-rw-r--r--release/scripts/startup/bl_ui/space_node.py14
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py2
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py143
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py15
-rw-r--r--release/scripts/startup/nodeitems_builtins.py85
-rw-r--r--release/scripts/templates_py/ui_list_simple.py12
28 files changed, 316 insertions, 2500 deletions
diff --git a/release/scripts/freestyle/modules/parameter_editor.py b/release/scripts/freestyle/modules/parameter_editor.py
index 2af6caac4f9..c2b23f017fe 100644
--- a/release/scripts/freestyle/modules/parameter_editor.py
+++ b/release/scripts/freestyle/modules/parameter_editor.py
@@ -1538,16 +1538,9 @@ def process(layer_name, lineset_name):
raise RuntimeError("No Thickness modifier with type", type(m), m)
# -- Textures -- #
has_tex = False
- if scene.render.use_shading_nodes:
- if linestyle.use_nodes and linestyle.node_tree:
- shaders_list.append(BlenderTextureShader(linestyle.node_tree))
- has_tex = True
- else:
- if linestyle.use_texture:
- textures = tuple(BlenderTextureShader(slot) for slot in linestyle.texture_slots if slot is not None)
- if textures:
- shaders_list.extend(textures)
- has_tex = True
+ if linestyle.use_nodes and linestyle.node_tree:
+ shaders_list.append(BlenderTextureShader(linestyle.node_tree))
+ has_tex = True
if has_tex:
shaders_list.append(StrokeTextureStepShader(linestyle.texture_spacing))
diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py
index d3d9255123b..a549395597b 100644
--- a/release/scripts/modules/bpy/ops.py
+++ b/release/scripts/modules/bpy/ops.py
@@ -145,10 +145,10 @@ class BPyOpsSubModOp:
return C_dict, C_exec, C_undo
@staticmethod
- def _scene_update(context):
- scene = context.scene
- if scene: # None in background mode
- scene.update()
+ def _view_layer_update(context):
+ view_layer = context.view_layer
+ if view_layer: # None in background mode
+ view_layer.update()
else:
import bpy
for scene in bpy.data.scenes:
@@ -180,7 +180,10 @@ class BPyOpsSubModOp:
wm = context.window_manager
# run to account for any rna values the user changes.
- BPyOpsSubModOp._scene_update(context)
+ # NOTE: We only update active vew layer, since that's what
+ # operators are supposed to operate on. There might be some
+ # corner cases when operator need a full scene update though.
+ BPyOpsSubModOp._view_layer_update(context)
if args:
C_dict, C_exec, C_undo = BPyOpsSubModOp._parse_args(args)
@@ -189,7 +192,7 @@ class BPyOpsSubModOp:
ret = op_call(self.idname_py(), None, kw)
if 'FINISHED' in ret and context.window_manager == wm:
- BPyOpsSubModOp._scene_update(context)
+ BPyOpsSubModOp._view_layer_update(context)
return ret
diff --git a/release/scripts/presets/keyconfig/3dsmax.py b/release/scripts/presets/keyconfig/3dsmax.py
index c77ad6cfece..d65ecaa9204 100644
--- a/release/scripts/presets/keyconfig/3dsmax.py
+++ b/release/scripts/presets/keyconfig/3dsmax.py
@@ -2278,17 +2278,6 @@ kmi.properties.value_2 = 'CONNECTED'
# Map Armature
km = kc.keymaps.new('Armature', space_type='EMPTY', region_type='WINDOW', modal=False)
-kmi = km.keymap_items.new('sketch.delete', 'X', 'PRESS')
-kmi = km.keymap_items.new('sketch.delete', 'DEL', 'PRESS')
-kmi = km.keymap_items.new('sketch.finish_stroke', 'RIGHTMOUSE', 'PRESS')
-kmi = km.keymap_items.new('sketch.cancel_stroke', 'ESC', 'PRESS')
-kmi = km.keymap_items.new('sketch.gesture', 'LEFTMOUSE', 'PRESS', shift=True)
-kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS')
-kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS', ctrl=True)
-kmi.properties.snap = True
-kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY')
-kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY', ctrl=True)
-kmi.properties.snap = True
kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS')
kmi.properties.unselected = False
kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS', shift=True)
diff --git a/release/scripts/presets/keyconfig/maya.py b/release/scripts/presets/keyconfig/maya.py
index 7c8844444f1..09371e75950 100644
--- a/release/scripts/presets/keyconfig/maya.py
+++ b/release/scripts/presets/keyconfig/maya.py
@@ -770,17 +770,6 @@ kmi.properties.value_2 = 'CONNECTED'
# Map Armature
km = kc.keymaps.new('Armature', space_type='EMPTY', region_type='WINDOW', modal=False)
-kmi = km.keymap_items.new('sketch.delete', 'BACK_SPACE', 'PRESS')
-kmi = km.keymap_items.new('sketch.delete', 'DEL', 'PRESS')
-kmi = km.keymap_items.new('sketch.finish_stroke', 'RIGHTMOUSE', 'PRESS')
-kmi = km.keymap_items.new('sketch.cancel_stroke', 'ESC', 'PRESS')
-kmi = km.keymap_items.new('sketch.gesture', 'LEFTMOUSE', 'PRESS', shift=True)
-kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS')
-kmi = km.keymap_items.new('sketch.draw_stroke', 'LEFTMOUSE', 'PRESS', ctrl=True)
-kmi.properties.snap = True
-kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY')
-kmi = km.keymap_items.new('sketch.draw_preview', 'MOUSEMOVE', 'ANY', ctrl=True)
-kmi.properties.snap = True
kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS', ctrl=True)
kmi.properties.unselected = False
kmi = km.keymap_items.new('armature.hide', 'H', 'PRESS', alt=True)
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index 24323b1554e..70334fb0f23 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -364,88 +364,38 @@ class QuickSmoke(Operator):
# Setup material
- # Cycles
- if context.scene.render.use_shading_nodes or context.render.use_shading_nodes:
- bpy.ops.object.material_slot_add()
-
- mat = bpy.data.materials.new("Smoke Domain Material")
- obj.material_slots[0].material = mat
-
- # Make sure we use nodes
- mat.use_nodes = True
-
- # Set node variables and clear the default nodes
- tree = mat.node_tree
- nodes = tree.nodes
- links = tree.links
-
- nodes.clear()
+ # Cycles and Eevee
+ bpy.ops.object.material_slot_add()
- # Create shader nodes
+ mat = bpy.data.materials.new("Smoke Domain Material")
+ obj.material_slots[0].material = mat
- # Material output
- node_out = nodes.new(type='ShaderNodeOutputMaterial')
- node_out.location = grid_location(6, 1)
+ # Make sure we use nodes
+ mat.use_nodes = True
- # Add Principled Volume
- node_principled = nodes.new(type='ShaderNodeVolumePrincipled')
- node_principled.location = grid_location(4, 1)
- links.new(node_principled.outputs["Volume"],
- node_out.inputs["Volume"])
+ # Set node variables and clear the default nodes
+ tree = mat.node_tree
+ nodes = tree.nodes
+ links = tree.links
- node_principled.inputs["Density"].default_value = 5.0
+ nodes.clear()
- if self.style in {'FIRE', 'BOTH'}:
- node_principled.inputs["Blackbody Intensity"].default_value = 1.0
+ # Create shader nodes
- # Blender Internal
- else:
- # create a volume material with a voxel data texture for the domain
- bpy.ops.object.material_slot_add()
-
- mat = bpy.data.materials.new("Smoke Domain Material")
- obj.material_slots[0].material = mat
- mat.type = 'VOLUME'
- mat.volume.density = 0
- mat.volume.density_scale = 5
- mat.volume.step_size = 0.1
-
- tex = bpy.data.textures.new("Smoke Density", 'VOXEL_DATA')
- tex.voxel_data.domain_object = obj
- tex.voxel_data.interpolation = 'TRICUBIC_BSPLINE'
-
- tex_slot = mat.texture_slots.add()
- tex_slot.texture = tex
- tex_slot.texture_coords = 'ORCO'
- tex_slot.use_map_color_emission = False
- tex_slot.use_map_density = True
- tex_slot.use_map_color_reflection = True
-
- # for fire add a second texture for flame emission
- mat.volume.emission_color = Vector((0.0, 0.0, 0.0))
- tex = bpy.data.textures.new("Flame", 'VOXEL_DATA')
- tex.voxel_data.domain_object = obj
- tex.voxel_data.smoke_data_type = 'SMOKEFLAME'
- tex.voxel_data.interpolation = 'TRICUBIC_BSPLINE'
- tex.use_color_ramp = True
+ # Material output
+ node_out = nodes.new(type='ShaderNodeOutputMaterial')
+ node_out.location = grid_location(6, 1)
- tex_slot = mat.texture_slots.add()
- tex_slot.texture = tex
- tex_slot.texture_coords = 'ORCO'
+ # Add Principled Volume
+ node_principled = nodes.new(type='ShaderNodeVolumePrincipled')
+ node_principled.location = grid_location(4, 1)
+ links.new(node_principled.outputs["Volume"],
+ node_out.inputs["Volume"])
- # add color ramp for flame color
- ramp = tex.color_ramp
- # dark orange
- elem = ramp.elements.new(0.333)
- elem.color = (0.2, 0.03, 0.0, 1.0)
+ node_principled.inputs["Density"].default_value = 5.0
- # yellow glow
- elem = ramp.elements.new(0.666)
- elem.color = (1, 0.65, 0.25, 1.0)
-
- mat.texture_slots[1].use_map_density = True
- mat.texture_slots[1].use_map_emission = True
- mat.texture_slots[1].emission_factor = 5
+ if self.style in {'FIRE', 'BOTH'}:
+ node_principled.inputs["Blackbody Intensity"].default_value = 1.0
return {'FINISHED'}
@@ -547,13 +497,33 @@ class QuickFluid(Operator):
mat = bpy.data.materials.new("Fluid Domain Material")
obj.material_slots[0].material = mat
- mat.specular_intensity = 1
- mat.specular_hardness = 100
- mat.use_transparency = True
- mat.alpha = 0.0
- mat.transparency_method = 'RAYTRACE'
- mat.raytrace_transparency.ior = 1.33
- mat.raytrace_transparency.depth = 4
+ # Make sure we use nodes
+ mat.use_nodes = True
+
+ # Set node variables and clear the default nodes
+ tree = mat.node_tree
+ nodes = tree.nodes
+ links = tree.links
+
+ nodes.clear()
+
+ # Create shader nodes
+
+ # Material output
+ node_out = nodes.new(type='ShaderNodeOutputMaterial')
+ node_out.location = grid_location(6, 1)
+
+ # Add Glass
+ node_glass = nodes.new(type='ShaderNodeBsdfGlass')
+ node_glass.location = grid_location(4, 1)
+ links.new(node_glass.outputs["BSDF"], node_out.inputs["Surface"])
+ node_glass.inputs["IOR"].default_value = 1.33
+
+ # Add Absorption
+ node_absorption = nodes.new(type='ShaderNodeVolumeAbsorption')
+ node_absorption.location = grid_location(4, 2)
+ links.new(node_absorption.outputs["Volume"], node_out.inputs["Volume"])
+ node_absorption.inputs["Color"].default_value = (0.8, 0.9, 1.0, 1.0)
if self.start_baking:
bpy.ops.fluid.bake('INVOKE_DEFAULT')
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index c696c38dac6..b06d054e15f 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -318,34 +318,6 @@ class AddPresetSafeAreas(AddPresetBase, Operator):
preset_subdir = "safe_areas"
-class AddPresetSSS(AddPresetBase, Operator):
- """Add or remove a Subsurface Scattering Preset"""
- bl_idname = "material.sss_preset_add"
- bl_label = "Add SSS Preset"
- preset_menu = "MATERIAL_MT_sss_presets"
-
- preset_defines = [
- ("material = "
- "bpy.context.material.active_node_material "
- "if bpy.context.material.active_node_material "
- "else bpy.context.material")
- ]
-
- preset_values = [
- "material.subsurface_scattering.back",
- "material.subsurface_scattering.color",
- "material.subsurface_scattering.color_factor",
- "material.subsurface_scattering.error_threshold",
- "material.subsurface_scattering.front",
- "material.subsurface_scattering.ior",
- "material.subsurface_scattering.radius",
- "material.subsurface_scattering.scale",
- "material.subsurface_scattering.texture_factor",
- ]
-
- preset_subdir = "sss"
-
-
class AddPresetCloth(AddPresetBase, Operator):
"""Add or remove a Cloth Preset"""
bl_idname = "cloth.preset_add"
@@ -695,7 +667,6 @@ classes = (
AddPresetNodeColor,
AddPresetOperator,
AddPresetRender,
- AddPresetSSS,
AddPresetSafeAreas,
AddPresetSunSky,
AddPresetTrackingCamera,
diff --git a/release/scripts/startup/bl_ui/properties_data_lamp.py b/release/scripts/startup/bl_ui/properties_data_lamp.py
index f3daf64b442..892ca26189d 100644
--- a/release/scripts/startup/bl_ui/properties_data_lamp.py
+++ b/release/scripts/startup/bl_ui/properties_data_lamp.py
@@ -55,16 +55,11 @@ class DATA_PT_context_lamp(DataButtonsPanel, Panel):
split = layout.split(percentage=0.65)
- texture_count = len(lamp.texture_slots.keys())
-
if ob:
split.template_ID(ob, "data")
elif lamp:
split.template_ID(space, "pin_id")
- if texture_count != 0:
- split.label(text=str(texture_count), icon='TEXTURE')
-
class DATA_PT_preview(DataButtonsPanel, Panel):
bl_label = "Preview"
@@ -111,17 +106,11 @@ class DATA_PT_lamp(DataButtonsPanel, Panel):
sub.prop(lamp, "linear_coefficient", text="Linear")
sub.prop(lamp, "quadratic_coefficient", text="Quadratic")
- col.prop(lamp, "use_sphere")
-
if lamp.type == 'AREA':
col.prop(lamp, "distance")
- col.prop(lamp, "gamma")
col = split.column()
- col.prop(lamp, "use_negative")
- col.prop(lamp, "use_own_layer", text="This Layer Only")
- col.prop(lamp, "use_specular")
- col.prop(lamp, "use_diffuse")
+ col.label()
class DATA_PT_EEVEE_lamp(DataButtonsPanel, Panel):
@@ -154,202 +143,7 @@ class DATA_PT_EEVEE_lamp(DataButtonsPanel, Panel):
sub.prop(lamp, "size_y", text="Size Y")
col = split.column()
- col.prop(lamp, "use_specular")
- col.prop(lamp, "use_diffuse")
- col.separator()
-
- if lamp.type in {'POINT', 'SPOT', 'AREA'}:
- col.prop(lamp, "use_sphere")
- col = col.column()
- col.active = lamp.use_sphere
- col.prop(lamp, "distance")
-
-
-class DATA_PT_sunsky(DataButtonsPanel, Panel):
- bl_label = "Sky & Atmosphere"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- lamp = context.lamp
- engine = context.engine
- return (lamp and lamp.type == 'SUN') and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- lamp = context.lamp.sky
-
- row = layout.row(align=True)
- row.prop(lamp, "use_sky")
- row.menu("LAMP_MT_sunsky_presets", text=bpy.types.LAMP_MT_sunsky_presets.bl_label)
- row.operator("lamp.sunsky_preset_add", text="", icon='ZOOMIN')
- row.operator("lamp.sunsky_preset_add", text="", icon='ZOOMOUT').remove_active = True
-
- row = layout.row()
- row.active = lamp.use_sky or lamp.use_atmosphere
- row.prop(lamp, "atmosphere_turbidity", text="Turbidity")
-
- split = layout.split()
-
- col = split.column()
- col.active = lamp.use_sky
- col.label(text="Blending:")
- sub = col.column()
- sub.prop(lamp, "sky_blend_type", text="")
- sub.prop(lamp, "sky_blend", text="Factor")
-
- col.label(text="Color Space:")
- sub = col.column()
- sub.row().prop(lamp, "sky_color_space", expand=True)
- sub.prop(lamp, "sky_exposure", text="Exposure")
-
- col = split.column()
- col.active = lamp.use_sky
- col.label(text="Horizon:")
- sub = col.column()
- sub.prop(lamp, "horizon_brightness", text="Brightness")
- sub.prop(lamp, "spread", text="Spread")
-
- col.label(text="Sun:")
- sub = col.column()
- sub.prop(lamp, "sun_brightness", text="Brightness")
- sub.prop(lamp, "sun_size", text="Size")
- sub.prop(lamp, "backscattered_light", slider=True, text="Back Light")
-
- layout.separator()
-
- layout.prop(lamp, "use_atmosphere")
-
- split = layout.split()
-
- col = split.column()
- col.active = lamp.use_atmosphere
- col.label(text="Intensity:")
- col.prop(lamp, "sun_intensity", text="Sun")
- col.prop(lamp, "atmosphere_distance_factor", text="Distance")
-
- col = split.column()
- col.active = lamp.use_atmosphere
- col.label(text="Scattering:")
- sub = col.column(align=True)
- sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
- sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
-
-
-class DATA_PT_shadow(DataButtonsPanel, Panel):
- bl_label = "Shadow"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- lamp = context.lamp
- engine = context.engine
- return (lamp and lamp.type in {'POINT', 'SUN', 'SPOT', 'AREA'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- lamp = context.lamp
-
- layout.row().prop(lamp, "shadow_method", expand=True)
-
- if lamp.shadow_method == 'NOSHADOW' and lamp.type == 'AREA':
- split = layout.split()
-
- col = split.column()
- col.label(text="Form Factor Sampling:")
-
- sub = col.row(align=True)
-
- if lamp.shape == 'SQUARE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
- elif lamp.shape == 'RECTANGLE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
- sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
-
- if lamp.shadow_method != 'NOSHADOW':
- split = layout.split()
-
- col = split.column()
- col.prop(lamp, "shadow_color", text="")
-
- col = split.column()
- col.prop(lamp, "use_shadow_layer", text="This Layer Only")
- col.prop(lamp, "use_only_shadow")
-
- if lamp.shadow_method == 'RAY_SHADOW':
- split = layout.split()
-
- col = split.column()
- col.label(text="Sampling:")
-
- if lamp.type in {'POINT', 'SUN', 'SPOT'}:
- sub = col.row()
-
- sub.prop(lamp, "shadow_ray_samples", text="Samples")
- sub.prop(lamp, "shadow_soft_size", text="Soft Size")
-
- elif lamp.type == 'AREA':
- sub = col.row(align=True)
-
- if lamp.shape == 'SQUARE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
- elif lamp.shape == 'RECTANGLE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
- sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
-
- col.row().prop(lamp, "shadow_ray_sample_method", expand=True)
-
- if lamp.shadow_ray_sample_method == 'ADAPTIVE_QMC':
- layout.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
-
- if lamp.type == 'AREA' and lamp.shadow_ray_sample_method == 'CONSTANT_JITTERED':
- row = layout.row()
- row.prop(lamp, "use_umbra")
- row.prop(lamp, "use_dither")
- row.prop(lamp, "use_jitter")
-
- elif lamp.shadow_method == 'BUFFER_SHADOW':
- col = layout.column()
- col.label(text="Buffer Type:")
- col.row().prop(lamp, "shadow_buffer_type", expand=True)
-
- if lamp.shadow_buffer_type in {'REGULAR', 'HALFWAY', 'DEEP'}:
- split = layout.split()
-
- col = split.column()
- col.label(text="Filter Type:")
- col.prop(lamp, "shadow_filter_type", text="")
- sub = col.column(align=True)
- sub.prop(lamp, "shadow_buffer_soft", text="Soft")
- sub.prop(lamp, "shadow_buffer_bias", text="Bias")
-
- col = split.column()
- col.label(text="Sample Buffers:")
- col.prop(lamp, "shadow_sample_buffers", text="")
- sub = col.column(align=True)
- sub.prop(lamp, "shadow_buffer_size", text="Size")
- sub.prop(lamp, "shadow_buffer_samples", text="Samples")
- if lamp.shadow_buffer_type == 'DEEP':
- col.prop(lamp, "compression_threshold")
-
- elif lamp.shadow_buffer_type == 'IRREGULAR':
- layout.prop(lamp, "shadow_buffer_bias", text="Bias")
-
- split = layout.split()
-
- col = split.column()
- col.prop(lamp, "use_auto_clip_start", text="Autoclip Start")
- sub = col.column()
- sub.active = not lamp.use_auto_clip_start
- sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
-
- col = split.column()
- col.prop(lamp, "use_auto_clip_end", text="Autoclip End")
- sub = col.column()
- sub.active = not lamp.use_auto_clip_end
- sub.prop(lamp, "shadow_buffer_clip_end", text="Clip End")
+ col.label()
class DATA_PT_EEVEE_shadow(DataButtonsPanel, Panel):
@@ -531,8 +325,6 @@ classes = (
DATA_PT_preview,
DATA_PT_lamp,
DATA_PT_EEVEE_lamp,
- DATA_PT_sunsky,
- DATA_PT_shadow,
DATA_PT_EEVEE_shadow,
DATA_PT_area,
DATA_PT_spot,
diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 30690418e51..a9a47d268d2 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -241,7 +241,7 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
class DATA_PT_face_maps(MeshButtonsPanel, Panel):
bl_label = "Face Maps"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index bf8529959f4..28e39959c7e 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1014,17 +1014,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
def UV_PROJECT(self, layout, ob, md):
split = layout.split()
-
- col = split.column()
- col.label(text="Image:")
- col.prop(md, "image", text="")
-
col = split.column()
- col.label(text="UV Map:")
- col.prop_search(md, "uv_layer", ob.data, "uv_layers", text="")
+ col.prop_search(md, "uv_layer", ob.data, "uv_layers")
+ col.separator()
- split = layout.split()
- col = split.column()
col.prop(md, "projector_count", text="Projectors")
for proj in md.projectors:
col.prop(proj, "object", text="")
diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py
index b1992127932..84ebb21c703 100644
--- a/release/scripts/startup/bl_ui/properties_freestyle.py
+++ b/release/scripts/startup/bl_ui/properties_freestyle.py
@@ -39,7 +39,7 @@ class RenderFreestyleButtonsPanel:
class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
bl_label = "Freestyle"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
rd = context.scene.render
@@ -111,7 +111,7 @@ class RENDER_MT_lineset_specials(Menu):
class VIEWLAYER_PT_freestyle(ViewLayerFreestyleButtonsPanel, Panel):
bl_label = "Freestyle"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -167,7 +167,7 @@ class VIEWLAYER_PT_freestyle(ViewLayerFreestyleButtonsPanel, Panel):
class VIEWLAYER_PT_freestyle_lineset(ViewLayerFreestyleEditorButtonsPanel, Panel):
bl_label = "Freestyle Line Set"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_edge_type_buttons(self, box, lineset, edge_type):
# property names
@@ -261,7 +261,7 @@ class VIEWLAYER_PT_freestyle_lineset(ViewLayerFreestyleEditorButtonsPanel, Panel
class VIEWLAYER_PT_freestyle_linestyle(ViewLayerFreestyleEditorButtonsPanel, Panel):
bl_label = "Freestyle Line Style"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_modifier_box_header(self, box, modifier):
row = box.row()
@@ -781,10 +781,7 @@ class VIEWLAYER_PT_freestyle_linestyle(ViewLayerFreestyleEditorButtonsPanel, Pan
layout.separator()
row = layout.row()
- if scene.render.use_shading_nodes:
- row.prop(linestyle, "use_nodes")
- else:
- row.prop(linestyle, "use_texture")
+ row.prop(linestyle, "use_nodes")
row.prop(linestyle, "texture_spacing", text="Spacing Along Stroke")
row = layout.row()
@@ -818,7 +815,7 @@ class MaterialFreestyleButtonsPanel:
class MATERIAL_PT_freestyle_line(MaterialFreestyleButtonsPanel, Panel):
bl_label = "Freestyle Line"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 233a1c4369e..13c783ad024 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -23,42 +23,6 @@ from rna_prop_ui import PropertyPanel
from bpy.app.translations import pgettext_iface as iface_
from bpy_extras.node_utils import find_node_input, find_output_node
-def active_node_mat(mat):
- # TODO, 2.4x has a pipeline section, for 2.5 we need to communicate
- # which settings from node-materials are used
- if mat is not None:
- mat_node = mat.active_node_material
- if mat_node:
- return mat_node
- else:
- return mat
-
- return None
-
-
-def check_material(mat):
- if mat is not None:
- if mat.use_nodes:
- if mat.active_node_material is not None:
- return True
- return False
- return True
- return False
-
-
-def simple_material(mat):
- if (mat is not None) and (not mat.use_nodes):
- return True
- return False
-
-
-class MATERIAL_MT_sss_presets(Menu):
- bl_label = "SSS Presets"
- preset_subdir = "sss"
- preset_operator = "script.execute_preset"
- draw = Menu.draw_preset
-
-
class MATERIAL_MT_specials(Menu):
bl_label = "Material Specials"
@@ -82,12 +46,6 @@ class MATERIAL_UL_matslots(UIList):
layout.prop(ma, "name", text="", emboss=False, icon_value=icon)
else:
layout.label(text="", icon_value=icon)
- if ma and not context.scene.render.use_shading_nodes:
- manode = ma.active_node_material
- if manode:
- layout.label(text=iface_("Node %s") % manode.name, translate=False, icon_value=layout.icon(manode))
- elif ma.use_nodes:
- layout.label(text="Node <none>")
elif self.layout_type == 'GRID':
layout.alignment = 'CENTER'
layout.label(text="", icon_value=icon)
@@ -104,859 +62,16 @@ class MaterialButtonsPanel:
return context.material and (context.engine in cls.COMPAT_ENGINES)
-class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
- bl_label = ""
- bl_options = {'HIDE_HEADER'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- # An exception, don't call the parent poll func because
- # this manages materials for all engine types
-
- engine = context.engine
- return (context.material or context.object) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material
- ob = context.object
- slot = context.material_slot
- space = context.space_data
-
- if ob:
- is_sortable = (len(ob.material_slots) > 1)
-
- rows = 1
- if is_sortable:
- rows = 4
-
- row = layout.row()
-
- row.template_list("MATERIAL_UL_matslots", "", ob, "material_slots", ob, "active_material_index", rows=rows)
-
- col = row.column(align=True)
- col.operator("object.material_slot_add", icon='ZOOMIN', text="")
- col.operator("object.material_slot_remove", icon='ZOOMOUT', text="")
-
- col.menu("MATERIAL_MT_specials", icon='DOWNARROW_HLT', text="")
-
- if is_sortable:
- col.separator()
-
- col.operator("object.material_slot_move", icon='TRIA_UP', text="").direction = 'UP'
- col.operator("object.material_slot_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
-
- if ob.mode == 'EDIT':
- row = layout.row(align=True)
- row.operator("object.material_slot_assign", text="Assign")
- row.operator("object.material_slot_select", text="Select")
- row.operator("object.material_slot_deselect", text="Deselect")
-
- split = layout.split(percentage=0.65)
-
- if ob:
- split.template_ID(ob, "active_material", new="material.new")
- row = split.row()
- if mat:
- row.prop(mat, "use_nodes", icon='NODETREE', text="")
-
- if slot:
- row.prop(slot, "link", text="")
- else:
- row.label()
- elif mat:
- split.template_ID(space, "pin_id")
- split.separator()
-
- if mat:
- layout.row().prop(mat, "type", expand=True)
- if mat.use_nodes:
- row = layout.row()
- row.label(text="", icon='NODETREE')
- if mat.active_node_material:
- row.prop(mat.active_node_material, "name", text="")
- else:
- row.label(text="No material node selected")
-
-
class MATERIAL_PT_preview(MaterialButtonsPanel, Panel):
bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+ COMPAT_ENGINES = {'BLENDER_EEVEE'}
def draw(self, context):
self.layout.template_preview(context.material)
-class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel):
- bl_label = "Render Pipeline Options"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and (not simple_material(mat)) and (mat.type in {'SURFACE', 'WIRE', 'VOLUME'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self. layout
-
- mat = context.material
- mat_type = mat.type in {'SURFACE', 'WIRE'}
-
- row = layout.row()
- row.active = mat_type
- row.prop(mat, "use_transparency")
- sub = row.column()
- sub.prop(mat, "offset_z")
-
- sub.active = mat_type and mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY'
-
- row = layout.row()
- row.active = mat.use_transparency or not mat_type
- row.prop(mat, "transparency_method", expand=True)
-
- layout.separator()
-
- split = layout.split()
- col = split.column()
-
- col.prop(mat, "use_raytrace")
- col.prop(mat, "use_full_oversampling")
- sub = col.column()
- sub.active = mat_type
- sub.prop(mat, "use_sky")
- sub.prop(mat, "invert_z")
- col.prop(mat, "pass_index")
-
- col = split.column()
- col.active = mat_type
-
- col.prop(mat, "use_cast_shadows", text="Cast")
- col.prop(mat, "use_cast_shadows_only", text="Cast Only")
- col.prop(mat, "use_cast_buffer_shadows")
- sub = col.column()
- sub.active = mat.use_cast_buffer_shadows
- sub.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
- col.prop(mat, "use_cast_approximate")
-
-
-class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
- bl_label = "Diffuse"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "diffuse_color", text="")
- sub = col.column()
- sub.active = (not mat.use_shadeless)
- sub.prop(mat, "diffuse_intensity", text="Intensity")
-
- col = split.column()
- col.active = (not mat.use_shadeless)
- col.prop(mat, "diffuse_shader", text="")
- col.prop(mat, "use_diffuse_ramp", text="Ramp")
-
- col = layout.column()
- col.active = (not mat.use_shadeless)
- if mat.diffuse_shader == 'OREN_NAYAR':
- col.prop(mat, "roughness")
- elif mat.diffuse_shader == 'MINNAERT':
- col.prop(mat, "darkness")
- elif mat.diffuse_shader == 'TOON':
- row = col.row()
- row.prop(mat, "diffuse_toon_size", text="Size")
- row.prop(mat, "diffuse_toon_smooth", text="Smooth")
- elif mat.diffuse_shader == 'FRESNEL':
- row = col.row()
- row.prop(mat, "diffuse_fresnel", text="Fresnel")
- row.prop(mat, "diffuse_fresnel_factor", text="Factor")
-
- if mat.use_diffuse_ramp:
- col = layout.column()
- col.active = (not mat.use_shadeless)
- col.separator()
- col.template_color_ramp(mat, "diffuse_ramp", expand=True)
- col.separator()
-
- row = col.row()
- row.prop(mat, "diffuse_ramp_input", text="Input")
- row.prop(mat, "diffuse_ramp_blend", text="Blend")
-
- col.prop(mat, "diffuse_ramp_factor", text="Factor")
-
-
-class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
- bl_label = "Specular"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- layout.active = (not mat.use_shadeless)
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "specular_color", text="")
- col.prop(mat, "specular_intensity", text="Intensity")
-
- col = split.column()
- col.prop(mat, "specular_shader", text="")
- col.prop(mat, "use_specular_ramp", text="Ramp")
-
- col = layout.column()
- if mat.specular_shader in {'COOKTORR', 'PHONG'}:
- col.prop(mat, "specular_hardness", text="Hardness")
- elif mat.specular_shader == 'BLINN':
- row = col.row()
- row.prop(mat, "specular_hardness", text="Hardness")
- row.prop(mat, "specular_ior", text="IOR")
- elif mat.specular_shader == 'WARDISO':
- col.prop(mat, "specular_slope", text="Slope")
- elif mat.specular_shader == 'TOON':
- row = col.row()
- row.prop(mat, "specular_toon_size", text="Size")
- row.prop(mat, "specular_toon_smooth", text="Smooth")
-
- if mat.use_specular_ramp:
- layout.separator()
- layout.template_color_ramp(mat, "specular_ramp", expand=True)
- layout.separator()
-
- row = layout.row()
- row.prop(mat, "specular_ramp_input", text="Input")
- row.prop(mat, "specular_ramp_blend", text="Blend")
-
- layout.prop(mat, "specular_ramp_factor", text="Factor")
-
-
-class MATERIAL_PT_shading(MaterialButtonsPanel, Panel):
- bl_label = "Shading"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- if mat.type in {'SURFACE', 'WIRE'}:
- split = layout.split()
-
- col = split.column()
- sub = col.column()
- sub.active = not mat.use_shadeless
- sub.prop(mat, "emit")
- sub.prop(mat, "ambient")
- sub = col.column()
- sub.prop(mat, "translucency")
-
- col = split.column()
- col.prop(mat, "use_shadeless")
- sub = col.column()
- sub.active = not mat.use_shadeless
- sub.prop(mat, "use_tangent_shading")
- sub.prop(mat, "use_cubic")
-
-
-class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
- bl_label = "Transparency"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- mat = context.material
-
- if simple_material(mat):
- self.layout.prop(mat, "use_transparency", text="")
-
- def draw(self, context):
- layout = self.layout
-
- base_mat = context.material
- mat = active_node_mat(context.material)
- rayt = mat.raytrace_transparency
-
- if simple_material(base_mat):
- row = layout.row()
- row.active = mat.use_transparency
- row.prop(mat, "transparency_method", expand=True)
-
- split = layout.split()
- split.active = base_mat.use_transparency
-
- col = split.column()
- col.prop(mat, "alpha")
- row = col.row()
- row.active = (base_mat.transparency_method != 'MASK') and (not mat.use_shadeless)
- row.prop(mat, "specular_alpha", text="Specular")
-
- col = split.column()
- col.active = (not mat.use_shadeless)
- col.prop(rayt, "fresnel")
- sub = col.column()
- sub.active = (rayt.fresnel > 0.0)
- sub.prop(rayt, "fresnel_factor", text="Blend")
-
- if base_mat.transparency_method == 'RAYTRACE':
- layout.separator()
- split = layout.split()
- split.active = base_mat.use_transparency
-
- col = split.column()
- col.prop(rayt, "ior")
- col.prop(rayt, "filter")
- col.prop(rayt, "falloff")
- col.prop(rayt, "depth_max")
- col.prop(rayt, "depth")
-
- col = split.column()
- col.label(text="Gloss:")
- col.prop(rayt, "gloss_factor", text="Amount")
- sub = col.column()
- sub.active = rayt.gloss_factor < 1.0
- sub.prop(rayt, "gloss_threshold", text="Threshold")
- sub.prop(rayt, "gloss_samples", text="Samples")
-
-
-class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
- bl_label = "Mirror"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- raym = active_node_mat(context.material).raytrace_mirror
-
- self.layout.prop(raym, "use", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
- raym = mat.raytrace_mirror
-
- layout.active = raym.use
-
- split = layout.split()
-
- col = split.column()
- col.prop(raym, "reflect_factor")
- col.prop(mat, "mirror_color", text="")
-
- col = split.column()
- col.prop(raym, "fresnel")
- sub = col.column()
- sub.active = (raym.fresnel > 0.0)
- sub.prop(raym, "fresnel_factor", text="Blend")
-
- split = layout.split()
-
- col = split.column()
- col.separator()
- col.prop(raym, "depth")
- col.prop(raym, "distance", text="Max Dist")
- col.separator()
- sub = col.split(percentage=0.4)
- sub.active = (raym.distance > 0.0)
- sub.label(text="Fade To:")
- sub.prop(raym, "fade_to", text="")
-
- col = split.column()
- col.label(text="Gloss:")
- col.prop(raym, "gloss_factor", text="Amount")
- sub = col.column()
- sub.active = (raym.gloss_factor < 1.0)
- sub.prop(raym, "gloss_threshold", text="Threshold")
- sub.prop(raym, "gloss_samples", text="Samples")
- sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
-
-
-class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
- bl_label = "Subsurface Scattering"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- mat = active_node_mat(context.material)
- sss = mat.subsurface_scattering
-
- self.layout.active = (not mat.use_shadeless)
- self.layout.prop(sss, "use", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
- sss = mat.subsurface_scattering
-
- layout.active = (sss.use) and (not mat.use_shadeless)
-
- row = layout.row().split()
- sub = row.row(align=True).split(align=True, percentage=0.75)
- sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label)
- sub.operator("material.sss_preset_add", text="", icon='ZOOMIN')
- sub.operator("material.sss_preset_add", text="", icon='ZOOMOUT').remove_active = True
-
- split = layout.split()
-
- col = split.column()
- col.prop(sss, "ior")
- col.prop(sss, "scale")
- col.prop(sss, "color", text="")
- col.prop(sss, "radius", text="RGB Radius", expand=True)
-
- col = split.column()
- sub = col.column(align=True)
- sub.label(text="Blend:")
- sub.prop(sss, "color_factor", text="Color")
- sub.prop(sss, "texture_factor", text="Texture")
- sub.label(text="Scattering Weight:")
- sub.prop(sss, "front")
- sub.prop(sss, "back")
- col.separator()
- col.prop(sss, "error_threshold", text="Error")
-
-
-class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
- bl_label = "Halo"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and (mat.type == 'HALO') and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material # don't use node material
- halo = mat.halo
-
- def number_but(layout, toggle, number, name, color):
- row = layout.row(align=True)
- row.prop(halo, toggle, text="")
- sub = row.column(align=True)
- sub.active = getattr(halo, toggle)
- sub.prop(halo, number, text=name, translate=False)
- if not color == "":
- sub.prop(mat, color, text="")
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "alpha")
- col.prop(mat, "diffuse_color", text="")
- col.prop(halo, "seed")
-
- col = split.column()
- col.prop(halo, "size")
- col.prop(halo, "hardness")
- col.prop(halo, "add")
-
- layout.label(text="Options:")
-
- split = layout.split()
- col = split.column()
- col.prop(halo, "use_texture")
- col.prop(halo, "use_vertex_normal")
- col.prop(halo, "use_extreme_alpha")
- col.prop(halo, "use_shaded")
- col.prop(halo, "use_soft")
-
- col = split.column()
- number_but(col, "use_ring", "ring_count", iface_("Rings"), "mirror_color")
- number_but(col, "use_lines", "line_count", iface_("Lines"), "specular_color")
- number_but(col, "use_star", "star_tip_count", iface_("Star Tips"), "")
-
-
-class MATERIAL_PT_flare(MaterialButtonsPanel, Panel):
- bl_label = "Flare"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and (mat.type == 'HALO') and (engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- halo = context.material.halo
-
- self.layout.prop(halo, "use_flare_mode", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material # don't use node material
- halo = mat.halo
-
- layout.active = halo.use_flare_mode
-
- split = layout.split()
-
- col = split.column()
- col.prop(halo, "flare_size", text="Size")
- col.prop(halo, "flare_boost", text="Boost")
- col.prop(halo, "flare_seed", text="Seed")
-
- col = split.column()
- col.prop(halo, "flare_subflare_count", text="Subflares")
- col.prop(halo, "flare_subflare_size", text="Subsize")
-
-
-class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
- bl_label = "Strand"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and (mat.type in {'SURFACE', 'WIRE', 'HALO'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material # don't use node material
- tan = mat.strand
-
- split = layout.split()
-
- col = split.column()
- sub = col.column(align=True)
- sub.label(text="Size:")
- sub.prop(tan, "root_size", text="Root")
- sub.prop(tan, "tip_size", text="Tip")
- sub.prop(tan, "size_min", text="Minimum")
- sub.prop(tan, "use_blender_units")
- sub = col.column()
- sub.active = (not mat.use_shadeless)
- sub.prop(tan, "use_tangent_shading")
- col.prop(tan, "shape")
-
- col = split.column()
- col.label(text="Shading:")
- col.prop(tan, "width_fade")
- ob = context.object
- if ob and ob.type == 'MESH':
- col.prop_search(tan, "uv_layer", ob.data, "uv_layers", text="")
- else:
- col.prop(tan, "uv_layer", text="")
- col.separator()
- sub = col.column()
- sub.active = (not mat.use_shadeless)
- sub.label("Surface diffuse:")
- sub = col.column()
- sub.prop(tan, "blend_distance", text="Distance")
-
-
-class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
- bl_label = "Options"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- base_mat = context.material
- mat = active_node_mat(base_mat)
-
- split = layout.split()
-
- col = split.column()
- if simple_material(base_mat):
- col.prop(mat, "use_raytrace")
- col.prop(mat, "use_full_oversampling")
- col.prop(mat, "use_sky")
- col.prop(mat, "use_mist")
- if simple_material(base_mat):
- col.prop(mat, "invert_z")
- sub = col.row()
- sub.prop(mat, "offset_z")
- sub.active = mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY'
- sub = col.column(align=True)
- sub.label(text="Light Group:")
- sub.prop(mat, "light_group", text="")
- row = sub.row(align=True)
- row.active = bool(mat.light_group)
- row.prop(mat, "use_light_group_exclusive", text="Exclusive")
- row.prop(mat, "use_light_group_local", text="Local")
-
- col = split.column()
- col.prop(mat, "use_vertex_color_paint")
- col.prop(mat, "use_vertex_color_light")
- col.prop(mat, "use_object_color")
- col.prop(mat, "use_uv_project")
- if simple_material(base_mat):
- col.prop(mat, "pass_index")
-
- col.label("Edit Image")
- col.template_ID(mat, "edit_image")
-
-
-class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
- bl_label = "Shadow"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- base_mat = context.material
- mat = active_node_mat(base_mat)
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "use_shadows", text="Receive")
- col.prop(mat, "use_transparent_shadows", text="Receive Transparent")
- col.prop(mat, "use_only_shadow", text="Shadows Only")
- sub = col.column()
- sub.active = mat.use_only_shadow
- sub.prop(mat, "shadow_only_type", text="")
-
- if not simple_material(base_mat):
- col = split.column()
-
- col.prop(mat, "use_ray_shadow_bias", text="Auto Ray Bias")
- sub = col.column()
- sub.active = (not mat.use_ray_shadow_bias)
- sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
-
- if simple_material(base_mat):
- col = split.column()
-
- col.prop(mat, "use_cast_shadows", text="Cast")
- col.prop(mat, "use_cast_shadows_only", text="Cast Only")
- col.prop(mat, "use_cast_buffer_shadows")
- sub = col.column()
- sub.active = mat.use_cast_buffer_shadows
- if simple_material(base_mat):
- sub.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
- sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
- if simple_material(base_mat):
- col.prop(mat, "use_cast_approximate")
-
-
-class VolumeButtonsPanel:
- bl_space_type = 'PROPERTIES'
- bl_region_type = 'WINDOW'
- bl_context = "material"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and (mat.type == 'VOLUME') and (engine in cls.COMPAT_ENGINES)
-
-
-class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel):
- bl_label = "Density"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- vol = context.material.volume # don't use node material
-
- row = layout.row()
- row.prop(vol, "density")
- row.prop(vol, "density_scale")
-
-
-class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel):
- bl_label = "Shading"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- vol = context.material.volume # don't use node material
-
- split = layout.split()
-
- col = split.column()
- col.prop(vol, "scattering")
- col.prop(vol, "asymmetry")
- col.prop(vol, "transmission_color")
-
- col = split.column()
- sub = col.column(align=True)
- sub.prop(vol, "emission")
- sub.prop(vol, "emission_color", text="")
- sub = col.column(align=True)
- sub.prop(vol, "reflection")
- sub.prop(vol, "reflection_color", text="")
-
-
-class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel):
- bl_label = "Lighting"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- vol = context.material.volume # don't use node material
-
- split = layout.split()
-
- col = split.column()
- col.prop(vol, "light_method", text="")
-
- col = split.column()
-
- if vol.light_method == 'SHADED':
- col.prop(vol, "use_external_shadows")
- col.prop(vol, "use_light_cache")
- sub = col.column()
- sub.active = vol.use_light_cache
- sub.prop(vol, "cache_resolution")
- elif vol.light_method in {'MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'}:
- sub = col.column()
- sub.enabled = True
- sub.active = False
- sub.label("Light Cache Enabled")
- col.prop(vol, "cache_resolution")
-
- sub = col.column(align=True)
- sub.prop(vol, "ms_diffusion")
- sub.prop(vol, "ms_spread")
- sub.prop(vol, "ms_intensity")
-
-
-class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel):
- bl_label = "Transparency"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return mat and simple_material(mat) and (mat.type == 'VOLUME') and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material # don't use node material
-
- layout.row().prop(mat, "transparency_method", expand=True)
-
-
-class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel):
- bl_label = "Integration"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- vol = context.material.volume # don't use node material
-
- split = layout.split()
-
- col = split.column()
- col.label(text="Step Calculation:")
- col.prop(vol, "step_method", text="")
- col = col.column(align=True)
- col.prop(vol, "step_size")
-
- col = split.column()
- col.label()
- col.prop(vol, "depth_threshold")
-
-
-class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel):
- bl_label = "Options"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
- bl_options = {'DEFAULT_CLOSED'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.engine
- return check_material(mat) and (mat.type == 'VOLUME') and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- split = layout.split()
-
- col = split.column()
- if simple_material(context.material):
- col.prop(mat, "use_raytrace")
- col.prop(mat, "use_full_oversampling")
- col.prop(mat, "use_mist")
-
- col = split.column()
- col.label(text="Light Group:")
- col.prop(mat, "light_group", text="")
- row = col.row()
- row.active = bool(mat.light_group)
- row.prop(mat, "use_light_group_exclusive", text="Exclusive")
-
-
class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_EEVEE'}
_context_path = "material"
_property_type = bpy.types.Material
@@ -1101,29 +216,9 @@ class EEVEE_MATERIAL_PT_options(MaterialButtonsPanel, Panel):
classes = (
- MATERIAL_MT_sss_presets,
MATERIAL_MT_specials,
MATERIAL_UL_matslots,
- MATERIAL_PT_context_material,
MATERIAL_PT_preview,
- MATERIAL_PT_pipeline,
- MATERIAL_PT_diffuse,
- MATERIAL_PT_specular,
- MATERIAL_PT_shading,
- MATERIAL_PT_transp,
- MATERIAL_PT_mirror,
- MATERIAL_PT_sss,
- MATERIAL_PT_halo,
- MATERIAL_PT_flare,
- MATERIAL_PT_strand,
- MATERIAL_PT_options,
- MATERIAL_PT_shadow,
- MATERIAL_PT_volume_density,
- MATERIAL_PT_volume_shading,
- MATERIAL_PT_volume_lighting,
- MATERIAL_PT_volume_transp,
- MATERIAL_PT_volume_integration,
- MATERIAL_PT_volume_options,
MATERIAL_PT_custom_props,
EEVEE_MATERIAL_PT_context_material,
EEVEE_MATERIAL_PT_surface,
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 4a446ac5f48..b6f7cfe3e84 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -1396,6 +1396,38 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
# row.prop(psys, "invert_vertex_group_field", text="")
+class PARTICLE_PT_textures(ParticleButtonsPanel, Panel):
+ bl_label = "Textures"
+ bl_options = {'DEFAULT_CLOSED'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_CLAY', 'BLENDER_EEVEE'}
+
+ @classmethod
+ def poll(cls, context):
+ if context.particle_system is None:
+ return False
+ return particle_panel_poll(cls, context)
+
+ def draw(self, context):
+ layout = self.layout
+
+ psys = context.particle_system
+ part = psys.settings
+
+ row = layout.row()
+ row.template_list("TEXTURE_UL_texslots", "", part, "texture_slots", part, "active_texture_index", rows=2)
+
+ col = row.column(align=True)
+ col.operator("texture.slot_move", text="", icon='TRIA_UP').type = 'UP'
+ col.operator("texture.slot_move", text="", icon='TRIA_DOWN').type = 'DOWN'
+ col.menu("TEXTURE_MT_specials", icon='DOWNARROW_HLT', text="")
+
+ if not part.active_texture:
+ layout.template_ID(part, "active_texture", new="texture.new")
+ else:
+ slot = part.texture_slots[part.active_texture_index]
+ layout.template_ID(slot, "texture", new="texture.new")
+
+
class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel):
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_CLAY', 'BLENDER_EEVEE'}
_context_path = "particle_system.settings"
@@ -1420,6 +1452,7 @@ classes = (
PARTICLE_PT_field_weights,
PARTICLE_PT_force_fields,
PARTICLE_PT_vertexgroups,
+ PARTICLE_PT_textures,
PARTICLE_PT_custom_props,
)
diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py
index 1528899a4de..e0d0327324b 100644
--- a/release/scripts/startup/bl_ui/properties_physics_cloth.py
+++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py
@@ -50,7 +50,7 @@ class PhysicButtonsPanel:
class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
bl_label = "Cloth"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -134,7 +134,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
bl_label = "Cloth Cache"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
md = context.cloth
@@ -144,7 +144,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
bl_label = "Cloth Collision"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
cloth = context.cloth.collision_settings
@@ -184,7 +184,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
bl_label = "Cloth Stiffness Scaling"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
cloth = context.cloth.settings
@@ -217,7 +217,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_sewing(PhysicButtonsPanel, Panel):
bl_label = "Cloth Sewing Springs"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
cloth = context.cloth.settings
@@ -251,7 +251,7 @@ class PHYSICS_PT_cloth_sewing(PhysicButtonsPanel, Panel):
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Cloth Field Weights"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
cloth = context.cloth.settings
diff --git a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
index e1c0606c493..476a448f978 100644
--- a/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
+++ b/release/scripts/startup/bl_ui/properties_physics_dynamicpaint.py
@@ -60,7 +60,7 @@ class PhysicButtonsPanel:
class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -108,7 +108,6 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
elif md.ui_type == 'BRUSH':
brush = md.brush_settings
- use_shading_nodes = context.scene.render.use_shading_nodes
if brush is None:
layout.operator("dpaint.type_toggle", text="Add Brush").type = 'BRUSH'
@@ -123,21 +122,13 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
col.prop(brush, "paint_wetness", text="Wetness")
col = split.column()
- if not use_shading_nodes:
- sub = col.column()
- sub.active = (brush.paint_source != 'PARTICLE_SYSTEM')
- sub.prop(brush, "use_material")
- if brush.use_material and brush.paint_source != 'PARTICLE_SYSTEM' and not use_shading_nodes:
- col.prop(brush, "material", text="")
- col.prop(brush, "paint_alpha", text="Alpha Factor")
- else:
- col.prop(brush, "paint_color", text="")
- col.prop(brush, "paint_alpha", text="Alpha")
+ col.prop(brush, "paint_color", text="")
+ col.prop(brush, "paint_alpha", text="Alpha")
class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Advanced"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -213,7 +204,7 @@ class PHYSICS_PT_dp_advanced_canvas(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Output"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -306,7 +297,7 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Initial Color"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -342,7 +333,7 @@ class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_effects(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Effects"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -391,7 +382,7 @@ class PHYSICS_PT_dp_effects(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Cache"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -412,7 +403,7 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Source"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -465,7 +456,7 @@ class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Velocity"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -501,7 +492,7 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel):
bl_label = "Dynamic Paint Waves"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index 80ad9e358c3..93f1d28e536 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -42,7 +42,7 @@ class PhysicButtonsPanel:
class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
bl_label = "Fluid"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -205,7 +205,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
bl_label = "Fluid World"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -258,7 +258,7 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel):
bl_label = "Fluid Boundary"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -288,7 +288,7 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel):
class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel):
bl_label = "Fluid Particles"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
index 21453ff3642..817b0ab76ed 100644
--- a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
+++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py
@@ -29,7 +29,7 @@ class PHYSICS_PT_rigidbody_panel:
class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Rigid Body"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -56,7 +56,7 @@ class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_collisions(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Rigid Body Collisions"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -101,7 +101,7 @@ class PHYSICS_PT_rigid_body_collisions(PHYSICS_PT_rigidbody_panel, Panel):
class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel):
bl_label = "Rigid Body Dynamics"
bl_default_closed = True
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py
index 90d3b3da057..aca989fd0ba 100644
--- a/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody_constraint.py
@@ -29,7 +29,7 @@ class PHYSICS_PT_rigidbody_constraint_panel:
class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Panel):
bl_label = "Rigid Body Constraint"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py
index 101a1528c7e..86b9a95e294 100644
--- a/release/scripts/startup/bl_ui/properties_physics_softbody.py
+++ b/release/scripts/startup/bl_ui/properties_physics_softbody.py
@@ -46,7 +46,7 @@ class PhysicButtonsPanel:
class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
bl_label = "Soft Body"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -76,7 +76,7 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Cache"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
md = context.soft_body
@@ -86,7 +86,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Goal"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
softbody = context.soft_body.settings
@@ -126,7 +126,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Edges"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
softbody = context.soft_body.settings
@@ -176,7 +176,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Self Collision"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
softbody = context.soft_body.settings
@@ -205,7 +205,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Solver"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -238,7 +238,7 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel):
bl_label = "Soft Body Field Weights"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
md = context.soft_body
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 779a77cf7ca..10c823cc0a0 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -193,129 +193,6 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
subrow.prop(rd, "frame_map_new", text="New")
-class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
- bl_label = "Anti-Aliasing"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- rd = context.scene.render
-
- self.layout.prop(rd, "use_antialiasing", text="")
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
- layout.active = rd.use_antialiasing
-
- split = layout.split()
-
- col = split.column()
- col.row().prop(rd, "antialiasing_samples", expand=True)
- sub = col.row()
- sub.prop(rd, "use_full_sample")
-
- col = split.column()
- col.prop(rd, "pixel_filter_type", text="")
- col.prop(rd, "filter_size", text="Size")
-
-
-class RENDER_PT_motion_blur(RenderButtonsPanel, Panel):
- bl_label = "Sampled Motion Blur"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- return not rd.use_full_sample and (context.engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- rd = context.scene.render
-
- self.layout.prop(rd, "use_motion_blur", text="")
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
- layout.active = rd.use_motion_blur
-
- row = layout.row()
- row.prop(rd, "motion_blur_samples")
- row.prop(rd, "motion_blur_shutter")
-
-
-class RENDER_PT_shading(RenderButtonsPanel, Panel):
- bl_label = "Shading"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
-
- split = layout.split()
-
- col = split.column()
- col.prop(rd, "use_textures", text="Textures")
- col.prop(rd, "use_shadows", text="Shadows")
- col.prop(rd, "use_sss", text="Subsurface Scattering")
- col.prop(rd, "use_envmaps", text="Environment Map")
-
- col = split.column()
- col.prop(rd, "use_raytrace", text="Ray Tracing")
- col.prop(rd, "alpha_mode", text="Alpha")
- col.prop(rd, "use_world_space_shading", text="World Space Shading")
-
-
-class RENDER_PT_performance(RenderButtonsPanel, Panel):
- bl_label = "Performance"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
-
- split = layout.split()
-
- col = split.column(align=True)
- col.label(text="Threads:")
- col.row(align=True).prop(rd, "threads_mode", expand=True)
- sub = col.column(align=True)
- sub.enabled = rd.threads_mode == 'FIXED'
- sub.prop(rd, "threads")
-
- col.label(text="Tile Size:")
- col.prop(rd, "tile_x", text="X")
- col.prop(rd, "tile_y", text="Y")
-
- col.separator()
- col.prop(rd, "preview_start_resolution")
- col.prop(rd, "preview_pixel_size", text="")
-
- col = split.column()
- col.label(text="Memory:")
- sub = col.column()
- sub.enabled = not rd.use_full_sample
- sub.prop(rd, "use_save_buffers")
- sub = col.column()
- sub.active = rd.use_compositing
- sub.prop(rd, "use_free_image_textures")
- sub = col.column()
- sub.active = rd.use_raytrace
- sub.label(text="Acceleration Structure:")
- sub.prop(rd, "raytrace_method", text="")
- if rd.raytrace_method == 'OCTREE':
- sub.prop(rd, "octree_resolution", text="Resolution")
- else:
- sub.prop(rd, "use_instances", text="Instances")
- sub.prop(rd, "use_local_coords", text="Local Coordinates")
-
-
class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
bl_label = "Post Processing"
bl_options = {'DEFAULT_CLOSED'}
@@ -438,7 +315,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
class RENDER_PT_encoding(RenderButtonsPanel, Panel):
bl_label = "Encoding"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -517,77 +394,6 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel):
col.prop(ffmpeg, "packetsize", text="Packet Size")
-class RENDER_PT_bake(RenderButtonsPanel, Panel):
- bl_label = "Bake"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
-
- layout.operator("object.bake_image", icon='RENDER_STILL')
-
- layout.prop(rd, "bake_type")
-
- multires_bake = False
- if rd.bake_type in ['NORMALS', 'DISPLACEMENT', 'DERIVATIVE', 'AO']:
- layout.prop(rd, "use_bake_multires")
- multires_bake = rd.use_bake_multires
-
- if not multires_bake:
- if rd.bake_type == 'NORMALS':
- layout.prop(rd, "bake_normal_space")
- elif rd.bake_type in {'DISPLACEMENT', 'AO'}:
- layout.prop(rd, "use_bake_normalize")
-
- # col.prop(rd, "bake_aa_mode")
- # col.prop(rd, "use_bake_antialiasing")
-
- layout.separator()
-
- split = layout.split()
-
- col = split.column()
- col.prop(rd, "use_bake_to_vertex_color")
- sub = col.column()
- sub.active = not rd.use_bake_to_vertex_color
- sub.prop(rd, "use_bake_clear")
- sub.prop(rd, "bake_margin")
- sub.prop(rd, "bake_quad_split", text="Split")
-
- col = split.column()
- col.prop(rd, "use_bake_selected_to_active")
- sub = col.column()
- sub.active = rd.use_bake_selected_to_active
- sub.prop(rd, "bake_distance")
- sub.prop(rd, "bake_bias")
- else:
- split = layout.split()
-
- col = split.column()
- col.prop(rd, "use_bake_clear")
- col.prop(rd, "bake_margin")
-
- if rd.bake_type == 'DISPLACEMENT':
- col = split.column()
- col.prop(rd, "use_bake_lores_mesh")
-
- if rd.bake_type == 'AO':
- col = split.column()
- col.prop(rd, "bake_bias")
- col.prop(rd, "bake_samples")
-
- if rd.bake_type == 'DERIVATIVE':
- row = layout.row()
- row.prop(rd, "use_bake_user_scale", text="")
-
- sub = row.column()
- sub.active = rd.use_bake_user_scale
- sub.prop(rd, "bake_user_scale", text="User Scale")
-
-
class RENDER_PT_clay_layer_settings(RenderButtonsPanel, Panel):
bl_label = "Clay Layer Settings"
COMPAT_ENGINES = {'BLENDER_CLAY'}
@@ -905,15 +711,10 @@ classes = (
RENDER_PT_context,
RENDER_PT_render,
RENDER_PT_dimensions,
- RENDER_PT_antialiasing,
- RENDER_PT_motion_blur,
- RENDER_PT_shading,
- RENDER_PT_performance,
RENDER_PT_post_processing,
RENDER_PT_stamp,
RENDER_PT_output,
RENDER_PT_encoding,
- RENDER_PT_bake,
RENDER_PT_clay_layer_settings,
RENDER_PT_clay_collection_settings,
RENDER_PT_eevee_sampling,
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 79a7113374b..094f2a9dc31 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -308,7 +308,7 @@ class SCENE_PT_audio(SceneButtonsPanel, Panel):
class SCENE_PT_physics(SceneButtonsPanel, Panel):
bl_label = "Gravity"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw_header(self, context):
self.layout.prop(context.scene, "use_gravity", text="")
@@ -325,7 +325,7 @@ class SCENE_PT_physics(SceneButtonsPanel, Panel):
class SCENE_PT_rigid_body_world(SceneButtonsPanel, Panel):
bl_label = "Rigid Body World"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -370,7 +370,7 @@ class SCENE_PT_rigid_body_world(SceneButtonsPanel, Panel):
class SCENE_PT_rigid_body_cache(SceneButtonsPanel, Panel):
bl_label = "Rigid Body Cache"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -387,7 +387,7 @@ class SCENE_PT_rigid_body_cache(SceneButtonsPanel, Panel):
class SCENE_PT_rigid_body_field_weights(SceneButtonsPanel, Panel):
bl_label = "Rigid Body Field Weights"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -427,9 +427,6 @@ class SCENE_PT_simplify(SceneButtonsPanel, Panel):
col.label(text="Render:")
col.prop(rd, "simplify_subdivision_render", text="Subdivision")
col.prop(rd, "simplify_child_particles_render", text="Child Particles")
- col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
- col.prop(rd, "simplify_ao_sss", text="AO and SSS")
- col.prop(rd, "use_simplify_triangulate")
class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index 8f2c3085881..aa3227e0b72 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -23,12 +23,9 @@ from bpy.types import Menu, Panel, UIList
from bpy.types import (
Brush,
FreestyleLineStyle,
- Lamp,
- Material,
Object,
ParticleSettings,
Texture,
- World,
)
from rna_prop_ui import PropertyPanel
@@ -47,22 +44,9 @@ class TEXTURE_MT_specials(Menu):
layout.operator("texture.slot_paste", icon='PASTEDOWN')
-class TEXTURE_MT_envmap_specials(Menu):
- bl_label = "Environment Map Specials"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- layout.operator("texture.envmap_save", icon='IMAGEFILE')
- layout.operator("texture.envmap_clear", icon='FILE_REFRESH')
- layout.operator("texture.envmap_clear_all", icon='FILE_REFRESH')
-
-
class TEXTURE_UL_texslots(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
- # assert(isinstance(item, bpy.types.MaterialTextureSlot)
ma = data
slot = item
tex = slot.texture if slot else None
@@ -71,29 +55,11 @@ class TEXTURE_UL_texslots(UIList):
layout.prop(tex, "name", text="", emboss=False, icon_value=icon)
else:
layout.label(text="", icon_value=icon)
- if tex and isinstance(item, bpy.types.MaterialTextureSlot):
- layout.prop(ma, "use_textures", text="", index=index)
elif self.layout_type == 'GRID':
layout.alignment = 'CENTER'
layout.label(text="", icon_value=icon)
-
-from .properties_material import active_node_mat
-
-
def context_tex_datablock(context):
- idblock = context.material
- if idblock:
- return active_node_mat(idblock)
-
- idblock = context.lamp
- if idblock:
- return idblock
-
- idblock = context.world
- if idblock:
- return idblock
-
idblock = context.brush
if idblock:
return idblock
@@ -108,151 +74,138 @@ def context_tex_datablock(context):
return idblock
-def id_tex_datablock(bid):
- if isinstance(bid, Object):
- if bid.type == 'LAMP':
- return bid.data
- return bid.active_material
-
- return bid
-
-
class TextureButtonsPanel:
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "texture"
+
+class TEXTURE_PT_preview(TextureButtonsPanel, Panel):
+ bl_label = "Preview"
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+
@classmethod
def poll(cls, context):
tex = context.texture
return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.engine in cls.COMPAT_ENGINES)
+ def draw(self, context):
+ layout = self.layout
+
+ tex = context.texture
+ slot = getattr(context, "texture_slot", None)
+ idblock = context_tex_datablock(context)
+
+ if idblock:
+ layout.template_preview(tex, parent=idblock, slot=slot)
+ else:
+ layout.template_preview(tex, slot=slot)
+
+ # Show Alpha Button for Brush Textures, see #29502
+ idblock = context_tex_datablock(context)
+ if isinstance(idblock, Brush):
+ layout.prop(tex, "use_preview_alpha")
-class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel):
+class TEXTURE_PT_context(TextureButtonsPanel, Panel):
bl_label = ""
+ bl_context = "texture"
bl_options = {'HIDE_HEADER'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- engine = context.engine
- # if not (hasattr(context, "texture_slot") or hasattr(context, "texture_node")):
- # return False
- return ((context.material or
- context.world or
- context.lamp or
- context.texture or
- context.line_style or
- context.particle_system or
- isinstance(context.space_data.pin_id, ParticleSettings) or
- context.texture_user) and
- (engine in cls.COMPAT_ENGINES))
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
- slot = getattr(context, "texture_slot", None)
- node = getattr(context, "texture_node", None)
- space = context.space_data
tex = context.texture
- idblock = context_tex_datablock(context)
+ space = context.space_data
pin_id = space.pin_id
+ use_pin_id = space.use_pin_id
+ user = context.texture_user
- space.use_limited_texture_context = True
-
- if space.use_pin_id and not isinstance(pin_id, Texture):
- idblock = id_tex_datablock(pin_id)
- pin_id = None
-
- if not space.use_pin_id:
- layout.row().prop(space, "texture_context", expand=True)
+ if not (use_pin_id and isinstance(pin_id, bpy.types.Texture)):
pin_id = None
- if space.texture_context == 'OTHER':
- if not pin_id:
- layout.template_texture_user()
- user = context.texture_user
- if user or pin_id:
- layout.separator()
+ if not pin_id:
+ layout.template_texture_user()
- row = layout.row()
+ if user or pin_id:
+ layout.separator()
- if pin_id:
- row.template_ID(space, "pin_id")
- else:
- propname = context.texture_user_property.identifier
- row.template_ID(user, propname, new="texture.new")
-
- if tex:
- split = layout.split(percentage=0.2)
- if tex.use_nodes:
- if slot:
- split.label(text="Output:")
- split.prop(slot, "output_node", text="")
- else:
- split.label(text="Type:")
- split.prop(tex, "type", text="")
- return
-
- tex_collection = (pin_id is None) and (node is None) and (not isinstance(idblock, Brush))
-
- if tex_collection:
- row = layout.row()
+ split = layout.split(percentage=0.65)
+ col = split.column()
- row.template_list("TEXTURE_UL_texslots", "", idblock, "texture_slots",
- idblock, "active_texture_index", rows=2)
-
- col = row.column(align=True)
- col.operator("texture.slot_move", text="", icon='TRIA_UP').type = 'UP'
- col.operator("texture.slot_move", text="", icon='TRIA_DOWN').type = 'DOWN'
- col.menu("TEXTURE_MT_specials", icon='DOWNARROW_HLT', text="")
-
- if tex_collection:
- layout.template_ID(idblock, "active_texture", new="texture.new")
- elif node:
- layout.template_ID(node, "texture", new="texture.new")
- elif idblock:
- layout.template_ID(idblock, "texture", new="texture.new")
-
- if pin_id:
- layout.template_ID(space, "pin_id")
-
- if tex:
- split = layout.split(percentage=0.2)
- if tex.use_nodes:
- if slot:
- split.label(text="Output:")
- split.prop(slot, "output_node", text="")
+ if pin_id:
+ col.template_ID(space, "pin_id")
else:
+ propname = context.texture_user_property.identifier
+ col.template_ID(user, propname, new="texture.new")
+
+ if tex:
+ split = layout.split(percentage=0.2)
split.label(text="Type:")
split.prop(tex, "type", text="")
-class TEXTURE_PT_preview(TextureButtonsPanel, Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+class TEXTURE_PT_node(TextureButtonsPanel, Panel):
+ bl_label = "Node"
+ bl_context = "texture"
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+
+ @classmethod
+ def poll(cls, context):
+ node = context.texture_node
+ return node and (context.engine in cls.COMPAT_ENGINES)
def draw(self, context):
layout = self.layout
- tex = context.texture
- slot = getattr(context, "texture_slot", None)
- idblock = context_tex_datablock(context)
+ node = context.texture_node
+ ntree = node.id_data
+ layout.template_node_view(ntree, node, None)
- if idblock:
- layout.template_preview(tex, parent=idblock, slot=slot)
- else:
- layout.template_preview(tex, slot=slot)
- # Show Alpha Button for Brush Textures, see #29502
- if context.space_data.texture_context == 'BRUSH':
- layout.prop(tex, "use_preview_alpha")
+class TEXTURE_PT_node_mapping(TextureButtonsPanel, Panel):
+ bl_label = "Mapping"
+ bl_context = "texture"
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+
+ @classmethod
+ def poll(cls, context):
+ node = context.texture_node
+ # TODO(sergey): perform a faster/nicer check?
+ return node and hasattr(node, 'texture_mapping') and (context.engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ node = context.texture_node
+
+ mapping = node.texture_mapping
+
+ layout.prop(mapping, "vector_type", expand=True)
+
+ row = layout.row()
+
+ row.column().prop(mapping, "translation")
+ row.column().prop(mapping, "rotation")
+ row.column().prop(mapping, "scale")
+
+ layout.label(text="Projection:")
+
+ row = layout.row()
+ row.prop(mapping, "mapping_x", text="")
+ row.prop(mapping, "mapping_y", text="")
+ row.prop(mapping, "mapping_z", text="")
class TEXTURE_PT_colors(TextureButtonsPanel, Panel):
bl_label = "Colors"
bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
+
+ @classmethod
+ def poll(cls, context):
+ tex = context.texture
+ return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.engine in cls.COMPAT_ENGINES)
def draw(self, context):
layout = self.layout
@@ -281,23 +234,6 @@ class TEXTURE_PT_colors(TextureButtonsPanel, Panel):
col = layout.column()
col.prop(tex, "use_clamp", text="Clamp")
-# Texture Slot Panels #
-
-
-class TextureSlotPanel(TextureButtonsPanel):
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- if not hasattr(context, "texture_slot"):
- return False
-
- engine = context.engine
- return TextureButtonsPanel.poll(cls, context) and (engine in cls.COMPAT_ENGINES)
-
-
-# Texture Type Panels #
-
class TextureTypePanel(TextureButtonsPanel):
@@ -311,7 +247,7 @@ class TextureTypePanel(TextureButtonsPanel):
class TEXTURE_PT_clouds(TextureTypePanel, Panel):
bl_label = "Clouds"
tex_type = 'CLOUDS'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -335,7 +271,7 @@ class TEXTURE_PT_clouds(TextureTypePanel, Panel):
class TEXTURE_PT_wood(TextureTypePanel, Panel):
bl_label = "Wood"
tex_type = 'WOOD'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -364,7 +300,7 @@ class TEXTURE_PT_wood(TextureTypePanel, Panel):
class TEXTURE_PT_marble(TextureTypePanel, Panel):
bl_label = "Marble"
tex_type = 'MARBLE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -391,7 +327,7 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel):
class TEXTURE_PT_magic(TextureTypePanel, Panel):
bl_label = "Magic"
tex_type = 'MAGIC'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -406,7 +342,7 @@ class TEXTURE_PT_magic(TextureTypePanel, Panel):
class TEXTURE_PT_blend(TextureTypePanel, Panel):
bl_label = "Blend"
tex_type = 'BLEND'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -424,7 +360,7 @@ class TEXTURE_PT_blend(TextureTypePanel, Panel):
class TEXTURE_PT_stucci(TextureTypePanel, Panel):
bl_label = "Stucci"
tex_type = 'STUCCI'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -444,7 +380,7 @@ class TEXTURE_PT_stucci(TextureTypePanel, Panel):
class TEXTURE_PT_image(TextureTypePanel, Panel):
bl_label = "Image"
tex_type = 'IMAGE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -471,7 +407,7 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
bl_label = "Image Sampling"
bl_options = {'DEFAULT_CLOSED'}
tex_type = 'IMAGE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -494,17 +430,6 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
col = split.column()
- # Only for Material based textures, not for Lamp/World...
- if slot and isinstance(idblock, Material):
- col.prop(tex, "use_normal_map")
- row = col.row()
- row.active = tex.use_normal_map
- row.prop(slot, "normal_map_space", text="")
-
- row = col.row()
- row.active = not tex.use_normal_map
- row.prop(tex, "use_derivative_map")
-
col.prop(tex, "use_mipmap")
row = col.row()
row.active = tex.use_mipmap
@@ -518,7 +443,7 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
bl_label = "Image Mapping"
bl_options = {'DEFAULT_CLOSED'}
tex_type = 'IMAGE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -570,62 +495,10 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
col.prop(tex, "crop_max_y", text="Y")
-class TEXTURE_PT_envmap(TextureTypePanel, Panel):
- bl_label = "Environment Map"
- tex_type = 'ENVIRONMENT_MAP'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- env = tex.environment_map
-
- row = layout.row()
- row.prop(env, "source", expand=True)
- row.menu("TEXTURE_MT_envmap_specials", icon='DOWNARROW_HLT', text="")
-
- if env.source == 'IMAGE_FILE':
- layout.template_ID(tex, "image", open="image.open")
- layout.template_image(tex, "image", tex.image_user, compact=True)
- else:
- layout.prop(env, "mapping")
- if env.mapping == 'PLANE':
- layout.prop(env, "zoom")
- layout.prop(env, "viewpoint_object")
-
- split = layout.split()
-
- col = split.column()
- col.prop(env, "layers_ignore")
- col.prop(env, "resolution")
- col.prop(env, "depth")
-
- col = split.column(align=True)
-
- col.label(text="Clipping:")
- col.prop(env, "clip_start", text="Start")
- col.prop(env, "clip_end", text="End")
-
-
-class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel):
- bl_label = "Environment Map Sampling"
- bl_options = {'DEFAULT_CLOSED'}
- tex_type = 'ENVIRONMENT_MAP'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
-
- texture_filter_common(tex, layout)
-
-
class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
bl_label = "Musgrave"
tex_type = 'MUSGRAVE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -661,7 +534,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
bl_label = "Voronoi"
tex_type = 'VORONOI'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -697,7 +570,7 @@ class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
bl_label = "Distorted Noise"
tex_type = 'DISTORTED_NOISE'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
def draw(self, context):
layout = self.layout
@@ -716,180 +589,20 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
split.prop(tex, "nabla")
-class TEXTURE_PT_voxeldata(TextureButtonsPanel, Panel):
- bl_label = "Voxel Data"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- tex = context.texture
- engine = context.engine
- return tex and (tex.type == 'VOXEL_DATA' and (engine in cls.COMPAT_ENGINES))
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- vd = tex.voxel_data
-
- layout.prop(vd, "file_format")
- if vd.file_format in {'BLENDER_VOXEL', 'RAW_8BIT'}:
- layout.prop(vd, "filepath")
- if vd.file_format == 'RAW_8BIT':
- layout.prop(vd, "resolution")
- elif vd.file_format == 'SMOKE':
- layout.prop(vd, "domain_object")
- layout.prop(vd, "smoke_data_type")
- elif vd.file_format == 'HAIR':
- layout.prop(vd, "domain_object")
- layout.prop(vd, "hair_data_type")
- elif vd.file_format == 'IMAGE_SEQUENCE':
- layout.template_ID(tex, "image", open="image.open")
- layout.template_image(tex, "image", tex.image_user, compact=True)
- # layout.prop(vd, "frame_duration")
-
- if vd.file_format in {'BLENDER_VOXEL', 'RAW_8BIT'}:
- layout.prop(vd, "use_still_frame")
- row = layout.row()
- row.active = vd.use_still_frame
- row.prop(vd, "still_frame")
-
- layout.prop(vd, "interpolation")
- layout.prop(vd, "extension")
- layout.prop(vd, "intensity")
-
-
-class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
- bl_label = "Point Density"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- tex = context.texture
- engine = context.engine
- return tex and (tex.type == 'POINT_DENSITY' and (engine in cls.COMPAT_ENGINES))
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- pd = tex.point_density
-
- layout.row().prop(pd, "point_source", expand=True)
-
- split = layout.split()
-
- col = split.column()
- if pd.point_source == 'PARTICLE_SYSTEM':
- col.label(text="Object:")
- col.prop(pd, "object", text="")
-
- sub = col.column()
- sub.enabled = bool(pd.object)
- if pd.object:
- sub.label(text="System:")
- sub.prop_search(pd, "particle_system", pd.object, "particle_systems", text="")
- sub.label(text="Cache:")
- sub.prop(pd, "particle_cache_space", text="")
- else:
- col.label(text="Object:")
- col.prop(pd, "object", text="")
- col.label(text="Cache:")
- col.prop(pd, "vertex_cache_space", text="")
-
- col.separator()
-
- col.label(text="Color Source:")
- if pd.point_source == 'PARTICLE_SYSTEM':
- col.prop(pd, "particle_color_source", text="")
- if pd.particle_color_source in {'PARTICLE_SPEED', 'PARTICLE_VELOCITY'}:
- col.prop(pd, "speed_scale")
- if pd.particle_color_source in {'PARTICLE_SPEED', 'PARTICLE_AGE'}:
- layout.template_color_ramp(pd, "color_ramp", expand=True)
- else:
- col.prop(pd, "vertex_color_source", text="")
- if pd.vertex_color_source == 'VERTEX_COLOR':
- if pd.object and pd.object.data:
- col.prop_search(pd, "vertex_attribute_name", pd.object.data, "vertex_colors", text="")
- if pd.vertex_color_source == 'VERTEX_WEIGHT':
- if pd.object:
- col.prop_search(pd, "vertex_attribute_name", pd.object, "vertex_groups", text="")
- layout.template_color_ramp(pd, "color_ramp", expand=True)
-
- col = split.column()
- col.label()
- col.prop(pd, "radius")
- col.label(text="Falloff:")
- col.prop(pd, "falloff", text="")
- if pd.falloff == 'SOFT':
- col.prop(pd, "falloff_soft")
- if pd.falloff == 'PARTICLE_VELOCITY':
- col.prop(pd, "falloff_speed_scale")
-
- col.prop(pd, "use_falloff_curve")
-
- if pd.use_falloff_curve:
- col = layout.column()
- col.label(text="Falloff Curve")
- col.template_curve_mapping(pd, "falloff_curve", brush=False)
-
-
-class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel):
- bl_label = "Turbulence"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+class TextureSlotPanel(TextureButtonsPanel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
- tex = context.texture
- engine = context.engine
- return tex and (tex.type == 'POINT_DENSITY' and (engine in cls.COMPAT_ENGINES))
-
- def draw_header(self, context):
- pd = context.texture.point_density
-
- self.layout.prop(pd, "use_turbulence", text="")
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- pd = tex.point_density
- layout.active = pd.use_turbulence
-
- split = layout.split()
-
- col = split.column()
- col.label(text="Influence:")
- col.prop(pd, "turbulence_influence", text="")
- col.label(text="Noise Basis:")
- col.prop(pd, "noise_basis", text="")
-
- col = split.column()
- col.label()
- col.prop(pd, "turbulence_scale")
- col.prop(pd, "turbulence_depth")
- col.prop(pd, "turbulence_strength")
-
-
-class TEXTURE_PT_ocean(TextureTypePanel, Panel):
- bl_label = "Ocean"
- tex_type = 'OCEAN'
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- ot = tex.ocean
+ if not hasattr(context, "texture_slot"):
+ return False
- col = layout.column()
- col.prop(ot, "ocean_object")
- col.prop(ot, "output")
+ return (context.engine in cls.COMPAT_ENGINES)
class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
bl_label = "Mapping"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -960,31 +673,6 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
row.prop(tex, "mapping_y", text="")
row.prop(tex, "mapping_z", text="")
- elif isinstance(idblock, Material):
- split = layout.split(percentage=0.3)
- split.label(text="Projection:")
- split.prop(tex, "mapping", text="")
-
- split = layout.split()
-
- col = split.column()
- if tex.texture_coords in {'ORCO', 'UV'}:
- col.prop(tex, "use_from_dupli")
- if (idblock.type == 'VOLUME' and tex.texture_coords == 'ORCO'):
- col.prop(tex, "use_map_to_bounds")
- elif tex.texture_coords == 'OBJECT':
- col.prop(tex, "use_from_original")
- if (idblock.type == 'VOLUME'):
- col.prop(tex, "use_map_to_bounds")
- else:
- col.label()
-
- col = split.column()
- row = col.row()
- row.prop(tex, "mapping_x", text="")
- row.prop(tex, "mapping_y", text="")
- row.prop(tex, "mapping_z", text="")
-
row = layout.row()
row.column().prop(tex, "offset")
row.column().prop(tex, "scale")
@@ -992,7 +680,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
class TEXTURE_PT_influence(TextureSlotPanel, Panel):
bl_label = "Influence"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
@classmethod
def poll(cls, context):
@@ -1022,101 +710,7 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
sub.prop(tex, factor, text=name, slider=True)
return sub # XXX, temp. use_map_normal needs to override.
- if isinstance(idblock, Material):
- if idblock.type in {'SURFACE', 'WIRE'}:
- split = layout.split()
-
- col = split.column()
- col.label(text="Diffuse:")
- factor_but(col, "use_map_diffuse", "diffuse_factor", "Intensity")
- factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
- factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
- factor_but(col, "use_map_translucency", "translucency_factor", "Translucency")
-
- col.label(text="Specular:")
- factor_but(col, "use_map_specular", "specular_factor", "Intensity")
- factor_but(col, "use_map_color_spec", "specular_color_factor", "Color")
- factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
-
- col = split.column()
- col.label(text="Shading:")
- factor_but(col, "use_map_ambient", "ambient_factor", "Ambient")
- factor_but(col, "use_map_emit", "emit_factor", "Emit")
- factor_but(col, "use_map_mirror", "mirror_factor", "Mirror")
- factor_but(col, "use_map_raymir", "raymir_factor", "Ray Mirror")
-
- col.label(text="Geometry:")
- # XXX replace 'or' when displacement is fixed to not rely on normal influence value.
- sub_tmp = factor_but(col, "use_map_normal", "normal_factor", "Normal")
- sub_tmp.active = (tex.use_map_normal or tex.use_map_displacement)
- # END XXX
-
- factor_but(col, "use_map_warp", "warp_factor", "Warp")
- factor_but(col, "use_map_displacement", "displacement_factor", "Displace")
-
- #~ sub = col.column()
- #~ sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
- #~ sub.prop(tex, "default_value", text="Amount", slider=True)
- elif idblock.type == 'HALO':
- layout.label(text="Halo:")
-
- split = layout.split()
-
- col = split.column()
- factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
- factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
-
- col = split.column()
- factor_but(col, "use_map_raymir", "raymir_factor", "Size")
- factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
- factor_but(col, "use_map_translucency", "translucency_factor", "Add")
- elif idblock.type == 'VOLUME':
- layout.label(text="Volume:")
-
- split = layout.split()
-
- col = split.column()
- factor_but(col, "use_map_density", "density_factor", "Density")
- factor_but(col, "use_map_emission", "emission_factor", "Emission")
- factor_but(col, "use_map_scatter", "scattering_factor", "Scattering")
- factor_but(col, "use_map_reflect", "reflection_factor", "Reflection")
-
- col = split.column()
- col.label(text=" ")
- factor_but(col, "use_map_color_emission", "emission_color_factor", "Emission Color")
- factor_but(col, "use_map_color_transmission", "transmission_color_factor", "Transmission Color")
- factor_but(col, "use_map_color_reflection", "reflection_color_factor", "Reflection Color")
-
- layout.label(text="Geometry:")
-
- split = layout.split()
-
- col = split.column()
- factor_but(col, "use_map_warp", "warp_factor", "Warp")
-
- col = split.column()
- factor_but(col, "use_map_displacement", "displacement_factor", "Displace")
-
- elif isinstance(idblock, Lamp):
- split = layout.split()
-
- col = split.column()
- factor_but(col, "use_map_color", "color_factor", "Color")
-
- col = split.column()
- factor_but(col, "use_map_shadow", "shadow_factor", "Shadow")
-
- elif isinstance(idblock, World):
- split = layout.split()
-
- col = split.column()
- factor_but(col, "use_map_blend", "blend_factor", "Blend")
- factor_but(col, "use_map_horizon", "horizon_factor", "Horizon")
-
- col = split.column()
- factor_but(col, "use_map_zenith_up", "zenith_up_factor", "Zenith Up")
- factor_but(col, "use_map_zenith_down", "zenith_down_factor", "Zenith Down")
- elif isinstance(idblock, ParticleSettings):
+ if isinstance(idblock, ParticleSettings):
split = layout.split()
col = split.column()
@@ -1170,47 +764,26 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
col.prop(tex, "invert", text="Negative")
col.prop(tex, "use_stencil")
- if isinstance(idblock, Material) or isinstance(idblock, World):
- col.prop(tex, "default_value", text="DVar", slider=True)
-
- if isinstance(idblock, Material):
- layout.label(text="Bump Mapping:")
-
- # only show bump settings if activated but not for normal-map images
- row = layout.row()
-
- sub = row.row()
- sub.active = (
- (tex.use_map_normal or tex.use_map_warp) and
- not (tex.texture.type == 'IMAGE' and
- (tex.texture.use_normal_map or tex.texture.use_derivative_map))
- )
- sub.prop(tex, "bump_method", text="Method")
-
- # the space setting is supported for: derivative-maps + bump-maps
- # (DEFAULT,BEST_QUALITY), not for normal-maps
- sub = row.row()
- sub.active = (
- (tex.use_map_normal or tex.use_map_warp) and
- not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and
- ((tex.bump_method in {'BUMP_LOW_QUALITY', 'BUMP_MEDIUM_QUALITY', 'BUMP_BEST_QUALITY'}) or
- (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
- )
- sub.prop(tex, "bump_objectspace", text="Space")
-
class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
_context_path = "texture"
_property_type = Texture
+ @classmethod
+ def poll(cls, context):
+ return context.texture and (context.engine in cls.COMPAT_ENGINES)
+
classes = (
TEXTURE_MT_specials,
- TEXTURE_MT_envmap_specials,
TEXTURE_UL_texslots,
- TEXTURE_PT_context_texture,
TEXTURE_PT_preview,
+ TEXTURE_PT_context,
+ TEXTURE_PT_node,
+ TEXTURE_PT_node_mapping,
+ TEXTURE_PT_mapping,
+ TEXTURE_PT_influence,
TEXTURE_PT_colors,
TEXTURE_PT_clouds,
TEXTURE_PT_wood,
@@ -1221,17 +794,9 @@ classes = (
TEXTURE_PT_image,
TEXTURE_PT_image_sampling,
TEXTURE_PT_image_mapping,
- TEXTURE_PT_envmap,
- TEXTURE_PT_envmap_sampling,
TEXTURE_PT_musgrave,
TEXTURE_PT_voronoi,
TEXTURE_PT_distortednoise,
- TEXTURE_PT_voxeldata,
- TEXTURE_PT_pointdensity,
- TEXTURE_PT_pointdensity_turbulence,
- TEXTURE_PT_ocean,
- TEXTURE_PT_mapping,
- TEXTURE_PT_influence,
TEXTURE_PT_custom_props,
)
diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py
index 045ddc0aa59..1ec2d4774e8 100644
--- a/release/scripts/startup/bl_ui/properties_world.py
+++ b/release/scripts/startup/bl_ui/properties_world.py
@@ -50,197 +50,12 @@ class WORLD_PT_context_world(WorldButtonsPanel, Panel):
world = context.world
space = context.space_data
- texture_count = world and len(world.texture_slots.keys())
-
split = layout.split(percentage=0.85)
if scene:
split.template_ID(scene, "world", new="world.new")
elif world:
split.template_ID(space, "pin_id")
- if texture_count:
- split.label(text=str(texture_count), icon='TEXTURE')
-
-
-class WORLD_PT_preview(WorldButtonsPanel, Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- return (context.world) and (context.engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- self.layout.template_preview(context.world)
-
-
-class WORLD_PT_world(WorldButtonsPanel, Panel):
- bl_label = "World"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- world = context.world
-
- row = layout.row()
- row.prop(world, "use_sky_paper")
- row.prop(world, "use_sky_blend")
- row.prop(world, "use_sky_real")
-
- row = layout.row()
- row.column().prop(world, "horizon_color")
- col = row.column()
- col.prop(world, "zenith_color")
- col.active = world.use_sky_blend
- row.column().prop(world, "ambient_color")
-
- row = layout.row()
- row.prop(world, "exposure")
- row.prop(world, "color_range")
-
-
-class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel):
- bl_label = "Ambient Occlusion"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- light = context.world.light_settings
- self.layout.prop(light, "use_ambient_occlusion", text="")
-
- def draw(self, context):
- layout = self.layout
-
- light = context.world.light_settings
-
- layout.active = light.use_ambient_occlusion
-
- split = layout.split()
- split.prop(light, "ao_factor", text="Factor")
- split.prop(light, "ao_blend_type", text="")
-
-
-class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
- bl_label = "Environment Lighting"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- light = context.world.light_settings
- self.layout.prop(light, "use_environment_light", text="")
-
- def draw(self, context):
- layout = self.layout
-
- light = context.world.light_settings
-
- layout.active = light.use_environment_light
-
- split = layout.split()
- split.prop(light, "environment_energy", text="Energy")
- split.prop(light, "environment_color", text="")
-
-
-class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel):
- bl_label = "Indirect Lighting"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- light = context.world.light_settings
- self.layout.prop(light, "use_indirect_light", text="")
-
- def draw(self, context):
- layout = self.layout
-
- light = context.world.light_settings
-
- layout.active = light.use_indirect_light and light.gather_method == 'APPROXIMATE'
-
- split = layout.split()
- split.prop(light, "indirect_factor", text="Factor")
- split.prop(light, "indirect_bounces", text="Bounces")
-
- if light.gather_method == 'RAYTRACE':
- layout.label(text="Only works with Approximate gather method")
-
-
-class WORLD_PT_gather(WorldButtonsPanel, Panel):
- bl_label = "Gather"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- light = context.world.light_settings
-
- layout.active = light.use_ambient_occlusion or light.use_environment_light or light.use_indirect_light
-
- layout.row().prop(light, "gather_method", expand=True)
-
- split = layout.split()
-
- col = split.column()
- col.label(text="Attenuation:")
- if light.gather_method == 'RAYTRACE':
- col.prop(light, "distance")
- col.prop(light, "use_falloff")
- sub = col.row()
- sub.active = light.use_falloff
- sub.prop(light, "falloff_strength", text="Strength")
-
- if light.gather_method == 'RAYTRACE':
- col = split.column()
-
- col.label(text="Sampling:")
- col.prop(light, "sample_method", text="")
-
- sub = col.column()
- sub.prop(light, "samples")
-
- if light.sample_method == 'ADAPTIVE_QMC':
- sub.prop(light, "threshold")
- sub.prop(light, "adapt_to_speed", slider=True)
- elif light.sample_method == 'CONSTANT_JITTERED':
- sub.prop(light, "bias")
-
- if light.gather_method == 'APPROXIMATE':
- col = split.column()
-
- col.label(text="Sampling:")
- col.prop(light, "passes")
- col.prop(light, "error_threshold", text="Error")
- col.prop(light, "use_cache")
- col.prop(light, "correction")
-
-
-class WORLD_PT_mist(WorldButtonsPanel, Panel):
- bl_label = "Mist"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- world = context.world
-
- self.layout.prop(world.mist_settings, "use_mist", text="")
-
- def draw(self, context):
- layout = self.layout
-
- world = context.world
-
- layout.active = world.mist_settings.use_mist
-
- split = layout.split()
-
- col = split.column()
- col.prop(world.mist_settings, "intensity")
- col.prop(world.mist_settings, "start")
-
- col = split.column()
- col.prop(world.mist_settings, "depth")
- col.prop(world.mist_settings, "height")
-
- layout.prop(world.mist_settings, "falloff")
-
class EEVEE_WORLD_PT_mist(WorldButtonsPanel, Panel):
bl_label = "Mist Pass"
@@ -311,13 +126,6 @@ class EEVEE_WORLD_PT_surface(WorldButtonsPanel, Panel):
classes = (
WORLD_PT_context_world,
- WORLD_PT_preview,
- WORLD_PT_world,
- WORLD_PT_ambient_occlusion,
- WORLD_PT_environment_lighting,
- WORLD_PT_indirect_lighting,
- WORLD_PT_gather,
- WORLD_PT_mist,
WORLD_PT_custom_props,
EEVEE_WORLD_PT_surface,
EEVEE_WORLD_PT_mist,
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 8b199d7eef1..f97c88be0ad 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -51,14 +51,12 @@ class NODE_HT_header(Header):
NODE_MT_editor_menus.draw_collapsible(context, layout)
layout.prop(snode, "tree_type", text="", expand=True)
- use_shading_nodes = scene.render.use_shading_nodes
if snode.tree_type == 'ShaderNodeTree':
- if use_shading_nodes:
- layout.prop(snode, "shader_type", text="", expand=True)
+ layout.prop(snode, "shader_type", text="", expand=True)
ob = context.object
- if (not use_shading_nodes or snode.shader_type == 'OBJECT') and ob:
+ if snode.shader_type == 'OBJECT' and ob:
row = layout.row()
# disable material slot buttons when pinned, cannot find correct slot within id_from (#36589)
row.enabled = not snode.pin
@@ -69,18 +67,18 @@ class NODE_HT_header(Header):
if id_from and ob.type != 'LAMP':
row.template_ID(id_from, "active_material", new="material.new")
- # Don't show "Use Nodes" Button when Engine is BI for Lamps
- if snode_id and not (use_shading_nodes == 0 and ob.type == 'LAMP'):
+ # No shader nodes for Eevee lamps
+ if snode_id and not (context.engine == 'BLENDER_EEVEE' and ob.type == 'LAMP'):
layout.prop(snode_id, "use_nodes")
- if use_shading_nodes and snode.shader_type == 'WORLD':
+ if snode.shader_type == 'WORLD':
row = layout.row()
row.enabled = not snode.pin
row.template_ID(scene, "world", new="world.new")
if snode_id:
row.prop(snode_id, "use_nodes")
- if use_shading_nodes and snode.shader_type == 'LINESTYLE':
+ if snode.shader_type == 'LINESTYLE':
view_layer = context.scene.view_layers.active
lineset = view_layer.freestyle_settings.linesets.active
if lineset is not None:
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 5d6964ef758..ca9c4465116 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -1288,7 +1288,7 @@ class SEQUENCER_PT_grease_pencil_tools(GreasePencilToolsPanel, SequencerButtonsP
class SEQUENCER_PT_custom_props(SequencerButtonsPanel, PropertyPanel, Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER'}
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE'}
_context_path = "scene.sequence_editor.active_strip"
_property_type = (bpy.types.Sequence,)
bl_category = "Strip"
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index ee6b29b29ae..75f84893160 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -1547,54 +1547,40 @@ class VIEW3D_MT_object_specials(Menu):
lamp = obj.data
layout.operator_context = 'INVOKE_REGION_WIN'
- use_shading_nodes = scene.render.use_shading_nodes
-
- if use_shading_nodes:
- emission_node = None
- if lamp.node_tree:
- for node in lamp.node_tree.nodes:
- if getattr(node, "type", None) == 'EMISSION':
- emission_node = node
- break
-
- if emission_node is not None:
- props = layout.operator("wm.context_modal_mouse", text="Strength")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.node_tree" \
- ".nodes[\"" + emission_node.name + "\"]" \
- ".inputs[\"Strength\"].default_value"
- props.header_text = "Lamp Strength: %.3f"
- props.input_scale = 0.1
-
- if lamp.type == 'AREA':
- props = layout.operator("wm.context_modal_mouse", text="Size X")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.size"
- props.header_text = "Lamp Size X: %.3f"
- if lamp.shape == 'RECTANGLE':
- props = layout.operator("wm.context_modal_mouse", text="Size Y")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.size_y"
- props.header_text = "Lamp Size Y: %.3f"
+ emission_node = None
+ if lamp.node_tree:
+ for node in lamp.node_tree.nodes:
+ if getattr(node, "type", None) == 'EMISSION':
+ emission_node = node
+ break
- elif lamp.type in {'SPOT', 'POINT', 'SUN'}:
- props = layout.operator("wm.context_modal_mouse", text="Size")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.shadow_soft_size"
- props.header_text = "Lamp Size: %.3f"
- else:
- props = layout.operator("wm.context_modal_mouse", text="Energy")
+ if emission_node is not None:
+ props = layout.operator("wm.context_modal_mouse", text="Strength")
props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.energy"
- props.header_text = "Lamp Energy: %.3f"
+ props.data_path_item = "data.node_tree" \
+ ".nodes[\"" + emission_node.name + "\"]" \
+ ".inputs[\"Strength\"].default_value"
+ props.header_text = "Lamp Strength: %.3f"
+ props.input_scale = 0.1
- if lamp.type in {'SPOT', 'AREA', 'POINT'}:
- props = layout.operator("wm.context_modal_mouse", text="Falloff Distance")
+ if lamp.type == 'AREA':
+ props = layout.operator("wm.context_modal_mouse", text="Size X")
+ props.data_path_iter = "selected_editable_objects"
+ props.data_path_item = "data.size"
+ props.header_text = "Lamp Size X: %.3f"
+
+ if lamp.shape == 'RECTANGLE':
+ props = layout.operator("wm.context_modal_mouse", text="Size Y")
props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.distance"
- props.input_scale = 0.1
- props.header_text = "Lamp Falloff Distance: %.1f"
+ props.data_path_item = "data.size_y"
+ props.header_text = "Lamp Size Y: %.3f"
+
+ elif lamp.type in {'SPOT', 'POINT', 'SUN'}:
+ props = layout.operator("wm.context_modal_mouse", text="Size")
+ props.data_path_iter = "selected_editable_objects"
+ props.data_path_item = "data.shadow_soft_size"
+ props.header_text = "Lamp Size: %.3f"
if lamp.type == 'SPOT':
layout.separator()
@@ -1610,19 +1596,6 @@ class VIEW3D_MT_object_specials(Menu):
props.input_scale = -0.01
props.header_text = "Spot Blend: %.2f"
- if not use_shading_nodes:
- props = layout.operator("wm.context_modal_mouse", text="Clip Start")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.shadow_buffer_clip_start"
- props.input_scale = 0.05
- props.header_text = "Clip Start: %.2f"
-
- props = layout.operator("wm.context_modal_mouse", text="Clip End")
- props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.shadow_buffer_clip_end"
- props.input_scale = 0.05
- props.header_text = "Clip End: %.2f"
-
layout.separator()
props = layout.operator("object.isolate_type_render")
@@ -3744,63 +3717,6 @@ class VIEW3D_PT_transform_orientations(Panel):
row.operator("transform.delete_orientation", text="", icon='X')
-class VIEW3D_PT_etch_a_ton(Panel):
- bl_space_type = 'VIEW_3D'
- bl_region_type = 'UI'
- bl_label = "Skeleton Sketching"
- bl_options = {'DEFAULT_CLOSED'}
-
- @classmethod
- def poll(cls, context):
- scene = context.space_data
- ob = context.active_object
- return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT'
-
- def draw_header(self, context):
- layout = self.layout
- toolsettings = context.scene.tool_settings
-
- layout.prop(toolsettings, "use_bone_sketching", text="")
-
- def draw(self, context):
- layout = self.layout
-
- toolsettings = context.scene.tool_settings
-
- col = layout.column()
-
- col.prop(toolsettings, "use_etch_quick")
- col.prop(toolsettings, "use_etch_overdraw")
-
- col.separator()
-
- col.prop(toolsettings, "etch_convert_mode")
-
- if toolsettings.etch_convert_mode == 'LENGTH':
- col.prop(toolsettings, "etch_length_limit")
- elif toolsettings.etch_convert_mode == 'ADAPTIVE':
- col.prop(toolsettings, "etch_adaptive_limit")
- elif toolsettings.etch_convert_mode == 'FIXED':
- col.prop(toolsettings, "etch_subdivision_number")
- elif toolsettings.etch_convert_mode == 'RETARGET':
- col.prop(toolsettings, "etch_template")
- col.prop(toolsettings, "etch_roll_mode")
-
- col.separator()
-
- colsub = col.column(align=True)
- colsub.prop(toolsettings, "use_etch_autoname")
- sub = colsub.column(align=True)
- sub.enabled = not toolsettings.use_etch_autoname
- sub.prop(toolsettings, "etch_number")
- sub.prop(toolsettings, "etch_side")
-
- col.separator()
-
- col.operator("sketch.convert", text="Convert to Bones")
- col.operator("sketch.delete", text="Delete Strokes")
-
-
class VIEW3D_PT_context_properties(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
@@ -3976,7 +3892,6 @@ classes = (
VIEW3D_PT_view3d_meshstatvis,
VIEW3D_PT_view3d_curvedisplay,
VIEW3D_PT_transform_orientations,
- VIEW3D_PT_etch_a_ton,
VIEW3D_PT_context_properties,
)
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index d7c23e460a0..e56fb362bef 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -341,7 +341,6 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, Panel):
row = col.row(align=True)
row.operator("transform.edge_slide", text="Slide Edge")
row.operator("transform.vert_slide", text="Vertex")
- col.operator("mesh.noise")
col.operator("mesh.vertices_smooth")
col.operator("transform.vertex_random")
@@ -1199,9 +1198,6 @@ class TEXTURE_UL_texpaintslots(UIList):
if self.layout_type in {'DEFAULT', 'COMPACT'}:
layout.prop(item, "name", text="", emboss=False, icon_value=icon)
- if (not mat.use_nodes) and context.engine == 'BLENDER_RENDER':
- mtex_index = mat.texture_paint_slots[index].index
- layout.prop(mat, "use_textures", text="", index=mtex_index)
elif self.layout_type == 'GRID':
layout.alignment = 'CENTER'
layout.label(text="")
@@ -1262,16 +1258,7 @@ class VIEW3D_PT_slots_projectpaint(View3DPanel, Panel):
else:
slot = None
- if (not mat.use_nodes) and context.engine == 'BLENDER_RENDER':
- row = col.row(align=True)
- row.operator_menu_enum("paint.add_texture_paint_slot", "type")
- row.operator("paint.delete_texture_paint_slot", text="", icon='X')
-
- if slot:
- col.prop(mat.texture_slots[slot.index], "blend_type")
- col.separator()
-
- if slot and slot.index != -1:
+ if slot and slot.valid:
col.label("UV Map:")
col.prop_search(slot, "uv_layer", ob.data, "uv_layers", text="")
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index a92b25670fc..0d283d39af7 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -43,18 +43,10 @@ class CompositorNodeCategory(SortedNodeCategory):
return (context.space_data.tree_type == 'CompositorNodeTree')
-class ShaderNewNodeCategory(SortedNodeCategory):
+class ShaderNodeCategory(SortedNodeCategory):
@classmethod
def poll(cls, context):
- return (context.space_data.tree_type == 'ShaderNodeTree' and
- context.scene.render.use_shading_nodes)
-
-
-class ShaderOldNodeCategory(SortedNodeCategory):
- @classmethod
- def poll(cls, context):
- return (context.space_data.tree_type == 'ShaderNodeTree' and
- not context.scene.render.use_shading_nodes)
+ return (context.space_data.tree_type == 'ShaderNodeTree')
class TextureNodeCategory(SortedNodeCategory):
@@ -172,59 +164,8 @@ def object_eevee_cycles_shader_nodes_poll(context):
# All standard node categories currently used in nodes.
shader_node_categories = [
- # Shader Nodes
- ShaderOldNodeCategory("SH_INPUT", "Input", items=[
- NodeItem("ShaderNodeMaterial"),
- NodeItem("ShaderNodeCameraData"),
- NodeItem("ShaderNodeFresnel"),
- NodeItem("ShaderNodeLayerWeight"),
- NodeItem("ShaderNodeLampData"),
- NodeItem("ShaderNodeValue"),
- NodeItem("ShaderNodeRGB"),
- NodeItem("ShaderNodeTexture"),
- NodeItem("ShaderNodeGeometry"),
- NodeItem("ShaderNodeExtendedMaterial"),
- NodeItem("ShaderNodeParticleInfo"),
- NodeItem("ShaderNodeObjectInfo"),
- NodeItem("NodeGroupInput", poll=group_input_output_item_poll),
- ]),
- ShaderOldNodeCategory("SH_OUTPUT", "Output", items=[
- NodeItem("ShaderNodeOutput"),
- NodeItem("NodeGroupOutput", poll=group_input_output_item_poll),
- ]),
- ShaderOldNodeCategory("SH_OP_COLOR", "Color", items=[
- NodeItem("ShaderNodeMixRGB"),
- NodeItem("ShaderNodeRGBCurve"),
- NodeItem("ShaderNodeInvert"),
- NodeItem("ShaderNodeHueSaturation"),
- NodeItem("ShaderNodeGamma"),
- ]),
- ShaderOldNodeCategory("SH_OP_VECTOR", "Vector", items=[
- NodeItem("ShaderNodeNormal"),
- NodeItem("ShaderNodeMapping"),
- NodeItem("ShaderNodeVectorCurve"),
- NodeItem("ShaderNodeVectorTransform"),
- NodeItem("ShaderNodeNormalMap"),
- ]),
- ShaderOldNodeCategory("SH_CONVERTOR", "Converter", items=[
- NodeItem("ShaderNodeValToRGB"),
- NodeItem("ShaderNodeRGBToBW"),
- NodeItem("ShaderNodeMath"),
- NodeItem("ShaderNodeVectorMath"),
- NodeItem("ShaderNodeSqueeze"),
- NodeItem("ShaderNodeSeparateRGB"),
- NodeItem("ShaderNodeCombineRGB"),
- NodeItem("ShaderNodeSeparateHSV"),
- NodeItem("ShaderNodeCombineHSV"),
- ]),
- ShaderOldNodeCategory("SH_GROUP", "Group", items=node_group_items),
- ShaderOldNodeCategory("SH_LAYOUT", "Layout", items=[
- NodeItem("NodeFrame"),
- NodeItem("NodeReroute"),
- ]),
-
- # New Shader Nodes (Cycles)
- ShaderNewNodeCategory("SH_NEW_INPUT", "Input", items=[
+ # Shader Nodes (Cycles and Eevee)
+ ShaderNodeCategory("SH_NEW_INPUT", "Input", items=[
NodeItem("ShaderNodeTexCoord"),
NodeItem("ShaderNodeAttribute"),
NodeItem("ShaderNodeLightPath"),
@@ -244,14 +185,14 @@ shader_node_categories = [
NodeItem("ShaderNodeUVAlongStroke", poll=line_style_shader_nodes_poll),
NodeItem("NodeGroupInput", poll=group_input_output_item_poll),
]),
- ShaderNewNodeCategory("SH_NEW_OUTPUT", "Output", items=[
+ ShaderNodeCategory("SH_NEW_OUTPUT", "Output", items=[
NodeItem("ShaderNodeOutputMaterial", poll=object_eevee_cycles_shader_nodes_poll),
NodeItem("ShaderNodeOutputLamp", poll=object_cycles_shader_nodes_poll),
NodeItem("ShaderNodeOutputWorld", poll=world_shader_nodes_poll),
NodeItem("ShaderNodeOutputLineStyle", poll=line_style_shader_nodes_poll),
NodeItem("NodeGroupOutput", poll=group_input_output_item_poll),
]),
- ShaderNewNodeCategory("SH_NEW_SHADER", "Shader", items=[
+ ShaderNodeCategory("SH_NEW_SHADER", "Shader", items=[
NodeItem("ShaderNodeMixShader", poll=eevee_cycles_shader_nodes_poll),
NodeItem("ShaderNodeAddShader", poll=eevee_cycles_shader_nodes_poll),
NodeItem("ShaderNodeBsdfDiffuse", poll=object_eevee_cycles_shader_nodes_poll),
@@ -275,7 +216,7 @@ shader_node_categories = [
NodeItem("ShaderNodeVolumePrincipled"),
NodeItem("ShaderNodeEeveeSpecular", poll=object_eevee_shader_nodes_poll),
]),
- ShaderNewNodeCategory("SH_NEW_TEXTURE", "Texture", items=[
+ ShaderNodeCategory("SH_NEW_TEXTURE", "Texture", items=[
NodeItem("ShaderNodeTexImage"),
NodeItem("ShaderNodeTexEnvironment"),
NodeItem("ShaderNodeTexSky"),
@@ -289,7 +230,7 @@ shader_node_categories = [
NodeItem("ShaderNodeTexBrick"),
NodeItem("ShaderNodeTexPointDensity"),
]),
- ShaderNewNodeCategory("SH_NEW_OP_COLOR", "Color", items=[
+ ShaderNodeCategory("SH_NEW_OP_COLOR", "Color", items=[
NodeItem("ShaderNodeMixRGB"),
NodeItem("ShaderNodeRGBCurve"),
NodeItem("ShaderNodeInvert"),
@@ -298,7 +239,7 @@ shader_node_categories = [
NodeItem("ShaderNodeGamma"),
NodeItem("ShaderNodeBrightContrast"),
]),
- ShaderNewNodeCategory("SH_NEW_OP_VECTOR", "Vector", items=[
+ ShaderNodeCategory("SH_NEW_OP_VECTOR", "Vector", items=[
NodeItem("ShaderNodeMapping"),
NodeItem("ShaderNodeBump"),
NodeItem("ShaderNodeDisplacement"),
@@ -308,7 +249,7 @@ shader_node_categories = [
NodeItem("ShaderNodeVectorCurve"),
NodeItem("ShaderNodeVectorTransform"),
]),
- ShaderNewNodeCategory("SH_NEW_CONVERTOR", "Converter", items=[
+ ShaderNodeCategory("SH_NEW_CONVERTOR", "Converter", items=[
NodeItem("ShaderNodeMath"),
NodeItem("ShaderNodeValToRGB"),
NodeItem("ShaderNodeRGBToBW"),
@@ -322,11 +263,11 @@ shader_node_categories = [
NodeItem("ShaderNodeWavelength"),
NodeItem("ShaderNodeBlackbody"),
]),
- ShaderNewNodeCategory("SH_NEW_SCRIPT", "Script", items=[
+ ShaderNodeCategory("SH_NEW_SCRIPT", "Script", items=[
NodeItem("ShaderNodeScript"),
]),
- ShaderNewNodeCategory("SH_NEW_GROUP", "Group", items=node_group_items),
- ShaderNewNodeCategory("SH_NEW_LAYOUT", "Layout", items=[
+ ShaderNodeCategory("SH_NEW_GROUP", "Group", items=node_group_items),
+ ShaderNodeCategory("SH_NEW_LAYOUT", "Layout", items=[
NodeItem("NodeFrame"),
NodeItem("NodeReroute"),
]),
diff --git a/release/scripts/templates_py/ui_list_simple.py b/release/scripts/templates_py/ui_list_simple.py
index e911a0dd236..79c14c17c7e 100644
--- a/release/scripts/templates_py/ui_list_simple.py
+++ b/release/scripts/templates_py/ui_list_simple.py
@@ -28,18 +28,6 @@ class MATERIAL_UL_matslots_example(bpy.types.UIList):
layout.prop(ma, "name", text="", emboss=False, icon_value=icon)
else:
layout.label(text="", translate=False, icon_value=icon)
- # And now we can add other UI stuff...
- # Here, we add nodes info if this material uses (old!) shading nodes.
- if ma and not context.scene.render.use_shading_nodes:
- manode = ma.active_node_material
- if manode:
- # The static method UILayout.icon returns the integer value of the icon ID "computed" for the given
- # RNA object.
- layout.label(text="Node %s" % manode.name, translate=False, icon_value=layout.icon(manode))
- elif ma.use_nodes:
- layout.label(text="Node <none>", translate=False)
- else:
- layout.label(text="")
# 'GRID' layout type should be as compact as possible (typically a single icon!).
elif self.layout_type in {'GRID'}:
layout.alignment = 'CENTER'