forked from LeenkxTeam/LNXSDK
Group Nodes, Shaders, Textures, Displacement
This commit is contained in:
@ -89,7 +89,7 @@ def parse_valtorgb(node: bpy.types.ShaderNodeValToRGB, out_socket: bpy.types.Nod
|
||||
elems = node.color_ramp.elements
|
||||
|
||||
use_color_out = out_socket == node.outputs[0]
|
||||
ramp_store = c.node_name(node.name) + '_res' + state.get_parser_pass_suffix()
|
||||
ramp_store = c.node_uid(node) + '_res' + state.get_parser_pass_suffix()
|
||||
|
||||
if c.is_parsed(ramp_store):
|
||||
return f'{ramp_store}.rgb' if use_color_out else f'{ramp_store}.a'
|
||||
@ -100,26 +100,26 @@ def parse_valtorgb(node: bpy.types.ShaderNodeValToRGB, out_socket: bpy.types.Nod
|
||||
state.parsed.add(ramp_store)
|
||||
return f'{ramp_store}.rgb' if use_color_out else f'{ramp_store}.a'
|
||||
|
||||
cols_var = c.node_name(node.name).upper() + '_COLS'
|
||||
cols_var = c.node_uid(node).upper() + '_COLS'
|
||||
if state.current_pass == ParserPass.REGULAR:
|
||||
cols_entries = ', '.join(f'vec4({e.color[0]}, {e.color[1]}, {e.color[2]}, {e.color[3]})' for e in elems)
|
||||
cols_entries += f', vec4({elems[-1].color[0]}, {elems[-1].color[1]}, {elems[-1].color[2]}, {elems[-1].color[3]})'
|
||||
state.curshader.add_const("vec4", cols_var, cols_entries, array_size=len(elems) + 1)
|
||||
|
||||
fac_var = c.node_name(node.name) + '_fac' + state.get_parser_pass_suffix()
|
||||
fac_var = c.node_uid(node) + '_fac' + state.get_parser_pass_suffix()
|
||||
state.curshader.write(f'float {fac_var} = {fac};')
|
||||
|
||||
index = '0'
|
||||
for i in range(1, len(elems)):
|
||||
index += f' + ({fac_var} > {elems[i].position} ? 1 : 0)'
|
||||
|
||||
index_var = c.node_name(node.name) + '_i' + state.get_parser_pass_suffix()
|
||||
index_var = c.node_uid(node) + '_i' + state.get_parser_pass_suffix()
|
||||
state.curshader.write(f'int {index_var} = {index};')
|
||||
|
||||
if interp == 'CONSTANT':
|
||||
state.curshader.write(f'vec4 {ramp_store} = {cols_var}[{index_var}];')
|
||||
else:
|
||||
facs_var = c.node_name(node.name).upper() + '_FACS'
|
||||
facs_var = c.node_uid(node).upper() + '_FACS'
|
||||
if state.current_pass == ParserPass.REGULAR:
|
||||
facs_entries = ', '.join(str(e.position) for e in elems)
|
||||
facs_entries += ', 1.0'
|
||||
@ -369,7 +369,7 @@ if bpy.app.version > (3, 2, 0):
|
||||
def parse_sephsv(node: bpy.types.ShaderNodeSeparateHSV, out_socket: bpy.types.NodeSocket, state: ParserState) -> floatstr:
|
||||
state.curshader.add_function(c_functions.str_hue_sat)
|
||||
|
||||
hsv_var = c.node_name(node.name) + '_hsv' + state.get_parser_pass_suffix()
|
||||
hsv_var = c.node_uid(node) + '_hsv' + state.get_parser_pass_suffix()
|
||||
if not state.curshader.contains(hsv_var): # Already written if a second output is parsed
|
||||
state.curshader.write(f'const vec3 {hsv_var} = rgb_to_hsv({c.parse_vector_input(node.inputs["Color"])}.rgb);')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user