2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 15:47:46 +00:00

Implement MP2 shader extraction presets

This commit is contained in:
Jack Andersen
2020-04-08 16:24:18 -10:00
parent 0c3d6c7f27
commit 5b0a4b5f60
3 changed files with 83 additions and 117 deletions

View File

@@ -58,6 +58,8 @@ def make_retro_shader():
lightmap_input.default_value = (0.0, 0.0, 0.0, 0.0)
diffuse_input = new_grp.inputs.new('NodeSocketColor', 'Diffuse')
diffuse_input.default_value = (0.0, 0.0, 0.0, 0.0)
diffuse_mod_input = new_grp.inputs.new('NodeSocketColor', 'DiffuseMod')
diffuse_mod_input.default_value = (1.0, 1.0, 1.0, 1.0)
emissive_input = new_grp.inputs.new('NodeSocketColor', 'Emissive')
emissive_input.default_value = (0.0, 0.0, 0.0, 0.0)
specular_input = new_grp.inputs.new('NodeSocketColor', 'Specular')
@@ -72,6 +74,10 @@ def make_retro_shader():
alpha_input.default_value = 1.0
alpha_input.min_value = 0.0
alpha_input.max_value = 1.0
alpha_mod_input = new_grp.inputs.new('NodeSocketFloatFactor', 'AlphaMod')
alpha_mod_input.default_value = 1.0
alpha_mod_input.min_value = 0.0
alpha_mod_input.max_value = 1.0
new_grp.use_fake_user = True
# Group inputs
@@ -108,6 +114,17 @@ def make_retro_shader():
new_shader_model_mix1 = new_grp.nodes.new('ShaderNodeMixShader')
new_shader_model_mix1.location = (-760, 340)
# Multiply (Multiples diffuse with diffusemod)
diffuse_mult = new_grp.nodes.new('ShaderNodeMixRGB')
diffuse_mult.location = (-1094, 122)
diffuse_mult.blend_type = 'MULTIPLY'
diffuse_mult.inputs['Fac'].default_value = 1.0
# Multiply (Multiples alpha with alphamod)
alpha_mult = new_grp.nodes.new('ShaderNodeMath')
alpha_mult.location = (-1094, -178)
alpha_mult.operation = 'MULTIPLY'
# Multiply (Multiplies static lightmap with diffuse)
lightmap_mult = new_grp.nodes.new('ShaderNodeMixRGB')
lightmap_mult.location = (-944, 122)
@@ -164,17 +181,21 @@ def make_retro_shader():
mat_out.location = (150, -88)
# Links
new_grp.links.new(grp_in.outputs['Diffuse'], diffuse_mult.inputs['Color1'])
new_grp.links.new(grp_in.outputs['DiffuseMod'], diffuse_mult.inputs['Color2'])
new_grp.links.new(grp_in.outputs['Alpha'], alpha_mult.inputs[0])
new_grp.links.new(grp_in.outputs['AlphaMod'], alpha_mult.inputs[1])
new_grp.links.new(grp_in.outputs['Lightmap'], lightmap_mult.inputs['Color1'])
new_grp.links.new(grp_in.outputs['Diffuse'], lightmap_mult.inputs['Color2'])
new_grp.links.new(grp_in.outputs['Diffuse'], diffuse_bdsf.inputs['Color'])
new_grp.links.new(grp_in.outputs['Diffuse'], principled_bsdf.inputs['Base Color'])
new_grp.links.new(diffuse_mult.outputs['Color'], lightmap_mult.inputs['Color2'])
new_grp.links.new(diffuse_mult.outputs['Color'], diffuse_bdsf.inputs['Color'])
new_grp.links.new(diffuse_mult.outputs['Color'], principled_bsdf.inputs['Base Color'])
new_grp.links.new(grp_in.outputs['Emissive'], emissive_add_shader.inputs[0])
new_grp.links.new(grp_in.outputs['Specular'], specular_mult.inputs['Color1'])
new_grp.links.new(grp_in.outputs['Specular'], principled_bsdf.inputs['Specular'])
new_grp.links.new(grp_in.outputs['ExtendedSpecular'], extended_specular_mult.inputs['Color1'])
new_grp.links.new(grp_in.outputs['Reflection'], specular_mult.inputs['Color2'])
new_grp.links.new(grp_in.outputs['Reflection'], extended_specular_mult.inputs['Color2'])
new_grp.links.new(grp_in.outputs['Alpha'], alpha_mix.inputs['Fac'])
new_grp.links.new(alpha_mult.outputs[0], alpha_mix.inputs['Fac'])
new_grp.links.new(new_shader_model.outputs['Value'], new_shader_model_mix1.inputs[0])
new_grp.links.new(diffuse_bdsf.outputs['BSDF'], new_shader_model_mix1.inputs[1])
new_grp.links.new(grp_in.outputs['Specular'], invert.inputs['Color'])