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:
authorLucas Boutrot <thornydre>2018-12-07 02:43:07 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-12-07 02:57:20 +0300
commitd40bffa17f6dabac3f4aef229d11824c2554bba3 (patch)
tree1da528cb7b4c10485ec299712aeb10bbc02a146f
parent5fdf739e7f2076bdb00f67fabfa1e1ff49c5db70 (diff)
UI: add material settings in shader editor sidebar.
Differential Revision: https://developer.blender.org/D3926
-rw-r--r--intern/cycles/blender/addon/ui.py79
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py22
-rw-r--r--release/scripts/startup/bl_ui/space_node.py41
3 files changed, 118 insertions, 24 deletions
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index afd13b304ce..b276d0bee10 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -54,6 +54,16 @@ class CyclesButtonsPanel:
return context.engine in cls.COMPAT_ENGINES
+class CyclesNodeButtonsPanel:
+ bl_space_type = "NODE_EDITOR"
+ bl_region_type = "UI"
+ COMPAT_ENGINES = {'CYCLES'}
+
+ @classmethod
+ def poll(cls, context):
+ return context.engine in cls.COMPAT_ENGINES
+
+
def get_device_type(context):
return context.user_preferences.addons[__package__].preferences.compute_device_type
@@ -1668,31 +1678,29 @@ class CYCLES_MATERIAL_PT_settings(CyclesButtonsPanel, Panel):
def poll(cls, context):
return context.material and CyclesButtonsPanel.poll(context)
- def draw(self, context):
+ @staticmethod
+ def draw_shared(self, mat):
layout = self.layout
layout.use_property_split = True
layout.use_property_decorate = False
- mat = context.material
-
layout.prop(mat, "pass_index")
+ def draw(self, context):
+ self.draw_shared(self, context.material)
+
class CYCLES_MATERIAL_PT_settings_surface(CyclesButtonsPanel, Panel):
bl_label = "Surface"
bl_parent_id = "CYCLES_MATERIAL_PT_settings"
bl_context = "material"
- @classmethod
- def poll(cls, context):
- return context.material and CyclesButtonsPanel.poll(context)
-
- def draw(self, context):
+ @staticmethod
+ def draw_shared(self, mat):
layout = self.layout
layout.use_property_split = True
layout.use_property_decorate = False
- mat = context.material
cmat = mat.cycles
col = layout.column()
@@ -1700,22 +1708,21 @@ class CYCLES_MATERIAL_PT_settings_surface(CyclesButtonsPanel, Panel):
col.prop(cmat, "use_transparent_shadow")
col.prop(cmat, "displacement_method", text="Displacement Method")
+ def draw(self, context):
+ self.draw_shared(self, context.material)
+
class CYCLES_MATERIAL_PT_settings_volume(CyclesButtonsPanel, Panel):
bl_label = "Volume"
bl_parent_id = "CYCLES_MATERIAL_PT_settings"
bl_context = "material"
- @classmethod
- def poll(cls, context):
- return context.material and CyclesButtonsPanel.poll(context)
-
- def draw(self, context):
+ @staticmethod
+ def draw_shared(self, context, mat):
layout = self.layout
layout.use_property_split = True
layout.use_property_decorate = False
- mat = context.material
cmat = mat.cycles
col = layout.column()
@@ -1725,6 +1732,9 @@ class CYCLES_MATERIAL_PT_settings_volume(CyclesButtonsPanel, Panel):
col.prop(cmat, "volume_interpolation", text="Interpolation")
col.prop(cmat, "homogeneous_volume", text="Homogeneous")
+ def draw(self, context):
+ self.draw_shared(self, context, context.material)
+
class CYCLES_RENDER_PT_bake(CyclesButtonsPanel, Panel):
bl_label = "Bake"
@@ -1959,6 +1969,42 @@ class CYCLES_RENDER_PT_simplify_culling(CyclesButtonsPanel, Panel):
sub.prop(cscene, "distance_cull_margin", text="Distance")
+class CYCLES_NODE_PT_settings(CyclesNodeButtonsPanel, Panel):
+ bl_label = "Settings"
+ bl_category = "Node"
+ bl_options = {'DEFAULT_CLOSED'}
+
+ @classmethod
+ def poll(cls, context):
+ snode = context.space_data
+ return CyclesNodeButtonsPanel.poll(context) and \
+ snode.tree_type == 'ShaderNodeTree' and snode.id
+
+ def draw(self, context):
+ material = context.space_data.id
+ CYCLES_MATERIAL_PT_settings.draw_shared(self, material)
+
+
+class CYCLES_NODE_PT_settings_surface(CyclesNodeButtonsPanel, Panel):
+ bl_label = "Surface"
+ bl_category = "Node"
+ bl_parent_id = "CYCLES_NODE_PT_settings"
+
+ def draw(self, context):
+ material = context.space_data.id
+ CYCLES_MATERIAL_PT_settings_surface.draw_shared(self, material)
+
+
+class CYCLES_NODE_PT_settings_volume(CyclesNodeButtonsPanel, Panel):
+ bl_label = "Volume"
+ bl_category = "Node"
+ bl_parent_id = "CYCLES_NODE_PT_settings"
+
+ def draw(self, context):
+ material = context.space_data.id
+ CYCLES_MATERIAL_PT_settings_volume.draw_shared(self, context, material)
+
+
def draw_device(self, context):
scene = context.scene
layout = self.layout
@@ -2087,6 +2133,9 @@ classes = (
CYCLES_MATERIAL_PT_settings_volume,
CYCLES_RENDER_PT_bake,
CYCLES_RENDER_PT_debug,
+ CYCLES_NODE_PT_settings,
+ CYCLES_NODE_PT_settings_surface,
+ CYCLES_NODE_PT_settings_volume,
)
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 89c1f32ed2d..aa3166febee 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -204,8 +204,8 @@ class EEVEE_MATERIAL_PT_volume(MaterialButtonsPanel, Panel):
panel_node_draw(layout, mat.node_tree, 'OUTPUT_MATERIAL', "Volume")
-class EEVEE_MATERIAL_PT_options(MaterialButtonsPanel, Panel):
- bl_label = "Options"
+class EEVEE_MATERIAL_PT_settings(MaterialButtonsPanel, Panel):
+ bl_label = "Settings"
bl_context = "material"
COMPAT_ENGINES = {'BLENDER_EEVEE'}
@@ -214,12 +214,11 @@ class EEVEE_MATERIAL_PT_options(MaterialButtonsPanel, Panel):
engine = context.engine
return context.material and (engine in cls.COMPAT_ENGINES)
- def draw(self, context):
+ @staticmethod
+ def draw_shared(self, mat):
layout = self.layout
layout.use_property_split = True
- mat = context.material
-
layout.prop(mat, "blend_method")
if mat.blend_method != 'OPAQUE':
@@ -236,6 +235,9 @@ class EEVEE_MATERIAL_PT_options(MaterialButtonsPanel, Panel):
layout.prop(mat, "refraction_depth")
layout.prop(mat, "use_sss_translucency")
+ def draw(self, context):
+ self.draw_shared(self, context.material)
+
class MATERIAL_PT_viewport(MaterialButtonsPanel, Panel):
bl_label = "Viewport Display"
@@ -246,9 +248,8 @@ class MATERIAL_PT_viewport(MaterialButtonsPanel, Panel):
def poll(cls, context):
return context.material
- def draw(self, context):
- mat = context.material
-
+ @staticmethod
+ def draw_shared(self, mat):
layout = self.layout
layout.use_property_split = True
@@ -257,6 +258,9 @@ class MATERIAL_PT_viewport(MaterialButtonsPanel, Panel):
col.prop(mat, "metallic")
col.prop(mat, "roughness")
+ def draw(self, context):
+ self.draw_shared(self, context.material)
+
classes = (
MATERIAL_MT_specials,
@@ -265,7 +269,7 @@ classes = (
EEVEE_MATERIAL_PT_context_material,
EEVEE_MATERIAL_PT_surface,
EEVEE_MATERIAL_PT_volume,
- EEVEE_MATERIAL_PT_options,
+ EEVEE_MATERIAL_PT_settings,
MATERIAL_PT_viewport,
MATERIAL_PT_custom_props,
)
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index d799251fe30..1674940b77f 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -27,6 +27,10 @@ from .properties_grease_pencil_common import (
AnnotationDataPanel,
GreasePencilToolsPanel,
)
+from .properties_material import (
+ EEVEE_MATERIAL_PT_settings,
+ MATERIAL_PT_viewport
+)
class NODE_HT_header(Header):
@@ -552,6 +556,41 @@ class NODE_PT_grease_pencil_tools(GreasePencilToolsPanel, Panel):
# toolbar, but which may not necessarily be open
+class EEVEE_NODE_PT_material_settings(Panel):
+ bl_space_type = 'NODE_EDITOR'
+ bl_region_type = 'UI'
+ bl_category = "Node"
+ bl_label = "Settings"
+ COMPAT_ENGINES = {'BLENDER_EEVEE'}
+
+ @classmethod
+ def poll(cls, context):
+ snode = context.space_data
+ return (context.engine in cls.COMPAT_ENGINES) and \
+ snode.tree_type == 'ShaderNodeTree' and snode.id
+
+ def draw(self, context):
+ material = context.space_data.id
+ EEVEE_MATERIAL_PT_settings.draw_shared(self, material)
+
+
+class NODE_PT_material_viewport(Panel):
+ bl_space_type = 'NODE_EDITOR'
+ bl_region_type = 'UI'
+ bl_category = "Node"
+ bl_label = "Viewport Display"
+ bl_options = {'DEFAULT_CLOSED'}
+
+ @classmethod
+ def poll(cls, context):
+ snode = context.space_data
+ return snode.tree_type == 'ShaderNodeTree' and snode.id
+
+ def draw(self, context):
+ material = context.space_data.id
+ MATERIAL_PT_viewport.draw_shared(self, material)
+
+
def node_draw_tree_view(layout, context):
pass
@@ -574,6 +613,8 @@ classes = (
NODE_UL_interface_sockets,
NODE_PT_grease_pencil,
NODE_PT_grease_pencil_tools,
+ EEVEE_NODE_PT_material_settings,
+ NODE_PT_material_viewport,
)