Compare commits
19 Commits
temp-vulka
...
tmp-workbe
Author | SHA1 | Date | |
---|---|---|---|
81c4833a0d | |||
5a10182a70 | |||
7c59b0b836 | |||
4b65c0ad54 | |||
8501e93dea | |||
219d5a9530 | |||
ce54a09cdd | |||
65a069b539 | |||
79f15f68c5 | |||
dfd61be20e | |||
cde0faf4dd | |||
106c6db1b5 | |||
2739e186b6 | |||
f1851fa35c | |||
71c9746ec6 | |||
d6457310d8 | |||
db6665813b | |||
bc28bf3681 | |||
43dad4d9b1 |
@@ -331,7 +331,7 @@ class DATA_PT_motion_paths_display(MotionPathButtonsPanel_display, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Armature
|
||||
|
||||
|
@@ -444,7 +444,7 @@ class BONE_PT_deform(BoneButtonsPanel, Panel):
|
||||
|
||||
|
||||
class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_property_type = bpy.types.Bone, bpy.types.EditBone, bpy.types.PoseBone
|
||||
|
||||
@property
|
||||
|
@@ -21,7 +21,7 @@ class CAMERA_PT_presets(PresetPanel, Panel):
|
||||
preset_subdir = "camera"
|
||||
preset_operator = "script.execute_preset"
|
||||
preset_add_operator = "camera.preset_add"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
|
||||
class SAFE_AREAS_PT_presets(PresetPanel, Panel):
|
||||
@@ -29,13 +29,13 @@ class SAFE_AREAS_PT_presets(PresetPanel, Panel):
|
||||
preset_subdir = "safe_areas"
|
||||
preset_operator = "script.execute_preset"
|
||||
preset_add_operator = "safe_areas.preset_add"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
|
||||
class DATA_PT_context_camera(CameraButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -52,7 +52,7 @@ class DATA_PT_context_camera(CameraButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_lens(CameraButtonsPanel, Panel):
|
||||
bl_label = "Lens"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -100,7 +100,7 @@ class DATA_PT_lens(CameraButtonsPanel, Panel):
|
||||
col.prop(ccam, "fisheye_polynomial_k3", text="K3")
|
||||
col.prop(ccam, "fisheye_polynomial_k4", text="K4")
|
||||
|
||||
elif engine in {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}:
|
||||
elif engine in {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}:
|
||||
if cam.lens_unit == 'MILLIMETERS':
|
||||
col.prop(cam, "lens")
|
||||
elif cam.lens_unit == 'FOV':
|
||||
@@ -122,7 +122,7 @@ class DATA_PT_lens(CameraButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel):
|
||||
bl_label = "Stereoscopy"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -171,7 +171,7 @@ class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera(CameraButtonsPanel, Panel):
|
||||
bl_label = "Camera"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header_preset(self, _context):
|
||||
CAMERA_PT_presets.draw_panel_header(self.layout)
|
||||
@@ -201,7 +201,7 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera_dof(CameraButtonsPanel, Panel):
|
||||
bl_label = "Depth of Field"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cam = context.camera
|
||||
@@ -228,7 +228,7 @@ class DATA_PT_camera_dof(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera_dof_aperture(CameraButtonsPanel, Panel):
|
||||
bl_label = "Aperture"
|
||||
bl_parent_id = "DATA_PT_camera_dof"
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -252,7 +252,7 @@ class DATA_PT_camera_dof_aperture(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera_background_image(CameraButtonsPanel, Panel):
|
||||
bl_label = "Background Images"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cam = context.camera
|
||||
@@ -359,7 +359,7 @@ class DATA_PT_camera_background_image(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera_display(CameraButtonsPanel, Panel):
|
||||
bl_label = "Viewport Display"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -392,7 +392,7 @@ class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel):
|
||||
bl_label = "Composition Guides"
|
||||
bl_parent_id = "DATA_PT_camera_display"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -419,7 +419,7 @@ class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel):
|
||||
class DATA_PT_camera_safe_areas(CameraButtonsPanel, Panel):
|
||||
bl_label = "Safe Areas"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cam = context.camera
|
||||
@@ -449,7 +449,7 @@ class DATA_PT_camera_safe_areas_center_cut(CameraButtonsPanel, Panel):
|
||||
bl_label = "Center-Cut Safe Areas"
|
||||
bl_parent_id = "DATA_PT_camera_safe_areas"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cam = context.camera
|
||||
@@ -473,7 +473,7 @@ class DATA_PT_camera_safe_areas_center_cut(CameraButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Camera
|
||||
|
||||
|
@@ -116,7 +116,7 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
||||
class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
|
||||
bl_label = "Texture Space"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -475,7 +475,7 @@ class DATA_PT_text_boxes(CurveButtonsPanelText, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Curve
|
||||
|
||||
|
@@ -18,7 +18,7 @@ class DataButtonsPanel:
|
||||
class DATA_PT_context_curves(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -35,7 +35,7 @@ class DATA_PT_context_curves(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_curves_surface(DataButtonsPanel, Panel):
|
||||
bl_label = "Surface"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -104,7 +104,7 @@ class CURVES_UL_attributes(UIList):
|
||||
|
||||
class DATA_PT_CURVES_attributes(DataButtonsPanel, Panel):
|
||||
bl_label = "Attributes"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
curves = context.curves
|
||||
@@ -129,7 +129,7 @@ class DATA_PT_CURVES_attributes(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_curves(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Curves if hasattr(bpy.types, "Curves") else None
|
||||
|
||||
|
@@ -64,7 +64,7 @@ class DATA_PT_lattice(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Lattice
|
||||
|
||||
|
@@ -18,7 +18,7 @@ class DataButtonsPanel:
|
||||
class DATA_PT_context_light(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -44,7 +44,7 @@ class DATA_PT_preview(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_light(DataButtonsPanel, Panel):
|
||||
bl_label = "Light"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -229,7 +229,7 @@ class DATA_PT_EEVEE_shadow_contact(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_area(DataButtonsPanel, Panel):
|
||||
bl_label = "Area Shape"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -256,7 +256,7 @@ class DATA_PT_area(DataButtonsPanel, Panel):
|
||||
class DATA_PT_spot(DataButtonsPanel, Panel):
|
||||
bl_label = "Spot Shape"
|
||||
bl_parent_id = "DATA_PT_EEVEE_light"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -301,7 +301,7 @@ class DATA_PT_falloff_curve(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_light(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE_NEXT', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Light
|
||||
|
||||
|
@@ -167,7 +167,7 @@ class MeshButtonsPanel:
|
||||
class DATA_PT_context_mesh(MeshButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -185,7 +185,7 @@ class DATA_PT_context_mesh(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_normals(MeshButtonsPanel, Panel):
|
||||
bl_label = "Normals"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -207,7 +207,7 @@ class DATA_PT_normals(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_texture_space(MeshButtonsPanel, Panel):
|
||||
bl_label = "Texture Space"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -227,7 +227,7 @@ class DATA_PT_texture_space(MeshButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
|
||||
bl_label = "Vertex Groups"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -284,7 +284,7 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_face_maps(MeshButtonsPanel, Panel):
|
||||
bl_label = "Face Maps"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -327,7 +327,7 @@ class DATA_PT_face_maps(MeshButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
|
||||
bl_label = "Shape Keys"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -424,7 +424,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
|
||||
bl_label = "UV Maps"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -444,7 +444,7 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_remesh(MeshButtonsPanel, Panel):
|
||||
bl_label = "Remesh"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -474,7 +474,7 @@ class DATA_PT_remesh(MeshButtonsPanel, Panel):
|
||||
class DATA_PT_customdata(MeshButtonsPanel, Panel):
|
||||
bl_label = "Geometry Data"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -515,7 +515,7 @@ class DATA_PT_customdata(MeshButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Mesh
|
||||
|
||||
@@ -555,7 +555,7 @@ class MESH_UL_attributes(UIList):
|
||||
class DATA_PT_mesh_attributes(MeshButtonsPanel, Panel):
|
||||
bl_label = "Attributes"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
mesh = context.mesh
|
||||
@@ -670,7 +670,7 @@ class MESH_UL_color_attributes_selector(UIList, ColorAttributesListBase):
|
||||
class DATA_PT_vertex_colors(DATA_PT_mesh_attributes, Panel):
|
||||
bl_label = "Color Attributes"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
mesh = context.mesh
|
||||
|
@@ -56,7 +56,7 @@ class DATA_PT_metaball(DataButtonsPanel, Panel):
|
||||
class DATA_PT_mball_texture_space(DataButtonsPanel, Panel):
|
||||
bl_label = "Texture Space"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -111,7 +111,7 @@ class DATA_PT_metaball_element(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.MetaBall
|
||||
|
||||
|
@@ -18,7 +18,7 @@ class DataButtonsPanel:
|
||||
class DATA_PT_context_pointcloud(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -89,7 +89,7 @@ class POINTCLOUD_UL_attributes(UIList):
|
||||
|
||||
class DATA_PT_pointcloud_attributes(DataButtonsPanel, Panel):
|
||||
bl_label = "Attributes"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
pointcloud = context.pointcloud
|
||||
@@ -114,7 +114,7 @@ class DATA_PT_pointcloud_attributes(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_pointcloud(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.PointCloud if hasattr(bpy.types, "PointCloud") else None
|
||||
|
||||
|
@@ -18,7 +18,7 @@ class DataButtonsPanel:
|
||||
class DATA_PT_context_speaker(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -35,7 +35,7 @@ class DATA_PT_context_speaker(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_speaker(DataButtonsPanel, Panel):
|
||||
bl_label = "Sound"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -57,7 +57,7 @@ class DATA_PT_speaker(DataButtonsPanel, Panel):
|
||||
class DATA_PT_distance(DataButtonsPanel, Panel):
|
||||
bl_label = "Distance"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -81,7 +81,7 @@ class DATA_PT_distance(DataButtonsPanel, Panel):
|
||||
class DATA_PT_cone(DataButtonsPanel, Panel):
|
||||
bl_label = "Cone"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -103,7 +103,7 @@ class DATA_PT_cone(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_speaker(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Speaker
|
||||
|
||||
|
@@ -18,7 +18,7 @@ class DataButtonsPanel:
|
||||
class DATA_PT_context_volume(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -35,7 +35,7 @@ class DATA_PT_context_volume(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_volume_file(DataButtonsPanel, Panel):
|
||||
bl_label = "OpenVDB File"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -80,7 +80,7 @@ class VOLUME_UL_grids(UIList):
|
||||
|
||||
class DATA_PT_volume_grids(DataButtonsPanel, Panel):
|
||||
bl_label = "Grids"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -93,7 +93,7 @@ class DATA_PT_volume_grids(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_volume_render(DataButtonsPanel, Panel):
|
||||
bl_label = "Render"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -125,7 +125,7 @@ class DATA_PT_volume_render(DataButtonsPanel, Panel):
|
||||
|
||||
class DATA_PT_volume_viewport_display(DataButtonsPanel, Panel):
|
||||
bl_label = "Viewport Display"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -149,7 +149,7 @@ class DATA_PT_volume_viewport_display(DataButtonsPanel, Panel):
|
||||
class DATA_PT_volume_viewport_display_slicing(DataButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_parent_id = 'DATA_PT_volume_viewport_display'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
layout = self.layout
|
||||
@@ -175,7 +175,7 @@ class DATA_PT_volume_viewport_display_slicing(DataButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_custom_props_volume(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.data"
|
||||
_property_type = bpy.types.Volume
|
||||
|
||||
|
@@ -21,7 +21,7 @@ class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Freestyle"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_order = 10
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
@@ -79,7 +79,7 @@ class ViewLayerFreestyleEditorButtonsPanel(ViewLayerFreestyleButtonsPanel):
|
||||
|
||||
class ViewLayerFreestyleLineStyle(ViewLayerFreestyleEditorButtonsPanel):
|
||||
# Freestyle Linestyle Panels
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -123,7 +123,7 @@ class RENDER_MT_lineset_context_menu(Menu):
|
||||
|
||||
class VIEWLAYER_PT_freestyle(ViewLayerFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Freestyle"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
view_layer = context.view_layer
|
||||
@@ -153,7 +153,7 @@ class VIEWLAYER_PT_freestyle(ViewLayerFreestyleButtonsPanel, Panel):
|
||||
class VIEWLAYER_PT_freestyle_edge_detection(ViewLayerFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Edge Detection"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -183,7 +183,7 @@ class VIEWLAYER_PT_freestyle_edge_detection(ViewLayerFreestyleButtonsPanel, Pane
|
||||
class VIEWLAYER_PT_freestyle_style_modules(ViewLayerFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Style Modules"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -219,7 +219,7 @@ class VIEWLAYER_PT_freestyle_style_modules(ViewLayerFreestyleButtonsPanel, Panel
|
||||
|
||||
class VIEWLAYER_PT_freestyle_lineset(ViewLayerFreestyleEditorButtonsPanel, Panel):
|
||||
bl_label = "Freestyle Line Set"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_edge_type_buttons(self, box, lineset, edge_type):
|
||||
# property names
|
||||
@@ -282,7 +282,7 @@ class VIEWLAYER_PT_freestyle_lineset(ViewLayerFreestyleEditorButtonsPanel, Panel
|
||||
class VIEWLAYER_PT_freestyle_lineset_visibilty(ViewLayerFreestyleLineStyle, Panel):
|
||||
bl_label = "Visibility"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle_lineset"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
layout = self.layout
|
||||
@@ -316,7 +316,7 @@ class VIEWLAYER_PT_freestyle_lineset_visibilty(ViewLayerFreestyleLineStyle, Pane
|
||||
class VIEWLAYER_PT_freestyle_lineset_edgetype(ViewLayerFreestyleLineStyle, Panel):
|
||||
bl_label = "Edge Type"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle_lineset"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
layout = self.layout
|
||||
@@ -366,7 +366,7 @@ class VIEWLAYER_PT_freestyle_lineset_edgetype(ViewLayerFreestyleLineStyle, Panel
|
||||
class VIEWLAYER_PT_freestyle_lineset_facemarks(ViewLayerFreestyleLineStyle, Panel):
|
||||
bl_label = "Face Marks"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle_lineset"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_header(self, context):
|
||||
@@ -395,7 +395,7 @@ class VIEWLAYER_PT_freestyle_lineset_facemarks(ViewLayerFreestyleLineStyle, Pane
|
||||
class VIEWLAYER_PT_freestyle_lineset_collection(ViewLayerFreestyleLineStyle, Panel):
|
||||
bl_label = "Collection"
|
||||
bl_parent_id = "VIEWLAYER_PT_freestyle_lineset"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_header(self, context):
|
||||
@@ -1236,7 +1236,7 @@ class MaterialFreestyleButtonsPanel:
|
||||
class MATERIAL_PT_freestyle_line(MaterialFreestyleButtonsPanel, Panel):
|
||||
bl_label = "Freestyle Line"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@@ -60,7 +60,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel, Panel):
|
||||
|
||||
|
||||
class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "material"
|
||||
_property_type = bpy.types.Material
|
||||
|
||||
@@ -69,7 +69,7 @@ class EEVEE_MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_context = "material"
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -228,7 +228,7 @@ class MATERIAL_PT_gpencil_preview(GPMaterialButtonsPanel, Panel):
|
||||
|
||||
|
||||
class MATERIAL_PT_gpencil_custom_props(GPMaterialButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object.active_material"
|
||||
_property_type = bpy.types.Material
|
||||
|
||||
|
@@ -366,7 +366,7 @@ class OBJECT_PT_motion_paths_display(MotionPathButtonsPanel_display, Panel):
|
||||
class OBJECT_PT_visibility(ObjectButtonsPanel, Panel):
|
||||
bl_label = "Visibility"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -395,7 +395,7 @@ class OBJECT_PT_visibility(ObjectButtonsPanel, Panel):
|
||||
|
||||
|
||||
class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "object"
|
||||
_property_type = bpy.types.Object
|
||||
|
||||
|
@@ -39,7 +39,7 @@ class RenderOutputButtonsPanel:
|
||||
|
||||
class RENDER_PT_format(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Format"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
_frame_rate_args_prev = None
|
||||
_preset_class = None
|
||||
@@ -117,7 +117,7 @@ class RENDER_PT_format(RenderOutputButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_frame_range(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Frame Range"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -136,7 +136,7 @@ class RENDER_PT_time_stretching(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Time Stretching"
|
||||
bl_parent_id = "RENDER_PT_frame_range"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -153,7 +153,7 @@ class RENDER_PT_time_stretching(RenderOutputButtonsPanel, Panel):
|
||||
class RENDER_PT_post_processing(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Post Processing"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -171,7 +171,7 @@ class RENDER_PT_post_processing(RenderOutputButtonsPanel, Panel):
|
||||
class RENDER_PT_stamp(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Metadata"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -205,7 +205,7 @@ class RENDER_PT_stamp_note(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Note"
|
||||
bl_parent_id = "RENDER_PT_stamp"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
@@ -225,7 +225,7 @@ class RENDER_PT_stamp_burn(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Burn Into Image"
|
||||
bl_parent_id = "RENDER_PT_stamp"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
@@ -249,7 +249,7 @@ class RENDER_PT_stamp_burn(RenderOutputButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_output(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Output"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -278,7 +278,7 @@ class RENDER_PT_output(RenderOutputButtonsPanel, Panel):
|
||||
class RENDER_PT_output_views(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Views"
|
||||
bl_parent_id = "RENDER_PT_output"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -298,7 +298,7 @@ class RENDER_PT_output_color_management(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Color Management"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "RENDER_PT_output"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
scene = context.scene
|
||||
@@ -333,7 +333,7 @@ class RENDER_PT_encoding(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Encoding"
|
||||
bl_parent_id = "RENDER_PT_output"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header_preset(self, _context):
|
||||
RENDER_PT_ffmpeg_presets.draw_panel_header(self.layout)
|
||||
@@ -358,7 +358,7 @@ class RENDER_PT_encoding(RenderOutputButtonsPanel, Panel):
|
||||
class RENDER_PT_encoding_video(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Video"
|
||||
bl_parent_id = "RENDER_PT_encoding"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -422,7 +422,7 @@ class RENDER_PT_encoding_video(RenderOutputButtonsPanel, Panel):
|
||||
class RENDER_PT_encoding_audio(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Audio"
|
||||
bl_parent_id = "RENDER_PT_encoding"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -464,7 +464,7 @@ class RENDER_UL_renderviews(UIList):
|
||||
|
||||
class RENDER_PT_stereoscopy(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Stereoscopy"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_header(self, context):
|
||||
|
@@ -52,7 +52,7 @@ def particle_get_settings(context):
|
||||
|
||||
class PARTICLE_MT_context_menu(Menu):
|
||||
bl_label = "Particle Specials"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -92,7 +92,7 @@ class PARTICLE_PT_hair_dynamics_presets(PresetPanel, Panel):
|
||||
preset_subdir = "hair_dynamics"
|
||||
preset_operator = "script.execute_preset"
|
||||
preset_add_operator = "particle.hair_dynamics_preset_add"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
|
||||
class ParticleButtonsPanel:
|
||||
@@ -146,7 +146,7 @@ class PARTICLE_UL_particle_systems(bpy.types.UIList):
|
||||
class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -239,7 +239,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
|
||||
class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Emission"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -291,7 +291,7 @@ class PARTICLE_PT_emission_source(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Source"
|
||||
bl_parent_id = "PARTICLE_PT_emission"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -328,7 +328,7 @@ class PARTICLE_PT_emission_source(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Hair Dynamics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -408,7 +408,7 @@ class PARTICLE_PT_hair_dynamics_collision(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Collisions"
|
||||
bl_parent_id = "PARTICLE_PT_hair_dynamics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -440,7 +440,7 @@ class PARTICLE_PT_hair_dynamics_structure(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Structure"
|
||||
bl_parent_id = "PARTICLE_PT_hair_dynamics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -471,7 +471,7 @@ class PARTICLE_PT_hair_dynamics_volume(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Volume"
|
||||
bl_parent_id = "PARTICLE_PT_hair_dynamics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -502,7 +502,7 @@ class PARTICLE_PT_hair_dynamics_volume(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Cache"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -535,7 +535,7 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Velocity"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -584,7 +584,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Rotation"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -639,7 +639,7 @@ class PARTICLE_PT_rotation_angular_velocity(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Angular Velocity"
|
||||
bl_parent_id = "PARTICLE_PT_rotation"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -664,7 +664,7 @@ class PARTICLE_PT_rotation_angular_velocity(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -717,7 +717,7 @@ class PARTICLE_PT_physics_fluid_advanced(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Advanced"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -762,7 +762,7 @@ class PARTICLE_PT_physics_fluid_springs(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Springs"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -786,7 +786,7 @@ class PARTICLE_PT_physics_fluid_springs_viscoelastic(ParticleButtonsPanel, Panel
|
||||
bl_label = "Viscoelastic Springs"
|
||||
bl_parent_id = "PARTICLE_PT_physics_fluid_springs"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -822,7 +822,7 @@ class PARTICLE_PT_physics_fluid_springs_advanced(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Advanced"
|
||||
bl_parent_id = "PARTICLE_PT_physics_fluid_springs"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -846,7 +846,7 @@ class PARTICLE_PT_physics_boids_movement(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Movement"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -899,7 +899,7 @@ class PARTICLE_PT_physics_boids_battle(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Battle"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -926,7 +926,7 @@ class PARTICLE_PT_physics_boids_misc(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Misc"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -951,7 +951,7 @@ class PARTICLE_PT_physics_relations(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Relations"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1006,7 +1006,7 @@ class PARTICLE_PT_physics_fluid_interaction(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Fluid Interaction"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1047,7 +1047,7 @@ class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Deflection"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1073,7 +1073,7 @@ class PARTICLE_PT_physics_deflection(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_physics_forces(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Forces"
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1100,7 +1100,7 @@ class PARTICLE_PT_physics_integration(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Integration"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1134,7 +1134,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "PARTICLE_PT_physics"
|
||||
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1232,7 +1232,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Render"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1279,7 +1279,7 @@ class PARTICLE_PT_render_extra(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Extra"
|
||||
bl_parent_id = "PARTICLE_PT_render"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1303,7 +1303,7 @@ class PARTICLE_PT_render_extra(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_render_path(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Path"
|
||||
bl_parent_id = "PARTICLE_PT_render"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1325,7 +1325,7 @@ class PARTICLE_PT_render_path_timing(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Timing"
|
||||
bl_parent_id = "PARTICLE_PT_render"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1353,7 +1353,7 @@ class PARTICLE_PT_render_path_timing(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_render_object(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Object"
|
||||
bl_parent_id = "PARTICLE_PT_render"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1378,7 +1378,7 @@ class PARTICLE_PT_render_object(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_render_collection(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Collection"
|
||||
bl_parent_id = "PARTICLE_PT_render"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1408,7 +1408,7 @@ class PARTICLE_PT_render_collection_use_count(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Use Count"
|
||||
bl_parent_id = "PARTICLE_PT_render_collection"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1456,7 +1456,7 @@ class PARTICLE_PT_render_collection_use_count(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Viewport Display"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1515,7 +1515,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Children"
|
||||
bl_translation_context = i18n_contexts.id_particlesettings
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1568,7 +1568,7 @@ class PARTICLE_PT_children_parting(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Parting"
|
||||
bl_parent_id = "PARTICLE_PT_children"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1599,7 +1599,7 @@ class PARTICLE_PT_children_clumping(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Clumping"
|
||||
bl_parent_id = "PARTICLE_PT_children"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1635,7 +1635,7 @@ class PARTICLE_PT_children_clumping_noise(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Clump Noise"
|
||||
bl_parent_id = "PARTICLE_PT_children_clumping"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
|
||||
@@ -1659,7 +1659,7 @@ class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
|
||||
bl_translation_context = i18n_contexts.id_particlesettings
|
||||
bl_parent_id = "PARTICLE_PT_children"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1700,7 +1700,7 @@ class PARTICLE_PT_children_kink(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Kink"
|
||||
bl_parent_id = "PARTICLE_PT_children"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1750,7 +1750,7 @@ class PARTICLE_PT_children_kink(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Field Weights"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1771,7 +1771,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Force Field Settings"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -1787,7 +1787,7 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_force_fields_type1(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Type 1"
|
||||
bl_parent_id = "PARTICLE_PT_force_fields"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -1804,7 +1804,7 @@ class PARTICLE_PT_force_fields_type1(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_force_fields_type2(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Type 2"
|
||||
bl_parent_id = "PARTICLE_PT_force_fields"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -1822,7 +1822,7 @@ class PARTICLE_PT_force_fields_type1_falloff(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Falloff"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "PARTICLE_PT_force_fields_type1"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -1838,7 +1838,7 @@ class PARTICLE_PT_force_fields_type2_falloff(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Falloff"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = "PARTICLE_PT_force_fields_type2"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -1853,7 +1853,7 @@ class PARTICLE_PT_force_fields_type2_falloff(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Vertex Groups"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1942,7 +1942,7 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_textures(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Textures"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1974,7 +1974,7 @@ class PARTICLE_PT_textures(ParticleButtonsPanel, Panel):
|
||||
class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel):
|
||||
bl_label = "Hair Shape"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -2002,7 +2002,7 @@ class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel):
|
||||
|
||||
|
||||
class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "particle_system.settings"
|
||||
_property_type = bpy.types.ParticleSettings
|
||||
|
||||
|
@@ -35,7 +35,7 @@ class PhysicButtonsPanel:
|
||||
|
||||
class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Cloth"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header_preset(self, _context):
|
||||
CLOTH_PT_presets.draw_panel_header(self.layout)
|
||||
@@ -60,7 +60,7 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_physical_properties(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Physical Properties"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -84,7 +84,7 @@ class PHYSICS_PT_cloth_physical_properties(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Stiffness"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -115,7 +115,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_damping(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Damping"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -146,7 +146,7 @@ class PHYSICS_PT_cloth_damping(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_internal_springs(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Internal Springs"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cloth = context.cloth.settings
|
||||
@@ -188,7 +188,7 @@ class PHYSICS_PT_cloth_internal_springs(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_pressure(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Pressure"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_physical_properties'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cloth = context.cloth.settings
|
||||
@@ -232,7 +232,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Cache"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
md = context.cloth
|
||||
@@ -243,7 +243,7 @@ class PHYSICS_PT_cloth_shape(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Shape"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -293,7 +293,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Collisions"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -313,7 +313,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_object_collision(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Object Collisions"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_collision'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cloth = context.cloth.collision_settings
|
||||
@@ -349,7 +349,7 @@ class PHYSICS_PT_cloth_object_collision(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cloth_self_collision(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Self Collisions"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth_collision'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
cloth = context.cloth.collision_settings
|
||||
@@ -386,7 +386,7 @@ class PHYSICS_PT_cloth_property_weights(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Property Weights"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -440,7 +440,7 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Field Weights"
|
||||
bl_parent_id = 'PHYSICS_PT_cloth'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
cloth = context.cloth.settings
|
||||
|
@@ -50,7 +50,7 @@ def physics_add_special(layout, data, name, addop, removeop, typeicon):
|
||||
class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@@ -83,7 +83,7 @@ class PhysicButtonsPanel:
|
||||
|
||||
class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Dynamic Paint"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -104,7 +104,7 @@ class PHYSICS_PT_dynamic_paint(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_dynamic_paint_settings(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_dynamic_paint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -188,7 +188,7 @@ class PHYSICS_PT_dynamic_paint_settings(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_dp_surface_canvas(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Surface"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -251,7 +251,7 @@ class PHYSICS_PT_dp_surface_canvas_paint_dry(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Dry"
|
||||
bl_parent_id = "PHYSICS_PT_dp_surface_canvas"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -287,7 +287,7 @@ class PHYSICS_PT_dp_surface_canvas_paint_dissolve(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Dissolve"
|
||||
bl_parent_id = "PHYSICS_PT_dp_surface_canvas"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -324,7 +324,7 @@ class PHYSICS_PT_dp_canvas_output(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Output"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -400,7 +400,7 @@ class PHYSICS_PT_dp_canvas_output_paintmaps(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Paintmaps"
|
||||
bl_parent_id = "PHYSICS_PT_dp_canvas_output"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -430,7 +430,7 @@ class PHYSICS_PT_dp_canvas_output_wetmaps(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Wetmaps"
|
||||
bl_parent_id = "PHYSICS_PT_dp_canvas_output"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -460,7 +460,7 @@ class PHYSICS_PT_dp_canvas_initial_color(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Initial Color"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -500,7 +500,7 @@ class PHYSICS_PT_dp_effects(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Effects"
|
||||
bl_parent_id = 'PHYSICS_PT_dynamic_paint'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -517,7 +517,7 @@ class PHYSICS_PT_dp_effects_spread(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Spread"
|
||||
bl_parent_id = "PHYSICS_PT_dp_effects"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -552,7 +552,7 @@ class PHYSICS_PT_dp_effects_drip(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Drip"
|
||||
bl_parent_id = "PHYSICS_PT_dp_effects"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -588,7 +588,7 @@ class PHYSICS_PT_dp_effects_drip_weights(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Weights"
|
||||
bl_parent_id = "PHYSICS_PT_dp_effects_drip"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -612,7 +612,7 @@ class PHYSICS_PT_dp_effects_shrink(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Shrink"
|
||||
bl_parent_id = "PHYSICS_PT_dp_effects"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -642,7 +642,7 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Cache"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -662,7 +662,7 @@ class PHYSICS_PT_dp_cache(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Source"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -725,7 +725,7 @@ class PHYSICS_PT_dp_brush_source(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_dp_brush_source_color_ramp(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Falloff Ramp"
|
||||
bl_parent_id = "PHYSICS_PT_dp_brush_source"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -752,7 +752,7 @@ class PHYSICS_PT_dp_brush_velocity(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Velocity"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -783,7 +783,7 @@ class PHYSICS_PT_dp_brush_velocity_color_ramp(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Ramp"
|
||||
bl_parent_id = "PHYSICS_PT_dp_brush_velocity"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -804,7 +804,7 @@ class PHYSICS_PT_dp_brush_velocity_smudge(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Smudge"
|
||||
bl_parent_id = "PHYSICS_PT_dp_brush_velocity"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -832,7 +832,7 @@ class PHYSICS_PT_dp_brush_wave(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Waves"
|
||||
bl_parent_id = "PHYSICS_PT_dynamic_paint"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -27,7 +27,7 @@ class PhysicButtonsPanel:
|
||||
|
||||
class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Force Fields"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -49,7 +49,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_settings(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_field'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -136,7 +136,7 @@ class PHYSICS_PT_field_settings(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_settings_kink(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Kink"
|
||||
bl_parent_id = 'PHYSICS_PT_field_settings'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -170,7 +170,7 @@ class PHYSICS_PT_field_settings_kink(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_settings_texture_select(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Texture"
|
||||
bl_parent_id = 'PHYSICS_PT_field_settings'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -192,7 +192,7 @@ class PHYSICS_PT_field_settings_texture_select(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_falloff(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Falloff"
|
||||
bl_parent_id = "PHYSICS_PT_field"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -217,7 +217,7 @@ class PHYSICS_PT_field_falloff(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_falloff_angular(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Angular"
|
||||
bl_parent_id = "PHYSICS_PT_field_falloff"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -256,7 +256,7 @@ class PHYSICS_PT_field_falloff_angular(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_field_falloff_radial(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Radial"
|
||||
bl_parent_id = "PHYSICS_PT_field_falloff"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -300,7 +300,7 @@ def collision_warning(layout):
|
||||
|
||||
class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Collision"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -331,7 +331,7 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_collision_particle(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Particle"
|
||||
bl_parent_id = "PHYSICS_PT_collision"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -377,7 +377,7 @@ class PHYSICS_PT_collision_particle(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_collision_softbody(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Softbody & Cloth"
|
||||
bl_parent_id = "PHYSICS_PT_collision"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -98,7 +98,7 @@ class PhysicButtonsPanel:
|
||||
|
||||
class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Fluid"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -122,7 +122,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -285,7 +285,7 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_borders(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Border Collisions"
|
||||
bl_parent_id = 'PHYSICS_PT_settings'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -318,7 +318,7 @@ class PHYSICS_PT_borders(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Gas"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -351,7 +351,7 @@ class PHYSICS_PT_smoke_dissolve(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Dissolve"
|
||||
bl_parent_id = 'PHYSICS_PT_smoke'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -395,7 +395,7 @@ class PHYSICS_PT_fire(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Fire"
|
||||
bl_parent_id = 'PHYSICS_PT_smoke'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -434,7 +434,7 @@ class PHYSICS_PT_fire(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_liquid(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Liquid"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -497,7 +497,7 @@ class PHYSICS_PT_flow_source(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Flow Source"
|
||||
bl_parent_id = 'PHYSICS_PT_settings'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -538,7 +538,7 @@ class PHYSICS_PT_flow_source(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_flow_initial_velocity(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Initial Velocity"
|
||||
bl_parent_id = 'PHYSICS_PT_settings'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -580,7 +580,7 @@ class PHYSICS_PT_flow_texture(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Texture"
|
||||
bl_parent_id = 'PHYSICS_PT_settings'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -631,7 +631,7 @@ class PHYSICS_PT_adaptive_domain(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Adaptive Domain"
|
||||
bl_parent_id = 'PHYSICS_PT_settings'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -683,7 +683,7 @@ class PHYSICS_PT_noise(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Noise"
|
||||
bl_parent_id = 'PHYSICS_PT_smoke'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -763,7 +763,7 @@ class PHYSICS_PT_mesh(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Mesh"
|
||||
bl_parent_id = 'PHYSICS_PT_liquid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -858,7 +858,7 @@ class PHYSICS_PT_particles(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Particles"
|
||||
bl_parent_id = 'PHYSICS_PT_liquid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -989,7 +989,7 @@ class PHYSICS_PT_viscosity(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Viscosity"
|
||||
bl_parent_id = 'PHYSICS_PT_liquid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1029,7 +1029,7 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Diffusion"
|
||||
bl_parent_id = 'PHYSICS_PT_liquid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1076,7 +1076,7 @@ class PHYSICS_PT_guide(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Guides"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1142,7 +1142,7 @@ class PHYSICS_PT_collections(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Collections"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1169,7 +1169,7 @@ class PHYSICS_PT_collections(PhysicButtonsPanel, Panel):
|
||||
class PHYSICS_PT_cache(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Cache"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1253,7 +1253,7 @@ class PHYSICS_PT_export(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Advanced"
|
||||
bl_parent_id = 'PHYSICS_PT_cache'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1298,7 +1298,7 @@ class PHYSICS_PT_field_weights(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Field Weights"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -1487,7 +1487,7 @@ class PHYSICS_PT_fluid_domain_render(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Render"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -19,7 +19,7 @@ class PHYSICS_PT_rigidbody_panel:
|
||||
|
||||
class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
bl_label = "Rigid Body"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -54,7 +54,7 @@ class PHYSICS_PT_rigid_body(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
class PHYSICS_PT_rigid_body_settings(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -86,7 +86,7 @@ class PHYSICS_PT_rigid_body_settings(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
class PHYSICS_PT_rigid_body_collisions(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
bl_label = "Collisions"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -136,7 +136,7 @@ class PHYSICS_PT_rigid_body_collisions_surface(PHYSICS_PT_rigidbody_panel, Panel
|
||||
bl_label = "Surface Response"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -164,7 +164,7 @@ class PHYSICS_PT_rigid_body_collisions_sensitivity(PHYSICS_PT_rigidbody_panel, P
|
||||
bl_label = "Sensitivity"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -201,7 +201,7 @@ class PHYSICS_PT_rigid_body_collisions_collections(PHYSICS_PT_rigidbody_panel, P
|
||||
bl_label = "Collections"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_collisions'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -223,7 +223,7 @@ class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel):
|
||||
bl_label = "Dynamics"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -256,7 +256,7 @@ class PHYSICS_PT_rigid_body_dynamics_deactivation(PHYSICS_PT_rigidbody_panel, Pa
|
||||
bl_label = "Deactivation"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_dynamics'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -13,7 +13,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', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -33,7 +33,7 @@ class PHYSICS_PT_rigid_body_constraint(PHYSICS_PT_rigidbody_constraint_panel, Pa
|
||||
class PHYSICS_PT_rigid_body_constraint_settings(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -64,7 +64,7 @@ class PHYSICS_PT_rigid_body_constraint_settings(PHYSICS_PT_rigidbody_constraint_
|
||||
class PHYSICS_PT_rigid_body_constraint_objects(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Objects"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -85,7 +85,7 @@ class PHYSICS_PT_rigid_body_constraint_objects(PHYSICS_PT_rigidbody_constraint_p
|
||||
class PHYSICS_PT_rigid_body_constraint_override_iterations(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Override Iterations"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -111,7 +111,7 @@ class PHYSICS_PT_rigid_body_constraint_override_iterations(PHYSICS_PT_rigidbody_
|
||||
class PHYSICS_PT_rigid_body_constraint_limits(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Limits"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -128,7 +128,7 @@ class PHYSICS_PT_rigid_body_constraint_limits(PHYSICS_PT_rigidbody_constraint_pa
|
||||
class PHYSICS_PT_rigid_body_constraint_limits_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Linear"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -185,7 +185,7 @@ class PHYSICS_PT_rigid_body_constraint_limits_linear(PHYSICS_PT_rigidbody_constr
|
||||
class PHYSICS_PT_rigid_body_constraint_limits_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Angular"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_limits'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -251,7 +251,7 @@ class PHYSICS_PT_rigid_body_constraint_limits_angular(PHYSICS_PT_rigidbody_const
|
||||
class PHYSICS_PT_rigid_body_constraint_motor(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Motor"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -268,7 +268,7 @@ class PHYSICS_PT_rigid_body_constraint_motor(PHYSICS_PT_rigidbody_constraint_pan
|
||||
class PHYSICS_PT_rigid_body_constraint_motor_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Angular"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -304,7 +304,7 @@ class PHYSICS_PT_rigid_body_constraint_motor_angular(PHYSICS_PT_rigidbody_constr
|
||||
class PHYSICS_PT_rigid_body_constraint_motor_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Linear"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_motor'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -340,7 +340,7 @@ class PHYSICS_PT_rigid_body_constraint_motor_linear(PHYSICS_PT_rigidbody_constra
|
||||
class PHYSICS_PT_rigid_body_constraint_springs(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Springs"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -364,7 +364,7 @@ class PHYSICS_PT_rigid_body_constraint_springs(PHYSICS_PT_rigidbody_constraint_p
|
||||
class PHYSICS_PT_rigid_body_constraint_springs_angular(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Angular"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -412,7 +412,7 @@ class PHYSICS_PT_rigid_body_constraint_springs_angular(PHYSICS_PT_rigidbody_cons
|
||||
class PHYSICS_PT_rigid_body_constraint_springs_linear(PHYSICS_PT_rigidbody_constraint_panel, Panel):
|
||||
bl_label = "Linear"
|
||||
bl_parent_id = 'PHYSICS_PT_rigid_body_constraint_springs'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -28,7 +28,7 @@ class PhysicButtonsPanel:
|
||||
|
||||
class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Soft Body"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -44,7 +44,7 @@ class PHYSICS_PT_softbody_object(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Object"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -72,7 +72,7 @@ class PHYSICS_PT_softbody_simulation(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Simulation"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -90,7 +90,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Cache"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
md = context.soft_body
|
||||
@@ -101,7 +101,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Goal"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
softbody = context.soft_body.settings
|
||||
@@ -126,7 +126,7 @@ class PHYSICS_PT_softbody_goal_strengths(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Strengths"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_goal'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -152,7 +152,7 @@ class PHYSICS_PT_softbody_goal_settings(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_goal'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -175,7 +175,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Edges"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
softbody = context.soft_body.settings
|
||||
@@ -222,7 +222,7 @@ class PHYSICS_PT_softbody_edge_aerodynamics(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Aerodynamics"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_edge'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -245,7 +245,7 @@ class PHYSICS_PT_softbody_edge_stiffness(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Stiffness"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_edge'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
softbody = context.soft_body.settings
|
||||
@@ -269,7 +269,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Self Collision"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
softbody = context.soft_body.settings
|
||||
@@ -304,7 +304,7 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Solver"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -329,7 +329,7 @@ class PHYSICS_PT_softbody_solver_diagnostics(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Diagnostics"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_solver'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -348,7 +348,7 @@ class PHYSICS_PT_softbody_solver_helpers(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Helpers"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody_solver'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -371,7 +371,7 @@ class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Field Weights"
|
||||
bl_parent_id = 'PHYSICS_PT_softbody'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
md = context.soft_body
|
||||
|
@@ -47,7 +47,7 @@ class RENDER_PT_color_management(RenderButtonsPanel, Panel):
|
||||
bl_label = "Color Management"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_order = 100
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -80,7 +80,7 @@ class RENDER_PT_color_management_curves(RenderButtonsPanel, Panel):
|
||||
bl_label = "Use Curves"
|
||||
bl_parent_id = "RENDER_PT_color_management"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
|
||||
@@ -640,7 +640,7 @@ class RENDER_PT_eevee_hair(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_eevee_performance(RenderButtonsPanel, Panel):
|
||||
bl_label = "Performance"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -661,7 +661,7 @@ class RENDER_PT_gpencil(RenderButtonsPanel, Panel):
|
||||
bl_label = "Grease Pencil"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_order = 10
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -677,7 +677,7 @@ class RENDER_PT_gpencil(RenderButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_opengl_sampling(RenderButtonsPanel, Panel):
|
||||
bl_label = "Sampling"
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -699,7 +699,7 @@ class RENDER_PT_opengl_sampling(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_opengl_film(RenderButtonsPanel, Panel):
|
||||
bl_label = "Film"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -712,7 +712,7 @@ class RENDER_PT_opengl_film(RenderButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_opengl_lighting(RenderButtonsPanel, Panel):
|
||||
bl_label = "Lighting"
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -724,7 +724,7 @@ class RENDER_PT_opengl_lighting(RenderButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_opengl_color(RenderButtonsPanel, Panel):
|
||||
bl_label = "Color"
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -736,7 +736,7 @@ class RENDER_PT_opengl_color(RenderButtonsPanel, Panel):
|
||||
|
||||
class RENDER_PT_opengl_options(RenderButtonsPanel, Panel):
|
||||
bl_label = "Options"
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -749,7 +749,7 @@ class RENDER_PT_opengl_options(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_simplify(RenderButtonsPanel, Panel):
|
||||
bl_label = "Simplify"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render
|
||||
@@ -762,7 +762,7 @@ class RENDER_PT_simplify(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_simplify_viewport(RenderButtonsPanel, Panel):
|
||||
bl_label = "Viewport"
|
||||
bl_parent_id = "RENDER_PT_simplify"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -787,7 +787,7 @@ class RENDER_PT_simplify_viewport(RenderButtonsPanel, Panel):
|
||||
class RENDER_PT_simplify_render(RenderButtonsPanel, Panel):
|
||||
bl_label = "Render"
|
||||
bl_parent_id = "RENDER_PT_simplify"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -815,7 +815,7 @@ class RENDER_PT_simplify_greasepencil(RenderButtonsPanel, Panel, GreasePencilSim
|
||||
'BLENDER_CLAY',
|
||||
'BLENDER_EEVEE',
|
||||
'BLENDER_EEVEE_NEXT',
|
||||
'BLENDER_WORKBENCH',
|
||||
'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT',
|
||||
}
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
|
@@ -67,7 +67,7 @@ class TextureButtonsPanel:
|
||||
|
||||
class TEXTURE_PT_preview(TextureButtonsPanel, Panel):
|
||||
bl_label = "Preview"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -96,7 +96,7 @@ class TEXTURE_PT_context(TextureButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_context = "texture"
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -135,7 +135,7 @@ class TEXTURE_PT_context(TextureButtonsPanel, Panel):
|
||||
class TEXTURE_PT_node(TextureButtonsPanel, Panel):
|
||||
bl_label = "Node"
|
||||
bl_context = "texture"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -164,7 +164,7 @@ class TextureTypePanel(TextureButtonsPanel):
|
||||
class TEXTURE_PT_clouds(TextureTypePanel, Panel):
|
||||
bl_label = "Clouds"
|
||||
tex_type = 'CLOUDS'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -196,7 +196,7 @@ class TEXTURE_PT_clouds(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_wood(TextureTypePanel, Panel):
|
||||
bl_label = "Wood"
|
||||
tex_type = 'WOOD'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -233,7 +233,7 @@ class TEXTURE_PT_wood(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_marble(TextureTypePanel, Panel):
|
||||
bl_label = "Marble"
|
||||
tex_type = 'MARBLE'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -267,7 +267,7 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_magic(TextureTypePanel, Panel):
|
||||
bl_label = "Magic"
|
||||
tex_type = 'MAGIC'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -286,7 +286,7 @@ class TEXTURE_PT_magic(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_blend(TextureTypePanel, Panel):
|
||||
bl_label = "Blend"
|
||||
tex_type = 'BLEND'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -308,7 +308,7 @@ class TEXTURE_PT_blend(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_stucci(TextureTypePanel, Panel):
|
||||
bl_label = "Stucci"
|
||||
tex_type = 'STUCCI'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -339,7 +339,7 @@ class TEXTURE_PT_stucci(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_image(TextureTypePanel, Panel):
|
||||
bl_label = "Image"
|
||||
tex_type = 'IMAGE'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, _context):
|
||||
# TODO: maybe expose the template_ID from the template image here.
|
||||
@@ -351,7 +351,7 @@ class TEXTURE_PT_image_settings(TextureTypePanel, Panel):
|
||||
bl_label = "Settings"
|
||||
bl_parent_id = 'TEXTURE_PT_image'
|
||||
tex_type = 'IMAGE'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -506,7 +506,7 @@ class TEXTURE_PT_image_mapping_crop(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
|
||||
bl_label = "Musgrave"
|
||||
tex_type = 'MUSGRAVE'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -551,7 +551,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
|
||||
bl_label = "Voronoi"
|
||||
tex_type = 'VORONOI'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -584,7 +584,7 @@ class TEXTURE_PT_voronoi_feature_weights(TextureTypePanel, Panel):
|
||||
bl_label = "Feature Weights"
|
||||
bl_parent_id = "TEXTURE_PT_voronoi"
|
||||
tex_type = 'VORONOI'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -605,7 +605,7 @@ class TEXTURE_PT_voronoi_feature_weights(TextureTypePanel, Panel):
|
||||
class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
|
||||
bl_label = "Distorted Noise"
|
||||
tex_type = 'DISTORTED_NOISE'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -630,7 +630,7 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
|
||||
|
||||
|
||||
class TextureSlotPanel(TextureButtonsPanel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -642,7 +642,7 @@ class TextureSlotPanel(TextureButtonsPanel):
|
||||
|
||||
class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
bl_label = "Mapping"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -710,7 +710,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
class TEXTURE_PT_influence(TextureSlotPanel, Panel):
|
||||
bl_label = "Influence"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -792,7 +792,7 @@ class TextureColorsPoll:
|
||||
class TEXTURE_PT_colors(TextureButtonsPanel, TextureColorsPoll, Panel):
|
||||
bl_label = "Colors"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@@ -821,7 +821,7 @@ class TEXTURE_PT_colors_ramp(TextureButtonsPanel, TextureColorsPoll, Panel):
|
||||
bl_label = "Color Ramp"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_parent_id = 'TEXTURE_PT_colors'
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw_header(self, context):
|
||||
tex = context.texture
|
||||
@@ -842,7 +842,7 @@ class TEXTURE_PT_colors_ramp(TextureButtonsPanel, TextureColorsPoll, Panel):
|
||||
|
||||
|
||||
class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "texture"
|
||||
_property_type = Texture
|
||||
|
||||
|
@@ -26,7 +26,7 @@ class ViewLayerButtonsPanel:
|
||||
|
||||
class VIEWLAYER_PT_layer(ViewLayerButtonsPanel, Panel):
|
||||
bl_label = "View Layer"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@@ -19,7 +19,7 @@ class WorldButtonsPanel:
|
||||
class WORLD_PT_context_world(WorldButtonsPanel, Panel):
|
||||
bl_label = ""
|
||||
bl_options = {'HIDE_HEADER'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -63,7 +63,7 @@ class EEVEE_WORLD_PT_mist(WorldButtonsPanel, Panel):
|
||||
|
||||
|
||||
class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "world"
|
||||
_property_type = bpy.types.World
|
||||
|
||||
|
@@ -582,7 +582,7 @@ class NODE_PT_texture_mapping(Panel):
|
||||
bl_category = "Node"
|
||||
bl_label = "Texture Mapping"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
@@ -2607,7 +2607,7 @@ class SEQUENCER_PT_annotation_onion(AnnotationOnionSkin, SequencerButtonsPanel_O
|
||||
|
||||
|
||||
class SEQUENCER_PT_custom_props(SequencerButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH','BLENDER_WORKBENCH_NEXT'}
|
||||
_context_path = "active_sequence_strip"
|
||||
_property_type = (bpy.types.Sequence,)
|
||||
bl_category = "Strip"
|
||||
|
@@ -2307,6 +2307,7 @@ class USERPREF_PT_experimental_prototypes(ExperimentalPanel, Panel):
|
||||
({"property": "use_sculpt_texture_paint"}, "T96225"),
|
||||
({"property": "use_full_frame_compositor"}, "T88150"),
|
||||
({"property": "enable_eevee_next"}, "T93220"),
|
||||
({"property": "enable_workbench_next"}, ""),
|
||||
({"property": "use_draw_manager_acquire_lock"}, "T98016"),
|
||||
),
|
||||
)
|
||||
|
@@ -155,14 +155,19 @@ set(SRC
|
||||
engines/eevee_next/eevee_world.cc
|
||||
engines/workbench/workbench_data.c
|
||||
engines/workbench/workbench_effect_antialiasing.c
|
||||
engines/workbench/workbench_effect_antialiasing.cc
|
||||
engines/workbench/workbench_effect_cavity.c
|
||||
engines/workbench/workbench_effect_dof.c
|
||||
engines/workbench/workbench_effect_outline.c
|
||||
engines/workbench/workbench_engine.c
|
||||
engines/workbench/workbench_engine.cc
|
||||
engines/workbench/workbench_materials.c
|
||||
engines/workbench/workbench_materials.cc
|
||||
engines/workbench/workbench_mesh_passes.cc
|
||||
engines/workbench/workbench_opaque.c
|
||||
engines/workbench/workbench_render.c
|
||||
engines/workbench/workbench_shader.cc
|
||||
engines/workbench/workbench_shader_cache.cc
|
||||
engines/workbench/workbench_shadow.c
|
||||
engines/workbench/workbench_transparent.c
|
||||
engines/workbench/workbench_volume.c
|
||||
@@ -453,6 +458,7 @@ set(GLSL_SRC
|
||||
|
||||
engines/workbench/shaders/workbench_cavity_lib.glsl
|
||||
engines/workbench/shaders/workbench_common_lib.glsl
|
||||
engines/workbench/shaders/workbench_composite_comp.glsl
|
||||
engines/workbench/shaders/workbench_composite_frag.glsl
|
||||
engines/workbench/shaders/workbench_curvature_lib.glsl
|
||||
engines/workbench/shaders/workbench_effect_cavity_frag.glsl
|
||||
@@ -676,6 +682,7 @@ set(GLSL_SRC
|
||||
)
|
||||
|
||||
set(GLSL_C)
|
||||
|
||||
foreach(GLSL_FILE ${GLSL_SRC})
|
||||
data_to_c_simple(${GLSL_FILE} GLSL_C)
|
||||
endforeach()
|
||||
@@ -687,6 +694,7 @@ list(APPEND LIB
|
||||
)
|
||||
|
||||
set(GLSL_SOURCE_CONTENT "")
|
||||
|
||||
foreach(GLSL_FILE ${GLSL_SRC})
|
||||
get_filename_component(GLSL_FILE_NAME ${GLSL_FILE} NAME)
|
||||
string(REPLACE "." "_" GLSL_FILE_NAME_UNDERSCORES ${GLSL_FILE_NAME})
|
||||
@@ -731,7 +739,6 @@ if(WITH_GTESTS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
blender_add_lib(bf_draw "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
||||
|
||||
# Needed so we can use dna_type_offsets.h for defaults initialization.
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "gpu_shader_create_info.hh"
|
||||
#include "workbench_defines.hh"
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Base Composite
|
||||
@@ -9,13 +10,26 @@
|
||||
GPU_SHADER_CREATE_INFO(workbench_composite)
|
||||
.sampler(0, ImageType::FLOAT_2D, "normalBuffer", Frequency::PASS)
|
||||
.sampler(1, ImageType::FLOAT_2D, "materialBuffer", Frequency::PASS)
|
||||
.uniform_buf(4, "WorldData", "world_data", Frequency::PASS)
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data", Frequency::PASS)
|
||||
.push_constant(Type::BOOL, "forceShadowing")
|
||||
.fragment_out(0, Type::VEC4, "fragColor")
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.fragment_source("workbench_composite_frag.glsl")
|
||||
.additional_info("draw_fullscreen", "draw_view");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_composite)
|
||||
.local_group_size(8, 8)
|
||||
.sampler(3, ImageType::FLOAT_2D, "normal_tx")
|
||||
.sampler(4, ImageType::FLOAT_2D, "material_tx")
|
||||
.sampler(5, ImageType::DEPTH_2D, "depth_tx")
|
||||
.sampler(6, ImageType::DEPTH_2D, "depth_in_front_tx")
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data")
|
||||
.push_constant(Type::BOOL, "forceShadowing")
|
||||
.image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "out_color_img")
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.compute_source("workbench_composite_comp.glsl")
|
||||
.additional_info("draw_view");
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
@@ -23,20 +37,42 @@ GPU_SHADER_CREATE_INFO(workbench_composite)
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_composite_studio)
|
||||
.define("V3D_LIGHTING_STUDIO")
|
||||
.define("WORKBENCH_LIGHTING_STUDIO")
|
||||
.additional_info("workbench_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_composite_matcap)
|
||||
.define("V3D_LIGHTING_MATCAP")
|
||||
.define("WORKBENCH_LIGHTING_MATCAP")
|
||||
.sampler(2, ImageType::FLOAT_2D, "matcap_diffuse_tx", Frequency::PASS)
|
||||
.sampler(3, ImageType::FLOAT_2D, "matcap_specular_tx", Frequency::PASS)
|
||||
.additional_info("workbench_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_composite_flat)
|
||||
.define("V3D_LIGHTING_FLAT")
|
||||
.define("WORKBENCH_LIGHTING_FLAT")
|
||||
.additional_info("workbench_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Lighting Type
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_resolve_opaque_studio)
|
||||
.define("WORKBENCH_LIGHTING_STUDIO")
|
||||
.additional_info("workbench_next_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_resolve_opaque_matcap)
|
||||
.define("WORKBENCH_LIGHTING_MATCAP")
|
||||
.sampler(WB_MATCAP_SLOT, ImageType::FLOAT_2D_ARRAY, "matcap_tx")
|
||||
.additional_info("workbench_next_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_resolve_opaque_flat)
|
||||
.define("WORKBENCH_LIGHTING_FLAT")
|
||||
.additional_info("workbench_next_composite")
|
||||
.do_static_compilation(true);
|
||||
|
||||
/** \} */
|
||||
|
@@ -5,7 +5,7 @@
|
||||
GPU_SHADER_CREATE_INFO(workbench_effect_cavity_common)
|
||||
.fragment_out(0, Type::VEC4, "fragColor")
|
||||
.sampler(0, ImageType::FLOAT_2D, "normalBuffer")
|
||||
.uniform_buf(4, "WorldData", "world_data", Frequency::PASS)
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data", Frequency::PASS)
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.fragment_source("workbench_effect_cavity_frag.glsl")
|
||||
.additional_info("draw_fullscreen")
|
||||
|
@@ -6,7 +6,7 @@ GPU_SHADER_CREATE_INFO(workbench_effect_outline)
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.fragment_source("workbench_effect_outline_frag.glsl")
|
||||
.sampler(0, ImageType::UINT_2D, "objectIdBuffer")
|
||||
.uniform_buf(4, "WorldData", "world_data", Frequency::PASS)
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data", Frequency::PASS)
|
||||
.fragment_out(0, Type::VEC4, "fragColor")
|
||||
.additional_info("draw_fullscreen")
|
||||
.do_static_compilation(true);
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "gpu_shader_create_info.hh"
|
||||
#include "workbench_defines.hh"
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Object Type
|
||||
@@ -29,6 +30,29 @@ GPU_SHADER_CREATE_INFO(workbench_pointcloud)
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Object Type
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_mesh)
|
||||
.vertex_in(0, Type::VEC3, "pos")
|
||||
.vertex_in(1, Type::VEC3, "nor")
|
||||
.vertex_in(2, Type::VEC4, "ac")
|
||||
.vertex_in(3, Type::VEC2, "au")
|
||||
.vertex_source("workbench_prepass_vert.glsl")
|
||||
.additional_info("draw_modelmat_new")
|
||||
.additional_info("draw_resource_handle_new");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_curves)
|
||||
/* TODO Adding workbench_next_mesh to avoid shader compilation errors */
|
||||
.additional_info("workbench_next_mesh");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_pointcloud)
|
||||
/* TODO Adding workbench_next_mesh to avoid shader compilation errors */
|
||||
.additional_info("workbench_next_mesh");
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Texture Type
|
||||
* \{ */
|
||||
@@ -39,15 +63,15 @@ GPU_SHADER_CREATE_INFO(workbench_texture_single)
|
||||
.sampler(2, ImageType::FLOAT_2D, "imageTexture", Frequency::BATCH)
|
||||
.push_constant(Type::BOOL, "imagePremult")
|
||||
.push_constant(Type::FLOAT, "imageTransparencyCutoff")
|
||||
.define("V3D_SHADING_TEXTURE_COLOR");
|
||||
.define("WORKBENCH_COLOR_TEXTURE");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_texture_tile)
|
||||
.sampler(2, ImageType::FLOAT_2D_ARRAY, "imageTileArray", Frequency::BATCH)
|
||||
.sampler(3, ImageType::FLOAT_1D_ARRAY, "imageTileData", Frequency::BATCH)
|
||||
.push_constant(Type::BOOL, "imagePremult")
|
||||
.push_constant(Type::FLOAT, "imageTransparencyCutoff")
|
||||
.define("V3D_SHADING_TEXTURE_COLOR")
|
||||
.define("TEXTURE_IMAGE_ARRAY");
|
||||
.define("WORKBENCH_COLOR_TEXTURE")
|
||||
.define("WORKBENCH_TEXTURE_IMAGE_ARRAY");
|
||||
|
||||
/** \} */
|
||||
|
||||
@@ -55,10 +79,10 @@ GPU_SHADER_CREATE_INFO(workbench_texture_tile)
|
||||
/** \name Lighting Type (only for transparent)
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_lighting_flat).define("V3D_LIGHTING_FLAT");
|
||||
GPU_SHADER_CREATE_INFO(workbench_lighting_studio).define("V3D_LIGHTING_STUDIO");
|
||||
GPU_SHADER_CREATE_INFO(workbench_lighting_flat).define("WORKBENCH_LIGHTING_FLAT");
|
||||
GPU_SHADER_CREATE_INFO(workbench_lighting_studio).define("WORKBENCH_LIGHTING_STUDIO");
|
||||
GPU_SHADER_CREATE_INFO(workbench_lighting_matcap)
|
||||
.define("V3D_LIGHTING_MATCAP")
|
||||
.define("WORKBENCH_LIGHTING_MATCAP")
|
||||
.sampler(4, ImageType::FLOAT_2D, "matcap_diffuse_tx", Frequency::PASS)
|
||||
.sampler(5, ImageType::FLOAT_2D, "matcap_specular_tx", Frequency::PASS);
|
||||
|
||||
@@ -78,12 +102,38 @@ GPU_SHADER_INTERFACE_INFO(workbench_material_iface, "")
|
||||
.flat(Type::FLOAT, "metallic");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_material)
|
||||
.uniform_buf(4, "WorldData", "world_data", Frequency::PASS)
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data", Frequency::PASS)
|
||||
.uniform_buf(5, "vec4", "materials_data[4096]", Frequency::PASS)
|
||||
.push_constant(Type::INT, "materialIndex")
|
||||
.push_constant(Type::BOOL, "useMatcap")
|
||||
.vertex_out(workbench_material_iface);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_next_prepass)
|
||||
.define("WORKBENCH_NEXT")
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data")
|
||||
.vertex_out(workbench_material_iface)
|
||||
.additional_info("draw_view");
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Material Interface
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_color_material)
|
||||
.define("WORKBENCH_COLOR_MATERIAL")
|
||||
.storage_buf(WB_MATERIAL_SLOT, Qualifier::READ, "vec4", "materials_data[]");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_color_texture)
|
||||
.define("WORKBENCH_COLOR_TEXTURE")
|
||||
.define("WORKBENCH_TEXTURE_IMAGE_ARRAY")
|
||||
.sampler(2, ImageType::FLOAT_2D_ARRAY, "imageTileArray", Frequency::BATCH)
|
||||
.sampler(3, ImageType::FLOAT_1D_ARRAY, "imageTileData", Frequency::BATCH)
|
||||
.push_constant(Type::BOOL, "imagePremult")
|
||||
.push_constant(Type::FLOAT, "imageTransparencyCutoff");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_color_vertex).define("WORKBENCH_COLOR_VERTEX");
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
@@ -93,17 +143,17 @@ GPU_SHADER_CREATE_INFO(workbench_material)
|
||||
GPU_SHADER_CREATE_INFO(workbench_transparent_accum)
|
||||
/* NOTE: Blending will be skipped on objectId because output is a
|
||||
* non-normalized integer buffer. */
|
||||
.fragment_out(0, Type::VEC4, "transparentAccum")
|
||||
.fragment_out(1, Type::VEC4, "revealageAccum")
|
||||
.fragment_out(2, Type::UINT, "objectId")
|
||||
.fragment_out(0, Type::VEC4, "out_transparent_accum")
|
||||
.fragment_out(1, Type::VEC4, "out_revealage_accum")
|
||||
.fragment_out(2, Type::UINT, "out_object_id")
|
||||
.push_constant(Type::BOOL, "forceShadowing")
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.fragment_source("workbench_transparent_accum_frag.glsl");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_opaque)
|
||||
.fragment_out(0, Type::VEC4, "materialData")
|
||||
.fragment_out(1, Type::VEC2, "normalData")
|
||||
.fragment_out(2, Type::UINT, "objectId")
|
||||
.fragment_out(0, Type::VEC4, "out_material")
|
||||
.fragment_out(1, Type::VEC2, "out_normal")
|
||||
.fragment_out(2, Type::UINT, "out_object_id")
|
||||
.typedef_source("workbench_shader_shared.h")
|
||||
.fragment_source("workbench_prepass_frag.glsl");
|
||||
|
||||
@@ -147,4 +197,54 @@ GPU_SHADER_CREATE_INFO(workbench_opaque)
|
||||
|
||||
WORKBENCH_PIPELINE_VARIATIONS(workbench, "workbench_material");
|
||||
|
||||
#undef WORKBENCH_FINAL_VARIATION
|
||||
#undef WORKBENCH_CLIPPING_VARIATIONS
|
||||
#undef WORKBENCH_TEXTURE_VARIATIONS
|
||||
#undef WORKBENCH_DATATYPE_VARIATIONS
|
||||
#undef WORKBENCH_PIPELINE_VARIATIONS
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Variations Declaration
|
||||
* \{ */
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_flat).define("WORKBENCH_SHADING_FLAT");
|
||||
GPU_SHADER_CREATE_INFO(workbench_studio).define("WORKBENCH_SHADING_STUDIO");
|
||||
GPU_SHADER_CREATE_INFO(workbench_matcap).define("WORKBENCH_SHADING_MATCAP");
|
||||
|
||||
#define WORKBENCH_FINAL_VARIATION(name, ...) \
|
||||
GPU_SHADER_CREATE_INFO(name).additional_info(__VA_ARGS__).do_static_compilation(true);
|
||||
|
||||
#define WORKBENCH_CLIPPING_VARIATIONS(prefix, ...) \
|
||||
WORKBENCH_FINAL_VARIATION(prefix##_clip, "drw_clipped", __VA_ARGS__) \
|
||||
WORKBENCH_FINAL_VARIATION(prefix##_no_clip, __VA_ARGS__)
|
||||
|
||||
#define WORKBENCH_COLOR_VARIATIONS(prefix, ...) \
|
||||
WORKBENCH_CLIPPING_VARIATIONS(prefix##_material, "workbench_color_material", __VA_ARGS__) \
|
||||
WORKBENCH_CLIPPING_VARIATIONS(prefix##_texture, "workbench_color_texture", __VA_ARGS__) \
|
||||
WORKBENCH_CLIPPING_VARIATIONS(prefix##_vertex, "workbench_color_vertex", __VA_ARGS__)
|
||||
|
||||
#define WORKBENCH_SHADING_VARIATIONS(prefix, ...) \
|
||||
WORKBENCH_COLOR_VARIATIONS(prefix##_flat, "workbench_lighting_flat", __VA_ARGS__) \
|
||||
WORKBENCH_COLOR_VARIATIONS(prefix##_studio, "workbench_lighting_studio", __VA_ARGS__) \
|
||||
WORKBENCH_COLOR_VARIATIONS(prefix##_matcap, "workbench_lighting_matcap", __VA_ARGS__)
|
||||
|
||||
#define WORKBENCH_PIPELINE_VARIATIONS(prefix, ...) \
|
||||
WORKBENCH_SHADING_VARIATIONS(prefix##_transparent, "workbench_transparent_accum", __VA_ARGS__) \
|
||||
WORKBENCH_SHADING_VARIATIONS(prefix##_opaque, "workbench_opaque", __VA_ARGS__)
|
||||
|
||||
#define WORKBENCH_GEOMETRY_VARIATIONS(prefix, ...) \
|
||||
WORKBENCH_PIPELINE_VARIATIONS(prefix##_mesh, "workbench_next_mesh", __VA_ARGS__) \
|
||||
WORKBENCH_PIPELINE_VARIATIONS(prefix##_curves, "workbench_next_curves", __VA_ARGS__) \
|
||||
WORKBENCH_PIPELINE_VARIATIONS(prefix##_ptcloud, "workbench_next_pointcloud", __VA_ARGS__)
|
||||
|
||||
WORKBENCH_GEOMETRY_VARIATIONS(workbench_next_prepass, "workbench_next_prepass");
|
||||
|
||||
#undef WORKBENCH_FINAL_VARIATION
|
||||
#undef WORKBENCH_CLIPPING_VARIATIONS
|
||||
#undef WORKBENCH_TEXTURE_VARIATIONS
|
||||
#undef WORKBENCH_DATATYPE_VARIATIONS
|
||||
#undef WORKBENCH_PIPELINE_VARIATIONS
|
||||
|
||||
/** \} */
|
@@ -0,0 +1,49 @@
|
||||
|
||||
#pragma BLENDER_REQUIRE(common_view_lib.glsl)
|
||||
#pragma BLENDER_REQUIRE(workbench_common_lib.glsl)
|
||||
#pragma BLENDER_REQUIRE(workbench_matcap_lib.glsl)
|
||||
#pragma BLENDER_REQUIRE(workbench_world_light_lib.glsl)
|
||||
|
||||
void main()
|
||||
{
|
||||
ivec2 texel = ivec2(gl_GlobalInvocationID.xy);
|
||||
vec2 uv = (vec2(texel) + 0.5) / vec2(textureSize(normal_tx, 0));
|
||||
/* Normal and Incident vector are in viewspace. Lighting is evaluated in viewspace. */
|
||||
vec3 V = get_view_vector_from_screen_uv(uv);
|
||||
vec3 N = workbench_normal_decode(texture(normal_tx, uv));
|
||||
vec4 mat_data = texture(material_tx, uv);
|
||||
float depth = texture(depth_tx, uv).r;
|
||||
|
||||
/* TODO(fclem): Merge in_front depth with main depth here instead of a separate shader. */
|
||||
|
||||
vec3 base_color = mat_data.rgb;
|
||||
|
||||
float roughness, metallic;
|
||||
workbench_float_pair_decode(mat_data.a, roughness, metallic);
|
||||
|
||||
vec4 color = world_data.background_color;
|
||||
|
||||
/* Background pixels. */
|
||||
if (depth != 1.0) {
|
||||
#ifdef WORKBENCH_LIGHTING_MATCAP
|
||||
/* When using matcaps, mat_data.a is the back-face sign. */
|
||||
N = (mat_data.a > 0.0) ? N : -N;
|
||||
|
||||
color.rgb = get_matcap_lighting(matcap_tx, base_color, N, V);
|
||||
#endif
|
||||
|
||||
#ifdef WORKBENCH_LIGHTING_STUDIO
|
||||
color.rgb = get_world_lighting(base_color, roughness, metallic, N, V);
|
||||
#endif
|
||||
|
||||
#ifdef WORKBENCH_LIGHTING_FLAT
|
||||
color.rgb = base_color;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* TODO(fclem): Port the TAA shader that does this tranformation. */
|
||||
/* Use log2 space to avoid highlights creating too much aliasing. */
|
||||
color = log2(color + 0.5);
|
||||
|
||||
imageStore(out_color_img, texel, color);
|
||||
}
|
@@ -16,18 +16,18 @@ void main()
|
||||
float roughness, metallic;
|
||||
workbench_float_pair_decode(mat_data.a, roughness, metallic);
|
||||
|
||||
#ifdef V3D_LIGHTING_MATCAP
|
||||
#ifdef WORKBENCH_LIGHTING_MATCAP
|
||||
/* When using matcaps, mat_data.a is the back-face sign. */
|
||||
N = (mat_data.a > 0.0) ? N : -N;
|
||||
|
||||
fragColor.rgb = get_matcap_lighting(matcap_diffuse_tx, matcap_specular_tx, base_color, N, I);
|
||||
#endif
|
||||
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
#ifdef WORKBENCH_LIGHTING_STUDIO
|
||||
fragColor.rgb = get_world_lighting(base_color, roughness, metallic, N, I);
|
||||
#endif
|
||||
|
||||
#ifdef V3D_LIGHTING_FLAT
|
||||
#ifdef WORKBENCH_LIGHTING_FLAT
|
||||
fragColor.rgb = base_color;
|
||||
#endif
|
||||
|
||||
|
@@ -27,10 +27,10 @@ bool node_tex_tile_lookup(inout vec3 co, sampler2DArray ima, sampler1DArray map)
|
||||
|
||||
vec3 workbench_image_color(vec2 uvs)
|
||||
{
|
||||
#ifdef V3D_SHADING_TEXTURE_COLOR
|
||||
#ifdef WORKBENCH_COLOR_TEXTURE
|
||||
vec4 color;
|
||||
|
||||
# ifdef TEXTURE_IMAGE_ARRAY
|
||||
# ifdef WORKBENCH_TEXTURE_IMAGE_ARRAY
|
||||
vec3 co = vec3(uvs, 0.0);
|
||||
if (node_tex_tile_lookup(co, imageTileArray, imageTileData)) {
|
||||
color = texture(imageTileArray, co);
|
||||
|
@@ -24,3 +24,14 @@ vec3 get_matcap_lighting(
|
||||
|
||||
return diffuse * base_color + specular * float(world_data.use_specular);
|
||||
}
|
||||
|
||||
vec3 get_matcap_lighting(sampler2DArray matcap, vec3 base_color, vec3 N, vec3 I)
|
||||
{
|
||||
bool flipped = world_data.matcap_orientation != 0;
|
||||
vec2 uv = matcap_uv_compute(I, N, flipped);
|
||||
|
||||
vec3 diffuse = textureLod(matcap, vec3(uv, 0.0), 0.0).rgb;
|
||||
vec3 specular = textureLod(matcap, vec3(uv, 1.0), 0.0).rgb;
|
||||
|
||||
return diffuse * base_color + specular * float(world_data.use_specular);
|
||||
}
|
||||
|
@@ -1,10 +1,28 @@
|
||||
|
||||
void workbench_material_data_get(
|
||||
int handle, out vec3 color, out float alpha, out float roughness, out float metallic)
|
||||
|
||||
void workbench_material_data_get(int handle,
|
||||
vec3 vertex_color,
|
||||
out vec3 color,
|
||||
out float alpha,
|
||||
out float roughness,
|
||||
out float metallic)
|
||||
{
|
||||
#ifndef WORKBENCH_NEXT
|
||||
handle = (materialIndex != -1) ? materialIndex : handle;
|
||||
vec4 data = materials_data[uint(handle) & 0xFFFu];
|
||||
color = data.rgb;
|
||||
if (materialIndex == 0) {
|
||||
color_interp = vertex_color;
|
||||
}
|
||||
#else
|
||||
|
||||
# ifdef WORKBENCH_COLOR_MATERIAL
|
||||
vec4 data = materials_data[handle];
|
||||
# else
|
||||
vec4 data = vec4(0.0);
|
||||
# endif
|
||||
color = (data.r == -1) ? vertex_color : data.rgb;
|
||||
#endif
|
||||
|
||||
uint encoded_data = floatBitsToUint(data.w);
|
||||
alpha = float((encoded_data >> 16u) & 0xFFu) * (1.0 / 255.0);
|
||||
|
@@ -3,20 +3,43 @@
|
||||
#pragma BLENDER_REQUIRE(workbench_common_lib.glsl)
|
||||
#pragma BLENDER_REQUIRE(workbench_image_lib.glsl)
|
||||
|
||||
#ifdef WORKBENCH_NEXT
|
||||
|
||||
void main()
|
||||
{
|
||||
normalData = workbench_normal_encode(gl_FrontFacing, normal_interp);
|
||||
out_object_id = uint(object_id);
|
||||
out_normal = workbench_normal_encode(gl_FrontFacing, normal_interp);
|
||||
|
||||
materialData = vec4(color_interp, workbench_float_pair_encode(_roughness, metallic));
|
||||
# ifdef WORKBENCH_COLOR_TEXTURE
|
||||
out_material.rgb = workbench_image_color(uv_interp);
|
||||
# else
|
||||
out_material = vec4(color_interp, workbench_float_pair_encode(_roughness, metallic));
|
||||
# endif
|
||||
|
||||
objectId = uint(object_id);
|
||||
# ifdef WORKBENCH_SHADING_MATCAP
|
||||
/* For matcaps, save front facing in alpha channel. */
|
||||
out_material.a = float(gl_FrontFacing);
|
||||
# endif
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void main()
|
||||
{
|
||||
out_normal = workbench_normal_encode(gl_FrontFacing, normal_interp);
|
||||
|
||||
out_material = vec4(color_interp, workbench_float_pair_encode(_roughness, metallic));
|
||||
|
||||
out_object_id = uint(object_id);
|
||||
|
||||
if (useMatcap) {
|
||||
/* For matcaps, save front facing in alpha channel. */
|
||||
materialData.a = float(gl_FrontFacing);
|
||||
out_material.a = float(gl_FrontFacing);
|
||||
}
|
||||
|
||||
#ifdef V3D_SHADING_TEXTURE_COLOR
|
||||
materialData.rgb = workbench_image_color(uv_interp);
|
||||
#endif
|
||||
# ifdef WORKBENCH_COLOR_TEXTURE
|
||||
out_material.rgb = workbench_image_color(uv_interp);
|
||||
# endif
|
||||
}
|
||||
|
||||
#endif
|
@@ -68,11 +68,12 @@ void main()
|
||||
|
||||
normal_interp = normalize(normal_world_to_view(nor));
|
||||
|
||||
workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic);
|
||||
|
||||
if (materialIndex == 0) {
|
||||
color_interp = hair_get_customdata_vec3(ac);
|
||||
}
|
||||
workbench_material_data_get(resource_handle,
|
||||
hair_get_customdata_vec3(ac),
|
||||
color_interp,
|
||||
alpha_interp,
|
||||
_roughness,
|
||||
metallic);
|
||||
|
||||
/* Hairs have lots of layer and can rapidly become the most prominent surface.
|
||||
* So we lower their alpha artificially. */
|
||||
|
@@ -19,11 +19,8 @@ void main()
|
||||
|
||||
uv_interp = vec2(0.0);
|
||||
|
||||
workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic);
|
||||
|
||||
if (materialIndex == 0) {
|
||||
color_interp = vec3(1.0);
|
||||
}
|
||||
workbench_material_data_get(
|
||||
resource_handle, vec3(1.0), color_interp, alpha_interp, _roughness, metallic);
|
||||
|
||||
object_id = int(uint(resource_handle) & 0xFFFFu) + 1;
|
||||
}
|
||||
|
@@ -16,11 +16,8 @@ void main()
|
||||
|
||||
normal_interp = normalize(normal_object_to_view(nor));
|
||||
|
||||
workbench_material_data_get(resource_handle, color_interp, alpha_interp, _roughness, metallic);
|
||||
|
||||
if (materialIndex == 0) {
|
||||
color_interp = ac.rgb;
|
||||
}
|
||||
workbench_material_data_get(
|
||||
resource_handle, ac.rgb, color_interp, alpha_interp, _roughness, metallic);
|
||||
|
||||
object_id = int(uint(resource_handle) & 0xFFFFu) + 1;
|
||||
}
|
||||
|
@@ -53,19 +53,19 @@ void main()
|
||||
|
||||
vec3 color = color_interp;
|
||||
|
||||
#ifdef V3D_SHADING_TEXTURE_COLOR
|
||||
#ifdef WORKBENCH_COLOR_TEXTURE
|
||||
color = workbench_image_color(uv_interp);
|
||||
#endif
|
||||
|
||||
#ifdef V3D_LIGHTING_MATCAP
|
||||
#ifdef WORKBENCH_LIGHTING_MATCAP
|
||||
vec3 shaded_color = get_matcap_lighting(matcap_diffuse_tx, matcap_specular_tx, color, N, I);
|
||||
#endif
|
||||
|
||||
#ifdef V3D_LIGHTING_STUDIO
|
||||
#ifdef WORKBENCH_LIGHTING_STUDIO
|
||||
vec3 shaded_color = get_world_lighting(color, _roughness, metallic, N, I);
|
||||
#endif
|
||||
|
||||
#ifdef V3D_LIGHTING_FLAT
|
||||
#ifdef WORKBENCH_LIGHTING_FLAT
|
||||
vec3 shaded_color = color;
|
||||
#endif
|
||||
|
||||
@@ -73,8 +73,8 @@ void main()
|
||||
|
||||
/* Listing 4 */
|
||||
float weight = calculate_transparent_weight() * alpha_interp;
|
||||
transparentAccum = vec4(shaded_color * weight, alpha_interp);
|
||||
revealageAccum = vec4(weight);
|
||||
out_transparent_accum = vec4(shaded_color * weight, alpha_interp);
|
||||
out_revealage_accum = vec4(weight);
|
||||
|
||||
objectId = uint(object_id);
|
||||
out_object_id = uint(object_id);
|
||||
}
|
||||
|
@@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#define WB_MATCAP_SLOT 0
|
||||
#define WB_TEXTURE_SLOT 1
|
||||
#define WB_TILEMAP_SLOT 2
|
||||
#define WB_MATERIAL_SLOT 0
|
||||
#define WB_WORLD_SLOT 4
|
||||
|
||||
#define WB_RESOLVE_GROUP_SIZE 8
|
@@ -0,0 +1,112 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "workbench_private.hh"
|
||||
|
||||
#include "smaa_textures.h"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
AntiAliasingPass::AntiAliasingPass()
|
||||
{
|
||||
smaa_edge_detect_sh = GPU_shader_create_from_info_name("workbench_smaa_stage_0");
|
||||
smaa_aa_weight_sh = GPU_shader_create_from_info_name("workbench_smaa_stage_1");
|
||||
smaa_resolve_sh = GPU_shader_create_from_info_name("workbench_smaa_stage_2");
|
||||
|
||||
smaa_search_tx.ensure_2d(GPU_R8, {SEARCHTEX_WIDTH, SEARCHTEX_HEIGHT});
|
||||
GPU_texture_update(smaa_search_tx, GPU_DATA_UBYTE, searchTexBytes);
|
||||
GPU_texture_filter_mode(smaa_search_tx, true);
|
||||
|
||||
smaa_area_tx.ensure_2d(GPU_RG8, {AREATEX_WIDTH, AREATEX_HEIGHT});
|
||||
GPU_texture_update(smaa_area_tx, GPU_DATA_UBYTE, areaTexBytes);
|
||||
GPU_texture_filter_mode(smaa_area_tx, true);
|
||||
}
|
||||
|
||||
AntiAliasingPass::~AntiAliasingPass()
|
||||
{
|
||||
if (smaa_edge_detect_sh) {
|
||||
GPU_shader_free(smaa_edge_detect_sh);
|
||||
}
|
||||
if (smaa_aa_weight_sh) {
|
||||
GPU_shader_free(smaa_aa_weight_sh);
|
||||
}
|
||||
if (smaa_resolve_sh) {
|
||||
GPU_shader_free(smaa_resolve_sh);
|
||||
}
|
||||
}
|
||||
|
||||
void AntiAliasingPass::init(bool reset_taa)
|
||||
{
|
||||
is_playback = DRW_state_is_playback();
|
||||
is_navigating = DRW_state_is_navigating();
|
||||
|
||||
if (reset_taa || is_playback || is_navigating) {
|
||||
taa_sample = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void AntiAliasingPass::sync(SceneResources &resources)
|
||||
{
|
||||
{
|
||||
smaa_edge_detect_ps_.init();
|
||||
smaa_edge_detect_ps_.state_set(DRW_STATE_WRITE_COLOR);
|
||||
smaa_edge_detect_ps_.shader_set(smaa_edge_detect_sh);
|
||||
smaa_edge_detect_ps_.bind_texture("colorTex", &resources.color_tx);
|
||||
smaa_edge_detect_ps_.push_constant("viewportMetrics", &smaa_viewport_metrics, 1);
|
||||
smaa_edge_detect_ps_.clear_color(float4(0.0f));
|
||||
smaa_edge_detect_ps_.draw_procedural(GPU_PRIM_TRIS, 1, 3);
|
||||
}
|
||||
{
|
||||
smaa_aa_weight_ps_.init();
|
||||
smaa_aa_weight_ps_.state_set(DRW_STATE_WRITE_COLOR);
|
||||
smaa_aa_weight_ps_.shader_set(smaa_aa_weight_sh);
|
||||
smaa_aa_weight_ps_.bind_texture("edgesTex", &smaa_edge_tx);
|
||||
smaa_aa_weight_ps_.bind_texture("areaTex", smaa_area_tx);
|
||||
smaa_aa_weight_ps_.bind_texture("searchTex", smaa_search_tx);
|
||||
smaa_aa_weight_ps_.push_constant("viewportMetrics", &smaa_viewport_metrics, 1);
|
||||
smaa_aa_weight_ps_.clear_color(float4(0.0f));
|
||||
smaa_aa_weight_ps_.draw_procedural(GPU_PRIM_TRIS, 1, 3);
|
||||
}
|
||||
{
|
||||
smaa_resolve_ps_.init();
|
||||
smaa_resolve_ps_.state_set(DRW_STATE_WRITE_COLOR);
|
||||
smaa_resolve_ps_.shader_set(smaa_resolve_sh);
|
||||
smaa_resolve_ps_.bind_texture("blendTex", &smaa_weight_tx);
|
||||
smaa_resolve_ps_.bind_texture("colorTex", &resources.color_tx);
|
||||
smaa_resolve_ps_.push_constant("viewportMetrics", &smaa_viewport_metrics, 1);
|
||||
smaa_resolve_ps_.push_constant("mixFactor", &smaa_mix_factor, 1);
|
||||
smaa_resolve_ps_.push_constant("taaAccumulatedWeight", &taa_weight_accum, 1);
|
||||
smaa_resolve_ps_.clear_color(float4(0.0f));
|
||||
smaa_resolve_ps_.draw_procedural(GPU_PRIM_TRIS, 1, 3);
|
||||
}
|
||||
}
|
||||
|
||||
void AntiAliasingPass::draw(Manager &manager,
|
||||
View &view,
|
||||
GPUTexture *depth_tx,
|
||||
GPUTexture *color_tx)
|
||||
{
|
||||
int2 size = {GPU_texture_width(depth_tx), GPU_texture_height(depth_tx)};
|
||||
|
||||
taa_weight_accum = 1.0f; /* TODO */
|
||||
|
||||
smaa_viewport_metrics = float4(1.0f / size.x, 1.0f / size.y, size.x, size.y);
|
||||
smaa_mix_factor = 1.0f; /* TODO */
|
||||
|
||||
smaa_edge_tx.acquire(size, GPU_RG8);
|
||||
smaa_edge_fb.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(smaa_edge_tx));
|
||||
smaa_edge_fb.bind();
|
||||
manager.submit(smaa_edge_detect_ps_, view);
|
||||
|
||||
smaa_weight_tx.acquire(size, GPU_RGBA8);
|
||||
smaa_weight_fb.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(smaa_weight_tx));
|
||||
smaa_weight_fb.bind();
|
||||
manager.submit(smaa_aa_weight_ps_, view);
|
||||
smaa_edge_tx.release();
|
||||
|
||||
smaa_resolve_fb.ensure(GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE(color_tx));
|
||||
smaa_resolve_fb.bind();
|
||||
manager.submit(smaa_resolve_ps_, view);
|
||||
smaa_weight_tx.release();
|
||||
}
|
||||
|
||||
} // namespace blender::workbench
|
498
source/blender/draw/engines/workbench/workbench_engine.cc
Normal file
498
source/blender/draw/engines/workbench/workbench_engine.cc
Normal file
@@ -0,0 +1,498 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "BKE_studiolight.h"
|
||||
#include "DEG_depsgraph_query.h"
|
||||
#include "ED_view3d.h"
|
||||
#include "GPU_capabilities.h"
|
||||
|
||||
#include "BLI_rand.hh"
|
||||
|
||||
#include "workbench_private.hh"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
using namespace draw;
|
||||
|
||||
class Instance {
|
||||
public:
|
||||
SceneResources resources;
|
||||
|
||||
OpaquePass opaque_ps;
|
||||
// OpaquePass opaque_in_front_ps;
|
||||
|
||||
// TransparentPass transparent_ps;
|
||||
// TransparentPass transparent_in_front_ps;
|
||||
|
||||
AntiAliasingPass anti_aliasing_ps;
|
||||
|
||||
bool use_per_material_batches = false;
|
||||
eColorType color_type = eColorType::MATERIAL;
|
||||
eMaterialSubType material_subtype = eMaterialSubType::MATERIAL;
|
||||
eShadingType shading_type = eShadingType::STUDIO;
|
||||
|
||||
/** Used when material_subtype == eMaterialSubType::SINGLE */
|
||||
Material material_override = Material(float3(1.0f));
|
||||
/* When r == -1.0 the shader uses the vertex color */
|
||||
Material material_attribute_color = Material(float3(-1.0f));
|
||||
|
||||
DRWState cull_state;
|
||||
DRWState clip_state;
|
||||
bool view_updated; /* TODO(pragma37): move to AntialiasingPass ? */
|
||||
|
||||
eContextObjectMode ob_mode;
|
||||
eGPUShaderConfig clip_mode;
|
||||
|
||||
View3DShading shading;
|
||||
|
||||
void init(const int2 &output_res,
|
||||
const Depsgraph *depsgraph,
|
||||
const Object * /*camera*/,
|
||||
const View3D *v3d,
|
||||
const RegionView3D *rv3d)
|
||||
{
|
||||
Scene *scene = DEG_get_evaluated_scene(depsgraph);
|
||||
const DRWContextState *context = DRW_context_state_get();
|
||||
|
||||
/* TODO(pragma37):
|
||||
* Check why Workbench Next exposes OB_MATERIAL, and Workbench exposes OB_RENDER */
|
||||
bool is_render_mode = !v3d || ELEM(v3d->shading.type, OB_RENDER, OB_MATERIAL);
|
||||
// const View3DShading &shading = is_render_mode ? scene->display.shading : v3d->shading;
|
||||
const View3DShading previous_shading = shading;
|
||||
shading = is_render_mode ? scene->display.shading : v3d->shading;
|
||||
|
||||
ob_mode = CTX_data_mode_enum_ex(context->object_edit, context->obact, context->object_mode);
|
||||
clip_mode = context->sh_cfg;
|
||||
|
||||
cull_state = shading.flag & V3D_SHADING_BACKFACE_CULLING ? DRW_STATE_CULL_BACK :
|
||||
DRW_STATE_NO_DRAW;
|
||||
|
||||
bool reset_taa = false;
|
||||
|
||||
/* FIXME: This reproduce old behavior when workbench was separated in 2 engines.
|
||||
* But this is a workaround for a missing update tagging. */
|
||||
DRWState new_clip_state = RV3D_CLIPPING_ENABLED(v3d, rv3d) ? DRW_STATE_CLIP_PLANES :
|
||||
DRW_STATE_NO_DRAW;
|
||||
if (clip_state != new_clip_state) {
|
||||
reset_taa = true;
|
||||
}
|
||||
clip_state = new_clip_state;
|
||||
|
||||
if (rv3d && rv3d->rflag & RV3D_GPULIGHT_UPDATE) {
|
||||
reset_taa = true;
|
||||
}
|
||||
|
||||
if (SHADING_XRAY_FLAG_ENABLED(shading)) {
|
||||
/* Disable shading options that aren't supported in transparency mode. */
|
||||
shading.flag &= ~(V3D_SHADING_SHADOW | V3D_SHADING_CAVITY | V3D_SHADING_DEPTH_OF_FIELD);
|
||||
}
|
||||
if (SHADING_XRAY_ENABLED(shading) != SHADING_XRAY_ENABLED(previous_shading) ||
|
||||
shading.flag != previous_shading.flag) {
|
||||
reset_taa = true;
|
||||
}
|
||||
|
||||
if (!is_render_mode) {
|
||||
if (shading.type < OB_SOLID) {
|
||||
/* TODO(pragma37): Shouldn't we just skip any rendering at all ??? */
|
||||
shading.light = V3D_LIGHTING_FLAT;
|
||||
shading.color_type = V3D_SHADING_OBJECT_COLOR;
|
||||
shading.xray_alpha = 0.0f;
|
||||
}
|
||||
else if (SHADING_XRAY_ENABLED(shading)) {
|
||||
shading.xray_alpha = SHADING_XRAY_ALPHA(shading);
|
||||
}
|
||||
else {
|
||||
shading.xray_alpha = 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
material_override = Material(shading.single_color);
|
||||
|
||||
use_per_material_batches = ELEM(
|
||||
shading.color_type, V3D_SHADING_TEXTURE_COLOR, V3D_SHADING_MATERIAL_COLOR);
|
||||
|
||||
color_type = color_type_from_v3d_shading(shading.color_type);
|
||||
material_subtype = material_subtype_from_v3d_shading(shading.color_type);
|
||||
shading_type = shading_type_from_v3d_lighting(shading.light);
|
||||
|
||||
UniformBuffer<WorldData> &world_buf = resources.world_buf;
|
||||
|
||||
float4x4 rot_matrix = float4x4::identity();
|
||||
if (shading.flag & V3D_SHADING_WORLD_ORIENTATION) {
|
||||
/* TODO(pragma37) C++ API ? */
|
||||
float V[4][4], R[4][4];
|
||||
DRW_view_viewmat_get(nullptr, V, false);
|
||||
axis_angle_to_mat4_single(R, 'Z', -shading.studiolight_rot_z);
|
||||
mul_m4_m4m4(R, V, R);
|
||||
swap_v3_v3(R[2], R[1]);
|
||||
negate_v3(R[2]);
|
||||
rot_matrix = float4x4(R);
|
||||
}
|
||||
|
||||
StudioLight *studio_light = nullptr;
|
||||
if (U.edit_studio_light) {
|
||||
studio_light = BKE_studiolight_studio_edit_get();
|
||||
}
|
||||
else {
|
||||
if (shading_type == eShadingType::MATCAP) {
|
||||
studio_light = BKE_studiolight_find(shading.matcap, STUDIOLIGHT_TYPE_MATCAP);
|
||||
}
|
||||
/* If matcaps are missing, use this as fallback. */
|
||||
if (studio_light == nullptr) {
|
||||
studio_light = BKE_studiolight_find(shading.studio_light, STUDIOLIGHT_TYPE_STUDIO);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
LightData &light = world_buf.lights[i];
|
||||
|
||||
SolidLight *sl = (studio_light) ? &studio_light->light[i] : nullptr;
|
||||
if (sl && sl->flag) {
|
||||
float3 direction = rot_matrix.ref_3x3() * float3(sl->vec);
|
||||
light.direction = float4(direction, 0.0f);
|
||||
/* We should pre-divide the power by PI but that makes the lights really dim. */
|
||||
light.specular_color = float4(float3(sl->spec), 0.0f);
|
||||
light.diffuse_color_wrap = float4(float3(sl->col), sl->smooth);
|
||||
}
|
||||
else {
|
||||
light.direction = float4(1.0f, 0.0f, 0.0f, 0.0f);
|
||||
light.specular_color = float4(0.0f);
|
||||
light.diffuse_color_wrap = float4(0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
world_buf.ambient_color = float4(1.0f, 1.0f, 1.0f, 0.0f);
|
||||
world_buf.use_specular = false;
|
||||
|
||||
if (studio_light != nullptr) {
|
||||
world_buf.ambient_color = float4(float3(studio_light->light_ambient), 0.0f);
|
||||
world_buf.use_specular = shading.flag & V3D_SHADING_SPECULAR_HIGHLIGHT &&
|
||||
studio_light->flag & STUDIOLIGHT_SPECULAR_HIGHLIGHT_PASS;
|
||||
}
|
||||
|
||||
world_buf.background_color = float4(0.0f);
|
||||
|
||||
if (is_render_mode && scene->r.alphamode != R_ALPHAPREMUL) {
|
||||
if (World *w = scene->world) {
|
||||
world_buf.background_color = float4(w->horr, w->horg, w->horb, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
world_buf.object_outline_color = shading.object_outline_color;
|
||||
world_buf.object_outline_color.w = 1.0f;
|
||||
world_buf.ui_scale = DRW_state_is_image_render() ? 1.0f : G_draw.block.size_pixel;
|
||||
world_buf.matcap_orientation = (shading.flag & V3D_SHADING_MATCAP_FLIP_X) != 0;
|
||||
|
||||
/* TODO(pragma37) volumes_do */
|
||||
|
||||
resources.matcap_tx.ensure_2d_array(GPU_RGBA16F, int2(1), 1);
|
||||
resources.depth_tx.ensure_2d(GPU_DEPTH24_STENCIL8, output_res);
|
||||
|
||||
anti_aliasing_ps.init(reset_taa);
|
||||
/* TODO(pragma37) taa_sample_len */
|
||||
}
|
||||
|
||||
void begin_sync()
|
||||
{
|
||||
resources.world_buf.push_update();
|
||||
opaque_ps.sync(cull_state, clip_state, shading_type, color_type, resources);
|
||||
// opaque_in_front_ps.sync(cull_state, clip_state, shading_type, color_type, resources);
|
||||
// transparent_ps.sync(cull_state, clip_state, shading_type, color_type, resources);
|
||||
// transparent_in_front_ps.sync(cull_state, clip_state, shading_type, color_type, resources);
|
||||
anti_aliasing_ps.sync(resources);
|
||||
}
|
||||
|
||||
void end_sync()
|
||||
{
|
||||
resources.material_buf.push_update();
|
||||
}
|
||||
|
||||
void object_sync(Manager &manager, ObjectRef &ob_ref)
|
||||
{
|
||||
if (ob_ref.object->type != OB_MESH) {
|
||||
// TODO(pragma37)
|
||||
return;
|
||||
}
|
||||
|
||||
if (use_per_material_batches) {
|
||||
const int material_count = DRW_cache_object_material_count_get(ob_ref.object);
|
||||
Span<GPUBatch *> batches = geometry_get(ob_ref, material_count);
|
||||
/* TODO(pragma37): Could this ever be false??? */
|
||||
if (batches.size() == material_count) {
|
||||
for (auto i : IndexRange(material_count)) {
|
||||
/* TODO(fclem): This create a cull-able instance for each sub-object. This is done for
|
||||
* simplicity to reduce complexity. But this increase the overhead per object. Instead,
|
||||
* we should use an indirection buffer to the material buffer. */
|
||||
::Material *mat = BKE_object_material_get_eval(ob_ref.object, i + 1);
|
||||
if (mat == nullptr) {
|
||||
mat = BKE_material_default_empty();
|
||||
}
|
||||
ResourceHandle handle = manager.resource_handle(ob_ref);
|
||||
resources.material_buf.get_or_resize(handle.resource_index()) = Material(*mat);
|
||||
pipeline_get(ob_ref, mat).draw(batches[i], handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
float4x4 model_matrix(ob_ref.object->obmat);
|
||||
|
||||
// ResourceHandle handle = manager.resource_handle(ob_ref);
|
||||
|
||||
Material mat;
|
||||
if (material_subtype == eMaterialSubType::OBJECT) {
|
||||
mat = Material(*ob_ref.object);
|
||||
}
|
||||
else if (material_subtype == eMaterialSubType::RANDOM) {
|
||||
mat = Material(*ob_ref.object, true);
|
||||
}
|
||||
else if (material_subtype == eMaterialSubType::SINGLE) {
|
||||
mat = material_override;
|
||||
}
|
||||
else if (material_subtype == eMaterialSubType::ATTRIBUTE) {
|
||||
mat = material_attribute_color;
|
||||
}
|
||||
|
||||
GPUBatch *batch = geometry_get(ob_ref);
|
||||
if (batch) {
|
||||
blender::RandomNumberGenerator rng(23423);
|
||||
for (size_t y = 0; y < 1000; y++) {
|
||||
for (size_t x = 0; x < 1000; x++) {
|
||||
model_matrix[3][0] = x * 0.001f;
|
||||
model_matrix[3][1] = y * 0.001f;
|
||||
ResourceHandle handle = manager.resource_handle(model_matrix);
|
||||
|
||||
resources.material_buf.get_or_resize(handle.resource_index()) = mat;
|
||||
|
||||
pipeline_get(ob_ref).draw(batch, handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PassMain::Sub &pipeline_get(ObjectRef &ob_ref, ::Material *material = nullptr)
|
||||
{
|
||||
return opaque_ps.gbuffer_ps_.sub_pass_get(
|
||||
geometry_type_from_object(ob_ref.object), ob_ref, material);
|
||||
}
|
||||
|
||||
Span<GPUBatch *> geometry_get(ObjectRef &ob_ref, int material_count)
|
||||
{
|
||||
/* This is never used, but it's required by DRW_cache_object_surface_material_get */
|
||||
static Vector<GPUMaterial *> dummy_gpu_materials(1, nullptr, {});
|
||||
if (material_count > dummy_gpu_materials.size()) {
|
||||
dummy_gpu_materials.resize(material_count, nullptr);
|
||||
}
|
||||
return {DRW_cache_object_surface_material_get(
|
||||
ob_ref.object, dummy_gpu_materials.begin(), material_count),
|
||||
material_count};
|
||||
}
|
||||
|
||||
GPUBatch *geometry_get(ObjectRef &ob_ref)
|
||||
{
|
||||
if (material_subtype == eMaterialSubType::ATTRIBUTE) {
|
||||
/* TODO(pragma37): Should check for vertex paint mode as well */
|
||||
return DRW_cache_mesh_surface_vertpaint_get(ob_ref.object);
|
||||
}
|
||||
return DRW_cache_object_surface_get(ob_ref.object);
|
||||
}
|
||||
|
||||
void draw(Manager &manager, View &view, GPUTexture *depth_tx, GPUTexture *color_tx)
|
||||
{
|
||||
resources.color_tx.acquire(int2(resources.depth_tx.size()), GPU_RGBA16F);
|
||||
|
||||
opaque_ps.draw_prepass(manager, view, resources.depth_tx);
|
||||
// volume_ps.draw_prepass(manager, view, resources.depth_tx);
|
||||
// transparent_ps.draw_prepass(manager, view, resources.depth_tx);
|
||||
|
||||
// if (opaque_in_front_ps.is_empty() == false || transparent_in_front_ps.is_empty() == false) {
|
||||
// opaque_in_front_ps.draw_prepass(manager, view, resources.depth_in_front_tx);
|
||||
// transparent_in_front_ps.draw_prepass(manager, view, resources.depth_in_front_tx);
|
||||
// }
|
||||
|
||||
opaque_ps.draw_resolve(manager, view);
|
||||
// transparent_ps.draw_resolve(manager, view);
|
||||
|
||||
anti_aliasing_ps.draw(manager, view, depth_tx, color_tx);
|
||||
|
||||
resources.color_tx.release();
|
||||
}
|
||||
|
||||
void draw_viewport(Manager &manager, View &view, GPUTexture *depth_tx, GPUTexture *color_tx)
|
||||
{
|
||||
this->draw(manager, view, depth_tx, color_tx);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace blender::workbench
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Interface with legacy C DRW manager
|
||||
* \{ */
|
||||
|
||||
using namespace blender;
|
||||
|
||||
struct WORKBENCH_Data {
|
||||
DrawEngineType *engine_type;
|
||||
DRWViewportEmptyList *fbl;
|
||||
DRWViewportEmptyList *txl;
|
||||
DRWViewportEmptyList *psl;
|
||||
DRWViewportEmptyList *stl;
|
||||
workbench::Instance *instance;
|
||||
|
||||
char info[GPU_INFO_SIZE];
|
||||
};
|
||||
|
||||
static void workbench_engine_init(void *vedata)
|
||||
{
|
||||
/* TODO(fclem): Remove once it is minimum required. */
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
|
||||
WORKBENCH_Data *ved = reinterpret_cast<WORKBENCH_Data *>(vedata);
|
||||
if (ved->instance == nullptr) {
|
||||
ved->instance = new workbench::Instance();
|
||||
}
|
||||
|
||||
const DRWContextState *ctx_state = DRW_context_state_get();
|
||||
View3D *v3d = ctx_state->v3d;
|
||||
RegionView3D *rv3d = ctx_state->rv3d;
|
||||
|
||||
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
|
||||
int2 size = int2(GPU_texture_width(dtxl->color), GPU_texture_height(dtxl->color));
|
||||
|
||||
Object *camera = nullptr;
|
||||
if (v3d) {
|
||||
if (rv3d && (rv3d->persp == RV3D_CAMOB)) {
|
||||
camera = v3d->camera;
|
||||
}
|
||||
}
|
||||
|
||||
ved->instance->init(size, ctx_state->depsgraph, camera, v3d, rv3d);
|
||||
|
||||
/* FIXME: This reproduce old behavior when workbench was separated in 2 engines.
|
||||
* But this is a workaround for a missing update tagging. */
|
||||
rv3d->rflag &= ~RV3D_GPULIGHT_UPDATE;
|
||||
}
|
||||
|
||||
static void workbench_cache_init(void *vedata)
|
||||
{
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
reinterpret_cast<WORKBENCH_Data *>(vedata)->instance->begin_sync();
|
||||
}
|
||||
|
||||
static void workbench_cache_populate(void *vedata, Object *object)
|
||||
{
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
draw::Manager *manager = DRW_manager_get();
|
||||
|
||||
draw::ObjectRef ref;
|
||||
ref.object = object;
|
||||
ref.dupli_object = DRW_object_get_dupli(object);
|
||||
ref.dupli_parent = DRW_object_get_dupli_parent(object);
|
||||
|
||||
reinterpret_cast<WORKBENCH_Data *>(vedata)->instance->object_sync(*manager, ref);
|
||||
}
|
||||
|
||||
static void workbench_cache_finish(void *vedata)
|
||||
{
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
reinterpret_cast<WORKBENCH_Data *>(vedata)->instance->end_sync();
|
||||
}
|
||||
|
||||
static void workbench_draw_scene(void *vedata)
|
||||
{
|
||||
WORKBENCH_Data *ved = reinterpret_cast<WORKBENCH_Data *>(vedata);
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
STRNCPY(ved->info, "Error: No shader storage buffer support");
|
||||
return;
|
||||
}
|
||||
DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
|
||||
const DRWView *default_view = DRW_view_default_get();
|
||||
draw::Manager *manager = DRW_manager_get();
|
||||
draw::View view("DefaultView", default_view);
|
||||
ved->instance->draw_viewport(*manager, view, dtxl->depth, dtxl->color);
|
||||
}
|
||||
|
||||
static void workbench_instance_free(void *instance)
|
||||
{
|
||||
if (!GPU_shader_storage_buffer_objects_support()) {
|
||||
return;
|
||||
}
|
||||
delete reinterpret_cast<workbench::Instance *>(instance);
|
||||
}
|
||||
|
||||
static void workbench_view_update(void *vedata)
|
||||
{
|
||||
UNUSED_VARS(vedata);
|
||||
}
|
||||
|
||||
static void workbench_id_update(void *vedata, struct ID *id)
|
||||
{
|
||||
UNUSED_VARS(vedata, id);
|
||||
}
|
||||
|
||||
static void workbench_render_to_image(void *vedata,
|
||||
struct RenderEngine *engine,
|
||||
struct RenderLayer *layer,
|
||||
const struct rcti *UNUSED(rect))
|
||||
{
|
||||
UNUSED_VARS(vedata, engine, layer);
|
||||
}
|
||||
|
||||
static void workbench_render_update_passes(RenderEngine *engine,
|
||||
Scene *scene,
|
||||
ViewLayer *view_layer)
|
||||
{
|
||||
RE_engine_register_pass(engine, scene, view_layer, RE_PASSNAME_COMBINED, 4, "RGBA", SOCK_RGBA);
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
static const DrawEngineDataSize workbench_data_size = DRW_VIEWPORT_DATA_SIZE(WORKBENCH_Data);
|
||||
|
||||
DrawEngineType draw_engine_workbench_next = {
|
||||
nullptr,
|
||||
nullptr,
|
||||
N_("Workbench"),
|
||||
&workbench_data_size,
|
||||
&workbench_engine_init,
|
||||
nullptr,
|
||||
&workbench_instance_free,
|
||||
&workbench_cache_init,
|
||||
&workbench_cache_populate,
|
||||
&workbench_cache_finish,
|
||||
&workbench_draw_scene,
|
||||
&workbench_view_update,
|
||||
&workbench_id_update,
|
||||
&workbench_render_to_image,
|
||||
nullptr,
|
||||
};
|
||||
|
||||
RenderEngineType DRW_engine_viewport_workbench_next_type = {
|
||||
nullptr,
|
||||
nullptr,
|
||||
"BLENDER_WORKBENCH_NEXT",
|
||||
N_("Workbench Next"),
|
||||
RE_INTERNAL | RE_USE_STEREO_VIEWPORT | RE_USE_GPU_CONTEXT,
|
||||
nullptr,
|
||||
&DRW_render_to_image,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
&workbench_render_update_passes,
|
||||
&draw_engine_workbench_next,
|
||||
{nullptr, nullptr, nullptr},
|
||||
};
|
||||
}
|
||||
|
||||
/** \} */
|
@@ -8,3 +8,4 @@
|
||||
#pragma once
|
||||
|
||||
extern RenderEngineType DRW_engine_viewport_workbench_type;
|
||||
extern RenderEngineType DRW_engine_viewport_workbench_next_type;
|
||||
|
114
source/blender/draw/engines/workbench/workbench_enums.hh
Normal file
114
source/blender/draw/engines/workbench/workbench_enums.hh
Normal file
@@ -0,0 +1,114 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "BLI_assert.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_view3d_enums.h"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
enum class eGeometryType {
|
||||
MESH = 0,
|
||||
CURVES,
|
||||
POINTCLOUD,
|
||||
};
|
||||
static constexpr int geometry_type_len = static_cast<int>(eGeometryType::POINTCLOUD) + 1;
|
||||
|
||||
static inline const char *get_name(eGeometryType type)
|
||||
{
|
||||
switch (type) {
|
||||
case eGeometryType::MESH:
|
||||
return "Mesh";
|
||||
case eGeometryType::CURVES:
|
||||
return "Curves";
|
||||
case eGeometryType::POINTCLOUD:
|
||||
return "PointCloud";
|
||||
default:
|
||||
BLI_assert_unreachable();
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
static inline eGeometryType geometry_type_from_object(Object *ob)
|
||||
{
|
||||
switch (ob->type) {
|
||||
case OB_CURVES:
|
||||
return eGeometryType::CURVES;
|
||||
case OB_POINTCLOUD:
|
||||
return eGeometryType::POINTCLOUD;
|
||||
default:
|
||||
return eGeometryType::MESH;
|
||||
}
|
||||
}
|
||||
|
||||
enum class ePipelineType {
|
||||
OPAQUE = 0,
|
||||
TRANSPARENT,
|
||||
SHADOW,
|
||||
};
|
||||
static constexpr int pipeline_type_len = static_cast<int>(ePipelineType::SHADOW) + 1;
|
||||
|
||||
enum class eShadingType {
|
||||
FLAT = 0,
|
||||
STUDIO,
|
||||
MATCAP,
|
||||
};
|
||||
static constexpr int shading_type_len = static_cast<int>(eShadingType::MATCAP) + 1;
|
||||
|
||||
static inline eShadingType shading_type_from_v3d_lighting(char lighting)
|
||||
{
|
||||
switch (lighting) {
|
||||
case V3D_LIGHTING_FLAT:
|
||||
return eShadingType::FLAT;
|
||||
case V3D_LIGHTING_MATCAP:
|
||||
return eShadingType::MATCAP;
|
||||
case V3D_LIGHTING_STUDIO:
|
||||
return eShadingType::STUDIO;
|
||||
default:
|
||||
BLI_assert_unreachable();
|
||||
return static_cast<eShadingType>(-1);
|
||||
}
|
||||
}
|
||||
|
||||
enum class eColorType {
|
||||
MATERIAL = 0,
|
||||
TEXTURE,
|
||||
};
|
||||
static constexpr int color_type_len = static_cast<int>(eColorType::TEXTURE) + 1;
|
||||
|
||||
static inline eColorType color_type_from_v3d_shading(char shading)
|
||||
{
|
||||
return shading == V3D_SHADING_TEXTURE_COLOR ? eColorType::TEXTURE : eColorType::MATERIAL;
|
||||
}
|
||||
|
||||
enum class eMaterialSubType {
|
||||
NONE = 0,
|
||||
MATERIAL,
|
||||
RANDOM,
|
||||
SINGLE,
|
||||
OBJECT,
|
||||
ATTRIBUTE,
|
||||
};
|
||||
static constexpr int material_subtype_len = static_cast<int>(eMaterialSubType::ATTRIBUTE) + 1;
|
||||
|
||||
static inline eMaterialSubType material_subtype_from_v3d_shading(char shading)
|
||||
{
|
||||
switch (shading) {
|
||||
case V3D_SHADING_MATERIAL_COLOR:
|
||||
return eMaterialSubType::MATERIAL;
|
||||
case V3D_SHADING_RANDOM_COLOR:
|
||||
return eMaterialSubType::RANDOM;
|
||||
case V3D_SHADING_SINGLE_COLOR:
|
||||
return eMaterialSubType::SINGLE;
|
||||
case V3D_SHADING_TEXTURE_COLOR:
|
||||
return eMaterialSubType::NONE;
|
||||
case V3D_SHADING_OBJECT_COLOR:
|
||||
return eMaterialSubType::OBJECT;
|
||||
case V3D_SHADING_VERTEX_COLOR:
|
||||
return eMaterialSubType::ATTRIBUTE;
|
||||
default:
|
||||
BLI_assert_unreachable();
|
||||
return static_cast<eMaterialSubType>(-1);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace blender::workbench
|
49
source/blender/draw/engines/workbench/workbench_materials.cc
Normal file
49
source/blender/draw/engines/workbench/workbench_materials.cc
Normal file
@@ -0,0 +1,49 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "workbench_private.hh"
|
||||
|
||||
#include "BLI_hash.h"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
Material::Material() = default;
|
||||
|
||||
Material::Material(float3 color)
|
||||
{
|
||||
base_color = color;
|
||||
packed_data = Material::pack_data(0.0f, 0.4f, 1.0f);
|
||||
}
|
||||
|
||||
Material::Material(::Object &ob, bool random)
|
||||
{
|
||||
if (random) {
|
||||
uint hash = BLI_ghashutil_strhash_p_murmur(ob.id.name);
|
||||
if (ob.id.lib) {
|
||||
hash = (hash * 13) ^ BLI_ghashutil_strhash_p_murmur(ob.id.lib->filepath);
|
||||
}
|
||||
float3 hsv = float3(BLI_hash_int_01(hash), 0.5f, 0.8f);
|
||||
hsv_to_rgb_v(hsv, base_color);
|
||||
}
|
||||
else {
|
||||
base_color = ob.color;
|
||||
}
|
||||
packed_data = Material::pack_data(0.0f, 0.4f, ob.color[3]);
|
||||
}
|
||||
|
||||
Material::Material(::Material &mat)
|
||||
{
|
||||
base_color = &mat.r;
|
||||
packed_data = Material::pack_data(mat.metallic, mat.roughness, mat.a);
|
||||
}
|
||||
|
||||
uint32_t Material::pack_data(float metallic, float roughness, float alpha)
|
||||
{
|
||||
/* Remap to Disney roughness. */
|
||||
roughness = sqrtf(roughness);
|
||||
uint32_t packed_roughness = unit_float_to_uchar_clamp(roughness);
|
||||
uint32_t packed_metallic = unit_float_to_uchar_clamp(metallic);
|
||||
uint32_t packed_alpha = unit_float_to_uchar_clamp(alpha);
|
||||
return (packed_alpha << 16u) | (packed_roughness << 8u) | packed_metallic;
|
||||
}
|
||||
|
||||
} // namespace blender::workbench
|
168
source/blender/draw/engines/workbench/workbench_mesh_passes.cc
Normal file
168
source/blender/draw/engines/workbench/workbench_mesh_passes.cc
Normal file
@@ -0,0 +1,168 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "workbench_private.hh"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
MeshPass::MeshPass(const char *name) : PassMain(name){};
|
||||
|
||||
/* Move to draw::Pass */
|
||||
bool MeshPass::is_empty() const
|
||||
{
|
||||
return false; /* TODO */
|
||||
}
|
||||
|
||||
void MeshPass::init(ePipelineType pipeline,
|
||||
eColorType color_type,
|
||||
eShadingType shading,
|
||||
SceneResources &resources,
|
||||
DRWState state)
|
||||
{
|
||||
ShaderCache &shaders = resources.shader_cache;
|
||||
|
||||
this->PassMain::init();
|
||||
this->state_set(state);
|
||||
this->bind_texture(WB_MATCAP_SLOT, resources.matcap_tx);
|
||||
this->bind_ssbo(WB_MATERIAL_SLOT, &resources.material_buf);
|
||||
this->bind_ubo(WB_WORLD_SLOT, resources.world_buf);
|
||||
|
||||
color_type_ = color_type;
|
||||
texture_subpass_map.clear();
|
||||
|
||||
for (int geom = 0; geom < geometry_type_len; geom++) {
|
||||
eGeometryType geom_type = static_cast<eGeometryType>(geom);
|
||||
GPUShader *sh = shaders.prepass_shader_get(pipeline, geom_type, color_type, shading);
|
||||
PassMain::Sub *pass = &this->sub(get_name(geom_type));
|
||||
pass->shader_set(sh);
|
||||
geometry_passes_[geom] = pass;
|
||||
}
|
||||
}
|
||||
|
||||
PassMain::Sub &MeshPass::sub_pass_get(eGeometryType geometry_type,
|
||||
ObjectRef & /*ref*/,
|
||||
::Material * /*material*/)
|
||||
{
|
||||
if (color_type_ == eColorType::TEXTURE) {
|
||||
/* TODO(fclem): Always query a layered texture so we can use only a single shader. */
|
||||
GPUTexture *texture = nullptr; // ref.object->texture_get();
|
||||
GPUTexture *tilemap = nullptr; // ref.object->texture_get();
|
||||
|
||||
auto add_cb = [&] {
|
||||
PassMain::Sub *sub_pass = geometry_passes_[static_cast<int>(geometry_type)];
|
||||
sub_pass = &sub_pass->sub("Blender Texture Name" /* texture.name */);
|
||||
sub_pass->bind_texture(WB_TEXTURE_SLOT, texture);
|
||||
sub_pass->bind_texture(WB_TILEMAP_SLOT, tilemap);
|
||||
return sub_pass;
|
||||
};
|
||||
|
||||
return *texture_subpass_map.lookup_or_add_cb(TextureSubPassKey(texture, geometry_type),
|
||||
add_cb);
|
||||
}
|
||||
return *geometry_passes_[static_cast<int>(geometry_type)];
|
||||
}
|
||||
|
||||
void OpaquePass::sync(DRWState cull_state,
|
||||
DRWState clip_state,
|
||||
eShadingType shading_type,
|
||||
eColorType color_type,
|
||||
SceneResources &resources)
|
||||
{
|
||||
Texture &depth_tx = resources.depth_tx;
|
||||
Texture &depth_in_front_tx = resources.depth_in_front_tx;
|
||||
TextureFromPool &color_tx = resources.color_tx;
|
||||
ShaderCache &shaders = resources.shader_cache;
|
||||
DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL |
|
||||
cull_state | clip_state;
|
||||
|
||||
gbuffer_ps_.init(ePipelineType::OPAQUE, color_type, shading_type, resources, state);
|
||||
|
||||
deferred_ps_.init();
|
||||
deferred_ps_.shader_set(shaders.resolve_shader_get(ePipelineType::OPAQUE, shading_type));
|
||||
deferred_ps_.bind_ubo(WB_WORLD_SLOT, resources.world_buf);
|
||||
deferred_ps_.bind_texture(WB_MATCAP_SLOT, resources.matcap_tx);
|
||||
deferred_ps_.bind_texture("normal_tx", &gbuffer_normal_tx);
|
||||
deferred_ps_.bind_texture("material_tx", &gbuffer_material_tx);
|
||||
deferred_ps_.bind_texture("depth_tx", &depth_tx);
|
||||
deferred_ps_.bind_image("out_color_img", &color_tx);
|
||||
deferred_ps_.dispatch(math::divide_ceil(int2(depth_tx.size()), int2(WB_RESOLVE_GROUP_SIZE)));
|
||||
deferred_ps_.barrier(GPU_BARRIER_TEXTURE_FETCH);
|
||||
}
|
||||
|
||||
void OpaquePass::draw_prepass(Manager &manager, View &view, Texture &depth_tx)
|
||||
{
|
||||
gbuffer_material_tx.acquire(int2(depth_tx.size()), GPU_RGBA16F);
|
||||
gbuffer_normal_tx.acquire(int2(depth_tx.size()), GPU_RG16F);
|
||||
gbuffer_object_id_tx.acquire(int2(depth_tx.size()), GPU_R16UI);
|
||||
|
||||
opaque_fb.ensure(GPU_ATTACHMENT_TEXTURE(depth_tx),
|
||||
GPU_ATTACHMENT_TEXTURE(gbuffer_material_tx),
|
||||
GPU_ATTACHMENT_TEXTURE(gbuffer_normal_tx),
|
||||
GPU_ATTACHMENT_TEXTURE(gbuffer_object_id_tx));
|
||||
opaque_fb.bind();
|
||||
opaque_fb.clear_depth(1.0f);
|
||||
|
||||
manager.submit(gbuffer_ps_, view);
|
||||
}
|
||||
|
||||
void OpaquePass::draw_resolve(Manager &manager, View &view)
|
||||
{
|
||||
manager.submit(deferred_ps_, view);
|
||||
|
||||
gbuffer_normal_tx.release();
|
||||
gbuffer_material_tx.release();
|
||||
gbuffer_object_id_tx.release();
|
||||
}
|
||||
|
||||
bool OpaquePass::is_empty() const
|
||||
{
|
||||
return gbuffer_ps_.is_empty();
|
||||
}
|
||||
|
||||
void TransparentPass::sync(DRWState cull_state,
|
||||
DRWState clip_state,
|
||||
eShadingType shading_type,
|
||||
eColorType color_type,
|
||||
SceneResources &resources)
|
||||
{
|
||||
ShaderCache &shaders = resources.shader_cache;
|
||||
Texture &depth_tx = resources.depth_tx;
|
||||
DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL |
|
||||
cull_state | clip_state;
|
||||
|
||||
accumulation_ps_.init(ePipelineType::TRANSPARENT, color_type, shading_type, resources, state);
|
||||
|
||||
resolve_ps_.init();
|
||||
resolve_ps_.shader_set(
|
||||
shaders.resolve_shader_get(ePipelineType::TRANSPARENT, eShadingType::FLAT));
|
||||
resolve_ps_.bind_texture("accumulation_tx", accumulation_tx);
|
||||
resolve_ps_.bind_texture("reveal_tx", reveal_tx);
|
||||
resolve_ps_.dispatch(math::divide_ceil(depth_tx.size(), int3(WB_RESOLVE_GROUP_SIZE)));
|
||||
}
|
||||
|
||||
void TransparentPass::draw_prepass(Manager &manager, View &view, Texture &depth_tx)
|
||||
{
|
||||
accumulation_tx.acquire(int2(depth_tx.size()), GPU_RGBA16F);
|
||||
reveal_tx.acquire(int2(depth_tx.size()), GPU_R8);
|
||||
|
||||
transparent_fb.ensure(GPU_ATTACHMENT_TEXTURE(depth_tx),
|
||||
GPU_ATTACHMENT_TEXTURE(accumulation_tx),
|
||||
GPU_ATTACHMENT_TEXTURE(reveal_tx));
|
||||
transparent_fb.bind();
|
||||
|
||||
manager.submit(accumulation_ps_, view);
|
||||
}
|
||||
|
||||
void TransparentPass::draw_resolve(Manager &manager, View &view)
|
||||
{
|
||||
manager.submit(resolve_ps_, view);
|
||||
|
||||
accumulation_tx.release();
|
||||
reveal_tx.release();
|
||||
}
|
||||
|
||||
bool TransparentPass::is_empty() const
|
||||
{
|
||||
return accumulation_ps_.is_empty();
|
||||
}
|
||||
|
||||
} // namespace blender::workbench
|
@@ -202,6 +202,10 @@ typedef struct WORKBENCH_UBO_World {
|
||||
int use_specular; /* Bools are 32bit ints in GLSL. */
|
||||
int _pad1;
|
||||
int _pad2;
|
||||
|
||||
/* Workbench Next data
|
||||
* (Not used here, but needs to be kept in sync with workbench_shader_shared WorldData) */
|
||||
float background_color[4];
|
||||
} WORKBENCH_UBO_World;
|
||||
|
||||
BLI_STATIC_ASSERT_ALIGN(WORKBENCH_UBO_World, 16)
|
||||
|
165
source/blender/draw/engines/workbench/workbench_private.hh
Normal file
165
source/blender/draw/engines/workbench/workbench_private.hh
Normal file
@@ -0,0 +1,165 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "DRW_render.h"
|
||||
#include "draw_manager.hh"
|
||||
#include "draw_pass.hh"
|
||||
|
||||
#include "workbench_defines.hh"
|
||||
#include "workbench_enums.hh"
|
||||
#include "workbench_shader_shared.h"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
using namespace draw;
|
||||
|
||||
struct Material {
|
||||
float3 base_color;
|
||||
/* Packed data into a int. Decoded in the shader. */
|
||||
uint packed_data;
|
||||
|
||||
Material();
|
||||
Material(float3 color);
|
||||
Material(::Object &ob, bool random = false);
|
||||
Material(::Material &mat);
|
||||
|
||||
static uint32_t pack_data(float metallic, float roughness, float alpha);
|
||||
};
|
||||
|
||||
class ShaderCache {
|
||||
private:
|
||||
/* TODO(fclem): We might want to change to a Map since most shader will never be compiled. */
|
||||
GPUShader *prepass_shader_cache_[shading_type_len][color_type_len][geometry_type_len]
|
||||
[pipeline_type_len] = {{{{nullptr}}}};
|
||||
GPUShader *resolve_shader_cache_[shading_type_len][pipeline_type_len] = {{nullptr}};
|
||||
|
||||
public:
|
||||
~ShaderCache();
|
||||
|
||||
GPUShader *prepass_shader_get(ePipelineType pipeline_type,
|
||||
eGeometryType geometry_type,
|
||||
eColorType color_type,
|
||||
eShadingType shading_type);
|
||||
|
||||
GPUShader *resolve_shader_get(ePipelineType pipeline_type, eShadingType shading_type);
|
||||
};
|
||||
|
||||
struct SceneResources {
|
||||
ShaderCache shader_cache;
|
||||
|
||||
Texture matcap_tx = "matcap_tx";
|
||||
|
||||
TextureFromPool color_tx = "wb_color_tx";
|
||||
Texture depth_tx = "wb_depth_tx";
|
||||
Texture depth_in_front_tx = "wb_depth_in_front_tx";
|
||||
|
||||
StorageVectorBuffer<Material> material_buf = {"material_buf"};
|
||||
UniformBuffer<WorldData> world_buf;
|
||||
};
|
||||
|
||||
class MeshPass : public PassMain {
|
||||
private:
|
||||
std::array<PassMain::Sub *, geometry_type_len> geometry_passes_;
|
||||
eColorType color_type_;
|
||||
|
||||
using TextureSubPassKey = std::pair<GPUTexture *, eGeometryType>;
|
||||
Map<TextureSubPassKey, PassMain::Sub *> texture_subpass_map;
|
||||
|
||||
public:
|
||||
MeshPass(const char *name);
|
||||
|
||||
/* Move to draw::Pass */
|
||||
bool is_empty() const;
|
||||
|
||||
void init(ePipelineType pipeline,
|
||||
eColorType color_type,
|
||||
eShadingType shading,
|
||||
SceneResources &resources,
|
||||
DRWState state);
|
||||
|
||||
PassMain::Sub &sub_pass_get(eGeometryType geometry_type, ObjectRef &ref, ::Material *material);
|
||||
};
|
||||
|
||||
class OpaquePass {
|
||||
public:
|
||||
TextureFromPool gbuffer_normal_tx = {"gbuffer_normal_tx"};
|
||||
TextureFromPool gbuffer_material_tx = {"gbuffer_material_tx"};
|
||||
TextureFromPool gbuffer_object_id_tx = {"gbuffer_object_id_tx"};
|
||||
Framebuffer opaque_fb;
|
||||
|
||||
MeshPass gbuffer_ps_ = {"Opaque.Gbuffer"};
|
||||
PassSimple deferred_ps_ = {"Opaque.Deferred"};
|
||||
|
||||
void sync(DRWState cull_state,
|
||||
DRWState clip_state,
|
||||
eShadingType shading_type,
|
||||
eColorType color_type,
|
||||
SceneResources &resources);
|
||||
|
||||
void draw_prepass(Manager &manager, View &view, Texture &depth_tx);
|
||||
|
||||
void draw_resolve(Manager &manager, View &view);
|
||||
|
||||
bool is_empty() const;
|
||||
};
|
||||
|
||||
class TransparentPass {
|
||||
public:
|
||||
TextureFromPool accumulation_tx;
|
||||
TextureFromPool reveal_tx;
|
||||
Framebuffer transparent_fb;
|
||||
|
||||
MeshPass accumulation_ps_ = {"Transparent.Accumulation"};
|
||||
PassSimple resolve_ps_ = {"Transparent.Resolve"};
|
||||
|
||||
void sync(DRWState cull_state,
|
||||
DRWState clip_state,
|
||||
eShadingType shading_type,
|
||||
eColorType color_type,
|
||||
SceneResources &resources);
|
||||
|
||||
void draw_prepass(Manager &manager, View &view, Texture &depth_tx);
|
||||
|
||||
void draw_resolve(Manager &manager, View &view);
|
||||
|
||||
bool is_empty() const;
|
||||
};
|
||||
|
||||
class AntiAliasingPass {
|
||||
private:
|
||||
bool is_playback;
|
||||
bool is_navigating;
|
||||
int taa_sample = 0;
|
||||
|
||||
public:
|
||||
Texture smaa_search_tx = {"smaa_search_tx"};
|
||||
Texture smaa_area_tx = {"smaa_area_tx"};
|
||||
TextureFromPool smaa_edge_tx = {"smaa_edge_tx"};
|
||||
TextureFromPool smaa_weight_tx = {"smaa_weight_tx"};
|
||||
|
||||
Framebuffer smaa_edge_fb = {"smaa_edge_fb"};
|
||||
Framebuffer smaa_weight_fb = {"smaa_weight_fb"};
|
||||
Framebuffer smaa_resolve_fb = {"smaa_resolve_fb"};
|
||||
|
||||
float4 smaa_viewport_metrics = {0.0f, 0.0f, 0.0f, 0.0f};
|
||||
float smaa_mix_factor = 0.0f;
|
||||
float taa_weight_accum = 1.0f;
|
||||
|
||||
GPUShader *smaa_edge_detect_sh = nullptr;
|
||||
GPUShader *smaa_aa_weight_sh = nullptr;
|
||||
GPUShader *smaa_resolve_sh = nullptr;
|
||||
|
||||
PassSimple smaa_edge_detect_ps_ = {"SMAA.EdgeDetect"};
|
||||
PassSimple smaa_aa_weight_ps_ = {"SMAA.BlendWeights"};
|
||||
PassSimple smaa_resolve_ps_ = {"SMAA.Resolve"};
|
||||
|
||||
AntiAliasingPass();
|
||||
|
||||
~AntiAliasingPass();
|
||||
|
||||
void init(bool reset_taa);
|
||||
void sync(SceneResources &resources);
|
||||
|
||||
void draw(Manager &manager, View &view, GPUTexture *depth_tx, GPUTexture *color_tx);
|
||||
};
|
||||
|
||||
} // namespace blender::workbench
|
121
source/blender/draw/engines/workbench/workbench_shader_cache.cc
Normal file
121
source/blender/draw/engines/workbench/workbench_shader_cache.cc
Normal file
@@ -0,0 +1,121 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "workbench_private.hh"
|
||||
|
||||
namespace blender::workbench {
|
||||
|
||||
ShaderCache::~ShaderCache()
|
||||
{
|
||||
for (auto i : IndexRange(shading_type_len)) {
|
||||
for (auto j : IndexRange(color_type_len)) {
|
||||
for (auto k : IndexRange(geometry_type_len)) {
|
||||
for (auto l : IndexRange(pipeline_type_len)) {
|
||||
DRW_SHADER_FREE_SAFE(prepass_shader_cache_[i][j][k][l]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto i : IndexRange(shading_type_len)) {
|
||||
for (auto j : IndexRange(pipeline_type_len)) {
|
||||
DRW_SHADER_FREE_SAFE(resolve_shader_cache_[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GPUShader *ShaderCache::prepass_shader_get(ePipelineType pipeline_type,
|
||||
eGeometryType geometry_type,
|
||||
eColorType color_type,
|
||||
eShadingType shading_type)
|
||||
{
|
||||
GPUShader *&shader_ptr = prepass_shader_cache_[static_cast<int>(pipeline_type)][static_cast<int>(
|
||||
geometry_type)][static_cast<int>(color_type)][static_cast<int>(shading_type)];
|
||||
|
||||
if (shader_ptr != nullptr) {
|
||||
return shader_ptr;
|
||||
}
|
||||
std::string info_name = "workbench_next_prepass_";
|
||||
switch (geometry_type) {
|
||||
case eGeometryType::MESH:
|
||||
info_name += "mesh_";
|
||||
break;
|
||||
case eGeometryType::CURVES:
|
||||
info_name += "curves_";
|
||||
break;
|
||||
case eGeometryType::POINTCLOUD:
|
||||
info_name += "ptcloud_";
|
||||
break;
|
||||
}
|
||||
switch (pipeline_type) {
|
||||
case ePipelineType::OPAQUE:
|
||||
info_name += "opaque_";
|
||||
break;
|
||||
case ePipelineType::TRANSPARENT:
|
||||
info_name += "transparent_";
|
||||
break;
|
||||
case ePipelineType::SHADOW:
|
||||
info_name += "shadow_";
|
||||
break;
|
||||
}
|
||||
switch (shading_type) {
|
||||
case eShadingType::FLAT:
|
||||
info_name += "flat_";
|
||||
break;
|
||||
case eShadingType::STUDIO:
|
||||
info_name += "studio_";
|
||||
break;
|
||||
case eShadingType::MATCAP:
|
||||
info_name += "matcap_";
|
||||
break;
|
||||
}
|
||||
switch (color_type) {
|
||||
case eColorType::MATERIAL:
|
||||
info_name += "material";
|
||||
break;
|
||||
case eColorType::TEXTURE:
|
||||
info_name += "texture";
|
||||
break;
|
||||
}
|
||||
/* TODO Clipping */
|
||||
info_name += "_no_clip";
|
||||
shader_ptr = GPU_shader_create_from_info_name(info_name.c_str());
|
||||
prepass_shader_cache_[static_cast<int>(pipeline_type)][static_cast<int>(geometry_type)]
|
||||
[static_cast<int>(color_type)][static_cast<int>(shading_type)] = shader_ptr;
|
||||
return shader_ptr;
|
||||
}
|
||||
|
||||
GPUShader *ShaderCache::resolve_shader_get(ePipelineType pipeline_type, eShadingType shading_type)
|
||||
{
|
||||
GPUShader *&shader_ptr =
|
||||
resolve_shader_cache_[static_cast<int>(shading_type)][static_cast<int>(pipeline_type)];
|
||||
|
||||
if (shader_ptr != nullptr) {
|
||||
return shader_ptr;
|
||||
}
|
||||
std::string info_name = "workbench_next_resolve_";
|
||||
switch (pipeline_type) {
|
||||
case ePipelineType::OPAQUE:
|
||||
info_name += "opaque_";
|
||||
break;
|
||||
case ePipelineType::TRANSPARENT:
|
||||
info_name += "transparent_";
|
||||
break;
|
||||
case ePipelineType::SHADOW:
|
||||
BLI_assert_unreachable();
|
||||
break;
|
||||
}
|
||||
switch (shading_type) {
|
||||
case eShadingType::FLAT:
|
||||
info_name += "flat";
|
||||
break;
|
||||
case eShadingType::STUDIO:
|
||||
info_name += "studio";
|
||||
break;
|
||||
case eShadingType::MATCAP:
|
||||
info_name += "matcap";
|
||||
break;
|
||||
}
|
||||
shader_ptr = GPU_shader_create_from_info_name(info_name.c_str());
|
||||
return shader_ptr;
|
||||
}
|
||||
|
||||
} // namespace blender::workbench
|
@@ -43,6 +43,8 @@ struct WorldData {
|
||||
bool use_specular;
|
||||
int _pad1;
|
||||
int _pad2;
|
||||
|
||||
float4 background_color;
|
||||
};
|
||||
|
||||
#define viewport_size_inv viewport_size.zw
|
||||
|
@@ -985,6 +985,16 @@ class Framebuffer : NonCopyable {
|
||||
&fb_, {depth, color1, color2, color3, color4, color5, color6, color7, color8});
|
||||
}
|
||||
|
||||
void bind()
|
||||
{
|
||||
GPU_framebuffer_bind(fb_);
|
||||
}
|
||||
|
||||
void clear_depth(float depth)
|
||||
{
|
||||
GPU_framebuffer_clear_depth(fb_, depth);
|
||||
}
|
||||
|
||||
Framebuffer &operator=(Framebuffer &&a)
|
||||
{
|
||||
if (*this != a) {
|
||||
|
@@ -3002,6 +3002,9 @@ void DRW_engines_register_experimental(void)
|
||||
if (U.experimental.enable_eevee_next) {
|
||||
RE_engines_register(&DRW_engine_viewport_eevee_next_type);
|
||||
}
|
||||
if (U.experimental.enable_workbench_next) {
|
||||
RE_engines_register(&DRW_engine_viewport_workbench_next_type);
|
||||
}
|
||||
}
|
||||
|
||||
void DRW_engines_register(void)
|
||||
|
@@ -180,7 +180,7 @@ inline ResourceHandle Manager::resource_handle(const ObjectRef ref)
|
||||
return ResourceHandle(resource_len_++, (ref.object->transflag & OB_NEG_SCALE) != 0);
|
||||
}
|
||||
|
||||
inline ResourceHandle Manager::resource_handle(const float4x4 &model_matrix)
|
||||
BLI_NOINLINE inline ResourceHandle Manager::resource_handle(const float4x4 &model_matrix)
|
||||
{
|
||||
matrix_buf.get_or_resize(resource_len_).sync(model_matrix);
|
||||
bounds_buf.get_or_resize(resource_len_).sync();
|
||||
|
@@ -480,8 +480,8 @@ static void draw_compute_culling(DRWView *view)
|
||||
cull->mask = 0;
|
||||
}
|
||||
else {
|
||||
bool culled = !draw_culling_sphere_test(
|
||||
&view->frustum_bsphere, view->frustum_planes, &cull->bsphere);
|
||||
bool culled = false; //! draw_culling_sphere_test(
|
||||
//&view->frustum_bsphere, view->frustum_planes, &cull->bsphere);
|
||||
|
||||
#ifdef DRW_DEBUG_CULLING
|
||||
if (G.debug_value != 0) {
|
||||
@@ -496,9 +496,9 @@ static void draw_compute_culling(DRWView *view)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (view->visibility_fn) {
|
||||
culled = !view->visibility_fn(!culled, cull->user_data);
|
||||
}
|
||||
// if (view->visibility_fn) {
|
||||
// culled = !view->visibility_fn(!culled, cull->user_data);
|
||||
// }
|
||||
|
||||
SET_FLAG_FROM_TEST(cull->mask, culled, view->culling_mask);
|
||||
}
|
||||
|
@@ -233,6 +233,7 @@ class PassBase {
|
||||
/**
|
||||
* Record a compute dispatch call.
|
||||
*/
|
||||
void dispatch(int2 group_len);
|
||||
void dispatch(int3 group_len);
|
||||
void dispatch(int3 *group_len);
|
||||
void dispatch(StorageBuffer<DispatchCommand> &indirect_buffer);
|
||||
@@ -652,6 +653,12 @@ inline void PassBase<T>::draw_procedural_indirect(
|
||||
/** \name Compute Dispatch Implementation
|
||||
* \{ */
|
||||
|
||||
template<class T> inline void PassBase<T>::dispatch(int2 group_len)
|
||||
{
|
||||
BLI_assert(shader_);
|
||||
create_command(Type::Dispatch).dispatch = {int3(group_len.x, group_len.y, 1)};
|
||||
}
|
||||
|
||||
template<class T> inline void PassBase<T>::dispatch(int3 group_len)
|
||||
{
|
||||
BLI_assert(shader_);
|
||||
|
@@ -38,7 +38,7 @@ inline void ObjectMatrices::sync(const Object &object)
|
||||
inline void ObjectMatrices::sync(const float4x4 &model_matrix)
|
||||
{
|
||||
model = model_matrix;
|
||||
model_inverse = model_matrix.inverted();
|
||||
// model_inverse = model_matrix.inverted();
|
||||
}
|
||||
|
||||
inline std::ostream &operator<<(std::ostream &stream, const ObjectMatrices &matrices)
|
||||
|
@@ -194,6 +194,9 @@ GPU_SHADER_CREATE_INFO(draw_resource_id_fallback)
|
||||
.define("UNIFORM_RESOURCE_ID_NEW")
|
||||
.vertex_in(15, Type::INT, "drw_ResourceID");
|
||||
|
||||
/** TODO mask view id bits. */
|
||||
GPU_SHADER_CREATE_INFO(draw_resource_handle_new).define("resource_handle", "drw_ResourceID");
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
@@ -7,6 +7,10 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define AREATEX_WIDTH 160
|
||||
#define AREATEX_HEIGHT 560
|
||||
#define AREATEX_PITCH (AREATEX_WIDTH * 2)
|
||||
@@ -28,3 +32,8 @@ extern const unsigned char areaTexBytes[];
|
||||
* - DX10: DXGI_FORMAT_R8_UNORM
|
||||
*/
|
||||
extern const unsigned char searchTexBytes[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@@ -1291,13 +1291,21 @@ void ED_scene_draw_fps(const struct Scene *scene, int xoffset, int *yoffset);
|
||||
void ED_view3d_stop_render_preview(struct wmWindowManager *wm, struct ARegion *region);
|
||||
void ED_view3d_shade_update(struct Main *bmain, struct View3D *v3d, struct ScrArea *area);
|
||||
|
||||
#define XRAY_ALPHA(v3d) \
|
||||
(((v3d)->shading.type == OB_WIRE) ? (v3d)->shading.xray_alpha_wire : (v3d)->shading.xray_alpha)
|
||||
#define XRAY_FLAG(v3d) \
|
||||
(((v3d)->shading.type == OB_WIRE) ? V3D_SHADING_XRAY_WIREFRAME : V3D_SHADING_XRAY)
|
||||
#define XRAY_FLAG_ENABLED(v3d) (((v3d)->shading.flag & XRAY_FLAG(v3d)) != 0)
|
||||
#define XRAY_ENABLED(v3d) (XRAY_FLAG_ENABLED(v3d) && (XRAY_ALPHA(v3d) < 1.0f))
|
||||
#define XRAY_ACTIVE(v3d) (XRAY_ENABLED(v3d) && ((v3d)->shading.type < OB_MATERIAL))
|
||||
#define SHADING_XRAY_ALPHA(shading) \
|
||||
(((shading).type == OB_WIRE) ? (shading).xray_alpha_wire : (shading).xray_alpha)
|
||||
#define SHADING_XRAY_FLAG(shading) \
|
||||
(((shading).type == OB_WIRE) ? V3D_SHADING_XRAY_WIREFRAME : V3D_SHADING_XRAY)
|
||||
#define SHADING_XRAY_FLAG_ENABLED(shading) (((shading).flag & SHADING_XRAY_FLAG(shading)) != 0)
|
||||
#define SHADING_XRAY_ENABLED(shading) \
|
||||
(SHADING_XRAY_FLAG_ENABLED(shading) && (SHADING_XRAY_ALPHA(shading) < 1.0f))
|
||||
#define SHADING_XRAY_ACTIVE(shading) \
|
||||
(SHADING_XRAY_ENABLED(shading) && ((shading).type < OB_MATERIAL))
|
||||
|
||||
#define XRAY_ALPHA(v3d) SHADING_XRAY_ALPHA((v3d)->shading)
|
||||
#define XRAY_FLAG(v3d) SHADING_XRAY_FLAG((v3d)->shading)
|
||||
#define XRAY_FLAG_ENABLED(v3d) SHADING_XRAY_FLAG_ENABLED((v3d)->shading)
|
||||
#define XRAY_ENABLED(v3d) SHADING_XRAY_ENABLED((v3d)->shading)
|
||||
#define XRAY_ACTIVE(v3d) SHADING_XRAY_ACTIVE((v3d)->shading)
|
||||
|
||||
/* view3d_draw_legacy.c */
|
||||
|
||||
|
@@ -27,6 +27,7 @@ set(INC
|
||||
|
||||
# For *_info.hh includes.
|
||||
../draw/engines/eevee_next
|
||||
../draw/engines/workbench
|
||||
../draw/intern
|
||||
|
||||
# For node muting stuff.
|
||||
|
@@ -41,7 +41,7 @@ typedef enum eGPUTextureType {
|
||||
GPU_TEXTURE_CUBE_ARRAY = (GPU_TEXTURE_CUBE | GPU_TEXTURE_ARRAY),
|
||||
} eGPUTextureType;
|
||||
|
||||
ENUM_OPERATORS(eGPUTextureType, GPU_TEXTURE_CUBE_ARRAY)
|
||||
ENUM_OPERATORS(eGPUTextureType, GPU_TEXTURE_BUFFER)
|
||||
|
||||
#ifdef DEBUG
|
||||
# define DEBUG_NAME_LEN 64
|
||||
|
@@ -653,7 +653,8 @@ typedef struct UserDef_Experimental {
|
||||
char use_sculpt_texture_paint;
|
||||
char use_draw_manager_acquire_lock;
|
||||
char use_realtime_compositor;
|
||||
char _pad[7];
|
||||
char enable_workbench_next;
|
||||
char _pad[6];
|
||||
/** `makesdna` does not allow empty structs. */
|
||||
} UserDef_Experimental;
|
||||
|
||||
|
@@ -6381,6 +6381,13 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "enable_eevee_next", 1);
|
||||
RNA_def_property_ui_text(prop, "EEVEE Next", "Enable the new EEVEE codebase, requires restart");
|
||||
|
||||
prop = RNA_def_property(srna, "enable_workbench_next", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "enable_workbench_next", 1);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"Workbench Next",
|
||||
"Enable the new Workbench codebase, requires "
|
||||
"restart");
|
||||
|
||||
prop = RNA_def_property(srna, "use_viewport_debug", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "use_viewport_debug", 1);
|
||||
RNA_def_property_ui_text(prop,
|
||||
|
Reference in New Issue
Block a user