c0f7eca88bccd2ddc504c28dbd5dc554190a4e55
[blender.git] / release / scripts / startup / bl_ui / properties_view_layer.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # <pep8 compliant>
20 import bpy
21 from bpy.types import Panel, UIList
22
23
24 class ViewLayerButtonsPanel:
25     bl_space_type = 'PROPERTIES'
26     bl_region_type = 'WINDOW'
27     bl_context = "view_layer"
28     # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
29
30     @classmethod
31     def poll(cls, context):
32         return (context.engine in cls.COMPAT_ENGINES)
33
34
35 class VIEWLAYER_PT_layer(ViewLayerButtonsPanel, Panel):
36     bl_label = "View Layer"
37     COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
38
39     def draw(self, context):
40         layout = self.layout
41
42         layout.use_property_split = True
43
44         flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
45
46         layout.use_property_split = True
47
48         scene = context.scene
49         rd = scene.render
50         layer = context.view_layer
51
52         col = flow.column()
53         col.prop(layer, "use", text="Use for Rendering")
54         col = flow.column()
55         col.prop(rd, "use_single_layer", text="Render Single Layer")
56
57
58 class VIEWLAYER_PT_eevee_layer_passes(ViewLayerButtonsPanel, Panel):
59     bl_label = "Passes"
60     bl_options = {'DEFAULT_CLOSED'}
61     COMPAT_ENGINES = {'BLENDER_EEVEE'}
62
63     def draw(self, context):
64         layout = self.layout
65
66         layout.use_property_split = True
67
68         flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
69
70         view_layer = context.view_layer
71
72         col = flow.column()
73         col.prop(view_layer, "use_pass_combined")
74         col = flow.column()
75         col.prop(view_layer, "use_pass_z")
76         col = flow.column()
77         col.prop(view_layer, "use_pass_mist")
78         col = flow.column()
79         col.prop(view_layer, "use_pass_normal")
80         col = flow.column()
81         col.prop(view_layer, "use_pass_ambient_occlusion")
82         col = flow.column()
83         col.prop(view_layer, "use_pass_subsurface_direct", text="Subsurface Direct")
84         col = flow.column()
85         col.prop(view_layer, "use_pass_subsurface_color", text="Subsurface Color")
86
87
88 classes = (
89     VIEWLAYER_PT_layer,
90     VIEWLAYER_PT_eevee_layer_passes,
91 )
92
93 if __name__ == "__main__":  # only for live edit.
94     from bpy.utils import register_class
95     for cls in classes:
96         register_class(cls)