Node Wrangler: another update for 2.8
- fix error checking Render Layers outputs and unified this check - updated Render Layers outputs [BI removed, Eevee added -- although this distinction is unused atm...] Fixes T59679
This commit is contained in:
parent
5bce44b8be
commit
e3c9be9262
Notes:
blender-bot
2023-02-14 04:22:55 +01:00
Referenced by issue blender/blender#59679, Node Wrangler broken feature with Blender 2.8
|
@ -56,38 +56,33 @@ from collections import namedtuple
|
|||
# with attributes determinig if pass is used,
|
||||
# and MultiLayer EXR outputs names and corresponding render engines
|
||||
#
|
||||
# rl_outputs entry = (render_pass, rl_output_name, exr_output_name, in_internal, in_cycles)
|
||||
RL_entry = namedtuple('RL_Entry', ['render_pass', 'output_name', 'exr_output_name', 'in_internal', 'in_cycles'])
|
||||
# rl_outputs entry = (render_pass, rl_output_name, exr_output_name, in_eevee, in_cycles)
|
||||
RL_entry = namedtuple('RL_Entry', ['render_pass', 'output_name', 'exr_output_name', 'in_eevee', 'in_cycles'])
|
||||
rl_outputs = (
|
||||
RL_entry('use_pass_ambient_occlusion', 'AO', 'AO', True, True),
|
||||
RL_entry('use_pass_color', 'Color', 'Color', True, False),
|
||||
RL_entry('use_pass_combined', 'Image', 'Combined', True, True),
|
||||
RL_entry('use_pass_diffuse', 'Diffuse', 'Diffuse', True, False),
|
||||
RL_entry('use_pass_diffuse_color', 'Diffuse Color', 'DiffCol', False, True),
|
||||
RL_entry('use_pass_diffuse_direct', 'Diffuse Direct', 'DiffDir', False, True),
|
||||
RL_entry('use_pass_diffuse_indirect', 'Diffuse Indirect', 'DiffInd', False, True),
|
||||
RL_entry('use_pass_emit', 'Emit', 'Emit', True, False),
|
||||
RL_entry('use_pass_environment', 'Environment', 'Env', True, False),
|
||||
RL_entry('use_pass_emit', 'Emit', 'Emit', False, True),
|
||||
RL_entry('use_pass_environment', 'Environment', 'Env', False, False),
|
||||
RL_entry('use_pass_glossy_color', 'Glossy Color', 'GlossCol', False, True),
|
||||
RL_entry('use_pass_glossy_direct', 'Glossy Direct', 'GlossDir', False, True),
|
||||
RL_entry('use_pass_glossy_indirect', 'Glossy Indirect', 'GlossInd', False, True),
|
||||
RL_entry('use_pass_indirect', 'Indirect', 'Indirect', True, False),
|
||||
RL_entry('use_pass_material_index', 'IndexMA', 'IndexMA', True, True),
|
||||
RL_entry('use_pass_mist', 'Mist', 'Mist', True, False),
|
||||
RL_entry('use_pass_indirect', 'Indirect', 'Indirect', False, False),
|
||||
RL_entry('use_pass_material_index', 'IndexMA', 'IndexMA', False, True),
|
||||
RL_entry('use_pass_mist', 'Mist', 'Mist', True, True),
|
||||
RL_entry('use_pass_normal', 'Normal', 'Normal', True, True),
|
||||
RL_entry('use_pass_object_index', 'IndexOB', 'IndexOB', True, True),
|
||||
RL_entry('use_pass_reflection', 'Reflect', 'Reflect', True, False),
|
||||
RL_entry('use_pass_refraction', 'Refract', 'Refract', True, False),
|
||||
RL_entry('use_pass_shadow', 'Shadow', 'Shadow', True, True),
|
||||
RL_entry('use_pass_specular', 'Specular', 'Spec', True, False),
|
||||
RL_entry('use_pass_subsurface_color', 'Subsurface Color', 'SubsurfaceCol', False, True),
|
||||
RL_entry('use_pass_subsurface_direct', 'Subsurface Direct', 'SubsurfaceDir', False, True),
|
||||
RL_entry('use_pass_object_index', 'IndexOB', 'IndexOB', False, True),
|
||||
RL_entry('use_pass_shadow', 'Shadow', 'Shadow', False, True),
|
||||
RL_entry('use_pass_subsurface_color', 'Subsurface Color', 'SubsurfaceCol', True, True),
|
||||
RL_entry('use_pass_subsurface_direct', 'Subsurface Direct', 'SubsurfaceDir', True, True),
|
||||
RL_entry('use_pass_subsurface_indirect', 'Subsurface Indirect', 'SubsurfaceInd', False, True),
|
||||
RL_entry('use_pass_transmission_color', 'Transmission Color', 'TransCol', False, True),
|
||||
RL_entry('use_pass_transmission_direct', 'Transmission Direct', 'TransDir', False, True),
|
||||
RL_entry('use_pass_transmission_indirect', 'Transmission Indirect', 'TransInd', False, True),
|
||||
RL_entry('use_pass_uv', 'UV', 'UV', True, True),
|
||||
RL_entry('use_pass_vector', 'Speed', 'Vector', True, True),
|
||||
RL_entry('use_pass_vector', 'Speed', 'Vector', False, True),
|
||||
RL_entry('use_pass_z', 'Z', 'Depth', True, True),
|
||||
)
|
||||
|
||||
|
@ -2969,10 +2964,9 @@ class NWAddReroutes(Operator, NWBase):
|
|||
pass_used = True
|
||||
else:
|
||||
# check entries in global 'rl_outputs' variable
|
||||
#for render_pass, output_name, exr_name, in_internal, in_cycles in rl_outputs:
|
||||
for rlo in rl_outputs:
|
||||
if output.name == rlo.output_name or output.name == rlo.exr_output_name:
|
||||
pass_used = getattr(node_scene.render.layers[node_layer], rlo.render_pass)
|
||||
if output.name in {rlo.output_name, rlo.exr_output_name}:
|
||||
pass_used = getattr(node_scene.view_layers[node_layer], rlo.render_pass)
|
||||
break
|
||||
if pass_used:
|
||||
valid = ((option == 'ALL') or
|
||||
|
@ -3039,14 +3033,14 @@ class NWLinkActiveToSelected(Operator, NWBase):
|
|||
# Only outputs that represent used passes should be taken into account
|
||||
# Check if pass represented by output is used.
|
||||
# global 'rl_outputs' list will be used for that
|
||||
for render_pass, out_name, exr_name, in_internal, in_cycles in rl_outputs:
|
||||
for rlo in rl_outputs:
|
||||
pass_used = False # initial value. Will be set to True if pass is used
|
||||
if out.name == 'Alpha':
|
||||
# Alpha output is always present. Doesn't have representation in render pass. Assume it's used.
|
||||
pass_used = True
|
||||
elif out.name == out_name:
|
||||
elif out.name in {rlo.output_name, rlo.exr_output_name}:
|
||||
# example 'render_pass' entry: 'use_pass_uv' Check if True in scene render layers
|
||||
pass_used = getattr(active.scene.render.layers[active.layer], render_pass)
|
||||
pass_used = getattr(active.scene.view_layers[active.layer], rlo.render_pass)
|
||||
break
|
||||
if pass_used:
|
||||
outputs.append(out)
|
||||
|
@ -3067,9 +3061,9 @@ class NWLinkActiveToSelected(Operator, NWBase):
|
|||
src_name = active.label
|
||||
elif use_outputs_names:
|
||||
src_name = (out.name, )
|
||||
for render_pass, out_name, exr_name, in_internal, in_cycles in rl_outputs:
|
||||
if out.name in {out_name, exr_name}:
|
||||
src_name = (out_name, exr_name)
|
||||
for rlo in rl_outputs:
|
||||
if out.name in {rlo.output_name, rlo.exr_output_name}:
|
||||
src_name = (rlo.output_name, rlo.exr_output_name)
|
||||
if dst_name not in src_name:
|
||||
valid = False
|
||||
if valid:
|
||||
|
|
Loading…
Reference in New Issue