Reload PBR node

This commit is contained in:
Lubos Lenco 2017-07-09 19:44:19 +02:00
parent 9ee6e30085
commit 14f550961a
5 changed files with 14 additions and 15 deletions

View file

@ -237,7 +237,11 @@ def check_default():
make_renderer(bpy.data.cameras[0])
def reload_blend_data():
if bpy.data.node_groups.get('Armory PBR') == None:
armory_pbr = bpy.data.node_groups.get('Armory PBR')
if armory_pbr != None and len(armory_pbr.inputs) == 14:
armory_pbr.name = 'Armory PBR Old'
armory_pbr = None
if armory_pbr == None:
load_library('Armory PBR')
check_default()

View file

@ -180,17 +180,12 @@ def parse_shader(node, socket):
# Normal
if node.inputs[5].is_linked and node.inputs[5].links[0].from_node.type == 'NORMAL_MAP':
c_state.warn(c_state.mat_name() + ' - Do not use Normal Map node with Armory PBR, connect Image Texture directly')
parse_normal_map_color_input(node.inputs[5], node.inputs[6])
parse_normal_map_color_input(node.inputs[5])
# Emission
dv = node.inputs[7].default_value
if node.inputs[7].is_linked or dv[0] != 0.0 or dv[1] != 0.0 or dv[2] != 0.0:
parsing_basecolor(True)
out_emission = parse_vector_input(node.inputs[7])
if node.inputs[6].is_linked or node.inputs[6].default_value != 0.0:
out_emission = parse_value_input(node.inputs[6])
emission_found = True
parsing_basecolor(False)
if node.inputs[8].is_linked or node.inputs[8].default_value != 1.0:
out_emission = '({0} * {1})'.format(out_emission, parse_value_input(node.inputs[9]))
out_basecol = '({0} + {1} * 100.0)'.format(out_basecol, out_emission)
out_basecol = '({0} + vec3({1} * 100.0))'.format(out_basecol, out_emission)
else: # Deprecated
# Base color
@ -213,7 +208,7 @@ def parse_shader(node, socket):
# Normal
if node.inputs[6].is_linked and node.inputs[6].links[0].from_node.type == 'NORMAL_MAP':
c_state.warn(c_state.mat_name() + ' - Do not use Normal Map node with Armory PBR, connect Image Texture directly')
parse_normal_map_color_input(node.inputs[6], node.inputs[7])
parse_normal_map_color_input(node.inputs[6])
# Emission
if node.inputs[8].is_linked:
parsing_basecolor(True)
@ -912,7 +907,7 @@ def parse_vector(node, socket):
elif op == 'NORMALIZE':
return 'normalize({0})'.format(vec1)
def parse_normal_map_color_input(inp, str_inp=None):
def parse_normal_map_color_input(inp):
global parse_teximage_vector
if inp.is_linked == False:
return
@ -963,7 +958,7 @@ def parse_value(node, socket):
if socket == node.outputs[1]:
if len(node.inputs) != 14:
res = parse_value_input(node.inputs[9])
res = parse_value_input(node.inputs[7])
else: # Deprecated
res = parse_value_input(node.inputs[10])
if node.inputs[11].is_linked or node.inputs[11].default_value != 1.0:

View file

@ -54,7 +54,7 @@ def parse(material, mat_data, mat_users, mat_armusers, rid):
if sss_node != None and sss_node.outputs[0].is_linked and (sss_node.inputs[1].is_linked or sss_node.inputs[1].default_value != 0.0):
sss = True
sss_node = arm.nodes.get_node_armorypbr(material.node_tree)
if sss_node != None and sss_node.outputs[0].is_linked and (sss_node.inputs[10].is_linked or sss_node.inputs[10].default_value != 0.0):
if sss_node != None and sss_node.outputs[0].is_linked and (sss_node.inputs[8].is_linked or sss_node.inputs[8].default_value != 0.0):
sss = True
if sss:
const = {}

View file

@ -13,7 +13,7 @@ def disp_linked(output_node):
if linked:
l = output_node.inputs[2].links[0]
if l.from_node.type == 'GROUP' and l.from_node.node_tree.name.startswith('Armory PBR') and \
((len(l.from_node.inputs) == 14 and l.from_node.inputs[10].is_linked == False) or (l.from_node.inputs[9].is_linked == False)):
((len(l.from_node.inputs) == 14 and l.from_node.inputs[10].is_linked == False) or (len(l.from_node.inputs) != 14 and l.from_node.inputs[7].is_linked == False)):
return False
if linked and not tess_enabled:
log.warn('Tessellation not available on ' + make_state.target)

Binary file not shown.