diff --git a/__init__.py b/__init__.py index 8233d1aab..733d162d5 100644 --- a/__init__.py +++ b/__init__.py @@ -40,14 +40,15 @@ from .fast64_internal.f3d.f3d_parser import f3d_parser_register, f3d_parser_unregister from .fast64_internal.f3d.flipbook import flipbook_register, flipbook_unregister from .fast64_internal.f3d.op_largetexture import op_largetexture_register, op_largetexture_unregister, ui_oplargetexture +from .fast64_internal.f3d.f3d_node_gen import f3d_node_gen_register, f3d_node_gen_unregister, generate_f3d_node_groups from .fast64_internal.f3d_material_converter import ( MatUpdateConvert, - upgrade_f3d_version_all_meshes, bsdf_conv_register, bsdf_conv_unregister, bsdf_conv_panel_regsiter, bsdf_conv_panel_unregsiter, + upgrade_f3d_version_all_meshes, ) from .fast64_internal.render_settings import ( @@ -370,11 +371,11 @@ def after_load(_a, _b): game_data.update(bpy.context.scene.gameEditorMode) settings = bpy.context.scene.fast64.settings + post_4_2 = bpy.app.version >= (4, 2, 0) if any(mat.is_f3d for mat in bpy.data.materials): check_or_ask_color_management(bpy.context) - if not settings.internal_fixed_4_2 and bpy.app.version >= (4, 2, 0): - upgrade_f3d_version_all_meshes() - if bpy.app.version >= (4, 2, 0): + generate_f3d_node_groups(True, force_mat_update=(not settings.internal_fixed_4_2 and post_4_2)) + if post_4_2: settings.internal_fixed_4_2 = True upgrade_changed_props() upgrade_scene_props_node() @@ -453,6 +454,7 @@ def register(): flipbook_register() f3d_parser_register() op_largetexture_register() + f3d_node_gen_register() # ROM @@ -484,6 +486,7 @@ def unregister(): utility_anim_unregister() op_largetexture_unregister() flipbook_unregister() + f3d_node_gen_unregister() f3d_writer_unregister() f3d_parser_unregister() sm64_unregister(True) diff --git a/fast64_internal/f3d/f3d_material.py b/fast64_internal/f3d/f3d_material.py index 890176c34..04bb2ac26 100644 --- a/fast64_internal/f3d/f3d_material.py +++ b/fast64_internal/f3d/f3d_material.py @@ -1,5 +1,5 @@ import logging -import bpy, math, os +import bpy, os from bpy.types import ( Attribute, Context, @@ -9,7 +9,6 @@ Material, Menu, Mesh, - NodeGroupOutput, NodeInputs, NodeLink, NodeSocket, @@ -42,12 +41,9 @@ ) from .f3d_material_presets import * from ..utility import * -from ..render_settings import ( - Fast64RenderSettings_Properties, - update_scene_props_from_render_settings, - ManualUpdatePreviewOperator, -) -from .f3d_material_helpers import F3DMaterial_UpdateLock, node_tree_copy +from ..render_settings import ManualUpdatePreviewOperator +from .f3d_material_helpers import F3DMaterial_UpdateLock +from .f3d_node_gen import create_f3d_nodes_in_material, generate_f3d_node_groups, DEBUG_MODE, find_node_group from bpy.app.handlers import persistent from typing import Generator, Optional, Tuple, Any, Dict, Union @@ -1764,9 +1760,9 @@ def update_fog_nodes(material: Material, context: Context): # if NOT setting rendermode, it is more likely that the user is setting # rendermodes in code, so to be safe we'll enable fog. Plus we are checking # that fog is enabled in the geometry mode, so if so that's probably the intent. - fogBlender.node_tree = bpy.data.node_groups[ + fogBlender.node_tree = find_node_group( ("FogBlender_On" if is_blender_doing_fog(material.f3d_mat.rdp_settings) else "FogBlender_Off") - ] + ) remove_first_link_if_exists(material, fogBlender.inputs["FogAmount"].links) if material.f3d_mat.rdp_settings.g_fog: @@ -1795,7 +1791,7 @@ def update_fog_nodes(material: Material, context: Context): def update_noise_nodes(material: Material): f3dMat: "F3DMaterialProperty" = material.f3d_mat uses_noise = f3dMat.combiner1.A == "NOISE" or f3dMat.combiner2.A == "NOISE" - noise_group = bpy.data.node_groups["F3DNoise_Animated" if uses_noise else "F3DNoise_NonAnimated"] + noise_group = find_node_group("F3DNoise_Animated" if uses_noise else "F3DNoise_NonAnimated") nodes = material.node_tree.nodes if nodes["F3DNoiseFactor"].node_tree is not noise_group: @@ -1846,7 +1842,7 @@ def set_output_node_groups(material: Material): material.alpha_threshold = 0.125 output_group_name = f"OUTPUT_{cycle}CYCLE_{output_method}" - output_group = bpy.data.node_groups[output_group_name] + output_group = find_node_group(output_group_name) output_node.node_tree = output_group for inp in output_node.inputs: @@ -1942,11 +1938,11 @@ def update_node_values_of_material(material: Material, context): if (settings.is_geo_mode_on("g_lighting") or inherit_light_and_fog()) and settings.is_geo_mode_on("g_tex_gen"): if settings.is_geo_mode_on("g_tex_gen_linear"): - nodes["UV"].node_tree = bpy.data.node_groups["UV_EnvMap_Linear"] + nodes["UV"].node_tree = find_node_group("UV_EnvMap_Linear") else: - nodes["UV"].node_tree = bpy.data.node_groups["UV_EnvMap"] + nodes["UV"].node_tree = find_node_group("UV_EnvMap") else: - nodes["UV"].node_tree = bpy.data.node_groups["UV"] + nodes["UV"].node_tree = find_node_group("UV") shdcol_inputs = nodes["Shade Color"].inputs for propName in [ @@ -1998,11 +1994,11 @@ def set_texture_settings_node(material: Material): nodes = material.node_tree.nodes textureSettings: ShaderNodeGroup = nodes["TextureSettings"] - desired_group = bpy.data.node_groups["TextureSettings_Lite"] + desired_group = find_node_group("TextureSettings_Lite") if (material.f3d_mat.tex0.tex and not material.f3d_mat.tex0.autoprop) or ( material.f3d_mat.tex1.tex and not material.f3d_mat.tex1.autoprop ): - desired_group = bpy.data.node_groups["TextureSettings_Advanced"] + desired_group = find_node_group("TextureSettings_Advanced") if textureSettings.node_tree is not desired_group: textureSettings.node_tree = desired_group @@ -2148,11 +2144,11 @@ def update_tex_values_index(self: Material, *, texProperty: "TextureProperty", t ciFormat = texProperty.ci_format if has_f3d_nodes(self): tex_I_node = nodes["Tex" + str(texIndex) + "_I"] - desired_node = bpy.data.node_groups["Is not i"] + desired_node = find_node_group("Is not i") if "IA" in texFormat or (texFormat[:2] == "CI" and "IA" in ciFormat): - desired_node = bpy.data.node_groups["Is ia"] + desired_node = find_node_group("Is ia") elif texFormat[0] == "I" or (texFormat[:2] == "CI" and ciFormat[0] == "I"): - desired_node = bpy.data.node_groups["Is i"] + desired_node = find_node_group("Is i") if tex_I_node.node_tree is not desired_node: tex_I_node.node_tree = desired_node @@ -2302,6 +2298,8 @@ def update_tex_values_manual(material: Material, context, prop_path=None): elif texture_settings.mute: texture_settings.mute = False + set_texture_settings_node(material) + # linear requires tex gen to be enabled as well isTexGen = f3dMat.rdp_settings.g_lighting and f3dMat.rdp_settings.g_tex_gen @@ -2324,9 +2322,9 @@ def update_tex_values_manual(material: Material, context, prop_path=None): uv_basis: ShaderNodeGroup = nodes["UV Basis"] if f3dMat.uv_basis == "TEXEL0": - uv_basis.node_tree = bpy.data.node_groups["UV Basis 0"] + uv_basis.node_tree = find_node_group("UV Basis 0") else: - uv_basis.node_tree = bpy.data.node_groups["UV Basis 1"] + uv_basis.node_tree = find_node_group("UV Basis 1") if not isTexGen: uv_basis.inputs["S Scale"].default_value = f3dMat.tex_scale[0] @@ -2349,7 +2347,6 @@ def update_tex_values_manual(material: Material, context, prop_path=None): texture_inputs["3 Point"].default_value = int(f3dMat.rdp_settings.g_mdsft_text_filt == "G_TF_BILERP") uv_basis.inputs["EnableOffset"].default_value = int(f3dMat.rdp_settings.g_mdsft_text_filt != "G_TF_POINT") - set_texture_settings_node(material) def shift_num(num: int, amt: int): @@ -2435,201 +2432,11 @@ def has_f3d_nodes(material: Material): @persistent def load_handler(dummy): - logger.info("Checking for base F3D material library.") - for lib in bpy.data.libraries: - lib_path = bpy.path.abspath(lib.filepath) - - # detect if this is one your addon's libraries here - if "f3d_material_library.blend" in lib_path: - addon_dir = os.path.dirname(os.path.abspath(__file__)) - new_lib_path = os.path.join(addon_dir, "f3d_material_library.blend") - - if lib_path != new_lib_path: - logger.info("Reloading the library: %s : %s => %s" % (lib.name, lib_path, new_lib_path)) - - lib.filepath = new_lib_path - lib.reload() - bpy.context.scene["f3d_lib_dir"] = None # force node reload! - link_f3d_material_library() - for mat in bpy.data.materials: - if mat is not None and mat.use_nodes and mat.is_f3d: + if mat is not None and mat.use_nodes and mat.is_f3d and mat.mat_ver >= F3D_MAT_CUR_VERSION: rendermode_preset_to_advanced(mat) -SCENE_PROPERTIES_VERSION = 2 - - -def createOrUpdateSceneProperties(): - group = bpy.data.node_groups.get("SceneProperties") - upgrade_group = bool(group and group.get("version", -1) < SCENE_PROPERTIES_VERSION) - - if group and not upgrade_group: - # Group is ready and up to date - return - - if upgrade_group and group: - # Need to upgrade; remove old outputs - if bpy.app.version >= (4, 0, 0): - for item in group.interface.items_tree: - if item.item_type == "SOCKET" and item.in_out == "OUTPUT": - group.interface.remove(item) - else: - for out in group.outputs: - group.outputs.remove(out) - new_group = group - else: - logger.info("Creating Scene Properties") - # create a group - new_group = bpy.data.node_groups.new("SceneProperties", "ShaderNodeTree") - # create group outputs - new_group.nodes.new("NodeGroupOutput") - - new_group["version"] = SCENE_PROPERTIES_VERSION - - # Create outputs - if bpy.app.version >= (4, 0, 0): - tree_interface = new_group.interface - - _nodeFogEnable: NodeSocketFloat = tree_interface.new_socket( - "FogEnable", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeFogColor: NodeSocketColor = tree_interface.new_socket( - "FogColor", socket_type="NodeSocketColor", in_out="OUTPUT" - ) - _nodeF3D_NearClip: NodeSocketFloat = tree_interface.new_socket( - "F3D_NearClip", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeF3D_FarClip: NodeSocketFloat = tree_interface.new_socket( - "F3D_FarClip", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeBlender_Game_Scale: NodeSocketFloat = tree_interface.new_socket( - "Blender_Game_Scale", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeFogNear: NodeSocketFloat = tree_interface.new_socket( - "FogNear", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeFogFar: NodeSocketFloat = tree_interface.new_socket( - "FogFar", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - - _nodeAmbientColor: NodeSocketColor = tree_interface.new_socket( - "AmbientColor", socket_type="NodeSocketColor", in_out="OUTPUT" - ) - _nodeLight0Color: NodeSocketColor = tree_interface.new_socket( - "Light0Color", socket_type="NodeSocketColor", in_out="OUTPUT" - ) - _nodeLight0Dir: NodeSocketVector = tree_interface.new_socket( - "Light0Dir", socket_type="NodeSocketVector", in_out="OUTPUT" - ) - _nodeLight0Size: NodeSocketFloat = tree_interface.new_socket( - "Light0Size", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - _nodeLight1Color: NodeSocketColor = tree_interface.new_socket( - "Light1Color", socket_type="NodeSocketColor", in_out="OUTPUT" - ) - _nodeLight1Dir: NodeSocketVector = tree_interface.new_socket( - "Light1Dir", socket_type="NodeSocketVector", in_out="OUTPUT" - ) - _nodeLight1Size: NodeSocketFloat = tree_interface.new_socket( - "Light1Size", socket_type="NodeSocketFloat", in_out="OUTPUT" - ) - - else: - _nodeFogEnable: NodeSocketInt = new_group.outputs.new("NodeSocketInt", "FogEnable") - _nodeFogColor: NodeSocketColor = new_group.outputs.new("NodeSocketColor", "FogColor") - _nodeF3D_NearClip: NodeSocketFloat = new_group.outputs.new("NodeSocketFloat", "F3D_NearClip") - _nodeF3D_FarClip: NodeSocketFloat = new_group.outputs.new("NodeSocketFloat", "F3D_FarClip") - _nodeBlender_Game_Scale: NodeSocketFloat = new_group.outputs.new("NodeSocketFloat", "Blender_Game_Scale") - _nodeFogNear: NodeSocketInt = new_group.outputs.new("NodeSocketInt", "FogNear") - _nodeFogFar: NodeSocketInt = new_group.outputs.new("NodeSocketInt", "FogFar") - - _nodeAmbientColor: NodeSocketColor = new_group.outputs.new("NodeSocketColor", "AmbientColor") - _nodeLight0Color: NodeSocketColor = new_group.outputs.new("NodeSocketColor", "Light0Color") - _nodeLight0Dir: NodeSocketVectorDirection = new_group.outputs.new("NodeSocketVectorDirection", "Light0Dir") - _nodeLight0Size: NodeSocketInt = new_group.outputs.new("NodeSocketInt", "Light0Size") - _nodeLight1Color: NodeSocketColor = new_group.outputs.new("NodeSocketColor", "Light1Color") - _nodeLight1Dir: NodeSocketVectorDirection = new_group.outputs.new("NodeSocketVectorDirection", "Light1Dir") - _nodeLight1Size: NodeSocketInt = new_group.outputs.new("NodeSocketInt", "Light1Size") - - # Set outputs from render settings - sceneOutputs: NodeGroupOutput = new_group.nodes["Group Output"] - renderSettings: "Fast64RenderSettings_Properties" = bpy.context.scene.fast64.renderSettings - - update_scene_props_from_render_settings(sceneOutputs, renderSettings) - - -def createScenePropertiesForMaterial(material: Material): - node_tree = material.node_tree - - # Either create or update SceneProperties if needed - createOrUpdateSceneProperties() - - # create a new group node to hold the tree - scene_props = node_tree.nodes.new(type="ShaderNodeGroup") - scene_props.name = "SceneProperties" - scene_props.location = (-320, -23) - scene_props.node_tree = bpy.data.node_groups["SceneProperties"] - - # Fog links to reroutes and the CalcFog block - node_tree.links.new(scene_props.outputs["FogEnable"], node_tree.nodes["FogEnable"].inputs[0]) - node_tree.links.new(scene_props.outputs["FogColor"], node_tree.nodes["FogColor"].inputs[0]) - node_tree.links.new(scene_props.outputs["F3D_NearClip"], node_tree.nodes["CalcFog"].inputs["F3D_NearClip"]) - node_tree.links.new(scene_props.outputs["F3D_FarClip"], node_tree.nodes["CalcFog"].inputs["F3D_FarClip"]) - node_tree.links.new( - scene_props.outputs["Blender_Game_Scale"], node_tree.nodes["CalcFog"].inputs["Blender_Game_Scale"] - ) - node_tree.links.new(scene_props.outputs["FogNear"], node_tree.nodes["CalcFog"].inputs["FogNear"]) - node_tree.links.new(scene_props.outputs["FogFar"], node_tree.nodes["CalcFog"].inputs["FogFar"]) - - # Lighting links to reroutes. The colors are connected to other reroutes for update_light_colors, - # the others go directly to the Shade Color block. - node_tree.links.new(scene_props.outputs["AmbientColor"], node_tree.nodes["AmbientColor"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light0Color"], node_tree.nodes["Light0Color"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light0Dir"], node_tree.nodes["Light0Dir"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light0Size"], node_tree.nodes["Light0Size"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light1Color"], node_tree.nodes["Light1Color"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light1Dir"], node_tree.nodes["Light1Dir"].inputs[0]) - node_tree.links.new(scene_props.outputs["Light1Size"], node_tree.nodes["Light1Size"].inputs[0]) - - -def link_f3d_material_library(): - dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "f3d_material_library.blend") - - prevMode = bpy.context.mode - if prevMode != "OBJECT": - bpy.ops.object.mode_set(mode="OBJECT") - - with bpy.data.libraries.load(dir) as (data_from, data_to): - dirMat = os.path.join(dir, "Material") - dirNode = os.path.join(dir, "NodeTree") - for mat in data_from.materials: - if mat is not None: - bpy.ops.wm.link(filepath=os.path.join(dirMat, mat), directory=dirMat, filename=mat) - - # linking is SUPER slow, this only links if the scene hasnt been linked yet - # in future updates, this will likely need to be something numerated so if more nodes are added then they will be linked - if bpy.context.scene.get("f3d_lib_dir") != dirNode: - # link groups after to bring extra node_groups - for node_group in data_from.node_groups: - if node_group is not None: - bpy.ops.wm.link(filepath=os.path.join(dirNode, node_group), directory=dirNode, filename=node_group) - bpy.context.scene["f3d_lib_dir"] = dirNode - - # TODO: Figure out a better way to save the user's old mode - if prevMode != "OBJECT": - bpy.ops.object.mode_set(mode=get_mode_set_from_context_mode(prevMode)) - - -def get_f3d_node_tree() -> bpy.types.NodeTree: - try: - link_f3d_material_library() - mat = bpy.data.materials["fast64_f3d_material_library_beefwashere"] - return mat.node_tree.copy() - finally: - bpy.data.materials.remove(mat) - - def shouldConvOrCreateColorAttribute(mesh: Mesh, attr_name="Col"): has_attr, conv_attr = False, False if attr_name in mesh.attributes: @@ -2692,28 +2499,19 @@ def add_f3d_mat_to_obj(obj: bpy.types.Object, material, index=None): bpy.context.object.active_material_index = index -def createF3DMat(obj: Object | None, preset="Shaded Solid", index=None): - # link all node_groups + material from addon's data .blend - link_f3d_material_library() - - # a linked material containing the default layout for all the linked node_groups - mat = bpy.data.materials["fast64_f3d_material_library_beefwashere"] - # duplicate and rename the linked material - material = mat.copy() - material.name = "f3dlite_material" - # remove the linked material so it doesn't bother anyone or get meddled with - bpy.data.materials.remove(mat) - - createScenePropertiesForMaterial(material) - - add_f3d_mat_to_obj(obj, material, index) - - material.is_f3d = True - material.mat_ver = F3D_MAT_CUR_VERSION - - update_preset_manual_v4(material, preset) - - return material +def createF3DMat(obj: Object | None, preset="Shaded Solid", index=None, editable=False): + material = bpy.data.materials.new("f3d_material") + try: + generate_f3d_node_groups(editable=editable) + material.is_f3d = not editable + material.mat_ver = F3D_MAT_CUR_VERSION + create_f3d_nodes_in_material(material, editable=editable) + add_f3d_mat_to_obj(obj, material, index) + update_preset_manual_v4(material, preset) + return material + except Exception as exc: + bpy.data.materials.remove(material) + raise exc def reloadDefaultF3DPresets(): @@ -2807,9 +2605,8 @@ def execute(self, context): if material is None: self.report({"ERROR"}, "No active material.") else: - node_tree_copy(get_f3d_node_tree(), material.node_tree) - createScenePropertiesForMaterial(material) - update_all_node_values(material, context) + generate_f3d_node_groups(False) + create_f3d_nodes_in_material(material) self.report({"INFO"}, "Success!") return {"FINISHED"} @@ -2857,28 +2654,27 @@ def update_tex_field_prop(self: Property, context: Context): if not material: return + set_texture_settings_node(material) prop_path = self.path_from_id() tex_property, tex_index = get_tex_prop_from_path(material, prop_path) tex_size = tex_property.get_tex_size() if tex_size[0] > 0 and tex_size[1] > 0: update_tex_values_field(material, tex_property, tex_size, tex_index) - set_texture_settings_node(material) def toggle_auto_prop(self, context: Context): with F3DMaterial_UpdateLock(get_material_from_context(context)) as material: if not material: return + set_texture_settings_node(material) prop_path = self.path_from_id() - tex_property, tex_index = get_tex_prop_from_path(material, prop_path) - if tex_property.autoprop: + for i in range(2): + tex_property = getattr(material.f3d_mat, f"tex{i}") tex_size = tuple([s for s in tex_property.get_tex_size()]) if tex_size[0] > 0 and tex_size[1] > 0: - update_tex_values_field(material, tex_property, tex_size, tex_index) - - set_texture_settings_node(material) + update_tex_values_field(material, tex_property, tex_size, i) class TextureFieldProperty(PropertyGroup): diff --git a/fast64_internal/f3d/f3d_material_helpers.py b/fast64_internal/f3d/f3d_material_helpers.py index da54ca9d8..b42a3d629 100644 --- a/fast64_internal/f3d/f3d_material_helpers.py +++ b/fast64_internal/f3d/f3d_material_helpers.py @@ -35,97 +35,3 @@ def lock_material(self): def unlock_material(self): if hasattr(self.material, "f3d_update_flag"): self.material.f3d_update_flag = False - - -GENERAL_EXCLUDE = ( - "rna_type", - "type", - "bl_icon", - "bl_label", - "bl_idname", - "bl_description", - "bl_static_type", - "bl_height_default", - "bl_width_default", - "bl_width_max", - "bl_width_min", - "bl_height_max", - "bl_height_min", - "socket_idname", - "color_tag", - "select", - "is_inactive", - "is_icon_visible", - "parent", -) -EXCLUDE_FROM_NODE = GENERAL_EXCLUDE + ( - "inputs", - "outputs", - "dimensions", - "interface", - "internal_links", - "image_user", - "texture_mapping", - "color_mapping", -) -EXCLUDE_FROM_GROUP_INPUT_OUTPUT = GENERAL_EXCLUDE + ( - "bl_subtype_label", - "bl_socket_idname", - "display_shape", - "label", - "identifier", - "is_output", - "is_linked", - "is_multi_input", - "node", - "is_unavailable", - "show_expanded", - "link_limit", - "default_attribute_name", - "name", - "index", - "position", - "socket_type", - "in_out", - "item_type", - "default_input", # poorly documented, what does it do? -) - - -def node_tree_copy(src: NodeTree, dst: NodeTree): - def copy_attributes(src, dst, excludes=None): - fails, excludes = [], excludes if excludes else [] - attributes = {attr.identifier for attr in src.bl_rna.properties if attr.identifier not in excludes} - for attr in attributes: - try: - setattr(dst, attr, getattr(src, attr)) - except Exception as exc: # pylint: disable=broad-except - fails.append((dst, attr, exc)) - if fails: - print(f"Failed to copy all attributes: {fails}") - - dst.nodes.clear() - dst.links.clear() - - node_mapping = {} # To not have to look up the new node for linking - for src_node in src.nodes: # Copy all nodes - node_mapping[src_node] = dst.nodes.new(src_node.bl_idname) - - for src_node, dst_node in node_mapping.items(): - if src_node.parent is not None: - dst_node.parent = node_mapping[src_node.parent] - copy_attributes(src_node, dst_node, excludes=EXCLUDE_FROM_NODE) - - for src_node, dst_node in node_mapping.items(): - input_output_exclude = EXCLUDE_FROM_GROUP_INPUT_OUTPUT - if src_node.type == "REROUTE": - input_output_exclude += ("default_value",) - for src_input, dst_input in zip(src_node.inputs, dst_node.inputs): # Copy all inputs - copy_attributes(src_input, dst_input, excludes=input_output_exclude) - for src_output, dst_output in zip(src_node.outputs, dst_node.outputs): # Copy all outputs - copy_attributes(src_output, dst_output, excludes=input_output_exclude) - - for i, src_input in enumerate(src_node.inputs): # Link all nodes - for link in src_input.links: - connected_node = node_mapping[link.from_node] - dst.links.new(connected_node.outputs[link.from_socket.name], dst_node.inputs[i]) diff --git a/fast64_internal/f3d/f3d_material_library.blend b/fast64_internal/f3d/f3d_material_library.blend deleted file mode 100644 index d9edfb81d..000000000 Binary files a/fast64_internal/f3d/f3d_material_library.blend and /dev/null differ diff --git a/fast64_internal/f3d/f3d_node_gen.py b/fast64_internal/f3d/f3d_node_gen.py new file mode 100644 index 000000000..e77d1437d --- /dev/null +++ b/fast64_internal/f3d/f3d_node_gen.py @@ -0,0 +1,1117 @@ +import dataclasses +import hashlib +import json +import time +import traceback +from pathlib import Path +from typing import Any + +import bpy +from bpy.types import ( + Panel, + NodeTree, + ShaderNodeTree, + NodeLink, + NodeSocket, + ColorRamp, + ColorMapping, + TexMapping, + Node, + NodeGroupOutput, + Material, + PropertyGroup, +) +from bpy.props import StringProperty, PointerProperty +from bpy.utils import register_class, unregister_class +from mathutils import Color, Vector, Euler + +from ..utility import PluginError, to_valid_file_name +from ..operators import OperatorBase + +# Enable this to show the gather operator, show create editable, always reload, this is a development feature +DEBUG_MODE = False + +SERIALIZED_NODE_LIBRARY_PATH = Path(__file__).parent / "node_library" / "main.json" + +GENERAL_EXCLUDE = ( + "rna_type", + "type", + "bl_icon", + "bl_label", + "bl_idname", + "bl_description", + "bl_static_type", + "bl_height_default", + "bl_width_default", + "bl_width_max", + "bl_width_min", + "bl_height_max", + "bl_height_min", + "socket_idname", + "color_tag", + "select", + "is_inactive", + "is_icon_visible", +) +EXCLUDE_FROM_NODE = GENERAL_EXCLUDE + ( + "inputs", + "outputs", + "dimensions", + "interface", + "internal_links", + "image_user", + "image", + "name", + "location_absolute", + "location", +) +EXCLUDE_FROM_GROUP_INPUT_OUTPUT = GENERAL_EXCLUDE + ( + "bl_subtype_label", + "bl_socket_idname", + "display_shape", + "label", + "identifier", + "is_output", + "is_linked", + "is_multi_input", + "node", + "is_unavailable", + "show_expanded", + "link_limit", + "default_attribute_name", + "name", + "index", + "position", + "parent", + "socket_type", + "in_out", + "item_type", + "default_input", # poorly documented, what does it do? +) + +GLOBAL_DEFAULTS = { + "attribute_domain": "POINT", + "attribute_type": "GEOMETRY", + "blend_color": (0.800000011920929, 0.800000011920929, 0.800000011920929), + "blend_factor": 0.0, + "blend_type": "MIX", + "brightness": 1.0, + "clamp": True, + "clamp_type": "MINMAX", + "color": (0.6079999804496765, 0.6079999804496765, 0.6079999804496765), + "color_ramp": { + "color_mode": "RGB", + "elements": ( + {"alpha": 1.0, "color": (0.0, 0.0, 0.0, 1.0), "position": 0.0}, + {"alpha": 1.0, "color": (1.0, 1.0, 1.0, 1.0), "position": 1.0}, + ), + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp", + }, + "contrast": 1.0, + "convert_from": "WORLD", + "convert_to": "CAMERA", + "data_type": "FLOAT", + "default_value": 0.0, + "description": "", + "enabled": True, + "extension": "REPEAT", + "height": 100.0, + "hide": False, + "hide_value": False, + "interpolation": "Closest", + "interpolation_type": "LINEAR", + "invert": False, + "is_active_output": True, + "label": "", + "label_size": 20, + "mapping": "FLAT", + "mapping_x": "X", + "mapping_y": "Y", + "mapping_z": "Z", + "max": (1.0, 1.0, 1.0), + "max_value": 3.4028234663852886e38, + "min": (0.0, 0.0, 0.0), + "min_value": -3.4028234663852886e38, + "mute": False, + "node_tree": {"name": "MixValue", "serialized_type": "NodeTree"}, + "noise_dimensions": "2D", + "operation": "MULTIPLY", + "parent": None, + "projection": "FLAT", + "projection_blend": 0.0, + "rotation": (0.0, 0.0, 0.0), + "rotation_type": "X_AXIS", + "saturation": 1.0, + "scale": (1.0, 1.0, 1.0), + "show_options": True, + "show_preview": False, + "show_texture": False, + "shrink": True, + "text": None, + "translation": (0.0, 0.0, 0.0), + "use_alpha": False, + "use_clamp": False, + "use_color_ramp": False, + "use_custom_color": False, + "use_max": False, + "use_min": False, + "vector_type": "POINT", + "width": 100.0, + "width_hidden": 100.0, + "subtype": "NONE", + "clamp": False, + "pin_gizmo": False, + "warning_propagation": "ALL", + "is_inspect_output": False, + "factor_mode": "UNIFORM", + "clamp_factor": True, + "clamp_result": False, + "normalize": True, + "noise_type": "FBM", + "mode": "RGB", + # unused in shader nodes + "hide_in_modifier": False, + "force_non_field": False, + "layer_selection_field": False, +} + + +class DefaultDefinition: + def __init__(self, names: list[str], defaults: dict[str, Any]): + self.names = names + self.defaults = GLOBAL_DEFAULTS | defaults + + +DEFAULTS = [ + DefaultDefinition(["NodeSocketInt"], {"default_value": 0, "max_value": 1, "min_value": 0}), + DefaultDefinition(["NodeSocketVector", "NodeSocketRotation"], {"default_value": (0.0, 0.0, 0.0)}), + DefaultDefinition(["NodeSocketVectorEuler"], {"default_value": (0.0, 0.0, 0.0), "enabled": False}), + DefaultDefinition(["NodeSocketColor"], {"default_value": (0.0, 0.0, 0.0, 1.0)}), + DefaultDefinition(["ShaderNodeMixRGB"], {"data_type": "RGBA", "width": 140.0}), + DefaultDefinition(["NodeSocketVectorDirection"], {"subtype": "DIRECTION", "default_value": (0.0, 0.0, 0.0)}), + DefaultDefinition(["ShaderNodeVectorTransform"], {"vector_type": "NORMAL", "width": 140.0}), + DefaultDefinition( + ["ShaderNodeVectorRotate", "ShaderNodeSeparateXYZ", "ShaderNodeBsdfTransparent", "ShaderNodeTexImage"], + {"hide": True, "width": 140.0}, + ), + DefaultDefinition(["ShaderNodeVectorMath"], {"operation": "ADD", "width": 140.0}), + DefaultDefinition(["ShaderNodeTexNoise"], {"show_texture": True, "width": 140.0}), + DefaultDefinition(["NodeSocketFloatUnsigned"], {"default_value": 1.5}), + DefaultDefinition(["NodeSocketFloatFactor"], {"default_value": 0.5}), + DefaultDefinition(["NodeSocketFloatAngle"], {"default_value": -1.5707963705062866}), + DefaultDefinition( + [ + "NodeGroupInput", + "NodeGroupOutput", + "ShaderNodeBsdfTransparent", + "ShaderNodeCameraData", + "ShaderNodeClamp", + "ShaderNodeCombineRGB", + "ShaderNodeCombineXYZ", + "ShaderNodeGamma", + "ShaderNodeGroup", + "ShaderNodeMapRange", + "ShaderNodeMath", + "ShaderNodeMixShader", + "ShaderNodeNewGeometry", + "ShaderNodeRGBToBW", + "ShaderNodeSeparateRGB", + "ShaderNodeValue", + ], + {"width": 140.0}, + ), +] +DEFAULTS = {name: definition.defaults for definition in DEFAULTS for name in definition.names} + +SCENE_PROPERTIES_VERSION = 2 + + +class ErrorState: + def __init__(self, error_message_queue: list[str] = None): + self.error_message_queue = error_message_queue or [] + self.errors: list[tuple[str, Exception]] = [] + + def copy(self, message: str = None): + errors = ErrorState(self.error_message_queue.copy() + ([message] if message else [])) + errors.errors = self.errors + return errors + + +def print_with_exc(error_state: ErrorState, exc: Exception): + message = "\n".join(error_state.error_message_queue) + print(message + ":\n" + str(exc)) + print("\n".join(traceback.format_exception(exc))) + error_state.errors.append((message, exc)) + + +def createOrUpdateSceneProperties(): + """TODO: Include in the library instead""" + from ..render_settings import update_scene_props_from_render_settings + + group = bpy.data.node_groups.get("SceneProperties") + upgrade_group = bool(group and group.get("version", -1) < SCENE_PROPERTIES_VERSION) + + if group and not upgrade_group: + # Group is ready and up to date + return + + if upgrade_group and group: + # Need to upgrade; remove old outputs + if bpy.app.version >= (4, 0, 0): + for item in list(group.interface.items_tree).copy(): + if item.item_type == "SOCKET" and item.in_out == "OUTPUT": + group.interface.remove(item) + else: + for out in list(group.outputs).copy(): + group.outputs.remove(out) + new_group = group + else: + print("Creating Scene Properties") + # create a group + new_group = bpy.data.node_groups.new("SceneProperties", "ShaderNodeTree") + # create group outputs + new_group.nodes.new("NodeGroupOutput") + + new_group["version"] = SCENE_PROPERTIES_VERSION + + # Create outputs + if bpy.app.version >= (4, 0, 0): + + def add_new_socket(socket_type: str, name: str, in_out: str = "OUTPUT"): + socket_type = convert_bl_idname_from_3_2(socket_type, {}) + return new_group.interface.new_socket(name, socket_type=socket_type, in_out=in_out) + + else: + + def add_new_socket(socket_type: str, name: str, in_out: str = "OUTPUT"): + return getattr(new_group, in_out.lower() + "s").new(socket_type, name) + + add_new_socket("NodeSocketInt", "FogEnable") + add_new_socket("NodeSocketColor", "FogColor") + add_new_socket("NodeSocketFloat", "F3D_NearClip") + add_new_socket("NodeSocketFloat", "F3D_FarClip") + add_new_socket("NodeSocketFloat", "Blender_Game_Scale") + add_new_socket("NodeSocketInt", "FogNear") + add_new_socket("NodeSocketInt", "FogFar") + + add_new_socket("NodeSocketColor", "AmbientColor") + add_new_socket("NodeSocketColor", "Light0Color") + add_new_socket("NodeSocketVectorDirection", "Light0Dir") + add_new_socket("NodeSocketInt", "Light0Size") + add_new_socket("NodeSocketColor", "Light1Color") + add_new_socket("NodeSocketVectorDirection", "Light1Dir") + add_new_socket("NodeSocketInt", "Light1Size") + + # Set outputs from render settings + sceneOutputs: NodeGroupOutput = new_group.nodes["Group Output"] + renderSettings: "Fast64RenderSettings_Properties" = bpy.context.scene.fast64.renderSettings + + update_scene_props_from_render_settings(sceneOutputs, renderSettings) + + +def createScenePropertiesForMaterial(material: Material): + node_tree = material.node_tree + + # Either create or update SceneProperties if needed + createOrUpdateSceneProperties() + + # create a new group node to hold the tree + scene_props = node_tree.nodes.new(type="ShaderNodeGroup") + scene_props.name = "SceneProperties" + scene_props.location = (-320, -23) + scene_props.node_tree = bpy.data.node_groups["SceneProperties"] + + # Fog links to reroutes and the CalcFog block + node_tree.links.new(scene_props.outputs["FogEnable"], node_tree.nodes["FogEnable"].inputs[0]) + node_tree.links.new(scene_props.outputs["FogColor"], node_tree.nodes["FogColor"].inputs[0]) + node_tree.links.new(scene_props.outputs["F3D_NearClip"], node_tree.nodes["CalcFog"].inputs["F3D_NearClip"]) + node_tree.links.new(scene_props.outputs["F3D_FarClip"], node_tree.nodes["CalcFog"].inputs["F3D_FarClip"]) + node_tree.links.new( + scene_props.outputs["Blender_Game_Scale"], node_tree.nodes["CalcFog"].inputs["Blender_Game_Scale"] + ) + node_tree.links.new(scene_props.outputs["FogNear"], node_tree.nodes["CalcFog"].inputs["FogNear"]) + node_tree.links.new(scene_props.outputs["FogFar"], node_tree.nodes["CalcFog"].inputs["FogFar"]) + + # Lighting links to reroutes. The colors are connected to other reroutes for update_light_colors, + # the others go directly to the Shade Color block. + node_tree.links.new(scene_props.outputs["AmbientColor"], node_tree.nodes["AmbientColor"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light0Color"], node_tree.nodes["Light0Color"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light0Dir"], node_tree.nodes["Light0Dir"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light0Size"], node_tree.nodes["Light0Size"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light1Color"], node_tree.nodes["Light1Color"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light1Dir"], node_tree.nodes["Light1Dir"].inputs[0]) + node_tree.links.new(scene_props.outputs["Light1Size"], node_tree.nodes["Light1Size"].inputs[0]) + + +def get_bl_idname(owner: object): + return getattr(owner, "bl_idname", None) or getattr(owner, "bl_socket_idname", None) + + +def convert_bl_idname_to_3_2(owner: NodeSocket | Node): + bl_idname = get_bl_idname(owner) + if bpy.app.version >= (4, 0, 0): + if bl_idname == "NodeSocketVector" and getattr(owner, "subtype", "DIRECTION") == "DIRECTION": + return "NodeSocketVectorDirection" + if bl_idname == "ShaderNodeMix" and getattr(owner, "data_type", "") == "RGBA": + return "ShaderNodeMixRGB" + if bl_idname == "ShaderNodeCombineColor" and getattr(owner, "mode", "") == "RGB": + return "ShaderNodeCombineRGB" + return bl_idname + + +def get_defaults_bl_idname(owner: object): + return DEFAULTS.get(convert_bl_idname_to_3_2(owner), GLOBAL_DEFAULTS) + + +def convert_bl_idname_from_3_2(bl_idname: str, data: dict): + if bpy.app.version >= (4, 0, 0): + if bl_idname == "NodeSocketVectorDirection": + data["subtype"] = "DIRECTION" + return "NodeSocketVector" + elif bl_idname == "ShaderNodeMixRGB": + data["data_type"] = "RGBA" + return "ShaderNodeMix" + elif bl_idname == "ShaderNodeCombineRGB": + data["mode"] = "RGB" + return "ShaderNodeCombineColor" + elif bl_idname == "NodeSocketInt": + return "NodeSocketFloat" + return bl_idname + + +def convert_inputs_to_3_2(node: Node, inputs: list): + inputs = list(inputs) + if node.bl_idname == "ShaderNodeMix" and getattr(node, "data_type", "") == "RGBA": + return inputs[0:1] + inputs[6:8] + return inputs + + +def convert_outputs_to_3_2(node: Node, outputs: list): + outputs = list(outputs) + if node.bl_idname == "ShaderNodeMix" and getattr(node, "data_type", "") == "RGBA": + return outputs[2:3] + return outputs + + +def convert_in_i_from_3_2(i: int, serialized_node: "SerializedNode"): + if bpy.app.version >= (4, 0, 0): + if serialized_node.bl_idname == "ShaderNodeMixRGB" and i >= 1 and i <= 2: + return i + 5 + return i + + +def convert_out_i_from_3_2(i: int, serialized_node: "SerializedNode"): + if bpy.app.version >= (4, 0, 0): + if serialized_node.bl_idname == "ShaderNodeMixRGB" and i == 0: + return 2 + return i + + +def get_attributes(owner: object, excludes=None): + data = {} + excludes = excludes or [] + attributes = [attr.identifier for attr in owner.bl_rna.properties if attr.identifier not in excludes] + defaults = get_defaults_bl_idname(owner) + + for attr in attributes: + value = getattr(owner, attr) + serialized_value = value + if isinstance(value, (Color, Vector, Euler)) or (hasattr(value, "__iter__") and type(value) is not str): + serialized_value = tuple(value) + elif isinstance(value, ColorRamp): + serialized_value = { + "serialized_type": "ColorRamp", + "color_mode": value.color_mode, + "elements": [ + {"alpha": e.alpha, "color": tuple(e.color), "position": e.position} for e in value.elements + ], + "hue_interpolation": value.hue_interpolation, + "interpolation": value.interpolation, + } + elif isinstance(value, (ColorMapping, TexMapping)): + serialized_value = {"serialized_type": "Default", "data": get_attributes(value, excludes)} + elif isinstance(value, NodeTree): + serialized_value = {"serialized_type": "NodeTree", "name": value.name} + elif isinstance(value, Node): + serialized_value = {"serialized_type": "Node", "name": value.name} + if attr not in defaults or serialized_value != defaults[attr]: + data[attr] = serialized_value + return dict(sorted(data.items())) + + +@dataclasses.dataclass +class SerializedLink: + node: str = "" + name: str | None = None + index: int = 0 + + def to_json(self): + data = {"node": self.node, "index": self.index} + if self.name: + data["name"] = self.name + return data + + def from_json(self, data: dict): + self.node = data.get("node") + self.name = data.get("name") + self.index = data.get("index") + return self + + +@dataclasses.dataclass +class SerializedInputValue: + name: str | None = None + data: dict[str, object] = dataclasses.field(default_factory=dict) + + def to_json(self): + data = {} + if self.name is not None: + data["name"] = self.name + if self.data: + data.update(self.data) + return data + + def from_json(self, data: dict): + self.name = data.pop("name", None) + self.data = data + return self + + +@dataclasses.dataclass +class SerializedGroupInputValue(SerializedInputValue): + bl_idname: str = "" + + def to_json(self): + return super().to_json() | {"bl_idname": self.bl_idname} + + def from_json(self, data: dict): + self.bl_idname = data.pop("bl_idname", None) + super().from_json(data) + return self + + +@dataclasses.dataclass +class SerializedOutputValue(SerializedInputValue): + links: list[SerializedLink] = dataclasses.field(default_factory=list) + + def to_json(self): + data = super().to_json() + if self.links: + data["links"] = [link.to_json() for link in self.links] + return data + + def from_json(self, data: dict): + self.links = [SerializedLink().from_json(link) for link in data.pop("links", [])] + super().from_json(data) + return self + + +@dataclasses.dataclass +class SerializedNode: + bl_idname: str = "" + location: tuple[float, float] = (0, 0) + data: dict[str, object] = dataclasses.field(default_factory=dict) + inputs: dict[int, SerializedInputValue] = dataclasses.field(default_factory=dict) + outputs: dict[int, SerializedOutputValue] = dataclasses.field(default_factory=dict) + + def to_json(self): + data = {"bl_idname": self.bl_idname} + data["location"] = self.location + if self.data: + data.update(self.data) + if self.inputs: + data["inputs"] = {i: inp.to_json() for i, inp in self.inputs.items()} + if self.outputs: + data["outputs"] = {i: out.to_json() for i, out in self.outputs.items() if out.data or out.links} + return data + + def from_json(self, data: dict): + self.bl_idname = data.pop("bl_idname", None) + self.location = data.pop("location", (0, 0)) + self.inputs = {int(i): SerializedInputValue().from_json(inp) for i, inp in data.pop("inputs", {}).items()} + self.outputs = {int(i): SerializedOutputValue().from_json(out) for i, out in data.pop("outputs", {}).items()} + self.data = data + return self + + +def dict_hash(dictionary: dict[str, Any]) -> str: + """MD5 hash of a dictionary. https://stackoverflow.com/a/67438471""" + dhash = hashlib.md5() + # We need to sort arguments so {'a': 1, 'b': 2} is + # the same as {'b': 2, 'a': 1} + encoded = json.dumps(dictionary, sort_keys=True).encode() + dhash.update(encoded) + return dhash.hexdigest() + + +@dataclasses.dataclass +class SerializedNodeTree: + name: str = "" + nodes: dict[str, SerializedNode] = dataclasses.field(default_factory=dict) + links: list[SerializedLink] = dataclasses.field(default_factory=list) + + inputs: list[SerializedGroupInputValue] = dataclasses.field(default_factory=list) + outputs: list[SerializedGroupInputValue] = dataclasses.field(default_factory=list) + + cached_hash: str = "" + interface_hash: str = "" + + def to_json(self): + print(f"Serializing node tree {self.name} to json") + data = {"name": self.name, "nodes": {name: node.to_json() for name, node in self.nodes.items()}} + if self.links: + data["links"] = [link.to_json() for link in self.links] + data["cached_hash"] = dict_hash(data) + if self.inputs: + data["inputs"] = [inp.to_json() for inp in self.inputs] + if self.outputs: + data["outputs"] = [out.to_json() for out in self.outputs] + data["interface_hash"] = dict_hash(data.get("inputs", []) + data.get("outputs", [])) + data["bpy_ver"] = bpy.app.version + return data + + def from_json(self, data: dict): + self.name = data["name"] + self.nodes = {name: SerializedNode().from_json(node) for name, node in data["nodes"].items()} + self.links = [SerializedLink().from_json(link) for link in data.get("links", [])] + self.inputs = [SerializedGroupInputValue().from_json(inp) for inp in data.get("inputs", [])] + self.outputs = [SerializedGroupInputValue().from_json(out) for out in data.get("outputs", [])] + self.cached_hash = data.get("cached_hash", "") + self.interface_hash = data.get("interface_hash", "") + return self + + def from_node_tree(self, node_tree: NodeTree): + is_new = bpy.app.version >= (4, 0, 0) + print(f"Serializing node tree {node_tree.name}") + for in_out in ("INPUT", "OUTPUT"): + prop = in_out.lower() + "s" + self_prop = getattr(self, prop) + if is_new: + sockets = [socket for socket in node_tree.interface.items_tree.values() if socket.in_out == in_out] + else: + sockets = getattr(node_tree, prop) + for socket in sockets: + self_prop.append( + SerializedGroupInputValue( + socket.name, + get_attributes(socket, EXCLUDE_FROM_GROUP_INPUT_OUTPUT), + convert_bl_idname_to_3_2(socket), + ) + ) + for node in node_tree.nodes: + if hasattr(node, "location_absolute"): + location = node.location_absolute + else: + location = node.location + parent = node.parent + while parent is not None: + location = tuple(x + y for x, y in zip(parent.location, location)) + parent = parent.parent + + serialized_node = SerializedNode( + convert_bl_idname_to_3_2(node), + tuple(round(0.0 if x == -0 else x, 4) for x in location), + get_attributes(node, EXCLUDE_FROM_NODE), + ) + self.nodes[node.name] = serialized_node + for serialized_node, node in zip(self.nodes.values(), node_tree.nodes): + inputs = convert_inputs_to_3_2(node, node.inputs) + for i, inp in enumerate(inputs): + name = None + if not any(other for other in inputs if other != inp and other.name == inp.name): + name = inp.name + serialized_node.inputs[i] = SerializedInputValue( + name, get_attributes(inp, EXCLUDE_FROM_GROUP_INPUT_OUTPUT) + ) + outputs = convert_outputs_to_3_2(node, node.outputs) + for i, out in enumerate(outputs): + name = None + if not any(other for other in outputs if other != out and other.name == out.name): + name = out.name + serialized_node.outputs[i] = serialized_out = SerializedOutputValue( + name, get_attributes(out, EXCLUDE_FROM_GROUP_INPUT_OUTPUT) + ) + link: NodeLink + for link in out.links: + name = None + inputs = convert_inputs_to_3_2(link.to_node, link.to_node.inputs) + if link.to_socket not in inputs: + continue + if not any( + other for other in inputs if other == link.to_socket and other.name == link.to_socket.name + ): + name = link.to_socket.name + serialized_out.links.append(SerializedLink(link.to_node.name, name, inputs.index(link.to_socket))) + return self + + +@dataclasses.dataclass +class SerializedMaterialNodeTree(SerializedNodeTree): + dependencies: dict[str, SerializedNodeTree] = dataclasses.field(default_factory=dict) + + def to_json(self): + data = super().to_json() + data["dependencies"] = [to_valid_file_name(name) for name in self.dependencies.keys()] + return data + + def load(self, path: Path): + with path.open("r", encoding="utf-8") as f: + data = json.load(f) + super().from_json(data) + for name in data.get("dependencies", []): + node_tree = SerializedNodeTree() + with Path(path.parent / (name + ".json")).open("r", encoding="utf-8") as f: + data = json.load(f) + node_tree.from_json(data) + self.dependencies[node_tree.name] = node_tree + return self + + def dump(self, path: Path): + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8") as f: + json.dump(self.to_json(), f, indent="\t", sort_keys=True) + for name, node_tree in self.dependencies.items(): + with Path(path.parent / to_valid_file_name(name + ".json")).open("w") as f: + json.dump(node_tree.to_json(), f, indent="\t", sort_keys=True) + + +class GatherF3DNodes(OperatorBase): + bl_idname = "material.f3d_gather_f3d_nodes" + bl_label = "Gather F3D Nodes" + bl_options = {"REGISTER", "UNDO", "PRESET"} + + @classmethod + def poll(cls, context): + return context.material is not None + + def execute_operator(self, context): + material = context.material + assert material and material.node_tree + + node_groups: dict[str, SerializedNodeTree] = {} + for node_group in bpy.data.node_groups.values(): + node_groups[node_group.name] = SerializedNodeTree(node_group.name).from_node_tree(node_group) + material_nodes = SerializedMaterialNodeTree(material.name, dependencies=node_groups).from_node_tree( + material.node_tree + ) + material_nodes.dump(SERIALIZED_NODE_LIBRARY_PATH) + + load_f3d_nodes() + + +class CreateWorkableF3DNodes(OperatorBase): + bl_idname = "object.f3d_gather_f3d_nodes" + bl_label = "Create Editable F3D Nodes" + bl_options = {"REGISTER", "UNDO", "PRESET"} + + @classmethod + def poll(cls, context): + return context.object is not None + + def execute_operator(self, context): + from .f3d_material import createF3DMat + + _mat = createF3DMat(context.object, editable=True) + + +class GatherF3DNodesPanel(Panel): + bl_label = "Gather F3D Nodes" + bl_idname = "OBJECT_PT_GatherF3DNodes" + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "material" + bl_options = {"HIDE_HEADER"} + + @classmethod + def poll(cls, context): + return True + + def draw(self, context): + col = self.layout.column() + col.operator(GatherF3DNodes.bl_idname) + col.operator(CreateWorkableF3DNodes.bl_idname) + + +SERIALIZED_NODE_LIBRARY: SerializedMaterialNodeTree | None = None +NODE_LIBRARY_EXCEPTION: Exception | None = None + + +def load_f3d_nodes(): + global SERIALIZED_NODE_LIBRARY, NODE_LIBRARY_EXCEPTION + try: + start = time.perf_counter() + SERIALIZED_NODE_LIBRARY = SerializedMaterialNodeTree().load(SERIALIZED_NODE_LIBRARY_PATH) + end = time.perf_counter() + print(f"Loaded f3d_nodes.json in {end - start:.3f} seconds") + except Exception as exc: + NODE_LIBRARY_EXCEPTION = exc + traceback.print_exc() + print(f"Failed to load f3d_nodes.json: {exc}") + + +def set_node_prop(prop: object, attr: str, value: object, nodes, errors: ErrorState): + if not hasattr(prop, attr): + return + if isinstance(value, dict) and "serialized_type" in value: + if value["serialized_type"] == "Default": + for key, val in value["data"].items(): + set_node_prop(getattr(prop, attr), key, val, nodes, errors) + elif value["serialized_type"] == "ColorRamp": + prop_value = getattr(prop, attr) + assert isinstance(prop_value, ColorRamp), f"Expected ColorRamp, got {type(prop_value)}" + prop_value.color_mode = value["color_mode"] + for element in prop_value.elements: + try: # HACK: Bug with this iter? copy doesn´t work either + prop_value.elements.remove(element) + except: + pass + for serialized_element in value["elements"]: + element = prop_value.elements.new(serialized_element["position"]) + element.color = serialized_element["color"] + element.alpha = serialized_element["alpha"] + prop_value.hue_interpolation = value["hue_interpolation"] + prop_value.interpolation = value["interpolation"] + elif value["serialized_type"] == "NodeTree": + setattr(prop, attr, find_node_group(value["name"])) + elif value["serialized_type"] == "Node": + setattr(prop, attr, nodes[value["name"]]) + else: + raise ValueError(f"Unknown serialized type {value['serialized_type']}") + return + existing_value = getattr(prop, attr, None) + try: + if existing_value != value: + setattr(prop, attr, value) + except Exception as exc: + print_with_exc( + errors.copy( + f'Failed to set "{attr}" ({existing_value}, {type(existing_value)}) to "{value}" ({type(value)})' + ), + exc, + ) + + +def set_attrs(owner: object, attrs: dict[str, object], nodes: dict[str, Node], excludes: set[str], errors: ErrorState): + defaults = get_defaults_bl_idname(owner) + for attr, value in attrs.items(): + try: + set_node_prop(owner, attr, value, nodes, errors) + except Exception as exc: + print_with_exc(errors, exc) + for key, value in defaults.items(): + if hasattr(owner, key) and key not in attrs and key not in excludes: + cur_errors = errors.copy("Failed to set default value") + try: + if isinstance(value, tuple): + value = list(value) + set_node_prop(owner, key, value, nodes, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + + +def try_name_then_index(collection, name: str | None, index: int): + if name is not None and name in collection: + return collection[name] + elif index < len(collection): + return collection[index] + + +def set_values_and_create_links( + node_tree: ShaderNodeTree, serialized_node_tree: SerializedNodeTree, new_nodes: list[Node], errors: ErrorState +): + def get_name(i: int, inp: SerializedInputValue, socket: NodeSocket | None = None): + if socket is not None: + return f'"{socket.name}"' + if inp.name is not None: + return f'"{inp.name}"' + return str(i) + + links, nodes = node_tree.links, node_tree.nodes + + for node, serialized_node in zip(new_nodes, serialized_node_tree.nodes.values()): + cur_errors = errors.copy(f'Failed to set values for node "{node.name}"') + try: + set_attrs(node, serialized_node.data, nodes, EXCLUDE_FROM_NODE, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + + for serialized_node, node in zip(serialized_node_tree.nodes.values(), new_nodes): + for i, serialized_inp in serialized_node.inputs.items(): + name = get_name(i, serialized_inp) + cur_errors = errors.copy(f'Failed to set values for input {name} of node "{node.label or node.name}"') + try: + inp = try_name_then_index(node.inputs, serialized_inp.name, convert_in_i_from_3_2(i, serialized_node)) + if inp is None: + raise IndexError("Socket not found") + cur_errors = errors.copy( + f'Failed to set values for input "{inp.name}" (serialized has {name}) of node "{node.label or node.name}"' + ) + set_attrs(inp, serialized_inp.data, nodes, EXCLUDE_FROM_GROUP_INPUT_OUTPUT, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + for i, serialized_out in serialized_node.outputs.items(): + name = get_name(i, serialized_out) + cur_errors = errors.copy( + f'Failed to set values and links for output {name} of node "{node.label or node.name}"' + ) + try: + out_index = convert_out_i_from_3_2(i, serialized_node) + out = try_name_then_index(node.outputs, serialized_out.name, out_index) + if out is None: + raise IndexError("Socket not found") + cur_errors = errors.copy( + f'Failed to set values for output "{out.name}" (serialized has {name}) of node "{node.label or node.name}"' + ) + try: + set_attrs(out, serialized_out.data, nodes, EXCLUDE_FROM_GROUP_INPUT_OUTPUT, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + + cur_errors = errors.copy( + f'Failed to set links for output "{out.name}" (serialized has {name}) of node "{node.label or node.name}"' + ) + for serialized_link in serialized_out.links: + # needed because modern blender (4.4) is written by monkeys and a type writer. god bless my never ending patience + out = try_name_then_index(node.outputs, serialized_out.name, out_index) + link_errors = cur_errors.copy( + f'Failed to set links to input socket {get_name(serialized_link.index, serialized_link)} of node "{serialized_link.name}"' + ) + try: + serialized_target_node = serialized_node_tree.nodes[serialized_link.node] + inp = try_name_then_index( + nodes[serialized_link.node].inputs, + serialized_link.name, + convert_in_i_from_3_2(serialized_link.index, serialized_target_node), + ) + if inp is None: + raise IndexError("Socket not found") + links.new(inp, out) + except Exception as exc: + print_with_exc(link_errors, exc) + except Exception as exc: + print_with_exc(cur_errors, exc) + + +def add_input_output( + node_tree: NodeTree | ShaderNodeTree, serialized_node_tree: SerializedNodeTree, errors: ErrorState +): + is_new = bpy.app.version >= (4, 0, 0) + if is_new: + interface = node_tree.interface + interface.clear() + else: + node_tree.inputs.clear() + node_tree.outputs.clear() + for in_out in ("INPUT", "OUTPUT"): + serialized_sockets = serialized_node_tree.inputs if in_out == "INPUT" else serialized_node_tree.outputs + for serialized in serialized_sockets: + cur_errors = errors.copy(f'Failed to add "{in_out}" socket "{serialized.name}"') + try: + bl_idname = convert_bl_idname_from_3_2(serialized.bl_idname, serialized.data) + if is_new: + socket = interface.new_socket(serialized.name, socket_type=bl_idname, in_out=in_out) + else: + socket = getattr(node_tree, in_out.lower() + "s").new(bl_idname, serialized.name) + cur_errors = errors.copy(f'Failed to set values for {in_out} socket "{serialized.name}"') + set_attrs(socket, serialized.data, node_tree.nodes, EXCLUDE_FROM_GROUP_INPUT_OUTPUT, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + node_tree.interface_update(bpy.context) + + +def create_nodes( + node_tree: NodeTree | ShaderNodeTree, serialized_node_tree: SerializedNodeTree, keep_interface, errors: ErrorState +): + nodes = node_tree.nodes + nodes.clear() + new_nodes: list[Node] = [] + for name, serialized_node in serialized_node_tree.nodes.items(): + cur_errors = errors.copy(f'Failed to create node "{name}"') + try: + node = nodes.new(convert_bl_idname_from_3_2(serialized_node.bl_idname, serialized_node.data)) + node.name = name + node.location = serialized_node.location + new_nodes.append(node) + except Exception as exc: + print_with_exc(cur_errors, exc) + cur_errors = errors.copy(f'Failed to add sockets for node group "{node_tree.name}"') + try: + if not keep_interface: + add_input_output(node_tree, serialized_node_tree, cur_errors) + except Exception as exc: + print_with_exc(cur_errors, exc) + return new_nodes + + +def is_f3d_mat(material: Material): + from .f3d_material import F3D_MAT_CUR_VERSION + + return material.is_f3d and material.mat_ver >= F3D_MAT_CUR_VERSION + + +def find_node_group(name: str): + def is_node_group(node_tree): + tree_props: Fast64_NodeTreeProperties = node_tree.fast64 + return tree_props.name == name and tree_props.cached_hash and tree_props.interface_hash + + name_for_sorting = f"(Fast64) {name}" + # bpy data is terribly slow, sorting by name should be faster even with startswith + for key in sorted(bpy.data.node_groups.keys(), key=lambda k: not k.startswith(name_for_sorting)): + node_tree = bpy.data.node_groups[key] + if is_node_group(node_tree): + return node_tree + return None + + +def generate_f3d_node_groups(forced=True, ignore_hash=False, force_mat_update=False, editable=False): + """ + Forced generates node groups even if no f3d materials are present + Ignore hash will always regenerate existing group nodes. + Force mat update will always regenerate f3d material nodes + """ + ignore_hash = ignore_hash or editable + if SERIALIZED_NODE_LIBRARY is None: + raise PluginError( + f"Failed to load f3d_nodes.json {str(NODE_LIBRARY_EXCEPTION)}, see console" + ) from NODE_LIBRARY_EXCEPTION + if not forced and not any(is_f3d_mat(material) for material in bpy.data.materials): + return + errors = ErrorState() + update_materials = False + new_node_trees: list[tuple[NodeTree, list[Node]]] = [] + + existing_node_trees: dict[str, NodeTree] = {} + for node_tree in bpy.data.node_groups: + tree_props: Fast64_NodeTreeProperties = node_tree.fast64 + name = tree_props.name + if name or tree_props.cached_hash or tree_props.interface_hash: + if name in SERIALIZED_NODE_LIBRARY.dependencies and name not in existing_node_trees: + existing_node_trees[name] = node_tree + else: + print(f'Node group "{name}" is no longer a fast64 dependency, removing') + node_tree.use_fake_user = False + tree_props.name = "" + tree_props.cached_hash = "" + tree_props.interface_hash = "" + + for serialized_node_group in SERIALIZED_NODE_LIBRARY.dependencies.values(): + keep_interface = True + node_tree = existing_node_trees.get(serialized_node_group.name, None) + is_new = False + if node_tree is not None: + if node_tree.type == "UNDEFINED": + bpy.data.node_groups.remove(node_tree, do_unlink=True) + node_tree = None + update_materials, keep_interface = True, False + elif ( + node_tree.fast64.cached_hash == serialized_node_group.cached_hash + and node_tree.fast64.interface_hash == serialized_node_group.interface_hash + and not DEBUG_MODE + and not ignore_hash + ): + continue + + if node_tree is not None: + print( + f'Node group "{serialized_node_group.name}" already exists, but serialized node group hash changed, updating' + ) + if node_tree.fast64.interface_hash != serialized_node_group.interface_hash: + update_materials, keep_interface = True, False + bpy.data.node_groups.remove(node_tree, do_unlink=True) + node_tree = None + + if node_tree is None: + print(f'Creating node group "{serialized_node_group.name}"') + node_tree = bpy.data.node_groups.new( + ("" if editable else "(Fast64) ") + serialized_node_group.name, "ShaderNodeTree" + ) + node_tree.use_fake_user = not editable + update_materials, keep_interface, is_new = True, False, True + + cur_errors = errors.copy(f'Failed to create node group "{serialized_node_group.name}"') + try: + new_node_trees.append( + ( + serialized_node_group, + node_tree, + is_new, + create_nodes(node_tree, serialized_node_group, keep_interface, cur_errors), + ) + ) + node_tree.fast64.cached_hash = serialized_node_group.cached_hash + node_tree.fast64.interface_hash = serialized_node_group.interface_hash + node_tree.fast64.name = serialized_node_group.name + except Exception as exc: + if is_new: + bpy.data.node_groups.remove(node_tree, do_unlink=True) + print_with_exc(cur_errors, exc) + + for serialized_node_group, node_tree, is_new, new_nodes in new_node_trees: + cur_errors = errors.copy(f'Failed to create links for node group "{serialized_node_group.name}"') + try: + set_values_and_create_links(node_tree, serialized_node_group, new_nodes, cur_errors) + except Exception as exc: + if is_new: + bpy.data.node_groups.remove(node_tree, do_unlink=True) + print_with_exc(cur_errors, exc) + update_f3d_materials_nodes(ignore_hash=update_materials or force_mat_update) + + +def create_f3d_nodes_in_material(material: Material, errors: ErrorState = None, editable=False): + from .f3d_material import update_all_node_values + + errors = ErrorState() or errors + assert editable or is_f3d_mat(material), f"Material {material.name} is not an up to date f3d material" + material.use_nodes = True + new_nodes = create_nodes(material.node_tree, SERIALIZED_NODE_LIBRARY, False, errors) + set_values_and_create_links(material.node_tree, SERIALIZED_NODE_LIBRARY, new_nodes, errors) + if not editable: + createScenePropertiesForMaterial(material) + material.f3d_update_flag = False + with bpy.context.temp_override(material=material): + update_all_node_values(material, bpy.context) + material.node_tree["fast64_cached_hash"] = SERIALIZED_NODE_LIBRARY.cached_hash + + +def update_f3d_material_nodes(material: Material, ignore_hash=False): + errors = ErrorState([f"Failed to update material {material.name}"]) + try: + if is_f3d_mat(material) and ( + material.node_tree.get("fast64_cached_hash", None) != SERIALIZED_NODE_LIBRARY.cached_hash or ignore_hash + ): + print(f'Updating material "{material.name}"\'s nodes') + create_f3d_nodes_in_material(material, errors) + except Exception as exc: + print_with_exc(errors, exc) + + +def update_f3d_materials_nodes(ignore_hash=False): + for material in bpy.data.materials: + update_f3d_material_nodes(material, ignore_hash) + + +class Fast64_NodeTreeProperties(PropertyGroup): + cached_hash: StringProperty() + interface_hash: StringProperty() + name: StringProperty() + + +if DEBUG_MODE: + f3d_node_gen_classes = (Fast64_NodeTreeProperties, GatherF3DNodes, CreateWorkableF3DNodes, GatherF3DNodesPanel) +else: + f3d_node_gen_classes = (Fast64_NodeTreeProperties,) + + +def f3d_node_gen_register(): + load_f3d_nodes() + for cls in f3d_node_gen_classes: + register_class(cls) + bpy.types.NodeTree.fast64 = PointerProperty(type=Fast64_NodeTreeProperties) + + +def f3d_node_gen_unregister(): + for cls in reversed(f3d_node_gen_classes): + unregister_class(cls) + del bpy.types.NodeTree.fast64 diff --git a/fast64_internal/f3d/node_library/3PointOffset.json b/fast64_internal/f3d/node_library/3PointOffset.json new file mode 100644 index 000000000..2ae110695 --- /dev/null +++ b/fast64_internal/f3d/node_library/3PointOffset.json @@ -0,0 +1,987 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "7e6e7131d560c49380009e7a733068f9", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Width" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Height" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Y" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Enable 3 Point" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "S Shift" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "T Shift" + } + ], + "interface_hash": "233356674686e46be077284310523ac6", + "name": "3PointOffset", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Shift" + }, + "1": { + "default_value": 1.0, + "name": "Value" + } + }, + "location": [ + -62.0488, + -220.461 + ], + "node_tree": { + "name": "ShiftValue", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -299.1567, + -11.9427 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Width" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Height" + }, + "2": { + "links": [ + { + "index": 2, + "node": "Group.006" + } + ], + "name": "X" + }, + "3": { + "links": [ + { + "index": 3, + "node": "Group.006" + } + ], + "name": "Y" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Enable 3 Point" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "S Shift" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "T Shift" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Shifted X" + }, + "3": { + "name": "Shifted Y" + }, + "4": { + "name": "" + } + }, + "location": [ + 402.5118, + 225.9913 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Shift" + }, + "1": { + "default_value": 1.0, + "name": "Value" + } + }, + "location": [ + -62.6314, + -352.1185 + ], + "node_tree": { + "name": "ShiftValue", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "Enable" + }, + "5": { + "name": "TexelOffsetX" + }, + "6": { + "name": "TexelOffsetY" + } + }, + "location": [ + -60.7671, + 63.8884 + ], + "node_tree": { + "name": "OffsetXY", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Y" + } + }, + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "Enable" + }, + "5": { + "default_value": 0.5, + "name": "TexelOffsetX" + }, + "6": { + "name": "TexelOffsetY" + } + }, + "location": [ + 190.4292, + 183.2676 + ], + "node_tree": { + "name": "OffsetXY", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Y" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 155.0163, + 7.0767 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.007" + }, + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 128.2776, + 29.448 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.007" + }, + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 155.0163, + 205.3909 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 128.2776, + 226.8409 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 331.3665, + 204.7771 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 331.3665, + 225.3344 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -96.3691, + -134.7885 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + }, + { + "index": 4, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 167.6987, + -386.8837 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 145.2087, + -255.1122 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 167.6987, + -59.161 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 145.2087, + -37.7594 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -96.3692, + -206.7241 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -134.7241, + 105.4123 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -134.7241, + -46.7861 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + }, + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -114.5542, + -68.2579 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.006" + }, + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 81.7196, + 81.3802 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 81.7196, + 105.0838 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 118.955, + -15.3372 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 118.955, + -206.7242 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -114.5542, + 81.6978 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -135.4164, + -178.902 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -116.4083, + -157.0396 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -135.4164, + -440.1133 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -116.4083, + -308.9042 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Value": { + "bl_idname": "ShaderNodeValue", + "location": [ + -341.0384, + -352.2887 + ], + "outputs": { + "0": { + "default_value": 1.0, + "links": [ + { + "index": 1, + "node": "Group" + }, + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Shifted X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Shifted Y" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/3PointOffsetFrac.json b/fast64_internal/f3d/node_library/3PointOffsetFrac.json new file mode 100644 index 000000000..5b5f27b31 --- /dev/null +++ b/fast64_internal/f3d/node_library/3PointOffsetFrac.json @@ -0,0 +1,436 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "09ca68d7fe7b0bc1d5aba4045a398b6d", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Low" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Length" + }, + { + "bl_idname": "NodeSocketInt", + "name": "IsT" + } + ], + "interface_hash": "5425e38d1e49b0d99e4d198e9f09fdba", + "name": "3PointOffsetFrac", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "name": "Shift" + }, + "1": { + "default_value": 0.5, + "name": "Value" + } + }, + "location": [ + -338.6462, + -56.6907 + ], + "node_tree": { + "name": "UnshiftValue", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.006" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -640.8356, + -18.0557 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.006" + } + ], + "name": "Value" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Low" + }, + "3": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Group" + } + ], + "name": "Length" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "IsT" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 1102.656, + 78.5645 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 204.7742, + 325.325 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.016" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 127.2356, + 70.2817 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": -1.0 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 716.3333, + 76.9614 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 19.099998474121094, + "enabled": false + } + }, + "location": [ + -155.5454, + 98.5044 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.007": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0, + "enabled": false + }, + "2": { + "enabled": false + } + }, + "location": [ + 927.9116, + 54.302 + ], + "operation": "FRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Math.016": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 545.8726, + 78.3637 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Texel Space", + "location": [ + 29.9617, + 63.127 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math" + }, + { + "index": 2, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "hide": true, + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 463.8723, + -99.2939 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.016" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Value": { + "bl_idname": "ShaderNodeValue", + "location": [ + -460.3739, + -438.9537 + ], + "outputs": { + "0": { + "default_value": 1.0, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Value.001": { + "bl_idname": "ShaderNodeValue", + "location": [ + -450.5564, + -536.3671 + ], + "outputs": { + "0": { + "default_value": -1.0, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/3PointOffsetFrac_Lite.json b/fast64_internal/f3d/node_library/3PointOffsetFrac_Lite.json new file mode 100644 index 000000000..b8ade1dfd --- /dev/null +++ b/fast64_internal/f3d/node_library/3PointOffsetFrac_Lite.json @@ -0,0 +1,248 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "f9e35640e309e29e3054bae10a1097de", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Length" + }, + { + "bl_idname": "NodeSocketInt", + "name": "IsT" + } + ], + "interface_hash": "d8e71ce66f2193f631aefc91b6123e6c", + "name": "3PointOffsetFrac_Lite", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -645.4055, + -22.6254 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.006" + } + ], + "name": "Value" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.006" + } + ], + "name": "Length" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "IsT" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 123.7348, + -19.282 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 2.0 + }, + "2": { + "default_value": -1.0 + } + }, + "label": "S == -1 and T == 1", + "location": [ + -447.2696, + -127.4688 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.008" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 19.099998474121094, + "enabled": false + } + }, + "location": [ + -445.9736, + 34.8429 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.007": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0, + "enabled": false + }, + "2": { + "enabled": false + } + }, + "location": [ + -43.5149, + -43.939 + ], + "operation": "FRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.008": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Flip Range for S", + "location": [ + -209.5414, + -43.7441 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Texel Space", + "location": [ + -260.4666, + -0.5345 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/3_Point_Lerp.json b/fast64_internal/f3d/node_library/3_Point_Lerp.json new file mode 100644 index 000000000..ae09a3d9e --- /dev/null +++ b/fast64_internal/f3d/node_library/3_Point_Lerp.json @@ -0,0 +1,2818 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "a9028cbc330139f46420b267894fc237", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "C00" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "A00" + }, + { + "bl_idname": "NodeSocketColor", + "name": "C01" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "A01" + }, + { + "bl_idname": "NodeSocketColor", + "name": "C10" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "A10" + }, + { + "bl_idname": "NodeSocketColor", + "name": "C11" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "A11" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "3 Point" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp T" + } + ], + "interface_hash": "e95196a2cf754332cb35dd3f65e7f3a5", + "name": "3 Point Lerp", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "V1" + }, + "1": { + "default_value": 0.5, + "name": "V2" + }, + "2": { + "default_value": 0.5, + "name": "Fac" + } + }, + "location": [ + 152.3669, + -385.6809 + ], + "node_tree": { + "name": "SubLerpVal", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -848.5801, + 0.0001 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "C00" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "A00" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "C01" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "A01" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "C10" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "A10" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.030" + } + ], + "name": "C11" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.047" + } + ], + "name": "A11" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "3 Point" + }, + "9": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Lerp S" + }, + "10": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Lerp T" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 1282.6998, + -122.6014 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + } + }, + "location": [ + 145.1053, + -237.4748 + ], + "node_tree": { + "name": "Step", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C1" + }, + "1": { + "name": "C2" + }, + "2": { + "name": "Fac" + } + }, + "location": [ + 155.3631, + 333.2887 + ], + "node_tree": { + "name": "SubLerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.005" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C1" + }, + "1": { + "name": "C2" + }, + "2": { + "name": "Fac" + } + }, + "location": [ + 155.3631, + 141.1894 + ], + "node_tree": { + "name": "SubLerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.005" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group.004": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C1" + }, + "1": { + "name": "C2" + }, + "2": { + "name": "Fac" + } + }, + "location": [ + 155.2258, + 523.5847 + ], + "node_tree": { + "name": "SubLerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.003" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group.005": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C1" + }, + "1": { + "name": "C2" + }, + "2": { + "name": "Fac" + } + }, + "location": [ + 155.2258, + 710.8522 + ], + "node_tree": { + "name": "SubLerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "V1" + }, + "1": { + "default_value": 0.5, + "name": "V2" + }, + "2": { + "default_value": 0.5, + "name": "Fac" + } + }, + "location": [ + 152.367, + -561.6574 + ], + "node_tree": { + "name": "SubLerpVal", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "V1" + }, + "1": { + "default_value": 0.5, + "name": "V2" + }, + "2": { + "default_value": 0.5, + "name": "Fac" + } + }, + "location": [ + 152.367, + -764.5268 + ], + "node_tree": { + "name": "SubLerpVal", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.008": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "V1" + }, + "1": { + "default_value": 0.5, + "name": "V2" + }, + "2": { + "default_value": 0.5, + "name": "Fac" + } + }, + "location": [ + 152.3672, + -940.5032 + ], + "node_tree": { + "name": "SubLerpVal", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.009": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 807.0811, + -602.8484 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.010": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 1037.3618, + -327.937 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.064" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "1 - Fac", + "location": [ + -465.3048, + -178.2839 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.042" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "1 - Fac", + "location": [ + -465.3048, + -266.2457 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.043" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 377.1657, + -501.37 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 508.4839, + -530.7278 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.009" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 377.1659, + -880.2158 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 508.484, + -909.5737 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.009" + } + ], + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Mix": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "location": [ + 1042.8486, + 97.5535 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.063" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Mix.005": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "default_value": 0.0, + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "location": [ + 807.0809, + 464.7508 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1933, + -546.296 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.003" + }, + { + "index": 0, + "node": "Reroute.006" + }, + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -656.1245, + -545.7643 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -609.7951, + -475.2539 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + }, + { + "index": 0, + "node": "Reroute.051" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 59.3633, + 221.9546 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.002" + }, + { + "index": 0, + "node": "Reroute.018" + }, + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1222.7704, + -179.019 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1006.874, + -637.2478 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.062" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1933, + -496.4186 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1933, + -672.3178 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 60.5579, + 434.7985 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + }, + { + "index": 0, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 28.1056, + 312.3512 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + }, + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -318.8755, + 574.1367 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -494.7878, + -232.9893 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + }, + { + "index": 0, + "node": "Reroute.065" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -494.7878, + -254.7668 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + }, + { + "index": 0, + "node": "Reroute.066" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -319.2554, + -232.6759 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + }, + { + "index": 0, + "node": "Group.001" + }, + { + "index": 0, + "node": "Reroute.040" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -297.922, + -254.9865 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.029" + }, + { + "index": 1, + "node": "Group.001" + }, + { + "index": 0, + "node": "Reroute.041" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 59.3633, + 161.2006 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 116.826, + 540.965 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.004" + }, + { + "index": 0, + "node": "Reroute.025" + }, + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 59.3633, + 244.9111 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 59.3633, + 30.4638 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 28.1056, + 52.4637 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -224.327, + 199.4754 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -203.3148, + 8.4072 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 691.7806, + -247.5835 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.038" + }, + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -654.1613, + -34.8181 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.031" + }, + { + "index": 1, + "node": "Mix" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 28.1056, + 621.7327 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 116.826, + 600.1895 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -632.8279, + -78.7567 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.032" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 116.826, + 412.6931 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -611.4946, + -122.7214 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.029": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -296.068, + 389.9229 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.030": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -590.1614, + -166.9451 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.031": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -653.7803, + 538.3747 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -631.3452, + 434.1797 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -610.2192, + 312.3275 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -589.7586, + 221.6248 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -655.0471, + -56.6768 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + }, + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -633.2357, + -100.7155 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.039" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -610.5726, + -144.6558 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 691.7806, + 354.1093 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.039": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -633.6584, + -650.6339 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + }, + { + "index": 0, + "node": "Reroute.052" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.040": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -319.1076, + -518.937 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.041": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -297.2345, + -694.5229 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.042": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -224.327, + -188.71 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + }, + { + "index": 0, + "node": "Reroute.049" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.043": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -203.7083, + -276.2343 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + }, + { + "index": 0, + "node": "Reroute.050" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.044": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1934, + -1051.1637 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.045": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1934, + -875.2645 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.046": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 119.1934, + -925.1418 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.005" + }, + { + "index": 0, + "node": "Reroute.045" + }, + { + "index": 0, + "node": "Reroute.044" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.047": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -590.0159, + -188.7806 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.048" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.048": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -588.9116, + -925.116 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.046" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.049": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -224.327, + -897.9658 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.050": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -202.9583, + -1073.5431 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.051": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -609.9966, + -1029.8699 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.052": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -634.6328, + -853.646 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 691.7806, + -691.4957 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1222.7704, + -157.3771 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1006.9172, + 429.9789 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 979.0442, + -210.7656 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + }, + { + "index": 0, + "node": "Reroute.061" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1007.0441, + -57.6959 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Mix" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 952.1604, + -56.5335 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 952.1603, + -437.3185 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 979.044, + -13.3828 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 979.0442, + -416.0302 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.062": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1006.874, + -460.1418 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.063": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1222.7704, + 62.6746 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.064": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1222.7704, + -362.3202 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.065": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -494.3795, + -195.4123 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.066": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -494.5667, + -283.4315 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 386.3107, + 581.4209 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.004" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Vector Math.004": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 520.5729, + 560.6076 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix.005" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Vector Math.005": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 386.3107, + 194.1773 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.006" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Vector Math.006": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 520.5729, + 176.9851 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Mix.005" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width": 100.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/AOFactors.json b/fast64_internal/f3d/node_library/AOFactors.json new file mode 100644 index 000000000..793d4b78c --- /dev/null +++ b/fast64_internal/f3d/node_library/AOFactors.json @@ -0,0 +1,409 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "5d8074f37f4be9e28bf4aebfa9656460", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Vertex Alpha" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "G_AMBOCCLUSION" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "AO Ambient" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "AO Directional" + } + ], + "interface_hash": "804714ea5edbb8ad9e6372ad65a2891a", + "name": "AOFactors", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -457.6445, + 50.1908 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Vertex Alpha" + }, + "1": { + "default_value": 1, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "G_AMBOCCLUSION" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.006" + } + ], + "name": "AO Ambient" + }, + "3": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.007" + } + ], + "name": "AO Directional" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "AO Amb Factor" + }, + "1": { + "name": "AO Dir Factor" + }, + "2": { + "name": "" + } + }, + "location": [ + 296.9822, + -0.9841 + ], + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Alpha - 1", + "location": [ + -226.4448, + 27.3194 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -225.0053, + -11.5223 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.008" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.007": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -225.0053, + -51.0922 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.009" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.008": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -43.9841, + -12.4326 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.010" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.009": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -44.8938, + -51.0922 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.011" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.010": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "+ 1", + "location": [ + 119.3752, + -18.7716 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.011": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "+ 1", + "location": [ + 119.3752, + -58.3919 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -252.7907, + -42.9377 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.006" + }, + { + "index": 0, + "node": "Math.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -61.9695, + -41.2905 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.008" + }, + { + "index": 0, + "node": "Math.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "AO Amb Factor" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "AO Dir Factor" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Advanced_Texture_Settings.json b/fast64_internal/f3d/node_library/Advanced_Texture_Settings.json new file mode 100644 index 000000000..9882e565f --- /dev/null +++ b/fast64_internal/f3d/node_library/Advanced_Texture_Settings.json @@ -0,0 +1,606 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "628ed817b127abc7b76567645cc5120e", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 7, + "name": "S Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Mirror" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 7, + "name": "T Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Mirror" + } + ], + "interface_hash": "660fd0c074381754b5b78a35eebb675f", + "name": "Advanced Texture Settings", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + 340.6651, + 284.262 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -764.3581, + 406.4136 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group.006" + } + ], + "name": "S Shift" + }, + "2": { + "links": [ + { + "index": 2, + "node": "Group.006" + } + ], + "name": "S Low" + }, + "3": { + "links": [ + { + "index": 3, + "node": "Group.006" + } + ], + "name": "S High" + }, + "4": { + "links": [ + { + "index": 4, + "node": "Group.006" + } + ], + "name": "S Mask" + }, + "5": { + "links": [ + { + "index": 5, + "node": "Group.006" + } + ], + "name": "S TexSize" + }, + "6": { + "links": [ + { + "index": 6, + "node": "Group.006" + } + ], + "name": "S Clamp" + }, + "7": { + "links": [ + { + "index": 7, + "node": "Group.006" + } + ], + "name": "S Mirror" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Y" + }, + "9": { + "links": [ + { + "index": 1, + "node": "Group.005" + } + ], + "name": "T Shift" + }, + "10": { + "links": [ + { + "index": 2, + "node": "Group.005" + } + ], + "name": "T Low" + }, + "11": { + "links": [ + { + "index": 3, + "node": "Group.005" + } + ], + "name": "T High" + }, + "12": { + "links": [ + { + "index": 4, + "node": "Group.005" + } + ], + "name": "T Mask" + }, + "13": { + "links": [ + { + "index": 5, + "node": "Group.005" + } + ], + "name": "T TexSize" + }, + "14": { + "links": [ + { + "index": 6, + "node": "Group.005" + } + ], + "name": "T Clamp" + }, + "15": { + "links": [ + { + "index": 7, + "node": "Group.005" + } + ], + "name": "T Mirror" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "" + } + }, + "location": [ + 497.1576, + 284.2268 + ], + "width_hidden": 42.0 + }, + "Group.005": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Tex Coordinate" + }, + "1": { + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "name": "Low" + }, + "3": { + "default_value": 0.5, + "name": "High" + }, + "4": { + "name": "Mask" + }, + "5": { + "default_value": 0.5, + "name": "Tex Size" + }, + "6": { + "name": "Clamp" + }, + "7": { + "name": "Mirror" + } + }, + "location": [ + -83.7871, + 46.4641 + ], + "node_tree": { + "name": "TileSettings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "UV Coord" + } + }, + "width": 199.55996704101562, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Tex Coordinate" + }, + "1": { + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "name": "Low" + }, + "3": { + "default_value": 0.5, + "name": "High" + }, + "4": { + "name": "Mask" + }, + "5": { + "default_value": 0.5, + "name": "Tex Size" + }, + "6": { + "name": "Clamp" + }, + "7": { + "name": "Mirror" + } + }, + "location": [ + -86.1416, + 461.9084 + ], + "node_tree": { + "name": "TileSettings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "UV Coord" + } + }, + "width": 202.857666015625, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": -1.0 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 146.7432, + 125.5951 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 1.0 + } + }, + "location": [ + -279.6339, + 189.7226 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -108.6895, + 156.6045 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -427.7146, + 196.3708 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -108.6897, + -41.7827 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9452, + 90.3626 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9451, + 202.6528 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9451, + 225.0103 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Advanced_Texture_Settings_and_3_Point.json b/fast64_internal/f3d/node_library/Advanced_Texture_Settings_and_3_Point.json new file mode 100644 index 000000000..4b51de0e9 --- /dev/null +++ b/fast64_internal/f3d/node_library/Advanced_Texture_Settings_and_3_Point.json @@ -0,0 +1,2420 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "d295b0161bf71af699ad395b109c04f3", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Width" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Height" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "S High" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 5, + "max_value": 7, + "name": "S Mask" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "name": "S Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Mirror" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "T High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 7, + "name": "T Mask" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Mirror" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Enable 3 Point" + } + ], + "interface_hash": "f7cf83040f5cca859d54f66ff3d94736", + "name": "Advanced Texture Settings and 3 Point", + "nodes": { + "Combine XYZ.002": { + "bl_idname": "ShaderNodeCombineXYZ", + "hide": true, + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "location": [ + 610.7907, + -36.0021 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Combine XYZ.003": { + "bl_idname": "ShaderNodeCombineXYZ", + "hide": true, + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "location": [ + 610.791, + -78.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Frame.001": { + "bl_idname": "NodeFrame", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "height": 44.99998092651367, + "label": "Create sample UVs for (X+1, Y) and (X, Y+1)", + "location": [ + 497.7837, + 74.1561 + ], + "use_custom_color": true, + "width": 503.0043640136719, + "width_hidden": 42.0 + }, + "Frame.003": { + "bl_idname": "NodeFrame", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "height": 44.99993896484375, + "label": "Get 3 Point Lerp Frac", + "label_size": 13, + "location": [ + 51.953, + 675.6448 + ], + "use_custom_color": true, + "width": 295.88427734375, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -784.7543, + 188.4501 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Width" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Height" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "X" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Y" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "S Shift" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.048" + } + ], + "name": "S Low" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "S High" + }, + "7": { + "default_value": 5, + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "S Mask" + }, + "8": { + "default_value": 1, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "S Clamp" + }, + "9": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "S Mirror" + }, + "10": { + "links": [ + { + "index": 0, + "node": "Reroute.029" + } + ], + "name": "T Shift" + }, + "11": { + "links": [ + { + "index": 0, + "node": "Reroute.049" + } + ], + "name": "T Low" + }, + "12": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "T High" + }, + "13": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "T Mask" + }, + "14": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "T Clamp" + }, + "15": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "T Mirror" + }, + "16": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Enable 3 Point" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV00" + }, + "1": { + "name": "UV01" + }, + "2": { + "name": "UV10" + }, + "3": { + "name": "UV11" + }, + "4": { + "name": "Lerp S" + }, + "5": { + "name": "Lerp T" + }, + "6": { + "name": "" + } + }, + "location": [ + 876.6541, + -90.8818 + ], + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "S Shift" + }, + "2": { + "name": "S Low" + }, + "3": { + "name": "S High" + }, + "4": { + "default_value": 5, + "name": "S Mask" + }, + "5": { + "name": "S TexSize" + }, + "6": { + "name": "S Clamp" + }, + "7": { + "name": "S Mirror" + }, + "8": { + "name": "Y" + }, + "9": { + "name": "T Shift" + }, + "10": { + "name": "T Low" + }, + "11": { + "name": "T High" + }, + "12": { + "name": "T Mask" + }, + "13": { + "name": "T TexSize" + }, + "14": { + "name": "T Clamp" + }, + "15": { + "name": "T Mirror" + } + }, + "location": [ + 11.0503, + -92.6535 + ], + "node_tree": { + "name": "Advanced Texture Settings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.063" + } + ], + "name": "UV" + } + }, + "width": 195.6847381591797, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "S Shift" + }, + "2": { + "name": "S Low" + }, + "3": { + "name": "S High" + }, + "4": { + "default_value": 5, + "name": "S Mask" + }, + "5": { + "name": "S TexSize" + }, + "6": { + "default_value": 1, + "name": "S Clamp" + }, + "7": { + "name": "S Mirror" + }, + "8": { + "name": "Y" + }, + "9": { + "name": "T Shift" + }, + "10": { + "name": "T Low" + }, + "11": { + "name": "T High" + }, + "12": { + "name": "T Mask" + }, + "13": { + "name": "T TexSize" + }, + "14": { + "name": "T Clamp" + }, + "15": { + "name": "T Mirror" + } + }, + "location": [ + 14.2079, + 353.4522 + ], + "node_tree": { + "name": "Advanced Texture Settings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "UV" + } + }, + "width": 195.6847381591797, + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5, + "name": "Value" + }, + "1": { + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "name": "Low" + }, + "3": { + "default_value": 0.5, + "name": "Length" + }, + "4": { + "name": "IsT" + } + }, + "location": [ + 52.8568, + 511.9174 + ], + "node_tree": { + "name": "3PointOffsetFrac", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.008": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5, + "name": "Value" + }, + "1": { + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "name": "Low" + }, + "3": { + "default_value": 0.5, + "name": "Length" + }, + "4": { + "default_value": 1, + "name": "IsT" + } + }, + "location": [ + 52.7815, + 453.763 + ], + "node_tree": { + "name": "3PointOffsetFrac", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.010": { + "bl_idname": "ShaderNodeGroup", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "Enable 3 Point" + }, + "5": { + "name": "S Shift" + }, + "6": { + "name": "T Shift" + } + }, + "location": [ + -407.9762, + 478.656 + ], + "node_tree": { + "name": "3PointOffset", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.061" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Y" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.038" + } + ], + "name": "Shifted X" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.043" + } + ], + "name": "Shifted Y" + } + }, + "use_custom_color": true, + "width": 160.1077423095703, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -525.1768, + -198.3529 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -176.286 + ], + "outputs": { + "0": { + "links": [ + { + "index": 15, + "node": "Group.002" + }, + { + "index": 15, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -154.4249 + ], + "outputs": { + "0": { + "links": [ + { + "index": 14, + "node": "Group.006" + }, + { + "index": 14, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -132.124 + ], + "outputs": { + "0": { + "links": [ + { + "index": 12, + "node": "Group.002" + }, + { + "index": 12, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -110.1356 + ], + "outputs": { + "0": { + "links": [ + { + "index": 11, + "node": "Group.002" + }, + { + "index": 11, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -88.195 + ], + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "Group.002" + }, + { + "index": 10, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -66.213 + ], + "outputs": { + "0": { + "links": [ + { + "index": 9, + "node": "Group.002" + }, + { + "index": 9, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -43.848 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.002" + }, + { + "index": 7, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + -21.848 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.006" + }, + { + "index": 6, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + 0.4914 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.002" + }, + { + "index": 4, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + 22.4585 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.006" + }, + { + "index": 3, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + 44.4054 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.006" + }, + { + "index": 2, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -346.5622, + 66.3876 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.002" + }, + { + "index": 1, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -550.9844, + 88.231 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -574.6416, + 110.0638 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.3921, + 132.5208 + ], + "outputs": { + "0": { + "links": [ + { + "index": 13, + "node": "Group.002" + }, + { + "index": 13, + "node": "Group.006" + }, + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.0605, + 153.758 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.002" + }, + { + "index": 5, + "node": "Group.006" + }, + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -550.9844, + 258.0005 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -574.6416, + 279.4344 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.3921, + 302.5384 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.0605, + 323.9492 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -525.1768, + 236.4023 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 821.3632, + -169.5363 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 794.7209, + -147.0134 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 794.7206, + -45.7768 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 821.3632, + -88.8349 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 284.5578, + -45.7056 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 284.5578, + 318.4106 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + }, + { + "index": 0, + "node": "Reroute.032" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -452.9911, + 66.4532 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + }, + { + "index": 0, + "node": "Reroute.030" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.029": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -429.9277, + -66.0522 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + }, + { + "index": 0, + "node": "Reroute.031" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.030": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -452.9911, + 214.2618 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.047" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.031": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -429.9277, + 191.897 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.046" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 849.4026, + 318.552 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 849.4026, + -125.4229 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 849.4026, + -191.6426 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 254.2271, + 501.9275 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 222.653, + 444.0285 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.062" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 254.2271, + -210.7318 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -9.224, + 400.6155 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.044" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.043": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -31.0055, + 377.9384 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.045" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.044": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -9.2238, + -181.2862 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.045": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -31.0055, + -357.0798 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.046": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -429.5123, + 516.5571 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.047": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -452.9122, + 562.2375 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.050" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.048": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -620.0515, + 44.0092 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + }, + { + "index": 0, + "node": "Reroute.051" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.049": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -598.7181, + -88.0037 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + }, + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.050": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -94.6143, + 562.2375 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.051": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -620.4841, + 551.4414 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.052" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.052": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -99.7, + 551.4414 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.2127, + 541.4214 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -105.0288, + 541.4214 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.5148, + 494.3338 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -598.8094, + 504.9303 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -111.9065, + 494.3338 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -106.2716, + 504.9303 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -101.1563, + 516.5571 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -215.4478, + 421.7145 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group.006" + }, + { + "index": 0, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -228.2478, + 443.7755 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + }, + { + "index": 0, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.062": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 222.6531, + -234.631 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.063": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 264.8857, + -126.5774 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ.003" + }, + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Separate XYZ.002": { + "bl_idname": "ShaderNodeSeparateXYZ", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 310.4663, + -35.4262 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.002" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.003" + } + ], + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "width_hidden": 42.0 + }, + "Separate XYZ.003": { + "bl_idname": "ShaderNodeSeparateXYZ", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 307.6768, + -78.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.003" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.002" + } + ], + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "width": 141.7603302001953, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV11" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp T" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/AmbientLight.json b/fast64_internal/f3d/node_library/AmbientLight.json new file mode 100644 index 000000000..d8b1fe1a2 --- /dev/null +++ b/fast64_internal/f3d/node_library/AmbientLight.json @@ -0,0 +1,113 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "facc48fb0b7d0585abf62ff90f447a1e", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Ambient Color" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "AO Ambient Factor" + } + ], + "interface_hash": "e514b7b679d4ada3b7d1cfc1448b34a3", + "name": "AmbientLight", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -200.0, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Ambient Color" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Vector Math.003" + }, + { + "index": 3, + "node": "Vector Math.003" + } + ], + "name": "AO Ambient Factor" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Light Level" + }, + "1": { + "name": "" + } + }, + "location": [ + 183.8044, + 54.8822 + ], + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "enabled": false + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "name": "Scale" + } + }, + "location": [ + -10.621, + 53.1117 + ], + "operation": "SCALE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Light Level" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ApplyFilterOffset.json b/fast64_internal/f3d/node_library/ApplyFilterOffset.json new file mode 100644 index 000000000..25aeb0389 --- /dev/null +++ b/fast64_internal/f3d/node_library/ApplyFilterOffset.json @@ -0,0 +1,407 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "00c706260d2b099ab9e7c0ff179b4437", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "UV" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "S Width" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "T Height" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "S Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "T Scale" + }, + { + "bl_idname": "NodeSocketInt", + "name": "Apply Offset" + } + ], + "interface_hash": "598006d444fa91cd2fb1411287b76745", + "name": "ApplyFilterOffset", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "default_value": 1.0, + "hide": true, + "name": "Z" + } + }, + "location": [ + -382.7128, + 78.5662 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.001" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Combine XYZ.001": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + -563.0628, + 194.9688 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.003" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -760.3992, + 53.0103 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "UV" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "S Width" + }, + "2": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "T Height" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.001" + } + ], + "name": "S Scale" + }, + "4": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.001" + } + ], + "name": "T Scale" + }, + "5": { + "links": [ + { + "index": 1, + "node": "Vector Math.004" + } + ], + "name": "Apply Offset" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "" + } + }, + "location": [ + 327.3811, + 30.8211 + ], + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -576.5394, + -78.841 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -576.5394, + 18.8993 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": { + "default_value": [ + 0.5, + -0.5, + 0.0 + ] + }, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -218.297, + 216.7719 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.004" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.002": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 0.0 + ] + }, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 164.9748, + 30.5163 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": { + "default_value": [ + -0.5, + 0.5, + 0.0 + ] + }, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -391.6566, + 344.3069 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.004": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -15.2785, + 67.3452 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.002" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ApplyFresnel.json b/fast64_internal/f3d/node_library/ApplyFresnel.json new file mode 100644 index 000000000..ea2bff945 --- /dev/null +++ b/fast64_internal/f3d/node_library/ApplyFresnel.json @@ -0,0 +1,464 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "75107f6e2034b7b36e1d4f0016bab052", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Alpha" + }, + { + "bl_idname": "NodeSocketInt", + "hide_value": true, + "name": "G_FRESNEL_ALPHA" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "G_FRESNEL_COLOR" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Fresnel" + } + ], + "interface_hash": "b4e678b6adbf9905879f8d1e7cd511d3", + "name": "ApplyFresnel", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -318.6995, + -80.7069 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Alpha" + }, + "2": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "G_FRESNEL_ALPHA" + }, + "3": { + "default_value": 1, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "G_FRESNEL_COLOR" + }, + "4": { + "default_value": 0.5, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "Fresnel" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 315.2231, + 106.1039 + ], + "width_hidden": 42.0 + }, + "Group.004": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "label": "Fresnel to Alpha", + "location": [ + 115.9491, + 10.0818 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Color overrides Alpha", + "location": [ + -80.5831, + -45.0205 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.004" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Mix.001": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "label": "Fresnel to Color", + "location": [ + 116.807, + 193.8259 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -141.0258, + 60.5642 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -138.7407, + -103.9636 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -105.215, + -182.8108 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math" + }, + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 84.5865, + -204.1189 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 85.1312, + -124.4681 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.004" + }, + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 84.1019, + 37.3866 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Mix.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -104.9713, + 81.9426 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/AverageValue.json b/fast64_internal/f3d/node_library/AverageValue.json new file mode 100644 index 000000000..c929c2e55 --- /dev/null +++ b/fast64_internal/f3d/node_library/AverageValue.json @@ -0,0 +1,347 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "bdccb72fb1b2cc7b900a0ad5429daf57", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "ValueSample1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "ValueSample2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "ValueSample3" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Average" + } + ], + "interface_hash": "a3045d25a33ece8b2dc5dbdc5427ef18", + "name": "AverageValue", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -450.6228, + 0.0 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "ValueSample1" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "ValueSample2" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "ValueSample3" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Average" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 450.9673, + -13.5289 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 292.1541, + -13.3694 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -250.6228, + 78.7376 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -82.7633, + 55.9736 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 3.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 77.0683, + 54.6606 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 257.5029, + 19.0907 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -279.1092, + -123.1018 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -279.1092, + -34.7839 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + }, + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 257.5029, + -146.1411 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/CalcFog.json b/fast64_internal/f3d/node_library/CalcFog.json new file mode 100644 index 000000000..2aa9f0deb --- /dev/null +++ b/fast64_internal/f3d/node_library/CalcFog.json @@ -0,0 +1,1428 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "bd5a2a4bdd27abc7dde39431a9f70476", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "FogEnable" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "min_value": 0.0, + "name": "F3D_NearClip" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 200.0, + "min_value": 1.0, + "name": "F3D_FarClip" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1000.0, + "min_value": 1.0, + "name": "Blender_Game_Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 970.0, + "min_value": 1.0, + "name": "FogNear" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1000.0, + "min_value": 2.0, + "name": "FogFar" + } + ], + "interface_hash": "bb23dbb86bb18b1e64c8542eca7e4fd2", + "name": "CalcFog", + "nodes": { + "Camera Data.004": { + "bl_idname": "ShaderNodeCameraData", + "color": [ + 0.035601288080215454, + 0.03560130298137665, + 0.03560132533311844 + ], + "location": [ + -1028.3005, + 164.3291 + ], + "outputs": { + "0": { + "hide": true, + "name": "View Vector" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "View Z Depth" + }, + "2": { + "hide": true, + "name": "View Distance" + } + }, + "use_custom_color": true, + "width": 100.0, + "width_hidden": 42.0 + }, + "Frame": { + "bl_idname": "NodeFrame", + "height": 527.7974243164062, + "label": "((2 * n * f / z) - n - f) / (n - f)", + "label_size": 39, + "location": [ + -808.3734, + 218.5617 + ], + "use_custom_color": true, + "width": 1035.71337890625, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -1721.0511, + 31.6253 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "FogEnable" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "F3D_NearClip" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "F3D_FarClip" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "Blender_Game_Scale" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "FogNear" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "FogFar" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "FogAmount" + }, + "1": { + "name": "" + } + }, + "location": [ + -359.534, + -163.3271 + ], + "width_hidden": 42.0 + }, + "Map Range.002": { + "bl_idname": "ShaderNodeMapRange", + "clamp": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 1.0 + }, + "3": {}, + "4": { + "default_value": 1000.0 + }, + "5": { + "default_value": 4.0, + "enabled": false + }, + "6": { + "enabled": false, + "hide_value": true, + "name": "Vector" + }, + "7": { + "enabled": false + }, + "8": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "9": { + "enabled": false + }, + "10": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "11": { + "default_value": [ + 4.0, + 4.0, + 4.0 + ], + "enabled": false + } + }, + "location": [ + -1166.4082, + -151.1972 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Map Range.003" + } + ], + "name": "Result" + }, + "1": { + "enabled": false, + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Map Range.003": { + "bl_idname": "ShaderNodeMapRange", + "clamp": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": {}, + "2": { + "default_value": 1000.0 + }, + "3": {}, + "4": { + "default_value": 1.0 + }, + "5": { + "default_value": 4.0, + "enabled": false + }, + "6": { + "enabled": false, + "hide_value": true, + "name": "Vector" + }, + "7": { + "enabled": false + }, + "8": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "9": { + "enabled": false + }, + "10": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "11": { + "default_value": [ + 4.0, + 4.0, + 4.0 + ], + "enabled": false + } + }, + "location": [ + -887.1828, + -146.9997 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Result" + }, + "1": { + "enabled": false, + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 2.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "2 * n * f", + "location": [ + -1065.9127, + 348.0807 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 2.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "n * f", + "location": [ + -1229.8412, + 345.1195 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.035601288080215454, + 0.03560130298137665, + 0.03560132533311844 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 2.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "2 * n * f / z", + "location": [ + -902.1833, + 264.8625 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.021" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -620.1785, + -163.8423 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1484.4249, + 321.4056 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1485.2057, + 162.5411 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.021": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1000.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "(2 * n * f / z) - n", + "location": [ + -735.5904, + 230.7622 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.022" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.022": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1000.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "(2 * n * f / z) - n - f", + "location": [ + -550.8073, + 221.8337 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.023" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.023": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1000.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "((2 * n * f / z) - n - f) / (n - f)", + "location": [ + -381.3024, + 164.9146 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.024": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.03594076260924339, + 0.03594076260924339, + 0.03594076260924339 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1000.0 + }, + "2": { + "default_value": 0.5, + "enabled": false, + "hide": true + } + }, + "label": "n - f", + "location": [ + -550.9476, + 64.1866 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.023" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1311.0453, + -71.1578 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -778.6177, + 36.7251 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.024" + }, + { + "index": 1, + "node": "Math.021" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1187.3524, + -419.8951 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1187.3524, + -441.8951 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1013.8779, + -440.7935 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Map Range.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1013.7449, + -418.7934 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Map Range.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1311.0453, + 210.1905 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "hide": true, + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -195.5156, + -112.4162 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1282.827, + 36.7251 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1515.8048, + 26.7123 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.005" + }, + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1537.126, + 48.3027 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1557.6958, + 207.6679 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1282.827, + 286.7317 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -578.4153, + 86.9955 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.022" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1203.4788, + -291.3871 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Map Range.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "hide": true, + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1203.4788, + -112.4163 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -195.5156, + 129.9737 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -578.5833, + -71.1578 + ], + "mute": true, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.024" + }, + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1282.827, + 232.6317 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + }, + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1515.8048, + -69.3657 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1557.6958, + -25.2947 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1537.126, + -47.0841 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1494.2568, + -3.2079 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1494.2351, + -470.5702 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -645.0254, + -470.3472 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -645.2181, + -300.6751 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1515.8048, + 185.732 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1311.0453, + 127.9143 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + }, + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "min_value": 0.0, + "name": "FogAmount" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/CalcFresnel.json b/fast64_internal/f3d/node_library/CalcFresnel.json new file mode 100644 index 000000000..f7b1f06ea --- /dev/null +++ b/fast64_internal/f3d/node_library/CalcFresnel.json @@ -0,0 +1,283 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "4fcd217a733d5f4ad63135b8b5047cd9", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Normal dot Incoming" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Fresnel Lo" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Fresnel Hi" + } + ], + "interface_hash": "b058aee902611f6185b5649c3e4ba46c", + "name": "CalcFresnel", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -225.2952, + 52.2073 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Normal dot Incoming" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Fresnel Lo" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Fresnel Hi" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Fresnel" + }, + "1": { + "name": "" + } + }, + "location": [ + 514.3256, + 128.7357 + ], + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -42.8541, + 30.0274 + ], + "operation": "ABSOLUTE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 157.8636, + -29.8891 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 334.1513, + 129.3712 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 157.8636, + 133.0363 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 126.025, + -4.4279 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.004" + }, + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 126.9346, + -167.3533 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Fresnel" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ClampVec01.json b/fast64_internal/f3d/node_library/ClampVec01.json new file mode 100644 index 000000000..5edd194d2 --- /dev/null +++ b/fast64_internal/f3d/node_library/ClampVec01.json @@ -0,0 +1,233 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "8ebce4f9e2c54de9c938f77481cba691", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Vector" + } + ], + "interface_hash": "a8dce1476f13456dce206bbb120a8dca", + "name": "ClampVec01", + "nodes": { + "Clamp.001": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + -0.4785, + 24.8809 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Clamp.002": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + -0.4785, + -15.3113 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Clamp.003": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 0.4784, + -56.4606 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Combine XYZ" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + 182.2784, + 56.4606 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -382.2785, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 372.2784, + 0.0 + ], + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "hide": false, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + -182.2785, + 43.0632 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.001" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Clamp.002" + } + ], + "name": "Y" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Clamp.003" + } + ], + "name": "Z" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/CombinerInputs.json b/fast64_internal/f3d/node_library/CombinerInputs.json new file mode 100644 index 000000000..ecfd18977 --- /dev/null +++ b/fast64_internal/f3d/node_library/CombinerInputs.json @@ -0,0 +1,359 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "1a0345641348542d74a2d19239e009ea", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.37967580556869507, + 0.3347793221473694, + 0.02971581742167473, + 0.19903472065925598 + ], + "name": "Env Color" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Env Alpha" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Prim Color" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Prim Alpha" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Chroma Key Center" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Chroma Key Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "LOD Fraction" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Prim LOD Fraction" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "YUVConvert K4" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "YUVConvert K5" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Noise Factor" + } + ], + "interface_hash": "e2573d14d7f0fc4bf7f0715aa95f3e9a", + "name": "CombinerInputs", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "RandomizationFactor" + } + }, + "location": [ + 234.4492, + 125.974 + ], + "node_tree": { + "name": "F3DNoiseGeneration", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 11, + "node": "Group Output" + } + ], + "name": "Noise" + } + }, + "width": 204.65713500976562, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + 53.0663, + 374.1952 + ], + "outputs": { + "0": { + "default_value": [ + 0.37967580556869507, + 0.3347793221473694, + 0.02971581742167473, + 0.19903472065925598 + ], + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Env Color" + }, + "1": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "Env Alpha" + }, + "2": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Prim Color" + }, + "3": { + "links": [ + { + "index": 4, + "node": "Group Output" + } + ], + "name": "Prim Alpha" + }, + "4": { + "links": [ + { + "index": 5, + "node": "Group Output" + } + ], + "name": "Chroma Key Center" + }, + "5": { + "links": [ + { + "index": 6, + "node": "Group Output" + } + ], + "name": "Chroma Key Scale" + }, + "6": { + "links": [ + { + "index": 7, + "node": "Group Output" + } + ], + "name": "LOD Fraction" + }, + "7": { + "links": [ + { + "index": 8, + "node": "Group Output" + } + ], + "name": "Prim LOD Fraction" + }, + "8": { + "links": [ + { + "index": 9, + "node": "Group Output" + } + ], + "name": "YUVConvert K4" + }, + "9": { + "links": [ + { + "index": 10, + "node": "Group Output" + } + ], + "name": "YUVConvert K5" + }, + "10": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Noise Factor" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": 1.0, + "hide_value": true, + "name": "1" + }, + "1": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Env Color" + }, + "2": { + "name": "Env Alpha" + }, + "3": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Prim Color" + }, + "4": { + "name": "Prim Alpha" + }, + "5": { + "name": "Chroma Key Center" + }, + "6": { + "name": "Chroma Key Scale" + }, + "7": { + "name": "LOD Fraction" + }, + "8": { + "name": "Prim LOD Fraction" + }, + "9": { + "name": "YUVConvert K4" + }, + "10": { + "name": "YUVConvert K5" + }, + "11": { + "name": "Noise" + }, + "12": { + "name": "" + } + }, + "location": [ + 488.1629, + 395.6433 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.000100016593933, + "hide_value": true, + "max_value": 1.0, + "min_value": 1.0, + "name": "1" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Env Color" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Env Alpha" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Prim Color" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Prim Alpha" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Chroma Key Center" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Chroma Key Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "LOD Fraction" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Prim LOD Fraction" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "YUVConvert K4" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "YUVConvert K5" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Noise" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Cycle.json b/fast64_internal/f3d/node_library/Cycle.json new file mode 100644 index 000000000..9ffcff0a0 --- /dev/null +++ b/fast64_internal/f3d/node_library/Cycle.json @@ -0,0 +1,626 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "d51f33e89f3241d3e0d7688acb025bc3", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": " A" + }, + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "- B" + }, + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "* C" + }, + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "+D" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": " A a" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "- B a" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "* C a" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "+D a" + } + ], + "interface_hash": "398d637de3f1941722e5ba8320548927", + "name": "Cycle", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -594.9968, + -64.8251 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": " A" + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Vector Math.001" + } + ], + "name": "- B" + }, + "2": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Vector Math.004" + } + ], + "name": "* C" + }, + "3": { + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Vector Math.003" + } + ], + "name": "+D" + }, + "4": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": " A a" + }, + "5": { + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "- B a" + }, + "6": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "* C a" + }, + "7": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "+D a" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 1.0, + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 1119.4927, + -20.2579 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + -232.0059, + -171.9814 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": {}, + "2": {} + }, + "location": [ + -67.8319, + -223.9897 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Value" + } + } + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.5 + }, + "2": { + "default_value": -0.5 + } + }, + "location": [ + 444.0553, + -157.6101 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.000100016593933 + }, + "2": { + "default_value": -1.000100016593933 + } + }, + "label": "Sign Extension", + "location": [ + -253.1447, + -346.3527 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Color Wrapping", + "location": [ + 290.0153, + 47.5171 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Color Wrapping", + "location": [ + 293.8011, + -266.5476 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -295.3255, + -359.4944 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -295.3255, + -380.4985 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "default_value": [ + 1.5, + 1.5, + 1.5 + ] + }, + "2": { + "default_value": [ + -0.5, + -0.5, + -0.5 + ] + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 441.2433, + 136.4 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -245.604, + 8.1128 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.002" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.002": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -88.2811, + -20.5271 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 70.991, + -47.4384 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.004": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": { + "default_value": [ + 1.000100016593933, + 1.000100016593933, + 1.000100016593933 + ] + }, + "2": { + "default_value": [ + -1.000100016593933, + -1.000100016593933, + -1.000100016593933 + ] + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "Sign Extension", + "location": [ + -404.8988, + -131.011 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.002" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/DirLight.json b/fast64_internal/f3d/node_library/DirLight.json new file mode 100644 index 000000000..3f49489bc --- /dev/null +++ b/fast64_internal/f3d/node_library/DirLight.json @@ -0,0 +1,652 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "5d4d797a6958bb08952157b7f8a65504", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "hide_value": true, + "name": "Light Level" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Light Color" + }, + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Light Direction" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 3, + "max_value": 255, + "min_value": 1, + "name": "Light Spec Size" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTING_SPECULAR" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "AO Dir Factor" + }, + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Normal" + } + ], + "interface_hash": "667e4ffbf15e7c5eaa29c329701e027f", + "name": "DirLight", + "nodes": { + "Clamp": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 762.7416, + -46.7075 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 590.7126, + -11.1313 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -358.9695, + 85.8641 + ], + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Light Level" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Vector Math.004" + } + ], + "name": "Light Color" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "Light Direction" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Light Spec Size" + }, + "4": { + "default_value": 1, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "G_LIGHTING_SPECULAR" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "AO Dir Factor" + }, + "6": { + "links": [ + { + "index": 1, + "node": "Vector Math.001" + } + ], + "name": "Normal" + } + }, + "width": 149.30996704101562, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Light Level" + }, + "1": { + "name": "" + } + }, + "location": [ + 1134.9746, + 68.2318 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 28.9572, + -98.891 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 224.5627, + -98.891 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 411.3172, + -98.891 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -152.4481, + 165.3704 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 938.1433, + -68.3264 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Vector Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 935.6873, + 165.4883 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -163.1675, + 6.8741 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Vector Math.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 567.6533, + -38.983 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 9.9973, + -60.7543 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 555.4879, + -61.5748 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 195.3546, + -15.8926 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 201.4413, + -236.6227 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": {}, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 963.5615, + 68.4655 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "Normal * Lt Dir", + "location": [ + -172.6133, + -63.2969 + ], + "operation": "DOT_PRODUCT", + "outputs": { + "0": { + "enabled": false, + "name": "Vector" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + }, + { + "index": 1, + "node": "Math" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.004": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "enabled": false + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "name": "Scale" + } + }, + "location": [ + 754.5358, + 121.1166 + ], + "operation": "SCALE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Light Level" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/F3DNoiseGeneration.json b/fast64_internal/f3d/node_library/F3DNoiseGeneration.json new file mode 100644 index 000000000..99d8c91ec --- /dev/null +++ b/fast64_internal/f3d/node_library/F3DNoiseGeneration.json @@ -0,0 +1,279 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "683fb7aa3ce70588b0978c6034d0fb1c", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "RandomizationFactor" + } + ], + "interface_hash": "4ef2f3ec107b53a489eb0facf190c779", + "name": "F3DNoiseGeneration", + "nodes": { + "Camera Data": { + "bl_idname": "ShaderNodeCameraData", + "location": [ + -338.4824, + 180.2002 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "View Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -541.8595, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.001" + } + ], + "name": "RandomizationFactor" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Noise" + }, + "1": { + "name": "" + } + }, + "location": [ + 531.8595, + 0.0 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 341.8595, + 62.1537 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Noise Texture": { + "bl_idname": "ShaderNodeTexNoise", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "W" + }, + "2": { + "default_value": 1000.0, + "name": "Scale" + }, + "3": { + "name": "Detail" + }, + "4": { + "default_value": 0.0, + "name": "Roughness" + }, + "5": { + "name": "Distortion" + } + }, + "location": [ + 177.9353, + 14.0014 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Fac" + }, + "1": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "default_value": [ + 0.0015625000232830644, + 0.0020834999158978462, + 0.0 + ] + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "Snap 320x240", + "location": [ + 10.7253, + -3.3982 + ], + "operation": "SNAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Noise Texture" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -156.523, + -4.7369 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Noise" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/F3DNoise_Animated.json b/fast64_internal/f3d/node_library/F3DNoise_Animated.json new file mode 100644 index 000000000..2a5cda676 --- /dev/null +++ b/fast64_internal/f3d/node_library/F3DNoise_Animated.json @@ -0,0 +1,64 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "80ddb33904696536ca32539d9690bcf6", + "interface_hash": "3fab49e63148eaa09bad80a92cf3e96c", + "name": "F3DNoise_Animated", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -541.8596, + 0.0 + ], + "outputs": {}, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Noise Factor" + }, + "1": { + "name": "" + } + }, + "location": [ + 63.28, + 0.0 + ], + "width_hidden": 42.0 + }, + "Value.002": { + "bl_idname": "ShaderNodeValue", + "label": "NoiseDriver", + "location": [ + -129.1255, + 0.2018 + ], + "outputs": { + "0": { + "default_value": 0.29054194688796997, + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Noise Factor" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/F3DNoise_NonAnimated.json b/fast64_internal/f3d/node_library/F3DNoise_NonAnimated.json new file mode 100644 index 000000000..0a98f1ab4 --- /dev/null +++ b/fast64_internal/f3d/node_library/F3DNoise_NonAnimated.json @@ -0,0 +1,62 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "9305b69dd280f13630863fa43a37210b", + "interface_hash": "3fab49e63148eaa09bad80a92cf3e96c", + "name": "F3DNoise_NonAnimated", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -541.8596, + 0.0 + ], + "outputs": {}, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Noise Factor" + }, + "1": { + "name": "" + } + }, + "location": [ + 63.28, + 0.0 + ], + "width_hidden": 42.0 + }, + "Value": { + "bl_idname": "ShaderNodeValue", + "location": [ + -122.0168, + -0.6306 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Noise Factor" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Fog.json b/fast64_internal/f3d/node_library/Fog.json new file mode 100644 index 000000000..0887090d0 --- /dev/null +++ b/fast64_internal/f3d/node_library/Fog.json @@ -0,0 +1,338 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "2963c3e08f505437a1f6c685235114e5", + "interface_hash": "fca3251c48c4d453a756578810efb46b", + "name": "Fog", + "nodes": { + "Camera Data": { + "bl_idname": "ShaderNodeCameraData", + "location": [ + -463.6024, + -23.266 + ], + "outputs": { + "1": { + "links": [ + { + "index": 0, + "node": "Math" + }, + { + "index": 0, + "node": "Math.001" + } + ], + "name": "View Z Depth" + } + }, + "width_hidden": 42.0 + }, + "ColorRamp": { + "bl_idname": "ShaderNodeValToRGB", + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 2.0, + 2.0, + 2.0, + 1.0 + ], + "position": 0.7863638401031494 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + }, + "inputs": { + "0": { + "name": "Fac" + } + }, + "location": [ + -72.3463, + 23.266 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Gamma" + } + ], + "name": "Color" + } + }, + "width": 240.0, + "width_hidden": 42.0 + }, + "ColorRamp.001": { + "bl_idname": "ShaderNodeValToRGB", + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.1636366993188858 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "EASE", + "serialized_type": "ColorRamp" + }, + "inputs": { + "0": { + "name": "Fac" + } + }, + "location": [ + -72.3463, + -194.1823 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Gamma.001" + } + ], + "name": "Color" + } + }, + "width": 240.0, + "width_hidden": 42.0 + }, + "Gamma": { + "bl_idname": "ShaderNodeGamma", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "name": "Gamma" + } + }, + "location": [ + 207.226, + 45.3343 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Gamma.001": { + "bl_idname": "ShaderNodeGamma", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "name": "Gamma" + } + }, + "location": [ + 207.226, + -172.114 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "" + } + }, + "location": [ + 408.0125, + -2.6611 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.013124999590218067 + }, + "2": { + "default_value": -0.10000000149011612 + } + }, + "location": [ + -272.0528, + -36.6214 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "ColorRamp" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.013124999590218067 + }, + "2": { + "default_value": -0.10000000149011612 + } + }, + "location": [ + -272.0528, + -254.0697 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "ColorRamp.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "approx of 970 -> 1000 fog", + "location": [ + -157.067, + 32.0329 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/FogBlender_Off.json b/fast64_internal/f3d/node_library/FogBlender_Off.json new file mode 100644 index 000000000..ef0f27c7b --- /dev/null +++ b/fast64_internal/f3d/node_library/FogBlender_Off.json @@ -0,0 +1,98 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "399a50983ee930ae7e7ad333cdca79ee", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Fog Color" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "FogEnable" + }, + { + "bl_idname": "NodeSocketFloat", + "min_value": 0.0, + "name": "FogAmount" + } + ], + "interface_hash": "d33ae113cb1e99c1a98dbf3502421ebd", + "name": "FogBlender_Off", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -340.7661, + -81.033 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + }, + "2": { + "hide_value": true, + "name": "FogEnable" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "" + } + }, + "location": [ + -128.7302, + -77.7192 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/FogBlender_On.json b/fast64_internal/f3d/node_library/FogBlender_On.json new file mode 100644 index 000000000..b4e8d6272 --- /dev/null +++ b/fast64_internal/f3d/node_library/FogBlender_On.json @@ -0,0 +1,195 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "c3cd5fd1d28111e467aa92bba6b29f8a", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Fog Color" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "FogEnable" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "FogAmount" + } + ], + "interface_hash": "28c4d47b3312e151415e1eddb7bcc836", + "name": "FogBlender_On", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -326.8776, + -99.9946 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Mix" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 2, + "node": "Mix" + } + ], + "name": "Fog Color" + }, + "2": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "FogEnable" + }, + "3": { + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "FogAmount" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "" + } + }, + "location": [ + 327.9848, + -0.7327 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -100.1417, + 40.0667 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Mix": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "name": "Color2" + } + }, + "location": [ + 163.2367, + -0.7327 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Gamma_Correct_Fast64.json b/fast64_internal/f3d/node_library/Gamma_Correct_Fast64.json new file mode 100644 index 000000000..bd60bb405 --- /dev/null +++ b/fast64_internal/f3d/node_library/Gamma_Correct_Fast64.json @@ -0,0 +1,254 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "3cfa9f3890b6496261fab2ef5e5423d5", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + ], + "interface_hash": "701370ae5b827eb5648e9d3eaa6bfd0a", + "name": "Gamma Correct Fast64", + "nodes": { + "Combine RGB": { + "bl_idname": "ShaderNodeCombineRGB", + "inputs": { + "0": { + "name": "R" + }, + "1": { + "name": "G" + }, + "2": { + "name": "B" + } + }, + "location": [ + 312.6501, + 61.278 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Image" + } + }, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Non-Corrected Value" + } + }, + "location": [ + -70.8038, + 164.7347 + ], + "node_tree": { + "name": "Gamma Correct Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine RGB" + } + ], + "name": "Gamma Corrected Value" + } + }, + "width": 213.19033813476562, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -520.4017, + -7.3613 + ], + "outputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "links": [ + { + "index": 0, + "node": "Separate RGB" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Corrected Color" + }, + "1": { + "name": "" + } + }, + "location": [ + 478.4247, + 61.4522 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Non-Corrected Value" + } + }, + "location": [ + -70.8038, + 44.7347 + ], + "node_tree": { + "name": "Gamma Correct Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine RGB" + } + ], + "name": "Gamma Corrected Value" + } + }, + "width": 213.19033813476562, + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Non-Corrected Value" + } + }, + "location": [ + -70.8038, + -75.2653 + ], + "node_tree": { + "name": "Gamma Correct Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Combine RGB" + } + ], + "name": "Gamma Corrected Value" + } + }, + "width": 213.19033813476562, + "width_hidden": 42.0 + }, + "Separate RGB": { + "bl_idname": "ShaderNodeSeparateRGB", + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Image" + } + }, + "location": [ + -352.4275, + 61.278 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "R" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "G" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "B" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Corrected Color" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Gamma_Correct_Value.json b/fast64_internal/f3d/node_library/Gamma_Correct_Value.json new file mode 100644 index 000000000..ae4da4ac5 --- /dev/null +++ b/fast64_internal/f3d/node_library/Gamma_Correct_Value.json @@ -0,0 +1,415 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "adae26b894131fcea2b29984f79588f7", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Non-Corrected Value" + } + ], + "interface_hash": "d4433fbc5524bb7d1869c57d37810c1e", + "name": "Gamma Correct Value", + "nodes": { + "Clamp.001": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 547.0531, + 93.6815 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Frame.001": { + "bl_idname": "NodeFrame", + "height": 212.0, + "label": "y = 1.055 * pow(u, (1 / 2.4)) - 0.055", + "location": [ + -224.666, + 13.3937 + ], + "width": 531.3333129882812, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -553.735, + -26.262 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.039" + } + ], + "name": "Non-Corrected Value" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Gamma Corrected Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 711.9238, + 93.5131 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 386.3471, + 93.517 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.4166666567325592 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -266.9101, + 53.9562 + ], + "operation": "POWER", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.006" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0549999475479126 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -96.654, + 53.9562 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.007" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.007": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.054999999701976776 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 64.5887, + 53.9562 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.008": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 12.920000076293945 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -298.1823, + -139.3009 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.009": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.0031308000907301903 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 93.7167, + 252.6318 + ], + "operation": "LESS_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 233.1534, + -173.7572 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -351.8496, + 139.1274 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -351.8496, + -252.6318 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.039": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -351.8496, + -60.2462 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + }, + { + "index": 0, + "node": "Reroute.038" + }, + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Gamma Corrected Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Gamma_Inverse_Fast64.json b/fast64_internal/f3d/node_library/Gamma_Inverse_Fast64.json new file mode 100644 index 000000000..f40022a60 --- /dev/null +++ b/fast64_internal/f3d/node_library/Gamma_Inverse_Fast64.json @@ -0,0 +1,258 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "c839ef9178bc4d61e7e10a83ee5d2f67", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + ], + "interface_hash": "020965702ba4a6169ff656372b7802c1", + "name": "Gamma Inverse Fast64", + "nodes": { + "Combine RGB": { + "bl_idname": "ShaderNodeCombineRGB", + "inputs": { + "0": { + "name": "R" + }, + "1": { + "name": "G" + }, + "2": { + "name": "B" + } + }, + "location": [ + 84.3359, + 82.7458 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Image" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -656.7593, + -39.4935 + ], + "outputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "links": [ + { + "index": 0, + "node": "Separate RGB" + } + ], + "name": "Gamma Corrected Color" + } + }, + "width": 148.84893798828125, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Inverse Corrected Color" + }, + "1": { + "name": "" + } + }, + "location": [ + 242.6655, + 82.3944 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Gamma Corrected Value" + } + }, + "location": [ + -239.1947, + 182.84 + ], + "node_tree": { + "name": "Gamma Inverse Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine RGB" + } + ], + "name": "Result" + } + }, + "width": 238.14590454101562, + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Gamma Corrected Value" + } + }, + "location": [ + -239.1947, + 62.84 + ], + "node_tree": { + "name": "Gamma Inverse Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine RGB" + } + ], + "name": "Result" + } + }, + "width": 238.14590454101562, + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Gamma Corrected Value" + } + }, + "location": [ + -239.1947, + -57.16 + ], + "node_tree": { + "name": "Gamma Inverse Value", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Combine RGB" + } + ], + "name": "Result" + } + }, + "width": 238.14590454101562, + "width_hidden": 42.0 + }, + "Separate RGB": { + "bl_idname": "ShaderNodeSeparateRGB", + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Image" + } + }, + "location": [ + -467.473, + 29.7773 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "R" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "G" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "B" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Inverse Corrected Color" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Gamma_Inverse_Value.json b/fast64_internal/f3d/node_library/Gamma_Inverse_Value.json new file mode 100644 index 000000000..6e336cf3f --- /dev/null +++ b/fast64_internal/f3d/node_library/Gamma_Inverse_Value.json @@ -0,0 +1,424 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "34d78ca1615b6657c6c184e425ab8ca0", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Gamma Corrected Value" + } + ], + "interface_hash": "160ca3b24b1fb4c7386f647f67863026", + "name": "Gamma Inverse Value", + "nodes": { + "Clamp": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 449.1997, + 93.6814 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Inverse Gamma" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Frame": { + "bl_idname": "NodeFrame", + "height": 214.0, + "label": "y = ((u + 0.055) / 1.055) ** 2.4", + "location": [ + -322.519, + 13.3936 + ], + "width": 532.0, + "width_hidden": 42.0 + }, + "Gamma Corrected": { + "bl_idname": "NodeGroupInput", + "label": "Input", + "location": [ + -642.8353, + -24.8181 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Gamma Corrected Value" + } + }, + "width": 167.04888916015625, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 288.4937, + 93.5169 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Inverse Gamma": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Result" + }, + "1": { + "name": "" + } + }, + "label": "Output", + "location": [ + 614.5374, + 93.9077 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.040449999272823334 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -4.1364, + 252.6316 + ], + "operation": "LESS_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 12.920000076293945 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -396.0352, + -139.301 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.054999999701976776 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -364.763, + 53.9562 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0549999475479126 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -194.507, + 53.9562 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 2.4000000953674316 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -33.2643, + 53.9562 + ], + "operation": "POWER", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -449.1997, + -59.3129 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + }, + { + "index": 0, + "node": "Reroute.026" + }, + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -449.1997, + 139.1273 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -449.1997, + -252.6316 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 135.3001, + -173.7571 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Result" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/GeometryNormal_ViewSpace.json b/fast64_internal/f3d/node_library/GeometryNormal_ViewSpace.json new file mode 100644 index 000000000..cef6cc261 --- /dev/null +++ b/fast64_internal/f3d/node_library/GeometryNormal_ViewSpace.json @@ -0,0 +1,308 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "f389109bea82ab3202f427baed044571", + "interface_hash": "650774806e0e91b0cec445c85284366c", + "name": "GeometryNormal_ViewSpace", + "nodes": { + "Geometry": { + "bl_idname": "ShaderNodeNewGeometry", + "location": [ + -243.9189, + -120.1613 + ], + "outputs": { + "1": { + "links": [ + { + "index": 0, + "node": "Vector Transform" + } + ], + "name": "Normal" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Vector Transform.001" + } + ], + "name": "Incoming" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -465.6282, + 0.0 + ], + "outputs": {}, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Normal" + }, + "1": { + "name": "Incoming" + }, + "2": { + "name": "" + } + }, + "location": [ + 477.7317, + -59.772 + ], + "width_hidden": 42.0 + }, + "Vector Math.002": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": { + "default_value": [ + 1.0, + 1.0, + -1.0 + ] + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 290.8167, + -24.8058 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": { + "default_value": [ + 1.0, + 1.0, + -1.0 + ] + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 291.6354, + -194.2964 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Rotate": { + "bl_idname": "ShaderNodeVectorRotate", + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + }, + "1": { + "name": "Center" + }, + "2": { + "default_value": [ + 1.0, + 0.0, + 0.0 + ], + "enabled": false, + "name": "Axis" + }, + "3": { + "name": "Angle" + }, + "4": { + "name": "Rotation" + } + }, + "location": [ + 114.5955, + -17.5179 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.002" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Vector Rotate.001": { + "bl_idname": "ShaderNodeVectorRotate", + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + }, + "1": { + "name": "Center" + }, + "2": { + "default_value": [ + 1.0, + 0.0, + 0.0 + ], + "enabled": false, + "name": "Axis" + }, + "3": { + "name": "Angle" + }, + "4": { + "name": "Rotation" + } + }, + "location": [ + 115.4142, + -187.0085 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Vector Transform": { + "bl_idname": "ShaderNodeVectorTransform", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5 + ], + "name": "Vector" + } + }, + "location": [ + -59.7403, + 17.7791 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Rotate" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Vector Transform.001": { + "bl_idname": "ShaderNodeVectorTransform", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5 + ], + "name": "Vector" + } + }, + "location": [ + -58.9216, + -151.7115 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Rotate.001" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Normal" + }, + { + "bl_idname": "NodeSocketVector", + "name": "Incoming" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/GeometryNormal_WorldSpace.json b/fast64_internal/f3d/node_library/GeometryNormal_WorldSpace.json new file mode 100644 index 000000000..19537c301 --- /dev/null +++ b/fast64_internal/f3d/node_library/GeometryNormal_WorldSpace.json @@ -0,0 +1,78 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "61317ce79b5f6ad21310cf8d2328b0c6", + "interface_hash": "650774806e0e91b0cec445c85284366c", + "name": "GeometryNormal_WorldSpace", + "nodes": { + "Geometry": { + "bl_idname": "ShaderNodeNewGeometry", + "location": [ + 84.8114, + 39.71 + ], + "outputs": { + "1": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Normal" + }, + "4": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Incoming" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -293.9529, + 0.0 + ], + "outputs": {}, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Normal" + }, + "1": { + "name": "Incoming" + }, + "2": { + "name": "" + } + }, + "location": [ + 283.9528, + 0.0 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Normal" + }, + { + "bl_idname": "NodeSocketVector", + "name": "Incoming" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/GetSpecularNormal.json b/fast64_internal/f3d/node_library/GetSpecularNormal.json new file mode 100644 index 000000000..7af00ebb4 --- /dev/null +++ b/fast64_internal/f3d/node_library/GetSpecularNormal.json @@ -0,0 +1,520 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "4b5d0d533e13e755bb30738dbc03d04a", + "inputs": [ + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTING_SPECULAR" + } + ], + "interface_hash": "0631b9e2c6fcba75818c63540092d401", + "name": "GetSpecularNormal", + "nodes": { + "GeometryNormal": { + "bl_idname": "ShaderNodeGroup", + "label": "GeometryNormal", + "location": [ + -630.0496, + 10.9306 + ], + "node_tree": { + "name": "GeometryNormal_WorldSpace", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + }, + { + "index": 0, + "node": "Vector Math.002" + }, + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Normal" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Vector Math.002" + }, + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Incoming" + } + }, + "width": 261.9783935546875, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + 262.306, + 113.9895 + ], + "outputs": { + "0": { + "default_value": 1, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Group.007" + } + ], + "name": "G_LIGHTING_SPECULAR" + } + }, + "width": 178.21124267578125, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vec to Lt" + }, + "1": { + "name": "Normal dot Incoming" + }, + "2": { + "name": "" + } + }, + "location": [ + 700.3458, + 129.9041 + ], + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "name": "Input0" + }, + "2": { + "name": "Input1" + } + }, + "label": "Select Vec to Lt", + "location": [ + 495.5924, + 130.1151 + ], + "node_tree": { + "name": "MixVector", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 658.3651, + 153.9627 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -213.1592, + -120.1974 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.006" + }, + { + "index": 0, + "node": "Vector Math.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -287.8699, + 87.7018 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Normal dot Incoming", + "location": [ + -79.7443, + 154.4673 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Projection", + "location": [ + 67.4041, + -20.9393 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -214.0225, + -142.0041 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Specular dir", + "location": [ + 449.3186, + -17.4567 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "enabled": false + }, + "2": { + "enabled": false + }, + "3": { + "default_value": -1.0, + "name": "Scale" + } + }, + "location": [ + 108.1891, + -134.0832 + ], + "operation": "SCALE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.003" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "enabled": false + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 2.0, + "name": "Scale" + } + }, + "location": [ + 108.1891, + 2.2366 + ], + "operation": "SCALE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.002": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -284.1655, + 65.509 + ], + "operation": "DOT_PRODUCT", + "outputs": { + "0": { + "enabled": false, + "name": "Vector" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + }, + { + "index": 3, + "node": "Vector Math.006" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 273.7002, + -0.4189 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.006": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "enabled": false + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "name": "Scale" + } + }, + "location": [ + -109.0513, + 14.5778 + ], + "operation": "SCALE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Vec to Lt" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Normal dot Incoming" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Is_i.json b/fast64_internal/f3d/node_library/Is_i.json new file mode 100644 index 000000000..46e27c17f --- /dev/null +++ b/fast64_internal/f3d/node_library/Is_i.json @@ -0,0 +1,208 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "38b4a9f9d4edd572d8c9cf87b79a36b1", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Alpha" + } + ], + "interface_hash": "fe4c592da9848bfe470c65acc9855c24", + "name": "Is i", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -471.4615, + -67.9132 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Color" + }, + "1": { + "hide_value": true, + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 212.5504, + -19.2124 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -308.4476, + -92.9209 + ], + "node_tree": { + "name": "Gamma Correct Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "RGB to BW" + } + ], + "name": "Corrected Color" + } + }, + "width": 243.65261840820312, + "width_hidden": 42.0 + }, + "RGB to BW": { + "bl_idname": "ShaderNodeRGBToBW", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -44.3312, + -43.2164 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Val" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 164.1136, + -77.7012 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + }, + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Is_ia.json b/fast64_internal/f3d/node_library/Is_ia.json new file mode 100644 index 000000000..b2278f13f --- /dev/null +++ b/fast64_internal/f3d/node_library/Is_ia.json @@ -0,0 +1,185 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "1714ac595dc1d22ac570f390a72e1f3f", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Alpha" + } + ], + "interface_hash": "fe4c592da9848bfe470c65acc9855c24", + "name": "Is ia", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -546.5447, + -103.7424 + ], + "node_tree": { + "name": "Gamma Correct Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "RGB to BW" + } + ], + "name": "Corrected Color" + } + }, + "width": 167.0988006591797, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -736.4277, + -84.1609 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Color" + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + -157.7389, + -84.721 + ], + "width_hidden": 42.0 + }, + "RGB to BW": { + "bl_idname": "ShaderNodeRGBToBW", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -364.3542, + -54.8081 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Val" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Is_not_i.json b/fast64_internal/f3d/node_library/Is_not_i.json new file mode 100644 index 000000000..01f98e7b8 --- /dev/null +++ b/fast64_internal/f3d/node_library/Is_not_i.json @@ -0,0 +1,155 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "1f5d1a7a0cb77fb46aa56ff8e35f1b9b", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Alpha" + } + ], + "interface_hash": "fe4c592da9848bfe470c65acc9855c24", + "name": "Is not i", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -566.2081, + -109.4385 + ], + "node_tree": { + "name": "Gamma Correct Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Corrected Color" + } + }, + "width": 168.2958984375, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -736.4277, + -84.4582 + ], + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Color" + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + -368.5321, + -84.721 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/LightToAlpha.json b/fast64_internal/f3d/node_library/LightToAlpha.json new file mode 100644 index 000000000..92c5e389e --- /dev/null +++ b/fast64_internal/f3d/node_library/LightToAlpha.json @@ -0,0 +1,355 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "ff334311db040555c476090d62c276c9", + "inputs": [ + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTTOALPHA" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Total Light" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Vertex Color" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Vertex Alpha" + } + ], + "interface_hash": "0f4caf71d93c2827bf2bab453c24be54", + "name": "LightToAlpha", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -311.7134, + 55.3042 + ], + "outputs": { + "0": { + "default_value": 1, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.041" + } + ], + "name": "G_LIGHTTOALPHA" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Group.005" + }, + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Total Light" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "links": [ + { + "index": 2, + "node": "Mix.002" + }, + { + "index": 1, + "node": "Vector Math" + } + ], + "name": "Vertex Color" + }, + "3": { + "default_value": 0.5, + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Group.006" + } + ], + "name": "Vertex Alpha" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + "1": { + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 315.0667, + 46.4286 + ], + "width_hidden": 42.0 + }, + "Group.005": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + -93.5564, + -176.4669 + ], + "node_tree": { + "name": "MaxOfComponents", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.006" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "label": "L2A: Alpha = Light", + "location": [ + 104.2418, + -51.7027 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Mix.002": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "label": "L2A: Col = VtxCol", + "location": [ + 106.264, + 132.0775 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Reroute.041": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 82.7474, + 19.6912 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix.002" + }, + { + "index": 0, + "node": "Reroute.042" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.042": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 83.2684, + -142.0117 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "Light * VCol", + "location": [ + -96.3614, + 8.4188 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix.002" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Lite_Texture_Settings.json b/fast64_internal/f3d/node_library/Lite_Texture_Settings.json new file mode 100644 index 000000000..eab17ff58 --- /dev/null +++ b/fast64_internal/f3d/node_library/Lite_Texture_Settings.json @@ -0,0 +1,476 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "1609018f2133cfeea3a1169f65d97851", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Mirror" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Width" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Mirror" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Height" + } + ], + "interface_hash": "48ef3e7e049e8ba539afe8ad5c109421", + "name": "Lite Texture Settings", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + 340.6651, + 381.3396 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -764.3581, + 406.4136 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group.006" + } + ], + "name": "S Clamp" + }, + "2": { + "links": [ + { + "index": 2, + "node": "Group.006" + } + ], + "name": "S Mirror" + }, + "3": { + "links": [ + { + "index": 3, + "node": "Group.006" + } + ], + "name": "Width" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Y" + }, + "5": { + "links": [ + { + "index": 1, + "node": "Group.005" + } + ], + "name": "T Clamp" + }, + "6": { + "links": [ + { + "index": 2, + "node": "Group.005" + } + ], + "name": "T Mirror" + }, + "7": { + "links": [ + { + "index": 3, + "node": "Group.005" + } + ], + "name": "Height" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "" + } + }, + "location": [ + 497.1576, + 381.3044 + ], + "width_hidden": 42.0 + }, + "Group.005": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Tex Coordinate" + }, + "1": { + "name": "Clamp" + }, + "2": { + "name": "Mirror" + }, + "3": { + "default_value": 32.0, + "name": "Length" + } + }, + "location": [ + -83.7871, + 143.5417 + ], + "node_tree": { + "name": "TileSettings_Lite", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "UV Coord" + } + }, + "width": 199.55996704101562, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Tex Coordinate" + }, + "1": { + "name": "Clamp" + }, + "2": { + "name": "Mirror" + }, + "3": { + "default_value": 32.0, + "name": "Length" + } + }, + "location": [ + -86.1416, + 461.9084 + ], + "node_tree": { + "name": "TileSettings_Lite", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "UV Coord" + } + }, + "width": 202.857666015625, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 146.7432, + 222.6728 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 1.0 + } + }, + "location": [ + -277.6491, + 288.7589 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -108.6895, + 253.6822 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -427.7146, + 283.9805 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -108.6897, + 55.295 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9452, + 187.4404 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9451, + 299.7304 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 315.9451, + 322.088 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Lite_Texture_Settings_and_3_Point.json b/fast64_internal/f3d/node_library/Lite_Texture_Settings_and_3_Point.json new file mode 100644 index 000000000..328e4f303 --- /dev/null +++ b/fast64_internal/f3d/node_library/Lite_Texture_Settings_and_3_Point.json @@ -0,0 +1,1847 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "f5a5a7cfb9f6ee748ae0a47173b1bf1e", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Width" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Height" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Y" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "name": "S Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "S Mirror" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Clamp" + }, + { + "bl_idname": "NodeSocketInt", + "name": "T Mirror" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Enable 3 Point" + } + ], + "interface_hash": "fd86d7461726814aed8b12a0fed57ea8", + "name": "Lite Texture Settings and 3 Point", + "nodes": { + "Combine XYZ.002": { + "bl_idname": "ShaderNodeCombineXYZ", + "hide": true, + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "location": [ + 535.4694, + -36.0021 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Combine XYZ.003": { + "bl_idname": "ShaderNodeCombineXYZ", + "hide": true, + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "location": [ + 535.4697, + -78.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Frame.001": { + "bl_idname": "NodeFrame", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "height": 44.99998092651367, + "label": "Create sample UVs for (X+1, Y) and (X, Y+1)", + "location": [ + 422.4624, + 74.1561 + ], + "use_custom_color": true, + "width": 503.0045166015625, + "width_hidden": 42.0 + }, + "Frame.003": { + "bl_idname": "NodeFrame", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "height": 44.999969482421875, + "label": "Get 3 Point Lerp Frac", + "label_size": 13, + "location": [ + -23.3683, + 581.2824 + ], + "use_custom_color": true, + "width": 295.88427734375, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -784.7543, + 188.4501 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Width" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Height" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "X" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Y" + }, + "4": { + "default_value": 1, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "S Clamp" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "S Mirror" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "T Clamp" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "T Mirror" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Enable 3 Point" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV00" + }, + "1": { + "name": "UV01" + }, + "2": { + "name": "UV10" + }, + "3": { + "name": "UV11" + }, + "4": { + "name": "Lerp S" + }, + "5": { + "name": "Lerp T" + }, + "6": { + "name": "" + } + }, + "location": [ + 801.3328, + -90.8818 + ], + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "default_value": 1, + "name": "S Clamp" + }, + "2": { + "name": "S Mirror" + }, + "3": { + "name": "Width" + }, + "4": { + "name": "Y" + }, + "5": { + "name": "T Clamp" + }, + "6": { + "name": "T Mirror" + }, + "7": { + "name": "Height" + } + }, + "label": "Texture Settings Shifted", + "location": [ + -64.271, + -92.6535 + ], + "node_tree": { + "name": "Lite Texture Settings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.063" + } + ], + "name": "UV" + } + }, + "width": 195.6847381591797, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "default_value": 1, + "name": "S Clamp" + }, + "2": { + "name": "S Mirror" + }, + "3": { + "name": "Width" + }, + "4": { + "name": "Y" + }, + "5": { + "name": "T Clamp" + }, + "6": { + "name": "T Mirror" + }, + "7": { + "name": "Height" + } + }, + "label": "Texture Settings", + "location": [ + -61.1134, + 188.2865 + ], + "node_tree": { + "name": "Lite Texture Settings", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "UV" + } + }, + "width": 195.6847381591797, + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5, + "name": "Value" + }, + "1": { + "default_value": 0.5, + "name": "Length" + }, + "2": { + "default_value": 1, + "name": "IsT" + } + }, + "location": [ + -22.4644, + 417.5549 + ], + "node_tree": { + "name": "3PointOffsetFrac_Lite", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "Value" + } + }, + "width": 155.9138946533203, + "width_hidden": 42.0 + }, + "Group.008": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5, + "name": "Value" + }, + "1": { + "default_value": 0.5, + "name": "Length" + }, + "2": { + "name": "IsT" + } + }, + "location": [ + -22.5398, + 359.4006 + ], + "node_tree": { + "name": "3PointOffsetFrac_Lite", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "Value" + } + }, + "width": 152.7311248779297, + "width_hidden": 42.0 + }, + "Group.010": { + "bl_idname": "ShaderNodeGroup", + "color": [ + 0.029556483030319214, + 0.2501581609249115, + 0.31854677200317383 + ], + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "Enable 3 Point" + }, + "5": { + "name": "S Shift" + }, + "6": { + "name": "T Shift" + } + }, + "location": [ + -407.9762, + 422.7409 + ], + "node_tree": { + "name": "3PointOffset", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.061" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Y" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.038" + } + ], + "name": "Shifted X" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.043" + } + ], + "name": "Shifted Y" + } + }, + "use_custom_color": true, + "width": 160.1077423095703, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -525.1768, + -22.6885 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -140.1031 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.002" + }, + { + "index": 6, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -118.2419 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.002" + }, + { + "index": 5, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -130.9664, + 1.649 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -156.6158, + 99.6678 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -92.8171 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.006" + }, + { + "index": 3, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -164.923 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.006" + }, + { + "index": 7, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -68.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.002" + }, + { + "index": 2, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -368.912, + -46.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.002" + }, + { + "index": 1, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -597.18, + 131.8081 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + }, + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -620.0024, + 154.0267 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + }, + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -620.0894, + -89.2291 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -597.055, + -162.009 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -550.9844, + 88.231 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -574.6416, + 110.0638 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.3921, + 132.5208 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.0605, + 153.758 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -550.9844, + 202.0853 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -574.6416, + 223.5192 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.3921, + 246.6233 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.0605, + 268.0341 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.010" + }, + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -525.1768, + 180.4871 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 746.0419, + -169.5363 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 719.3997, + -147.0134 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 719.3994, + -45.7768 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 746.0419, + -88.8349 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 209.2365, + -45.7056 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 209.2366, + 153.2448 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + }, + { + "index": 0, + "node": "Reroute.032" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 774.0811, + 153.3862 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 774.0813, + -125.4229 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 774.0813, + -191.6426 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 178.9058, + 407.565 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 147.3318, + 349.666 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.062" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 178.9058, + -210.7318 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -184.6187, + 344.7003 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.044" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.043": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -206.4002, + 322.0233 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.045" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.044": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -184.6185, + -137.8321 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.045": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -206.4002, + -203.3257 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -498.2127, + 485.5062 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -180.3501, + 485.5062 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -477.5148, + 438.4187 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -187.2277, + 438.4187 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -130.9663, + 365.7993 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.008" + }, + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -156.6158, + 387.8604 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.007" + }, + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.062": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 147.3318, + -234.631 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.063": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 189.5645, + -126.5774 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ.003" + }, + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Separate XYZ.002": { + "bl_idname": "ShaderNodeSeparateXYZ", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 235.145, + -35.4262 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.002" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.003" + } + ], + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "width_hidden": 42.0 + }, + "Separate XYZ.003": { + "bl_idname": "ShaderNodeSeparateXYZ", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 232.3555, + -78.5068 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.003" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.002" + } + ], + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "width": 141.7603302001953, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "UV11" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Lerp T" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/MaxOfComponents.json b/fast64_internal/f3d/node_library/MaxOfComponents.json new file mode 100644 index 000000000..24d78382b --- /dev/null +++ b/fast64_internal/f3d/node_library/MaxOfComponents.json @@ -0,0 +1,169 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "532adab945239da1e144ccf2b4950cf2", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Vector" + } + ], + "interface_hash": "f79f89b18fc4fa94c0f4f94db4b81a7c", + "name": "MaxOfComponents", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -356.9276, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 346.9276, + 0.0 + ], + "width_hidden": 42.0 + }, + "Math.012": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -0.4549, + 9.5576 + ], + "operation": "MAXIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.013" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.013": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 156.9276, + -9.5576 + ], + "operation": "MAXIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + -156.9276, + -3.1859 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.012" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Math.012" + } + ], + "name": "Y" + }, + "2": { + "links": [ + { + "index": 1, + "node": "Math.013" + } + ], + "name": "Z" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/MixValue.json b/fast64_internal/f3d/node_library/MixValue.json new file mode 100644 index 000000000..e215565a8 --- /dev/null +++ b/fast64_internal/f3d/node_library/MixValue.json @@ -0,0 +1,167 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "86294fca1667e80885382472fddbcd3f", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 1.0, + "min_value": 0.0, + "name": "Fac" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Input0" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "hide_value": true, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Input1" + } + ], + "interface_hash": "156e03c096a4b1b053e99c1d12a87120", + "name": "MixValue", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -357.5402, + 0.0 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.004" + } + ], + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "links": [ + { + "index": 1, + "node": "Math.003" + }, + { + "index": 2, + "node": "Math.004" + } + ], + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Input1" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 343.5534, + 90.1504 + ], + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + -76.1189, + 43.4761 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": {} + }, + "location": [ + 171.8792, + 90.9843 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/MixVector.json b/fast64_internal/f3d/node_library/MixVector.json new file mode 100644 index 000000000..0c8da848c --- /dev/null +++ b/fast64_internal/f3d/node_library/MixVector.json @@ -0,0 +1,210 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "85abfceb66e8a6140db58783ff658aa2", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Fac" + }, + { + "bl_idname": "NodeSocketVector", + "name": "Input0" + }, + { + "bl_idname": "NodeSocketVector", + "name": "Input1" + } + ], + "interface_hash": "25551426b2465ae56f135925858e0c9d", + "name": "MixVector", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -325.8933, + 78.729 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.061" + } + ], + "name": "Fac" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Input0" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Vector Math.010" + } + ], + "name": "Input1" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 351.3011, + 123.0141 + ], + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -75.7326, + -10.8386 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Vector Math.009" + }, + { + "index": 1, + "node": "Vector Math.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -73.7655, + 11.796 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Vector Math.009": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": {}, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 150.4822, + 123.9848 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.010": { + "bl_idname": "ShaderNodeVectorMath", + "hide": true, + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -27.4709, + 55.4415 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.009" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Noise.json b/fast64_internal/f3d/node_library/Noise.json new file mode 100644 index 000000000..0d6be071f --- /dev/null +++ b/fast64_internal/f3d/node_library/Noise.json @@ -0,0 +1,276 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "eab2aa8d9fd7a122cbb608922f02cfa4", + "interface_hash": "f1280502d5f1bdd367610f0454a80e30", + "name": "Noise", + "nodes": { + "Camera Data": { + "bl_idname": "ShaderNodeCameraData", + "location": [ + -320.272, + 4.2201 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "View Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 479.4075, + 65.6406 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 320.272, + 46.2361 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Noise Texture": { + "bl_idname": "ShaderNodeTexNoise", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "W" + }, + "2": { + "default_value": 1411.0, + "name": "Scale" + }, + "3": { + "default_value": 16.0, + "name": "Detail" + }, + "4": { + "default_value": 1.0, + "name": "Roughness" + }, + "5": { + "name": "Distortion" + } + }, + "location": [ + 163.122, + 80.3753 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Fac" + }, + "1": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Color" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Value.001": { + "bl_idname": "ShaderNodeValue", + "label": "FrameNum Driver", + "location": [ + -154.9056, + -80.3752 + ], + "outputs": { + "0": { + "default_value": 59.0, + "links": [ + { + "index": 1, + "node": "Vector Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "default_value": [ + 0.0031250000465661287, + 0.004166666883975267, + 0.0 + ] + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "Snap 320x240", + "location": [ + -1.845, + 62.9756 + ], + "operation": "SNAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Noise Texture" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -156.3826, + 61.6369 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_CLIP.json b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_CLIP.json new file mode 100644 index 000000000..c048be6e5 --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_CLIP.json @@ -0,0 +1,274 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "56f6f48f0e623d02a3dc7b443b29d787", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "name": "Cycle_A_2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.125, + "max_value": 1.0, + "min_value": 0.0, + "name": "Alpha Threshold" + } + ], + "interface_hash": "b14363ecf11aa069764f7107fd8f9339", + "name": "OUTPUT_1CYCLE_CLIP", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + -12.9275, + -108.6309 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix Shader" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 168.8801727294922, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -171.8638, + 6.4153 + ], + "outputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Cycle_C_1" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Cycle_A_1" + }, + "2": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Cycle_C_2" + }, + "4": { + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "Alpha Threshold" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 334.0443, + 3.2077 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 14.5989, + -36.3791 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix Shader" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Mix Shader": { + "bl_idname": "ShaderNodeMixShader", + "inputs": { + "0": { + "name": "Fac" + }, + "1": {}, + "2": {} + }, + "location": [ + 181.1692, + 4.9553 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Shader" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -12.9584, + -28.8947 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Transparent BSDF": { + "bl_idname": "ShaderNodeBsdfTransparent", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "enabled": false, + "name": "Weight" + } + }, + "location": [ + 13.1641, + -67.7904 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix Shader" + } + ], + "name": "BSDF" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_OPA.json b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_OPA.json new file mode 100644 index 000000000..431e7ab51 --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_OPA.json @@ -0,0 +1,120 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "e4d0e223c840a4a19dfeb268bfcdceb9", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Cycle_A_2" + } + ], + "interface_hash": "93fb2a39fd5bc9d3422f4d1cbb9f80c9", + "name": "OUTPUT_1CYCLE_OPA", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + -7.8627, + 17.9682 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 234.19326782226562, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -180.2261, + 42.7965 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Cycle_C_1" + }, + "1": { + "default_value": 0.5, + "name": "Cycle_A_1" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 260.7855, + 42.5168 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_XLU.json b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_XLU.json new file mode 100644 index 000000000..622392c36 --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_1CYCLE_XLU.json @@ -0,0 +1,220 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "76b326f6c1166f5233fb7d6a6ae9cb35", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Cycle_A_2" + } + ], + "interface_hash": "93fb2a39fd5bc9d3422f4d1cbb9f80c9", + "name": "OUTPUT_1CYCLE_XLU", + "nodes": { + "Clamp": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 51.3882, + 0.7841 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix Shader" + } + ], + "name": "Result" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + -17.4111, + -46.4793 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix Shader" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 168.8801727294922, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -206.2546, + 27.0863 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Cycle_C_1" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Clamp" + } + ], + "name": "Cycle_A_1" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 465.7498, + 46.4155 + ], + "width_hidden": 42.0 + }, + "Mix Shader": { + "bl_idname": "ShaderNodeMixShader", + "inputs": { + "0": { + "name": "Fac" + }, + "1": {}, + "2": {} + }, + "location": [ + 312.6583, + 46.7917 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Shader" + } + }, + "width_hidden": 42.0 + }, + "Transparent BSDF": { + "bl_idname": "ShaderNodeBsdfTransparent", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "enabled": false, + "name": "Weight" + } + }, + "location": [ + -204.2914, + 130.1522 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix Shader" + } + ], + "name": "BSDF" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_CLIP.json b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_CLIP.json new file mode 100644 index 000000000..be1e9468c --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_CLIP.json @@ -0,0 +1,235 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "4eb848f8d6ac706bfb736fde5dce23c3", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 1.0, + "min_value": 0.0, + "name": "Cycle_A_2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.125, + "name": "Alpha Threshold" + } + ], + "interface_hash": "126fcd722cdfbddbdd2ecf5b3e6a0fb6", + "name": "OUTPUT_2CYCLE_CLIP", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + 2.4201, + -105.2821 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix Shader" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 168.8801727294922, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -171.8638, + 6.4153 + ], + "outputs": { + "2": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Cycle_C_2" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Cycle_A_2" + }, + "4": { + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "Alpha Threshold" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 334.0443, + 3.2077 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 2.6008, + -36.379 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix Shader" + } + ], + "name": "Value" + } + }, + "use_clamp": true, + "width_hidden": 42.0 + }, + "Mix Shader": { + "bl_idname": "ShaderNodeMixShader", + "inputs": { + "0": { + "name": "Fac" + }, + "1": {}, + "2": {} + }, + "location": [ + 181.1692, + 4.9553 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Shader" + } + }, + "width_hidden": 42.0 + }, + "Transparent BSDF": { + "bl_idname": "ShaderNodeBsdfTransparent", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "enabled": false, + "name": "Weight" + } + }, + "location": [ + 2.5901, + -67.7904 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix Shader" + } + ], + "name": "BSDF" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_OPA.json b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_OPA.json new file mode 100644 index 000000000..69f85628e --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_OPA.json @@ -0,0 +1,120 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "0f37f5da34f9b38e6ae9b2c8692b10bd", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Cycle_A_2" + } + ], + "interface_hash": "93fb2a39fd5bc9d3422f4d1cbb9f80c9", + "name": "OUTPUT_2CYCLE_OPA", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + -58.4943, + -66.7448 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 168.9672393798828, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -232.1208, + 1.8922 + ], + "outputs": { + "1": { + "default_value": 0.5, + "name": "Cycle_A_1" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Cycle_C_2" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 144.575, + -42.1142 + ], + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_XLU.json b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_XLU.json new file mode 100644 index 000000000..2849f0caf --- /dev/null +++ b/fast64_internal/f3d/node_library/OUTPUT_2CYCLE_XLU.json @@ -0,0 +1,222 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "aec20b8b1ec7f6bb308fb3c739bc192a", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_1" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Cycle_A_1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "Cycle_C_2" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Cycle_A_2" + } + ], + "interface_hash": "75892d4ec98018bd66b6e6a317a20e3f", + "name": "OUTPUT_2CYCLE_XLU", + "nodes": { + "Clamp": { + "bl_idname": "ShaderNodeClamp", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + 84.6776, + -15.485 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix Shader" + } + ], + "name": "Result" + } + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Gamma Corrected Color" + } + }, + "location": [ + 143.392, + -60.5204 + ], + "node_tree": { + "name": "Gamma Inverse Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix Shader" + } + ], + "name": "Inverse Corrected Color" + } + }, + "width": 163.7135772705078, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -191.6254, + 51.8902 + ], + "outputs": { + "1": { + "default_value": 0.5, + "name": "Cycle_A_1" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Cycle_C_2" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Clamp" + } + ], + "name": "Cycle_A_2" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Shader" + }, + "1": { + "name": "" + } + }, + "location": [ + 488.2988, + 32.9936 + ], + "width_hidden": 42.0 + }, + "Mix Shader": { + "bl_idname": "ShaderNodeMixShader", + "inputs": { + "0": { + "name": "Fac" + }, + "1": {}, + "2": {} + }, + "location": [ + 333.0882, + 32.4752 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Shader" + } + }, + "width_hidden": 42.0 + }, + "Transparent BSDF": { + "bl_idname": "ShaderNodeBsdfTransparent", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Color" + }, + "1": { + "enabled": false, + "name": "Weight" + } + }, + "location": [ + -190.3567, + 134.448 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix Shader" + } + ], + "name": "BSDF" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketShader", + "name": "Shader" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/OffsetXY.json b/fast64_internal/f3d/node_library/OffsetXY.json new file mode 100644 index 000000000..2a626234d --- /dev/null +++ b/fast64_internal/f3d/node_library/OffsetXY.json @@ -0,0 +1,542 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "b54b2cec1c0c3309126d774232fdc5ff", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Width" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Height" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Enable" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "TexelOffsetX" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "TexelOffsetY" + } + ], + "interface_hash": "f19c30af1d0d19f965498b30b7494bea", + "name": "OffsetXY", + "nodes": { + "Combine XY": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "label": "Combine XY", + "location": [ + -323.8419, + 24.5723 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Combine XYZ.001": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "label": "Combine UV", + "location": [ + -148.7409, + -137.2627 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.003" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -579.4422, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XY" + } + ], + "name": "Width" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Combine XY" + } + ], + "name": "Height" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Combine XYZ.001" + } + ], + "name": "X" + }, + "3": { + "links": [ + { + "index": 1, + "node": "Combine XYZ.001" + } + ], + "name": "Y" + }, + "4": { + "links": [ + { + "index": 1, + "node": "Vector Math.002" + } + ], + "name": "Enable" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "TexelOffsetX" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "TexelOffsetY" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "" + } + }, + "location": [ + 831.0713, + -9.341 + ], + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -379.3498, + 97.2086 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "TexelOffset" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -379.3498, + -144.1663 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -353.6244, + 75.2043 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "TexelOffset" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -353.6244, + -166.7248 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "hide": false, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 669.2014, + -9.0905 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Y" + }, + "2": { + "hide": true, + "name": "Z" + } + }, + "width_hidden": 42.0 + }, + "TexelOffset": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "default_value": 0.5, + "name": "X" + }, + "1": { + "default_value": 0.5, + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "label": "TexelOffset", + "location": [ + -324.7933, + 156.8215 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ] + }, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 55.1199, + 189.8493 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.002" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "default_value": [ + -1.0, + 1.0, + 1.0 + ] + }, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -150.32, + 80.3419 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.002": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "label": "ShiftIfEnabled", + "location": [ + 296.125, + -10.2964 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Vector Math.003" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.003": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 498.9052, + -58.0213 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ScaleUVs.json b/fast64_internal/f3d/node_library/ScaleUVs.json new file mode 100644 index 000000000..6574ba543 --- /dev/null +++ b/fast64_internal/f3d/node_library/ScaleUVs.json @@ -0,0 +1,207 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "d1619da9efb26cee07a14c7ef276f075", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "UV" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "S Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "T Scale" + } + ], + "interface_hash": "cb5b9f78ddba87717e9b8cdb7074ac50", + "name": "ScaleUVs", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + -55.1894, + 15.1652 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.001" + }, + { + "index": 1, + "node": "Vector Math" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -330.2278, + 133.6254 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math" + } + ], + "name": "UV" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "S Scale" + }, + "2": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "T Scale" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "" + } + }, + "location": [ + 498.3517, + 80.4327 + ], + "width_hidden": 42.0 + }, + "Vector Math": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": {}, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 335.5294, + 79.9224 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.001": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": { + "default_value": [ + 0.0, + -1.0, + 0.0 + ] + }, + "2": { + "default_value": [ + 0.0, + 1.0, + 0.0 + ] + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 153.0767, + -48.2458 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Vector Math" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "name": "UV" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ShdCol.json b/fast64_internal/f3d/node_library/ShdCol.json new file mode 100644 index 000000000..7576af3fc --- /dev/null +++ b/fast64_internal/f3d/node_library/ShdCol.json @@ -0,0 +1,3046 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "4e9147a50abcbed333195e21c934fb32", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "AmbientColor" + }, + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5028858184814453, + 0.5028861165046692, + 0.5028864145278931, + 1.0 + ], + "hide_value": true, + "name": "Light0Color" + }, + { + "bl_idname": "NodeSocketVectorDirection", + "default_value": [ + 0.0, + 0.0, + 1.0 + ], + "hide_value": true, + "max_value": 1.0, + "min_value": -1.0, + "name": "Light0Dir" + }, + { + "bl_idname": "NodeSocketInt", + "hide_value": true, + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Light0Size" + }, + { + "bl_idname": "NodeSocketColor", + "hide_value": true, + "name": "Light1Color" + }, + { + "bl_idname": "NodeSocketVectorDirection", + "hide_value": true, + "name": "Light1Dir" + }, + { + "bl_idname": "NodeSocketInt", + "hide_value": true, + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Light1Size" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "FogValue" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_FOG" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_LIGHTING" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_PACKED_NORMALS" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_LIGHTTOALPHA" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_FRESNEL_COLOR" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_FRESNEL_ALPHA" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_LIGHTING_SPECULAR" + }, + { + "bl_idname": "NodeSocketInt", + "name": "G_AMBOCCLUSION" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 1.0, + "min_value": 0.0, + "name": "AO Ambient" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.625, + "max_value": 1.0, + "min_value": 0.0, + "name": "AO Directional" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 1.0, + "min_value": 0.0, + "name": "AO Point" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.4000000059604645, + "min_value": -3.402820018375656e+38, + "name": "Fresnel Lo" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.699999988079071, + "name": "Fresnel Hi" + } + ], + "interface_hash": "f3c63df483165dcdea514e993da93efe", + "name": "ShdCol", + "nodes": { + "Attribute": { + "attribute_name": "Alpha", + "bl_idname": "ShaderNodeAttribute", + "hide": true, + "label": "Alpha VCol", + "location": [ + -2283.1582, + 778.2054 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Color" + }, + "1": { + "hide": true, + "name": "Vector" + }, + "2": { + "hide": true, + "name": "Fac" + }, + "3": { + "hide": true, + "name": "Alpha" + } + }, + "width": 140.0, + "width_hidden": 42.0 + }, + "Attribute.001": { + "attribute_name": "Col", + "bl_idname": "ShaderNodeAttribute", + "hide": true, + "label": "VCol", + "location": [ + -2287.4658, + 822.0338 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Color" + }, + "1": { + "hide": true, + "name": "Vector" + }, + "2": { + "hide": true, + "name": "Fac" + }, + "3": { + "hide": true, + "name": "Alpha" + } + }, + "width": 143.9135284423828, + "width_hidden": 42.0 + }, + "DirLight0": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "hide_value": true, + "name": "Light Level" + }, + "1": { + "name": "Light Color" + }, + "2": { + "name": "Light Direction" + }, + "3": { + "default_value": 3, + "name": "Light Spec Size" + }, + "4": { + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTING_SPECULAR" + }, + "5": { + "name": "AO Dir Factor" + }, + "6": { + "name": "Normal" + } + }, + "label": "DirLight0", + "location": [ + -745.4259, + 374.3987 + ], + "node_tree": { + "name": "DirLight", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "DirLight1" + } + ], + "name": "Light Level" + } + }, + "width_hidden": 42.0 + }, + "DirLight1": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "hide_value": true, + "name": "Light Level" + }, + "1": { + "name": "Light Color" + }, + "2": { + "name": "Light Direction" + }, + "3": { + "default_value": 3, + "name": "Light Spec Size" + }, + "4": { + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTING_SPECULAR" + }, + "5": { + "name": "AO Dir Factor" + }, + "6": { + "name": "Normal" + } + }, + "label": "DirLight1", + "location": [ + -480.0354, + 372.9975 + ], + "node_tree": { + "name": "DirLight", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.004" + } + ], + "name": "Light Level" + } + }, + "width_hidden": 42.0 + }, + "GetSpecularNormal": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTING_SPECULAR" + } + }, + "label": "GetSpecularNormal", + "location": [ + -1767.1469, + 246.9856 + ], + "node_tree": { + "name": "GetSpecularNormal", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Vec to Lt" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Group.009" + } + ], + "name": "Normal dot Incoming" + } + }, + "width": 170.023193359375, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "label": "Replace A w Fog", + "location": [ + 702.1172, + 330.8109 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -1965.2916, + 738.6661 + ], + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "AmbientColor" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.029" + } + ], + "name": "Light0Color" + }, + "2": { + "default_value": [ + 0.0, + 0.0, + 1.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Light0Dir" + }, + "3": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Light0Size" + }, + "4": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.062" + } + ], + "name": "Light1Color" + }, + "5": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.064" + } + ], + "name": "Light1Dir" + }, + "6": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.066" + } + ], + "name": "Light1Size" + }, + "7": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "FogValue" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "G_FOG" + }, + "9": { + "links": [ + { + "index": 0, + "node": "Reroute.045" + } + ], + "name": "G_LIGHTING" + }, + "10": { + "links": [ + { + "index": 0, + "node": "Reroute.049" + } + ], + "name": "G_PACKED_NORMALS" + }, + "11": { + "links": [ + { + "index": 0, + "node": "Reroute.040" + } + ], + "name": "G_LIGHTTOALPHA" + }, + "12": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "G_FRESNEL_COLOR" + }, + "13": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "G_FRESNEL_ALPHA" + }, + "14": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "G_LIGHTING_SPECULAR" + }, + "15": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "G_AMBOCCLUSION" + }, + "16": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "AO Ambient" + }, + "17": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "AO Directional" + }, + "19": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Fresnel Lo" + }, + "20": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Fresnel Hi" + } + }, + "width": 151.80078125, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + }, + "1": { + "name": "Alpha" + }, + "2": { + "name": "" + } + }, + "location": [ + 900.8262, + 440.8631 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -2118.2766, + 777.5449 + ], + "node_tree": { + "name": "Gamma Correct Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "RGB to BW" + } + ], + "name": "Corrected Color" + } + }, + "width": 177.94418334960938, + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "name": "Gamma Corrected Value" + } + }, + "location": [ + -2099.5359, + 897.024 + ], + "node_tree": { + "name": "Gamma Inverse Value", + "serialized_type": "NodeTree" + }, + "outputs": {}, + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -2117.0786, + 822.39 + ], + "node_tree": { + "name": "Gamma Correct Fast64", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.038" + } + ], + "name": "Corrected Color" + } + }, + "width": 176.2003631591797, + "width_hidden": 42.0 + }, + "Group.004": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + -289.3818, + 398.7888 + ], + "node_tree": { + "name": "ClampVec01", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group.005": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + }, + "2": { + "hide_value": true, + "name": "G_FRESNEL_ALPHA" + }, + "3": { + "default_value": 1, + "hide_value": true, + "name": "G_FRESNEL_COLOR" + }, + "4": { + "default_value": 0.5, + "hide_value": true, + "name": "Fresnel" + } + }, + "location": [ + 431.1262, + 398.2488 + ], + "node_tree": { + "name": "ApplyFresnel", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix.004" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.041" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Group.006": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Ambient Color" + }, + "1": { + "name": "AO Ambient Factor" + } + }, + "label": "Ambient Light", + "location": [ + -1001.3361, + 373.763 + ], + "node_tree": { + "name": "AmbientLight", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "DirLight0" + } + ], + "name": "Light Level" + } + }, + "width_hidden": 42.0 + }, + "Group.007": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Vertex Alpha" + }, + "1": { + "default_value": 1, + "hide_value": true, + "name": "G_AMBOCCLUSION" + }, + "2": { + "default_value": 0.5, + "name": "AO Ambient" + }, + "3": { + "default_value": 0.5, + "name": "AO Directional" + } + }, + "location": [ + -1215.0566, + 376.1966 + ], + "node_tree": { + "name": "AOFactors", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "AO Amb Factor" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "AO Dir Factor" + } + }, + "width": 152.7864990234375, + "width_hidden": 42.0 + }, + "Group.009": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Normal dot Incoming" + }, + "1": { + "default_value": 0.5, + "name": "Fresnel Lo" + }, + "2": { + "default_value": 0.5, + "name": "Fresnel Hi" + } + }, + "location": [ + -1491.9797, + 278.7179 + ], + "node_tree": { + "name": "CalcFresnel", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Fresnel" + } + }, + "width_hidden": 42.0 + }, + "Group.010": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 1, + "hide_value": true, + "name": "G_LIGHTTOALPHA" + }, + "1": { + "name": "Total Light" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Vertex Color" + }, + "3": { + "default_value": 0.5, + "hide_value": true, + "name": "Vertex Alpha" + } + }, + "location": [ + -29.5393, + 360.0221 + ], + "node_tree": { + "name": "LightToAlpha", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "Mix.003" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Mix.003": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "label": "No Packed Normals", + "location": [ + 204.5715, + 399.1165 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group.005" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "Mix.004": { + "bl_idname": "ShaderNodeMixRGB", + "inputs": { + "0": { + "name": "Fac" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color1" + }, + "2": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color2" + } + }, + "label": "Disable Lighting", + "location": [ + 702.8589, + 518.7827 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "RGB to BW": { + "bl_idname": "ShaderNodeRGBToBW", + "hide": true, + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + } + }, + "location": [ + -1917.4307, + 777.6205 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "Val" + } + }, + "width": 102.71830749511719, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 652.8352, + 542.7546 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_FOG", + "location": [ + 633.1626, + 522.5414 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -791.5898, + 657.6923 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.042" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1027.7544, + 284.1518 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -767.1015, + 104.1183 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.053" + }, + { + "index": 0, + "node": "Reroute.069" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1788.3042, + 134.9888 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "GetSpecularNormal" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1789.1194, + 395.9777 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + }, + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_FRESNEL_COLOR", + "location": [ + 375.995, + 438.8208 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.032" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_FRESNEL_ALPHA", + "location": [ + 395.1475, + 417.5142 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 204.646, + 220.6357 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 397.5989, + 241.6896 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1541.1616, + 144.5011 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1521.5952, + 166.9843 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1572.2717, + 211.7775 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1542.6559, + 263.6219 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1522.3707, + 286.3088 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1571.4875, + 105.7376 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1328.751, + 243.9941 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1328.7041, + 82.2788 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1280.8429, + 351.201 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1301.7417, + 329.3955 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1260.3784, + 373.3571 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1259.2085, + 242.1832 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1300.6041, + 197.7541 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1280.1963, + 220.3843 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1237.5736, + 264.4097 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1029.1858, + 700.3717 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1034.066, + 123.2127 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1027.4915, + 262.0336 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.029": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -767.858, + 679.328 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.044" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.030": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -111.593, + 181.5826 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.031": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -55.026, + 248.3994 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 376.7528, + 219.8322 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 658.2585, + 197.1397 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 635.7847, + 240.8632 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1236.4384, + 767.8488 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.043" + }, + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 399.622, + 79.7119 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.073" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Total Light", + "location": [ + -75.4767, + 381.0069 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.051" + }, + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Vertex Color", + "location": [ + -95.1821, + 812.9934 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.039" + }, + { + "index": 0, + "node": "Reroute.047" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.039": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -93.7028, + 204.4446 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.040": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_LIGHTTOALPHA", + "location": [ + -56.4481, + 459.6726 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.031" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.041": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 610.4702, + 219.0124 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.042": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -791.2551, + 239.614 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.043": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Vertex Alpha", + "location": [ + -113.2417, + 765.6992 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.030" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.044": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -766.6425, + 261.744 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.045": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_LIGHTING", + "location": [ + 611.0647, + 499.6646 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.046" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.046": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 611.7163, + 407.2597 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.047": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Vertex Color", + "location": [ + 674.7383, + 814.2455 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.048" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.048": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 679.4336, + 384.7707 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.049": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "G_PACKED_NORMALS", + "location": [ + 179.8353, + 479.4407 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.050" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.050": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 181.9626, + 287.5107 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mix.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.051": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 160.1116, + 380.985 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.052" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.052": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 161.2356, + 265.0642 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Mix.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -767.568, + 151.8276 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -789.9753, + 173.8012 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -790.235, + 123.6342 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + }, + { + "index": 0, + "node": "Reroute.070" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -838.1842, + 392.6108 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + }, + { + "index": 0, + "node": "Reroute.068" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -75.5634, + 226.5249 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -838.176, + 196.2852 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -813.8499, + 218.1056 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "DirLight0" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -814.814, + 634.78 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -501.3141, + 261.2294 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.062": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -500.0568, + 611.0577 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.061" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.063": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -522.0397, + 239.1433 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.064": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -521.8881, + 589.9742 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.063" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.065": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -543.8701, + 217.344 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.066": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -544.3807, + 567.156 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.065" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.067": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -567.5297, + 195.3045 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.068": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -567.5297, + 392.3401 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.067" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.069": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -505.3148, + 103.5826 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.072" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.070": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -526.5988, + 122.9206 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.071" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.071": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -526.2999, + 172.6951 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.072": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -505.1049, + 150.7649 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "DirLight1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.073": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 398.33, + 197.7357 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Alpha" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/ShiftValue.json b/fast64_internal/f3d/node_library/ShiftValue.json new file mode 100644 index 000000000..8b4e5b2c1 --- /dev/null +++ b/fast64_internal/f3d/node_library/ShiftValue.json @@ -0,0 +1,139 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "b6a11278b9d5e8541c43ec90abaed028", + "inputs": [ + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + } + ], + "interface_hash": "6426508139668983dca234de1f93c685", + "name": "ShiftValue", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -369.6805, + 42.9698 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.025" + } + ], + "name": "Shift" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.032" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 158.184, + 121.1253 + ], + "width_hidden": 42.0 + }, + "Math.025": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 2.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -188.5537, + 143.354 + ], + "operation": "POWER", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.032" + } + ], + "name": "Value" + } + } + }, + "Math.032": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -10.3302, + 121.1825 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + } + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/Step.json b/fast64_internal/f3d/node_library/Step.json new file mode 100644 index 000000000..dcd377d60 --- /dev/null +++ b/fast64_internal/f3d/node_library/Step.json @@ -0,0 +1,144 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "ee7156b89d3d5a0a7fad20aa0871bba6", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + } + ], + "interface_hash": "c1a5ccf144beec3ad90b3ec8dccd7d54", + "name": "Step", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -288.7444, + 0.0 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.002" + } + ] + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.002" + } + ] + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Result" + }, + "1": { + "name": "" + } + }, + "location": [ + 229.4413, + 79.0829 + ], + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -126.8846, + 77.9513 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 50.6043, + 80.2145 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Result" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/SubLerp.json b/fast64_internal/f3d/node_library/SubLerp.json new file mode 100644 index 000000000..5260d2fb9 --- /dev/null +++ b/fast64_internal/f3d/node_library/SubLerp.json @@ -0,0 +1,157 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "273f8a357e9b10e014f292fe35953c77", + "inputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "C1" + }, + { + "bl_idname": "NodeSocketColor", + "name": "C2" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Fac" + } + ], + "interface_hash": "20c8478f4ab019e682ef6fb65b777ebc", + "name": "SubLerp", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -294.0455, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.007" + } + ], + "name": "C1" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Vector Math.007" + } + ], + "name": "C2" + }, + "2": { + "links": [ + { + "index": 1, + "node": "Vector Math.008" + } + ], + "name": "Fac" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 284.0454, + 0.0 + ], + "width_hidden": 42.0 + }, + "Vector Math.007": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + -94.0455, + -1.9878 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Vector Math.008" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Vector Math.008": { + "bl_idname": "ShaderNodeVectorMath", + "inputs": { + "0": {}, + "1": {}, + "2": { + "enabled": false + }, + "3": { + "default_value": 1.0, + "enabled": false, + "name": "Scale" + } + }, + "location": [ + 94.0454, + 1.9878 + ], + "operation": "MULTIPLY", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + }, + "1": { + "enabled": false, + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketColor", + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/SubLerpVal.json b/fast64_internal/f3d/node_library/SubLerpVal.json new file mode 100644 index 000000000..375a54b70 --- /dev/null +++ b/fast64_internal/f3d/node_library/SubLerpVal.json @@ -0,0 +1,160 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "c2b9a17e9dd192bfe54cdd1a0c00fc5f", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "V1" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "V2" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Fac" + } + ], + "interface_hash": "dd6feb85eb9fc5dd71bb49ffc55c1a20", + "name": "SubLerpVal", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -244.181, + 33.8004 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "V1" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "V2" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Fac" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 227.7747, + 89.7458 + ], + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -85.5307, + 112.8277 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 68.059, + 90.2504 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/TextureSettings_Advanced.json b/fast64_internal/f3d/node_library/TextureSettings_Advanced.json new file mode 100644 index 000000000..b082f13e9 --- /dev/null +++ b/fast64_internal/f3d/node_library/TextureSettings_Advanced.json @@ -0,0 +1,1816 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "a132ab91b5e00bca88fb08cafa6f7d12", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "0 S Shift" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "0 S Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "0 T Shift" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "0 T Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T High" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 S Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "1 S Mask" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "1 T Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "1 T Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 ClampX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 ClampY" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 MirrorX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 MirrorY" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 ClampX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 ClampY" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 MirrorX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 MirrorY" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "name": "3 Point" + } + ], + "interface_hash": "d1b22c9654d6c59f20e5341cc371bc09", + "name": "TextureSettings_Advanced", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -613.3323, + 194.4752 + ], + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ] + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ] + }, + "2": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ] + }, + "3": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ] + }, + "4": { + "hide_value": true + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "0 S TexSize" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "0 T TexSize" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "1 S TexSize" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "1 T TexSize" + }, + "9": { + "hide_value": true + }, + "10": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "0 S Shift" + }, + "11": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "0 S Mask" + }, + "12": { + "links": [ + { + "index": 0, + "node": "Reroute.031" + } + ], + "name": "0 S Low" + }, + "13": { + "links": [ + { + "index": 0, + "node": "Reroute.029" + } + ], + "name": "0 S High" + }, + "14": { + "links": [ + { + "index": 0, + "node": "Reroute.032" + } + ], + "name": "0 T Shift" + }, + "15": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "0 T Mask" + }, + "16": { + "links": [ + { + "index": 0, + "node": "Reroute.030" + } + ], + "name": "0 T Low" + }, + "17": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "0 T High" + }, + "18": { + "hide_value": true + }, + "19": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "1 S Shift" + }, + "20": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "1 S Low" + }, + "21": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "1 S High" + }, + "22": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "1 S Mask" + }, + "23": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "1 T Shift" + }, + "24": { + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "1 T Low" + }, + "25": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "1 T High" + }, + "26": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "1 T Mask" + }, + "27": { + "hide_value": true + }, + "28": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "0 ClampX" + }, + "29": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "0 ClampY" + }, + "30": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "0 MirrorX" + }, + "31": { + "links": [ + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "0 MirrorY" + }, + "32": { + "hide_value": true + }, + "33": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "1 ClampX" + }, + "34": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "1 ClampY" + }, + "35": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "1 MirrorX" + }, + "36": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "1 MirrorY" + }, + "37": { + "hide_value": true + }, + "38": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "3 Point" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "0_UV00" + }, + "1": { + "name": "0_UV01" + }, + "2": { + "name": "0_UV10" + }, + "3": { + "name": "0_UV11" + }, + "4": { + "name": "1_UV00" + }, + "5": { + "default_value": [ + 12.19999885559082, + 0.0, + 0.0 + ], + "name": "1_UV01" + }, + "6": { + "name": "1_UV10" + }, + "7": { + "name": "1_UV11" + }, + "8": { + "name": "3 Point" + }, + "9": { + "name": "0 Lerp S" + }, + "10": { + "name": "0 Lerp T" + }, + "11": { + "name": "1 Lerp S" + }, + "12": { + "name": "1 Lerp T" + }, + "13": { + "name": "" + } + }, + "location": [ + 1046.3458, + 158.4812 + ], + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "S Shift" + }, + "5": { + "name": "S Low" + }, + "6": { + "name": "S High" + }, + "7": { + "default_value": 5, + "name": "S Mask" + }, + "8": { + "default_value": 1, + "name": "S Clamp" + }, + "9": { + "name": "S Mirror" + }, + "10": { + "name": "T Shift" + }, + "11": { + "name": "T Low" + }, + "12": { + "name": "T High" + }, + "13": { + "name": "T Mask" + }, + "14": { + "name": "T Clamp" + }, + "15": { + "name": "T Mirror" + }, + "16": { + "name": "Enable 3 Point" + } + }, + "location": [ + 400.1251, + 443.8382 + ], + "node_tree": { + "name": "Advanced Texture Settings and 3 Point", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "UV00" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "UV01" + }, + "2": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "UV10" + }, + "3": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "UV11" + }, + "4": { + "links": [ + { + "index": 9, + "node": "Group Output" + } + ], + "name": "Lerp S" + }, + "5": { + "links": [ + { + "index": 10, + "node": "Group Output" + } + ], + "name": "Lerp T" + } + }, + "width": 320.1097717285156, + "width_hidden": 42.0 + }, + "Group.004": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "name": "S Shift" + }, + "5": { + "name": "S Low" + }, + "6": { + "name": "S High" + }, + "7": { + "default_value": 5, + "name": "S Mask" + }, + "8": { + "default_value": 1, + "name": "S Clamp" + }, + "9": { + "name": "S Mirror" + }, + "10": { + "name": "T Shift" + }, + "11": { + "name": "T Low" + }, + "12": { + "name": "T High" + }, + "13": { + "name": "T Mask" + }, + "14": { + "name": "T Clamp" + }, + "15": { + "name": "T Mirror" + }, + "16": { + "name": "Enable 3 Point" + } + }, + "location": [ + 397.1432, + -144.1212 + ], + "node_tree": { + "name": "Advanced Texture Settings and 3 Point", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group Output" + } + ], + "name": "UV00" + }, + "1": { + "links": [ + { + "index": 5, + "node": "Group Output" + } + ], + "name": "UV01" + }, + "2": { + "links": [ + { + "index": 6, + "node": "Group Output" + } + ], + "name": "UV10" + }, + "3": { + "links": [ + { + "index": 7, + "node": "Group Output" + } + ], + "name": "UV11" + }, + "4": { + "links": [ + { + "index": 11, + "node": "Group Output" + } + ], + "name": "Lerp S" + }, + "5": { + "links": [ + { + "index": 12, + "node": "Group Output" + } + ], + "name": "Lerp T" + } + }, + "width": 323.6924743652344, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 9.509, + 222.4797 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -15.6982, + 244.5815 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.8691, + -106.8721 + ], + "outputs": { + "0": { + "links": [ + { + "index": 16, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.869, + -694.4165 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + }, + { + "index": 0, + "node": "Reroute.009" + }, + { + "index": 16, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 286.4957, + -408.7227 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 739.3362, + -727.5137 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 307.0347, + -386.1069 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 54.724, + 179.1897 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 32.953, + 201.1782 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.869, + -727.5137 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 262.6562, + -431.9967 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 121.9779, + -562.9517 + ], + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 238.3406, + -452.5447 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 216.3712, + -474.1058 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 193.9604, + -495.4348 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 348.6143, + -343.0011 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 326.0364, + -364.0017 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -47.7528, + -695.3298 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 175.8054, + -518.3969 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 150.1764, + -540.5582 + ], + "outputs": { + "0": { + "links": [ + { + "index": 9, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 93.875, + -584.1543 + ], + "outputs": { + "0": { + "links": [ + { + "index": 11, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 66.5914, + -606.0298 + ], + "outputs": { + "0": { + "links": [ + { + "index": 12, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 40.6278, + -628.2281 + ], + "outputs": { + "0": { + "links": [ + { + "index": 13, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 13.9793, + -650.463 + ], + "outputs": { + "0": { + "links": [ + { + "index": 14, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -17.7109, + -673.2063 + ], + "outputs": { + "0": { + "links": [ + { + "index": 15, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 273.49, + -40.8118 + ], + "outputs": { + "0": { + "links": [ + { + "index": 13, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 134.1042, + 91.1545 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 245.6165, + -19.2992 + ], + "outputs": { + "0": { + "links": [ + { + "index": 12, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.029": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 113.7192, + 113.236 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.030": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 221.9516, + 4.295 + ], + "outputs": { + "0": { + "links": [ + { + "index": 11, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.031": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 96.2147, + 135.1684 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 201.9014, + 25.3357 + ], + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 76.4437, + 157.755 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 327.601, + -84.3845 + ], + "outputs": { + "0": { + "links": [ + { + "index": 15, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 153.7096, + 68.1714 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 297.8438, + -61.5399 + ], + "outputs": { + "0": { + "links": [ + { + "index": 14, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 178.6082, + 47.2582 + ], + "outputs": { + "0": { + "links": [ + { + "index": 9, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "0_UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV11" + }, + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "1_UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV11" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "3 Point" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 Lerp T" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 Lerp T" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/TextureSettings_Lite.json b/fast64_internal/f3d/node_library/TextureSettings_Lite.json new file mode 100644 index 000000000..0c70a700f --- /dev/null +++ b/fast64_internal/f3d/node_library/TextureSettings_Lite.json @@ -0,0 +1,1197 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "97b79ae955f357cc061b9ab96af2a50b", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "0 S Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "0 S Mask" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "0 T Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "0 T Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 S Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "1 S Mask" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 10, + "min_value": -5, + "name": "1 T Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T Low" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T High" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 15, + "name": "1 T Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 ClampX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 ClampY" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 MirrorX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "0 MirrorY" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 ClampX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 ClampY" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 MirrorX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "1 MirrorY" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketInt", + "default_value": 1, + "name": "3 Point" + } + ], + "interface_hash": "5afe16f88b816987ec77b5137e833bf5", + "name": "TextureSettings_Lite", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -613.3323, + 194.4752 + ], + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ] + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ] + }, + "2": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ] + }, + "3": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ] + }, + "4": { + "hide_value": true + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "0 S TexSize" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "0 T TexSize" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "1 S TexSize" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "1 T TexSize" + }, + "9": { + "hide_value": true + }, + "18": { + "hide_value": true + }, + "27": { + "hide_value": true + }, + "28": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "0 ClampX" + }, + "29": { + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "0 ClampY" + }, + "30": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "0 MirrorX" + }, + "31": { + "links": [ + { + "index": 0, + "node": "Reroute.034" + } + ], + "name": "0 MirrorY" + }, + "32": { + "hide_value": true + }, + "33": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + } + ], + "name": "1 ClampX" + }, + "34": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "1 ClampY" + }, + "35": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "1 MirrorX" + }, + "36": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "1 MirrorY" + }, + "37": { + "hide_value": true + }, + "38": { + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "3 Point" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "0_UV00" + }, + "1": { + "name": "0_UV01" + }, + "2": { + "name": "0_UV10" + }, + "3": { + "name": "0_UV11" + }, + "4": { + "name": "1_UV00" + }, + "5": { + "default_value": [ + 12.19999885559082, + 0.0, + 0.0 + ], + "name": "1_UV01" + }, + "6": { + "name": "1_UV10" + }, + "7": { + "name": "1_UV11" + }, + "8": { + "name": "3 Point" + }, + "9": { + "name": "0 Lerp S" + }, + "10": { + "name": "0 Lerp T" + }, + "11": { + "name": "1 Lerp S" + }, + "12": { + "name": "1 Lerp T" + }, + "13": { + "name": "" + } + }, + "location": [ + 1046.3458, + 158.4812 + ], + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "default_value": 1, + "name": "S Clamp" + }, + "5": { + "name": "S Mirror" + }, + "6": { + "name": "T Clamp" + }, + "7": { + "name": "T Mirror" + }, + "8": { + "name": "Enable 3 Point" + } + }, + "location": [ + 400.1252, + 273.4589 + ], + "node_tree": { + "name": "Lite Texture Settings and 3 Point", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "UV00" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "UV01" + }, + "2": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "UV10" + }, + "3": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "UV11" + }, + "4": { + "links": [ + { + "index": 9, + "node": "Group Output" + } + ], + "name": "Lerp S" + }, + "5": { + "links": [ + { + "index": 10, + "node": "Group Output" + } + ], + "name": "Lerp T" + } + }, + "width": 320.1097717285156, + "width_hidden": 42.0 + }, + "Group.004": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Width" + }, + "1": { + "name": "Height" + }, + "2": { + "name": "X" + }, + "3": { + "name": "Y" + }, + "4": { + "default_value": 1, + "name": "S Clamp" + }, + "5": { + "name": "S Mirror" + }, + "6": { + "name": "T Clamp" + }, + "7": { + "name": "T Mirror" + }, + "8": { + "name": "Enable 3 Point" + } + }, + "location": [ + 397.1432, + -144.1212 + ], + "node_tree": { + "name": "Lite Texture Settings and 3 Point", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group Output" + } + ], + "name": "UV00" + }, + "1": { + "links": [ + { + "index": 5, + "node": "Group Output" + } + ], + "name": "UV01" + }, + "2": { + "links": [ + { + "index": 6, + "node": "Group Output" + } + ], + "name": "UV10" + }, + "3": { + "links": [ + { + "index": 7, + "node": "Group Output" + } + ], + "name": "UV11" + }, + "4": { + "links": [ + { + "index": 11, + "node": "Group Output" + } + ], + "name": "Lerp S" + }, + "5": { + "links": [ + { + "index": 12, + "node": "Group Output" + } + ], + "name": "Lerp T" + } + }, + "width": 323.6924743652344, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 9.5091, + 52.1004 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -15.6982, + 74.2023 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.8691, + -100.9041 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.869, + -518.6503 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + }, + { + "index": 8, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 286.4957, + -408.7227 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 739.3364, + -561.6321 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "Group Output" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 307.0347, + -386.1069 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 54.724, + 8.8103 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 32.953, + 30.799 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 369.869, + -561.6321 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + }, + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 348.6143, + -343.0011 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 326.0364, + -364.0017 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 268.7016, + -432.3738 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 243.0726, + -454.5351 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 219.5551, + -474.9759 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 187.8649, + -497.7192 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.034": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 154.7109, + -85.2983 + ], + "outputs": { + "0": { + "links": [ + { + "index": 7, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 73.7157, + -13.6042 + ], + "outputs": { + "0": { + "links": [ + { + "index": 4, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 124.9537, + -62.4537 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 98.6143, + -34.5173 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "0_UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "0_UV11" + }, + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "1_UV00" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV01" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV10" + }, + { + "bl_idname": "NodeSocketVector", + "name": "1_UV11" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "3 Point" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 Lerp T" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 Lerp S" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 Lerp T" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/TileRepeatSettings.json b/fast64_internal/f3d/node_library/TileRepeatSettings.json new file mode 100644 index 000000000..90c24381d --- /dev/null +++ b/fast64_internal/f3d/node_library/TileRepeatSettings.json @@ -0,0 +1,741 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "f86be8aa90e122d29d36104583483f6e", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "Y" + }, + { + "bl_idname": "NodeSocketInt", + "name": "ClampX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "ClampY" + }, + { + "bl_idname": "NodeSocketInt", + "name": "MirrorX" + }, + { + "bl_idname": "NodeSocketInt", + "name": "MirrorY" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 32.0, + "max_value": 1023.75, + "min_value": 0.0, + "name": "XHigh" + }, + { + "bl_idname": "NodeSocketFloat", + "max_value": 1023.75, + "min_value": 0.0, + "name": "YHigh" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 5, + "name": "MaskX" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 5, + "name": "MaskY" + } + ], + "interface_hash": "bb3517cd78ad8e79618208217c514c13", + "name": "TileRepeatSettings", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + 1419.4938, + 156.8046 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 776.1063, + 624.7993 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.001" + }, + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -497.9263, + 50.5328 + ], + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "X" + }, + "1": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Y" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "ClampX" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "ClampY" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "MirrorX" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Group.002" + } + ], + "name": "MirrorY" + }, + "6": { + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "XHigh" + }, + "7": { + "links": [ + { + "index": 1, + "node": "Math.004" + } + ], + "name": "YHigh" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 1620.3417, + 147.1939 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 1140.4752, + 624.7993 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.002": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 630.3589, + -186.3034 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 265.99, + -186.3034 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.002" + }, + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": {}, + "2": { + "enabled": false + } + }, + "location": [ + 408.5739, + 785.7515 + ], + "operation": "MAXIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "enabled": false + } + }, + "location": [ + 963.2695, + 798.8156 + ], + "operation": "PINGPONG", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.9998999834060669 + }, + "2": { + "enabled": false + } + }, + "location": [ + 580.5505, + 710.9398 + ], + "operation": "MINIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "enabled": false + } + }, + "location": [ + 453.1531, + -12.2871 + ], + "operation": "PINGPONG", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.002" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.9998999834060669 + }, + "2": { + "enabled": false + } + }, + "location": [ + 55.0337, + -25.3512 + ], + "operation": "MINIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": {}, + "2": { + "enabled": false + } + }, + "location": [ + -101.5424, + -25.3512 + ], + "operation": "MAXIMUM", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": {} + }, + "location": [ + -269.8411, + 610.2584 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.007": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 43.0973, + 575.1196 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.008": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -176.9027, + 395.8094 + ], + "operation": "FLOOR", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.007" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "X", + "location": [ + -262.2361, + 170.7375 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.006" + }, + { + "index": 0, + "node": "Math.008" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Y", + "location": [ + -262.2361, + 88.3516 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Y", + "location": [ + -262.2361, + -295.0883 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + }, + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "X", + "location": [ + 306.9469, + 385.2227 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + }, + { + "index": 1, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/TileSettings.json b/fast64_internal/f3d/node_library/TileSettings.json new file mode 100644 index 000000000..ca5e20b17 --- /dev/null +++ b/fast64_internal/f3d/node_library/TileSettings.json @@ -0,0 +1,1972 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "150b79af24ce7c5fe5989fd99587e10e", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 9999999827968.0, + "min_value": -1.0000000272564224e+16, + "name": "Tex Coordinate" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "min_value": -3.402820018375656e+38, + "name": "Low" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "name": "High" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Mask" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Tex Size" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Clamp" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Mirror" + } + ], + "interface_hash": "df39b72b39220304da69c90aa7947e12", + "name": "TileSettings", + "nodes": { + "Clamp.001": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + -236.7289, + 135.8783 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.052" + } + ], + "name": "Result" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Clamp.002": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "default_value": 9.999999717180685e-10, + "name": "Min" + }, + "2": { + "default_value": 0.9999989867210388, + "name": "Max" + } + }, + "label": "Clamp Blender Moment", + "location": [ + 692.285, + 100.7439 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Result" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 154.559814453125, + "width_hidden": 42.0 + }, + "Clamp.003": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "default_value": 9.999999717180685e-10, + "name": "Min" + }, + "2": { + "default_value": 0.9999989867210388, + "name": "Max" + } + }, + "label": "Clamp Blender Moment", + "location": [ + 858.6555, + 288.0717 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Result" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 156.3069610595703, + "width_hidden": 42.0 + }, + "Frame": { + "bl_idname": "NodeFrame", + "height": 90.0, + "label": "Fixes clamp bleeding lines", + "location": [ + -92.4759, + -407.9362 + ], + "width": 346.6607360839844, + "width_hidden": 42.0 + }, + "Frame.002": { + "bl_idname": "NodeFrame", + "height": 408.0, + "label": "Shift", + "location": [ + -563.5526, + -414.8234 + ], + "width": 605.3812255859375, + "width_hidden": 42.0 + }, + "Frame.003": { + "bl_idname": "NodeFrame", + "height": 478.1737060546875, + "location": [ + -743.5212, + 182.0188 + ], + "width": 1042.607177734375, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -1386.619, + -24.8568 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Tex Coordinate" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Shift" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Low" + }, + "3": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "High" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Mask" + }, + "5": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Tex Size" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "Clamp" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Mirror" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV Coord" + }, + "1": { + "name": "" + } + }, + "location": [ + 1554.8485, + 191.283 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "label": "Pick Clamped", + "location": [ + -4.4502, + -82.943 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + 1063.2178, + 198.5546 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 9.999999974752427e-07 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Subtract tiny number", + "location": [ + -53.7061, + -445.2246 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.028" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 219.35653686523438, + "width_hidden": 42.0 + }, + "Math.020": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.10799825191497803, + 0.10799825191497803, + 0.10799825191497803 + ], + "inputs": { + "0": { + "default_value": 2.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -891.4688, + 427.6642 + ], + "operation": "POWER", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.027" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.021": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 526.6977, + 102.4338 + ], + "operation": "PINGPONG", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.002" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.023": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 527.4777, + 292.2352 + ], + "operation": "MODULO", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.031" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.024": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.28821223974227905, + 0.484197735786438, + 0.4636859893798828 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Mask is Zero", + "location": [ + -838.2546, + 144.9666 + ], + "operation": "LESS_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.026" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.025": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 2.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -676.1253, + -485.8725 + ], + "operation": "POWER", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.032" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.002", + "serialized_type": "Node" + } + }, + "Math.026": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.28821223974227905, + 0.484197735786438, + 0.4636859893798828 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Mask + Clamp", + "location": [ + -653.2737, + 145.4384 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.029" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.027": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.10799825191497803, + 0.10799825191497803, + 0.10799825191497803 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -713.1626, + 392.5238 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Value" + } + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.028": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Adjust S Low", + "location": [ + 234.2943, + -319.6717 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Value" + } + } + }, + "Math.029": { + "bl_idname": "ShaderNodeMath", + "color": [ + 0.28821223974227905, + 0.484197735786438, + 0.4636859893798828 + ], + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Mask is 0 or Clamp", + "location": [ + -495.6, + 146.9828 + ], + "operation": "GREATER_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "use_custom_color": true, + "width_hidden": 42.0 + }, + "Math.030": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -857.2168, + -545.3244 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.025" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.002", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.031": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": {} + }, + "location": [ + 694.165, + 288.9287 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.003" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.032": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -497.1657, + -351.3928 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame.002", + "serialized_type": "Node" + } + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -942.762, + -464.5771 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -919.2795, + -464.5771 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.032" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -897.7939, + -170.7716 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "UV Space Low/High" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -963.3344, + 31.5398 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.024" + }, + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -897.7939, + -192.333 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "UV Space Low/High" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -942.762, + -659.1817 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.030" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 215.6858, + -117.5033 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.065" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1070.3025, + -288.4464 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -930.9956, + -214.68 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "UV Space Low/High" + }, + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -930.9956, + 256.063 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.027" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -963.3344, + 292.0394 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.020" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 400.0, + 361.5235 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 399.9999, + 154.8376 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.021" + }, + { + "index": 1, + "node": "Math.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 400.0, + -354.2985 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1011.1037, + 109.9727 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1038.9573, + 88.085 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -113.3042, + -448.285 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1038.9573, + 253.4494 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.047": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "UV Space Low", + "location": [ + -268.4072, + -116.3432 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Math.032" + }, + { + "index": 0, + "node": "Reroute.061" + }, + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.049": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -65.6654, + -215.3464 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.051": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -33.4099, + 178.1737 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.052": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -66.0538, + 101.4849 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.049" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -838.6072, + -30.1961 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.066" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 399.9999, + -11.1851 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.021" + }, + { + "index": 0, + "node": "Math.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -270.1501, + 178.1737 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.051" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -270.1501, + 111.7035 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -33.4099, + -171.1769 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Mirror", + "location": [ + 1011.1037, + -293.5129 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Shifted Coords", + "location": [ + -321.4289, + -194.844 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.064" + }, + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -319.6187, + -386.3542 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.002", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.061": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -268.4073, + 24.9883 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Clamp.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.062": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -676.617, + 10.429 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.026" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.063": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -295.0379, + 3.0807 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Clamp.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.064": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -321.4286, + 47.8621 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.065": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 215.4565, + -433.1859 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.028" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.066": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -676.617, + -30.1964 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.062" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.067": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "UV Space High", + "location": [ + -295.0379, + -95.906 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.063" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "UV Space Low/High": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "High" + }, + "1": { + "default_value": 0.5, + "name": "Low" + }, + "2": { + "default_value": 0.5, + "name": "Size" + } + }, + "location": [ + -650.0882, + -60.9508 + ], + "node_tree": { + "name": "UV Low/High", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.067" + } + ], + "name": "High" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.047" + } + ], + "name": "Low" + } + }, + "parent": { + "name": "Frame.003", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "no idea lmao.001": { + "bl_idname": "NodeFrame", + "height": 404.0, + "label": "Mirror or Repeat", + "location": [ + 518.4754, + 84.3203 + ], + "width": 736.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "UV Coord" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/TileSettings_Lite.json b/fast64_internal/f3d/node_library/TileSettings_Lite.json new file mode 100644 index 000000000..eae3e01bc --- /dev/null +++ b/fast64_internal/f3d/node_library/TileSettings_Lite.json @@ -0,0 +1,1092 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "f57a001fd8b0f0ddae131ebe9eaead11", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 9999999827968.0, + "min_value": -1.0000000272564224e+16, + "name": "Tex Coordinate" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Clamp" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Mirror" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Length" + } + ], + "interface_hash": "467b27793d4dd8621fc5335984837e3f", + "name": "TileSettings_Lite", + "nodes": { + "Clamp": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "location": [ + -1323.5183, + 330.3103 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Result" + } + }, + "width_hidden": 42.0 + }, + "Clamp.002": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "default_value": 9.999999717180685e-10, + "name": "Min" + }, + "2": { + "default_value": 0.9999989867210388, + "name": "Max" + } + }, + "label": "Clamp Blender Moment", + "location": [ + -727.6642, + 100.7439 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group.003" + } + ], + "name": "Result" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 154.559814453125, + "width_hidden": 42.0 + }, + "Clamp.003": { + "bl_idname": "ShaderNodeClamp", + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": { + "default_value": 9.999999717180685e-10, + "name": "Min" + }, + "2": { + "default_value": 1.0, + "name": "Max" + } + }, + "label": "Clamp Blender Moment", + "location": [ + -563.4493, + 288.6106 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Result" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 156.3069610595703, + "width_hidden": 42.0 + }, + "Frame": { + "bl_idname": "NodeFrame", + "height": 289.32073974609375, + "label": "Length - 1 to UV Space", + "location": [ + -1838.25, + 268.9523 + ], + "width": 535.461669921875, + "width_hidden": 42.0 + }, + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "label": "Choose Clamped", + "location": [ + -1128.2308, + 144.3476 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -2248.0198, + 138.1776 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Tex Coordinate" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Clamp" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "Mirror" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Length" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "UV Coord" + }, + "1": { + "name": "" + } + }, + "location": [ + -147.0691, + 199.289 + ], + "width_hidden": 42.0 + }, + "Group.003": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": 0.5, + "name": "Fac" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Input0" + }, + "2": { + "default_value": 0.5, + "hide_value": true, + "name": "Input1" + } + }, + "location": [ + -356.7314, + 198.5546 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1490.0035, + 231.4825 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Clamp" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.0010000000474974513 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Fix clamping?", + "location": [ + -2054.7156, + 197.7701 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 125.24647521972656, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1912.3141, + 256.699 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.004" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1710.1573, + 205.6452 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.9999899864196777, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -1810.1158, + 232.7383 + ], + "operation": "CEIL", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 100.0, + "width_hidden": 42.0 + }, + "Math.021": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "enabled": false + } + }, + "location": [ + -893.2515, + 102.4338 + ], + "operation": "PINGPONG", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.002" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.023": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -892.4715, + 292.2352 + ], + "operation": "MODULO", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.031" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Math.031": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0 + }, + "2": {} + }, + "location": [ + -725.7842, + 288.9287 + ], + "operation": "WRAP", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp.003" + } + ], + "name": "Value" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -963.9984, + 109.5818 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + }, + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1521.8965, + 241.4473 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Clamp" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1521.8965, + 31.9847 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group" + }, + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -963.9984, + 178.1184 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.023" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -963.9984, + -10.4157 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.021" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1158.3501, + 295.3704 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1158.3501, + 12.0481 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1070.3024, + -106.4533 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1561.1261, + -8.3267 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + }, + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1561.1261, + 117.7617 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1866.7137, + 56.1328 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -2080.1282, + 37.6792 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -1910.3552, + 188.0319 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.003" + }, + { + "index": 0, + "node": "Math.002" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -2079.0122, + 195.1871 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "Frame", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -408.8455, + 109.9727 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -380.9919, + 88.085 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group.003" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -380.9919, + 253.4494 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + } + ], + "name": "Output" + } + }, + "parent": { + "name": "no idea lmao.001", + "serialized_type": "Node" + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Mirror", + "location": [ + -408.8456, + -106.4533 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "no idea lmao.001": { + "bl_idname": "NodeFrame", + "height": 401.3333435058594, + "label": "Mirror or Repeat", + "location": [ + -901.4738, + 84.3203 + ], + "width": 736.6666259765625, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "max_value": 0.0, + "min_value": 0.0, + "name": "UV Coord" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV.json b/fast64_internal/f3d/node_library/UV.json new file mode 100644 index 000000000..43e751c08 --- /dev/null +++ b/fast64_internal/f3d/node_library/UV.json @@ -0,0 +1,60 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "ae3760fcaa6e0991310ad53d9f7e92fd", + "interface_hash": "a9c1c15b8223a6be1ba239e62c7aa7df", + "name": "UV", + "nodes": { + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 360.8631, + 0.0 + ], + "width_hidden": 42.0 + }, + "UV Map": { + "bl_idname": "ShaderNodeUVMap", + "from_instancer": false, + "location": [ + 134.5782, + 12.0172 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "UV" + } + }, + "uv_map": "", + "width": 150.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "hide_value": true, + "max_value": 0.0, + "min_value": 0.0, + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV_Basis_0.json b/fast64_internal/f3d/node_library/UV_Basis_0.json new file mode 100644 index 000000000..ad5f08190 --- /dev/null +++ b/fast64_internal/f3d/node_library/UV_Basis_0.json @@ -0,0 +1,525 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "85d835a40f1bc923f2952f29edf06b32", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "UV" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 1.0, + "min_value": 0.0, + "name": "S Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 1.0, + "min_value": 0.0, + "name": "T Scale" + }, + { + "bl_idname": "NodeSocketInt", + "name": "EnableOffset" + } + ], + "interface_hash": "ec2a1d9194c3c71ad52cada7a5bb8f0c", + "name": "UV Basis 0", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "S Scale" + }, + "2": { + "name": "T Scale" + } + }, + "location": [ + -224.5699, + -7.2958 + ], + "node_tree": { + "name": "ScaleUVs", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "UV" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -683.1521, + -133.2773 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "UV" + }, + "1": { + "links": [ + { + "index": 5, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math" + }, + { + "index": 1, + "node": "Group.001" + } + ], + "name": "0 S TexSize" + }, + "2": { + "links": [ + { + "index": 6, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math.002" + }, + { + "index": 2, + "node": "Group.001" + } + ], + "name": "0 T TexSize" + }, + "3": { + "links": [ + { + "index": 7, + "node": "Group Output" + }, + { + "index": 1, + "node": "Math" + } + ], + "name": "1 S TexSize" + }, + "4": { + "links": [ + { + "index": 8, + "node": "Group Output" + }, + { + "index": 1, + "node": "Math.002" + } + ], + "name": "1 T TexSize" + }, + "5": { + "links": [ + { + "index": 1, + "node": "Group" + }, + { + "index": 3, + "node": "Group.001" + } + ], + "name": "S Scale" + }, + "6": { + "links": [ + { + "index": 2, + "node": "Group" + }, + { + "index": 4, + "node": "Group.001" + } + ], + "name": "T Scale" + }, + "7": { + "links": [ + { + "index": 5, + "node": "Group.001" + } + ], + "name": "EnableOffset" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": { + "hide_value": true + }, + "5": { + "name": "0 S TexSize" + }, + "6": { + "name": "0 T TexSize" + }, + "7": { + "name": "1 S TexSize" + }, + "8": { + "name": "1 T TexSize" + }, + "9": {} + }, + "location": [ + 601.6118, + 84.2049 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "S Width" + }, + "2": { + "name": "T Height" + }, + "3": { + "name": "S Scale" + }, + "4": { + "name": "T Scale" + }, + "5": { + "name": "Apply Offset" + } + }, + "location": [ + -394.2816, + 82.4099 + ], + "node_tree": { + "name": "ApplyFilterOffset", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "UV" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -0.5282, + -198.9168 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width": 179.8277587890625, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 361.5455, + -166.6665 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -4.9459, + -370.8936 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.004" + }, + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width": 186.44256591796875, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": {} + }, + "location": [ + 361.5456, + -357.9363 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 326.3477, + -574.2684 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "hide": false, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + -47.2443, + 63.1597 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math.001" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 1, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Y" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T TexSize" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV_Basis_1.json b/fast64_internal/f3d/node_library/UV_Basis_1.json new file mode 100644 index 000000000..2f49bc3cf --- /dev/null +++ b/fast64_internal/f3d/node_library/UV_Basis_1.json @@ -0,0 +1,529 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "945a210bf0c6e716c353584a00ba3912", + "inputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 10000.0, + "min_value": -10000.0, + "name": "UV" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "1 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 1.0, + "min_value": 0.0, + "name": "S Scale" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 1.0, + "max_value": 1.0, + "min_value": 0.0, + "name": "T Scale" + }, + { + "bl_idname": "NodeSocketInt", + "name": "EnableOffset" + } + ], + "interface_hash": "ec2a1d9194c3c71ad52cada7a5bb8f0c", + "name": "UV Basis 1", + "nodes": { + "Group": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "default_value": 1.0, + "name": "S Scale" + }, + "2": { + "default_value": 1.0, + "name": "T Scale" + } + }, + "location": [ + 124.3926, + 54.4937 + ], + "node_tree": { + "name": "ScaleUVs", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "UV" + } + }, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -533.1231, + -137.0644 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "UV" + }, + "1": { + "links": [ + { + "index": 5, + "node": "Group Output" + }, + { + "index": 1, + "node": "Math" + } + ], + "name": "0 S TexSize" + }, + "2": { + "links": [ + { + "index": 6, + "node": "Group Output" + }, + { + "index": 1, + "node": "Math.002" + } + ], + "name": "0 T TexSize" + }, + "3": { + "links": [ + { + "index": 7, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math" + }, + { + "index": 1, + "node": "Group.001" + } + ], + "name": "1 S TexSize" + }, + "4": { + "links": [ + { + "index": 8, + "node": "Group Output" + }, + { + "index": 0, + "node": "Math.002" + }, + { + "index": 2, + "node": "Group.001" + } + ], + "name": "1 T TexSize" + }, + "5": { + "default_value": 1.0, + "links": [ + { + "index": 1, + "node": "Group" + }, + { + "index": 3, + "node": "Group.001" + } + ], + "name": "S Scale" + }, + "6": { + "default_value": 1.0, + "links": [ + { + "index": 2, + "node": "Group" + }, + { + "index": 4, + "node": "Group.001" + } + ], + "name": "T Scale" + }, + "7": { + "links": [ + { + "index": 5, + "node": "Group.001" + } + ], + "name": "EnableOffset" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": {}, + "1": {}, + "2": {}, + "3": {}, + "4": { + "hide_value": true + }, + "5": { + "name": "0 S TexSize" + }, + "6": { + "name": "0 T TexSize" + }, + "7": { + "name": "1 S TexSize" + }, + "8": { + "name": "1 T TexSize" + }, + "9": {} + }, + "location": [ + 1026.5479, + 136.2331 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "name": "S Width" + }, + "2": { + "name": "T Height" + }, + "3": { + "name": "S Scale" + }, + "4": { + "name": "T Scale" + }, + "5": { + "name": "Apply Offset" + } + }, + "location": [ + -70.4798, + 130.1329 + ], + "node_tree": { + "name": "ApplyFilterOffset", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group" + } + ], + "name": "UV" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 112.179, + 602.993 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.001" + } + ], + "name": "Value" + } + }, + "width": 179.8277587890625, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 645.4555, + 597.9528 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 107.7615, + 431.0162 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math.004" + }, + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width": 186.44256591796875, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": {} + }, + "location": [ + 645.4555, + 406.6831 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 347.6186, + 314.1082 + ], + "operation": "SUBTRACT", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "hide": false, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 305.4264, + 123.348 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + }, + { + "index": 2, + "node": "Group Output" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Math.003" + }, + { + "index": 3, + "node": "Group Output" + } + ], + "name": "Y" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "X" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Y" + }, + { + "bl_idname": "NodeSocketFloat", + "hide_value": true, + "name": "" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "0 T TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 S TexSize" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "1 T TexSize" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV_EnvMap.json b/fast64_internal/f3d/node_library/UV_EnvMap.json new file mode 100644 index 000000000..65a3404f8 --- /dev/null +++ b/fast64_internal/f3d/node_library/UV_EnvMap.json @@ -0,0 +1,161 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "dabaff2d861d8e85d07695f1e9f036aa", + "interface_hash": "1103fa076bb5845fe3bbdb6fa496f092", + "name": "UV_EnvMap", + "nodes": { + "Geometry": { + "bl_idname": "ShaderNodeNewGeometry", + "location": [ + -149.7988, + -93.0175 + ], + "outputs": { + "0": { + "hide": true, + "name": "Position" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Vector Transform" + } + ], + "name": "Normal" + }, + "2": { + "hide": true, + "name": "Tangent" + }, + "3": { + "hide": true, + "name": "True Normal" + }, + "4": { + "hide": true, + "name": "Incoming" + }, + "5": { + "hide": true, + "name": "Parametric" + }, + "6": { + "hide": true, + "name": "Backfacing" + }, + "7": { + "hide": true, + "name": "Pointiness" + }, + "8": { + "hide": true, + "name": "Random Per Island" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 360.8631, + 0.0 + ], + "width_hidden": 42.0 + }, + "Mapping": { + "bl_idname": "ShaderNodeMapping", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "default_value": [ + 0.5, + 0.5, + 0.0 + ], + "name": "Location" + }, + "2": { + "enabled": true, + "name": "Rotation" + }, + "3": { + "default_value": [ + 0.5, + 0.5, + 1.0 + ], + "name": "Scale" + } + }, + "location": [ + 170.8631, + 62.3998 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width": 140.0, + "width_hidden": 42.0 + }, + "Vector Transform": { + "bl_idname": "ShaderNodeVectorTransform", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5 + ], + "name": "Vector" + } + }, + "location": [ + 13.4256, + 12.2404 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Mapping" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV_EnvMap_Linear.json b/fast64_internal/f3d/node_library/UV_EnvMap_Linear.json new file mode 100644 index 000000000..4fb277671 --- /dev/null +++ b/fast64_internal/f3d/node_library/UV_EnvMap_Linear.json @@ -0,0 +1,600 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "39fdf1c1f904b0a72daacd2dc9963766", + "interface_hash": "1103fa076bb5845fe3bbdb6fa496f092", + "name": "UV_EnvMap_Linear", + "nodes": { + "Combine XYZ": { + "bl_idname": "ShaderNodeCombineXYZ", + "inputs": { + "0": { + "name": "X" + }, + "1": { + "name": "Y" + }, + "2": { + "name": "Z" + } + }, + "location": [ + 640.2026, + 220.5324 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Geometry": { + "bl_idname": "ShaderNodeNewGeometry", + "location": [ + -247.4622, + -85.4111 + ], + "outputs": { + "0": { + "hide": true, + "name": "Position" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Vector Transform" + } + ], + "name": "Normal" + }, + "2": { + "hide": true, + "name": "Tangent" + }, + "3": { + "hide": true, + "name": "True Normal" + }, + "4": { + "hide": true, + "name": "Incoming" + }, + "5": { + "hide": true, + "name": "Parametric" + }, + "6": { + "hide": true, + "name": "Backfacing" + }, + "7": { + "hide": true, + "name": "Pointiness" + }, + "8": { + "hide": true, + "name": "Random Per Island" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Vector" + }, + "1": { + "name": "" + } + }, + "location": [ + 803.3887, + 220.6945 + ], + "width_hidden": 42.0 + }, + "Map Range": { + "bl_idname": "ShaderNodeMapRange", + "clamp": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": {}, + "2": { + "default_value": 3.1415927410125732 + }, + "3": { + "default_value": 1.0 + }, + "4": {}, + "5": { + "default_value": 4.0, + "enabled": false + }, + "6": { + "enabled": false, + "hide_value": true, + "name": "Vector" + }, + "7": { + "enabled": false + }, + "8": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "9": { + "enabled": false + }, + "10": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "11": { + "default_value": [ + 4.0, + 4.0, + 4.0 + ], + "enabled": false + } + }, + "location": [ + 418.2646, + 344.3111 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "Result" + }, + "1": { + "enabled": false, + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Map Range.001": { + "bl_idname": "ShaderNodeMapRange", + "clamp": true, + "inputs": { + "0": { + "default_value": 1.0, + "name": "Value" + }, + "1": {}, + "2": { + "default_value": 3.1415927410125732 + }, + "3": { + "default_value": 1.0 + }, + "4": {}, + "5": { + "default_value": 4.0, + "enabled": false + }, + "6": { + "enabled": false, + "hide_value": true, + "name": "Vector" + }, + "7": { + "enabled": false + }, + "8": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "9": { + "enabled": false + }, + "10": { + "default_value": [ + 1.0, + 1.0, + 1.0 + ], + "enabled": false + }, + "11": { + "default_value": [ + 4.0, + 4.0, + 4.0 + ], + "enabled": false + } + }, + "location": [ + 416.3256, + 84.9939 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Result" + }, + "1": { + "enabled": false, + "name": "Vector" + } + }, + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 259.9283, + 238.6412 + ], + "operation": "ARCCOSINE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Map Range" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 257.685, + -20.653 + ], + "operation": "ARCCOSINE", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Map Range.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 232.3399, + 52.3496 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 232.3399, + 125.2303 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 232.3399, + 29.8204 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 232.3399, + -134.0211 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 598.8708, + 50.2324 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 598.8708, + 309.2487 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 598.8708, + 161.2621 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 598.8708, + 139.1357 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Combine XYZ" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Separate XYZ": { + "bl_idname": "ShaderNodeSeparateXYZ", + "hide": false, + "inputs": { + "0": { + "name": "Vector" + } + }, + "location": [ + 65.3822, + 86.7655 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "X" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Y" + } + }, + "width_hidden": 42.0 + }, + "Vector Transform": { + "bl_idname": "ShaderNodeVectorTransform", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5 + ], + "name": "Vector" + } + }, + "location": [ + -91.8587, + 18.0016 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Separate XYZ" + } + ], + "name": "Vector" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketVector", + "max_value": 0.0, + "min_value": 0.0, + "name": "Vector" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UV_Low_High.json b/fast64_internal/f3d/node_library/UV_Low_High.json new file mode 100644 index 000000000..e04b4e04d --- /dev/null +++ b/fast64_internal/f3d/node_library/UV_Low_High.json @@ -0,0 +1,438 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "ef489968420933628b8a3fd85864a5cc", + "inputs": [ + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "High" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Low" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Size" + } + ], + "interface_hash": "5006e936bf4a31f84f4db972f1d0ebfb", + "name": "UV Low/High", + "nodes": { + "Frame": { + "bl_idname": "NodeFrame", + "height": 44.99993896484375, + "label": "The reason for < and *+ is for float issues ", + "location": [ + 63.7259, + 465.1064 + ], + "width": 427.2569580078125, + "width_hidden": 42.0 + }, + "Frame.001": { + "bl_idname": "NodeFrame", + "height": 44.99993896484375, + "label": "This is a hacky solution but seems to work well enough", + "location": [ + 124.1801, + 430.914 + ], + "width": 545.8851318359375, + "width_hidden": 42.0 + }, + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -370.0122, + 7.4765 + ], + "outputs": { + "0": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.002" + } + ], + "name": "High" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Low" + }, + "2": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Math.004" + } + ], + "name": "Size" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "High" + }, + "1": { + "name": "Low" + }, + "2": { + "name": "" + } + }, + "location": [ + 850.0584, + 18.0582 + ], + "width_hidden": 42.0 + }, + "Math": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "enabled": false + } + }, + "location": [ + 408.8061, + 142.1312 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.001": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.10000000149011612 + }, + "1": { + "default_value": 0.10000000149011612 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -23.0517, + 297.9476 + ], + "operation": "LESS_THAN", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.006" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.002": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.23999999463558197 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Clamp Correction", + "location": [ + -23.4892, + 130.04 + ], + "operation": "ADD", + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Math.006" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.003": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + 409.7428, + -57.7415 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.004": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 1.0 + }, + "1": { + "default_value": 0.5 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "1 / Size", + "location": [ + 83.8813, + -56.1372 + ], + "operation": "DIVIDE", + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Math" + }, + { + "index": 1, + "node": "Math.003" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.005": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 1.0, + "enabled": false + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "label": "Frac of Low", + "location": [ + -170.0614, + 26.5436 + ], + "operation": "FRACT", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.002" + }, + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "Value" + } + }, + "width": 113.50496673583984, + "width_hidden": 42.0 + }, + "Math.006": { + "bl_idname": "ShaderNodeMath", + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": 0.0010000000474974513 + }, + "2": {} + }, + "location": [ + 182.791, + 252.7998 + ], + "operation": "MULTIPLY_ADD", + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -203.4064, + -49.2803 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + }, + { + "index": 0, + "node": "Math.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -203.4064, + 16.0607 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.005" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -56.266, + 184.9541 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "High" + }, + { + "bl_idname": "NodeSocketFloat", + "name": "Low" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/UnshiftValue.json b/fast64_internal/f3d/node_library/UnshiftValue.json new file mode 100644 index 000000000..c13de3c28 --- /dev/null +++ b/fast64_internal/f3d/node_library/UnshiftValue.json @@ -0,0 +1,142 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "8c347be038cebaf326e4f4dd3b7b784b", + "inputs": [ + { + "bl_idname": "NodeSocketInt", + "max_value": 2147483647, + "min_value": -2147483648, + "name": "Shift" + }, + { + "bl_idname": "NodeSocketFloat", + "default_value": 0.5, + "max_value": 10000.0, + "min_value": -10000.0, + "name": "Value" + } + ], + "interface_hash": "6426508139668983dca234de1f93c685", + "name": "UnshiftValue", + "nodes": { + "Group Input": { + "bl_idname": "NodeGroupInput", + "location": [ + -313.9069, + 0.0 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Math.017" + } + ], + "name": "Shift" + }, + "1": { + "default_value": 0.5, + "links": [ + { + "index": 1, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Group Output": { + "bl_idname": "NodeGroupOutput", + "inputs": { + "0": { + "name": "Value" + }, + "1": { + "name": "" + } + }, + "location": [ + 245.7738, + 6.0149 + ], + "width_hidden": 42.0 + }, + "Group.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Shift" + }, + "1": { + "default_value": 0.5, + "name": "Value" + } + }, + "location": [ + 83.1698, + 6.0405 + ], + "node_tree": { + "name": "ShiftValue", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group Output" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + }, + "Math.017": { + "bl_idname": "ShaderNodeMath", + "hide": true, + "inputs": { + "0": { + "default_value": 0.5 + }, + "1": { + "default_value": -1.0 + }, + "2": { + "default_value": 0.5, + "enabled": false + } + }, + "location": [ + -95.8656, + -29.4316 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Group.001" + } + ], + "name": "Value" + } + }, + "width_hidden": 42.0 + } + }, + "outputs": [ + { + "bl_idname": "NodeSocketFloat", + "name": "Value" + } + ] +} \ No newline at end of file diff --git a/fast64_internal/f3d/node_library/main.json b/fast64_internal/f3d/node_library/main.json new file mode 100644 index 000000000..4ddbbbc4e --- /dev/null +++ b/fast64_internal/f3d/node_library/main.json @@ -0,0 +1,3842 @@ +{ + "bpy_ver": [ + 3, + 2, + 0 + ], + "cached_hash": "0bfc89eae22bfa1a07a47f587653fea9", + "dependencies": [ + "3_Point_Lerp", + "3PointOffset", + "3PointOffsetFrac", + "3PointOffsetFrac_Lite", + "Advanced_Texture_Settings", + "Advanced_Texture_Settings_and_3_Point", + "AmbientLight", + "AOFactors", + "ApplyFilterOffset", + "ApplyFresnel", + "AverageValue", + "CalcFog", + "CalcFresnel", + "ClampVec01", + "CombinerInputs", + "Cycle", + "DirLight", + "F3DNoise_Animated", + "F3DNoise_NonAnimated", + "F3DNoiseGeneration", + "Fog", + "FogBlender_Off", + "FogBlender_On", + "Gamma_Correct_Fast64", + "Gamma_Correct_Value", + "Gamma_Inverse_Fast64", + "Gamma_Inverse_Value", + "GeometryNormal_ViewSpace", + "GeometryNormal_WorldSpace", + "GetSpecularNormal", + "Is_i", + "Is_ia", + "Is_not_i", + "LightToAlpha", + "Lite_Texture_Settings", + "Lite_Texture_Settings_and_3_Point", + "MaxOfComponents", + "MixValue", + "MixVector", + "Noise", + "OffsetXY", + "OUTPUT_1CYCLE_CLIP", + "OUTPUT_1CYCLE_OPA", + "OUTPUT_1CYCLE_XLU", + "OUTPUT_2CYCLE_CLIP", + "OUTPUT_2CYCLE_OPA", + "OUTPUT_2CYCLE_XLU", + "ScaleUVs", + "ShdCol", + "ShiftValue", + "Step", + "SubLerp", + "SubLerpVal", + "TextureSettings_Advanced", + "TextureSettings_Lite", + "TileRepeatSettings", + "TileSettings", + "TileSettings_Lite", + "UnshiftValue", + "UV", + "UV_Basis_0", + "UV_Basis_1", + "UV_Low_High", + "UV_EnvMap", + "UV_EnvMap_Linear" + ], + "interface_hash": "d751713988987e9331980363e24189ce", + "name": "fast64_f3d_material_library_beefwashere", + "nodes": { + "3 Point Lerp": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C00" + }, + "1": { + "name": "A00" + }, + "2": { + "name": "C01" + }, + "3": { + "name": "A01" + }, + "4": { + "name": "C10" + }, + "5": { + "name": "A10" + }, + "6": { + "name": "C11" + }, + "7": { + "name": "A11" + }, + "8": { + "name": "3 Point" + }, + "9": { + "name": "Lerp S" + }, + "10": { + "name": "Lerp T" + } + }, + "label": "3 Point Lerp", + "location": [ + 88.4481, + 721.8054 + ], + "node_tree": { + "name": "3 Point Lerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.036" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.035" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "3 Point Lerp.001": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "C00" + }, + "1": { + "name": "A00" + }, + "2": { + "name": "C01" + }, + "3": { + "name": "A01" + }, + "4": { + "name": "C10" + }, + "5": { + "name": "A10" + }, + "6": { + "name": "C11" + }, + "7": { + "name": "A11" + }, + "8": { + "name": "3 Point" + }, + "9": { + "name": "Lerp S" + }, + "10": { + "name": "Lerp T" + } + }, + "label": "3 Point Lerp", + "location": [ + 27.002, + 369.1659 + ], + "node_tree": { + "name": "3 Point Lerp", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.046" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.045" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "AmbientColor": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "AmbientColor", + "location": [ + -98.4499, + -223.3442 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.030" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "AmbientColorOut": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "AmbientColorOut", + "location": [ + 220.2553, + 130.9037 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + }, + "CalcFog": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "FogEnable" + }, + "1": { + "default_value": 100.0, + "name": "F3D_NearClip" + }, + "2": { + "default_value": 30000.0, + "name": "F3D_FarClip" + }, + "3": { + "default_value": 100.0, + "name": "Blender_Game_Scale" + }, + "4": { + "default_value": 970.0, + "name": "FogNear" + }, + "5": { + "default_value": 1000.0, + "name": "FogFar" + } + }, + "label": "CalcFog", + "location": [ + 0.269, + 9.8608 + ], + "node_tree": { + "name": "CalcFog", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.008" + } + ], + "name": "FogAmount" + } + }, + "width": 166.034912109375, + "width_hidden": 42.0 + }, + "Combined_A": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Combined_A", + "location": [ + 540.007, + 432.865 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + }, + "Combined_C": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Combined_C", + "location": [ + 540.0067, + 455.5803 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + }, + "CombinerInputs": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Env Color" + }, + "1": { + "name": "Env Alpha" + }, + "2": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Prim Color" + }, + "3": { + "name": "Prim Alpha" + }, + "4": { + "name": "Chroma Key Center" + }, + "5": { + "name": "Chroma Key Scale" + }, + "6": { + "name": "LOD Fraction" + }, + "7": { + "name": "Prim LOD Fraction" + }, + "8": { + "name": "YUVConvert K4" + }, + "9": { + "name": "YUVConvert K5" + }, + "10": { + "name": "Noise Factor" + } + }, + "location": [ + 522.1014, + 157.4729 + ], + "node_tree": { + "name": "CombinerInputs", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "hide_value": true, + "name": "1" + }, + "1": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Env Color" + }, + "3": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "name": "Prim Color" + } + }, + "width": 138.9788818359375, + "width_hidden": 42.0 + }, + "Cycle 1 A": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1032.6453, + 433.6128 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.031" + }, + { + "index": 1, + "node": "OUTPUT" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Cycle C 2": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Cycle C 2", + "location": [ + 1232.1841, + 411.9155 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "OUTPUT" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Cycle_1": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "hide_value": true, + "name": " A" + }, + "1": { + "hide_value": true, + "name": "- B" + }, + "2": { + "hide_value": true, + "name": "* C" + }, + "3": { + "hide_value": true, + "name": "+D" + }, + "4": { + "hide_value": true, + "name": " A a" + }, + "5": { + "hide_value": true, + "name": "- B a" + }, + "6": { + "hide_value": true, + "name": "* C a" + }, + "7": { + "hide_value": true, + "name": "+D a" + } + }, + "label": "Cycle_1", + "location": [ + 870.6459, + 746.0088 + ], + "node_tree": { + "name": "Cycle", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.009" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.010" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Cycle_2": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "hide_value": true, + "name": " A" + }, + "1": { + "hide_value": true, + "name": "- B" + }, + "2": { + "hide_value": true, + "name": "* C" + }, + "3": { + "hide_value": true, + "name": "+D" + }, + "4": { + "hide_value": true, + "name": " A a" + }, + "5": { + "hide_value": true, + "name": "- B a" + }, + "6": { + "hide_value": true, + "name": "* C a" + }, + "7": { + "hide_value": true, + "name": "+D a" + } + }, + "label": "Cycle_2", + "location": [ + 870.0439, + 419.6389 + ], + "node_tree": { + "name": "Cycle", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "links": [ + { + "index": 0, + "node": "Reroute.023" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 3, + "node": "OUTPUT" + } + ], + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "F3DNoiseFactor": { + "bl_idname": "ShaderNodeGroup", + "label": "F3D Noise Factor", + "location": [ + 362.3851, + -359.9226 + ], + "node_tree": { + "name": "F3DNoise_NonAnimated", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "CombinerInputs" + } + ], + "name": "Noise Factor" + } + }, + "width": 141.82003784179688, + "width_hidden": 42.0 + }, + "FogBlender": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "name": "Fog Color" + }, + "2": { + "default_value": 1, + "hide_value": true, + "name": "FogEnable" + }, + "3": { + "name": "FogAmount" + } + }, + "location": [ + 1057.339, + -361.1071 + ], + "node_tree": { + "name": "FogBlender_Off", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "Reroute.020" + } + ], + "name": "Color" + } + }, + "width_hidden": 42.0 + }, + "FogColor": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "FogColor", + "location": [ + -100.5679, + -80.1798 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.007" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "FogEnable": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "FogEnable", + "location": [ + -100.5679, + -43.212 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.021" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "GlobalFogColor": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "GlobalFogColor", + "location": [ + 970.0153, + -472.9617 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "FogBlender" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light0Color": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light0Color", + "location": [ + -100.5679, + -255.3142 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.029" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light0ColorOut": { + "bl_idname": "NodeReroute", + "color": [ + 0.0, + 0.006579296197742224, + 0.6080002188682556 + ], + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light0ColorOut", + "location": [ + 240.4993, + 108.4823 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light0Dir": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light0Dir", + "location": [ + -100.5679, + -291.5489 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.064" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light0Size": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light0Size", + "location": [ + -100.7645, + -324.5403 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light1Color": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light1Color", + "location": [ + -100.5679, + -359.6982 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.014" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light1ColorOut": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light1ColorOut", + "location": [ + 300.1822, + 41.4949 + ], + "outputs": {}, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light1Dir": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light1Dir", + "location": [ + -100.5679, + -395.9328 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.017" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Light1Size": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "label": "Light1Size", + "location": [ + -100.7645, + -432.9894 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.019" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Material Output F3D": { + "bl_idname": "ShaderNodeOutputMaterial", + "inputs": { + "0": { + "name": "Surface" + }, + "1": { + "name": "Volume" + }, + "2": { + "hide_value": true, + "name": "Displacement" + }, + "3": { + "enabled": false, + "hide_value": true, + "name": "Thickness" + } + }, + "label": "Material Output F3D", + "location": [ + 1546.1614, + 570.9524 + ], + "target": "ALL", + "width": 140.0, + "width_hidden": 42.0 + }, + "OUTPUT": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "Cycle_C_1" + }, + "1": { + "default_value": 0.5, + "name": "Cycle_A_1" + }, + "2": { + "name": "Cycle_C_2" + }, + "3": { + "name": "Cycle_A_2" + } + }, + "location": [ + 1281.6936, + 546.5616 + ], + "node_tree": { + "name": "OUTPUT_1CYCLE_OPA", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Material Output F3D" + } + ], + "name": "Shader" + } + }, + "width": 219.2171630859375, + "width_hidden": 42.0 + }, + "Reroute": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 279.3464, + 63.2815 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "Shade Color" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.001": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 278.1772, + -325.7051 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.002": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -99.7037, + 665.2722 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.026" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.003": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 342.4858, + -3.2982 + ], + "outputs": { + "0": { + "links": [ + { + "index": 6, + "node": "Shade Color" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.004": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1056.166, + 455.5803 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.032" + }, + { + "index": 0, + "node": "OUTPUT" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.005": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -168.2689, + 601.3511 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.011" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.006": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -80.1769, + 600.2381 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex0_1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.007": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -43.0492, + -79.7479 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.025" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.008": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 187.0219, + -24.9493 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.015" + }, + { + "index": 7, + "node": "Shade Color" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.009": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1056.166, + 710.3579 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.004" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.010": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1032.6453, + 689.0767 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Cycle 1 A" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.011": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -168.2686, + 247.7618 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex1_1" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.012": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -266.7627, + 514.2306 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.028" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.013": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -80.1769, + 688.0691 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.006" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.014": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 298.7793, + -361.0995 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Light1ColorOut" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.015": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 186.004, + -515.5674 + ], + "outputs": { + "0": { + "links": [ + { + "index": 3, + "node": "FogBlender" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.016": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 320.9194, + 19.0493 + ], + "outputs": { + "0": { + "links": [ + { + "index": 5, + "node": "Shade Color" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.017": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 318.4125, + -396.5732 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.016" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.018": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -22.6183, + -492.965 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "FogBlender" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.019": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 340.8009, + -432.2405 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.003" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.020": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1228.2324, + -396.09 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Cycle C 2" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.021": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -22.4946, + -42.9622 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.033" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.022": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -119.8048, + 644.7002 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.027" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.023": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1036.3872, + 385.0596 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.024" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.024": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 1037.3008, + -451.3302 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "FogBlender" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.025": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -43.6724, + -471.6686 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "GlobalFogColor" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.026": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -99.7038, + 556.729 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex0_2" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.027": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -119.8048, + 513.8991 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex0_3" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.028": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -266.7627, + 438.9244 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "3 Point Lerp" + }, + { + "index": 0, + "node": "Reroute.039" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.029": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 238.3813, + -255.7433 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Light0ColorOut" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.030": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 218.8434, + -224.0207 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "AmbientColorOut" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.031": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 567.4604, + 433.0344 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combined_A" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.032": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 567.498, + 455.5803 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Combined_C" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.033": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -22.4909, + -79.6908 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.018" + }, + { + "index": 0, + "node": "CalcFog" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.035": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 250.651, + 664.605 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.037" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.036": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 273.0207, + 686.3497 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.038" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.037": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 250.651, + 416.0674 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Tex0_I" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.038": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 273.0206, + 438.045 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex0_I" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.039": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -266.7627, + 84.2352 + ], + "outputs": { + "0": { + "links": [ + { + "index": 8, + "node": "3 Point Lerp.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.040": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -215.9497, + 557.5349 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.042" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.041": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -192.6816, + 579.2024 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.043" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.042": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -215.9496, + 159.7473 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex1_3" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.043": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -192.6816, + 204.1465 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex1_2" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.045": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 249.1072, + 311.7921 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.047" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.046": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 271.4768, + 333.9234 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.048" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.047": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 249.1072, + 263.5877 + ], + "outputs": { + "0": { + "links": [ + { + "index": 1, + "node": "Tex1_I" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.048": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 271.4768, + 285.481 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex1_I" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.049": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -144.3862, + 621.2133 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.050" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.050": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -144.3863, + 469.6217 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex0_4" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.051": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -241.0292, + 534.9551 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.052" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.052": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -241.0291, + 116.0509 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Tex1_4" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.053": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -292.0114, + 490.8738 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.059" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.054": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -313.7195, + 468.8711 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.060" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.055": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -336.5234, + 446.8624 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.058" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.056": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -357.5894, + 424.9495 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.057" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.057": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -357.5894, + 38.5568 + ], + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "3 Point Lerp.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.058": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -336.5234, + 60.7054 + ], + "outputs": { + "0": { + "links": [ + { + "index": 9, + "node": "3 Point Lerp.001" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.059": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -292.0114, + 413.5947 + ], + "outputs": { + "0": { + "links": [ + { + "index": 9, + "node": "3 Point Lerp" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.060": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + -313.7195, + 391.4088 + ], + "outputs": { + "0": { + "links": [ + { + "index": 10, + "node": "3 Point Lerp" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.064": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 258.8629, + -292.4521 + ], + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.065" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Reroute.065": { + "bl_idname": "NodeReroute", + "inputs": { + "0": { + "name": "Input" + } + }, + "location": [ + 259.909, + 85.2792 + ], + "outputs": { + "0": { + "links": [ + { + "index": 2, + "node": "Shade Color" + } + ], + "name": "Output" + } + }, + "width": 16.0, + "width_hidden": 42.0 + }, + "Shade Color": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "AmbientColor" + }, + "1": { + "default_value": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "hide_value": true, + "name": "Light0Color" + }, + "2": { + "default_value": [ + 0.0, + 0.0, + 1.0 + ], + "hide_value": true, + "name": "Light0Dir" + }, + "3": { + "hide_value": true, + "name": "Light0Size" + }, + "4": { + "hide_value": true, + "name": "Light1Color" + }, + "5": { + "hide_value": true, + "name": "Light1Dir" + }, + "6": { + "hide_value": true, + "name": "Light1Size" + }, + "7": { + "hide_value": true, + "name": "FogValue" + }, + "8": { + "default_value": 1, + "name": "G_FOG" + }, + "9": { + "name": "G_LIGHTING" + }, + "10": { + "name": "G_PACKED_NORMALS" + }, + "11": { + "name": "G_LIGHTTOALPHA" + }, + "12": { + "name": "G_FRESNEL_COLOR" + }, + "13": { + "name": "G_FRESNEL_ALPHA" + }, + "14": { + "name": "G_LIGHTING_SPECULAR" + }, + "15": { + "name": "G_AMBOCCLUSION" + }, + "16": { + "name": "AO Ambient" + }, + "17": { + "name": "AO Directional" + }, + "18": { + "name": "AO Point" + }, + "19": { + "name": "Fresnel Lo" + }, + "20": { + "name": "Fresnel Hi" + } + }, + "label": "Shade Color", + "location": [ + 364.701, + 240.761 + ], + "node_tree": { + "name": "ShdCol", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "name": "Color" + } + }, + "width": 139.40940856933594, + "width_hidden": 42.0 + }, + "Tex0_1": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex0", + "location": [ + -61.4924, + 610.0462 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "3 Point Lerp" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 1, + "node": "3 Point Lerp" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex0_2": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex0 Sample 2", + "location": [ + -61.8867, + 566.6825 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "3 Point Lerp" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 3, + "node": "3 Point Lerp" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex0_3": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex0 Sample 3", + "location": [ + -62.7128, + 523.5329 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 4, + "node": "3 Point Lerp" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 5, + "node": "3 Point Lerp" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex0_4": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex0 Sample 4", + "location": [ + -62.8972, + 478.6159 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 6, + "node": "3 Point Lerp" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 7, + "node": "3 Point Lerp" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex0_I": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "hide_value": true, + "name": "Alpha" + } + }, + "label": "Tex0_I", + "location": [ + 364.7009, + 548.5018 + ], + "node_tree": { + "name": "Is not i", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + } + }, + "width_hidden": 42.0 + }, + "Tex1_1": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex1", + "location": [ + -124.2742, + 257.5299 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 0, + "node": "3 Point Lerp.001" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 1, + "node": "3 Point Lerp.001" + } + ], + "name": "Alpha" + } + }, + "show_texture": true, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex1_2": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex1 Sample 2", + "location": [ + -124.8516, + 213.4365 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 2, + "node": "3 Point Lerp.001" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 3, + "node": "3 Point Lerp.001" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex1_3": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex1 Sample 3", + "location": [ + -124.5629, + 169.9038 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 4, + "node": "3 Point Lerp.001" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 5, + "node": "3 Point Lerp.001" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex1_4": { + "bl_idname": "ShaderNodeTexImage", + "color_mapping": { + "data": { + "color_ramp": { + "color_mode": "RGB", + "elements": [ + { + "alpha": 1.0, + "color": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "position": 0.0 + }, + { + "alpha": 1.0, + "color": [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "position": 1.0 + } + ], + "hue_interpolation": "NEAR", + "interpolation": "LINEAR", + "serialized_type": "ColorRamp" + } + }, + "serialized_type": "Default" + }, + "inputs": { + "0": { + "hide_value": true, + "name": "Vector" + } + }, + "label": "Tex1 Sample 4", + "location": [ + -124.563, + 126.0725 + ], + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "links": [ + { + "index": 6, + "node": "3 Point Lerp.001" + } + ], + "name": "Color" + }, + "1": { + "links": [ + { + "index": 7, + "node": "3 Point Lerp.001" + } + ], + "name": "Alpha" + } + }, + "texture_mapping": { + "data": {}, + "serialized_type": "Default" + }, + "width_hidden": 42.0 + }, + "Tex1_I": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "default_value": [ + 0.5, + 0.5, + 0.5, + 1.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "hide_value": true, + "name": "Alpha" + } + }, + "label": "Tex1_I", + "location": [ + 363.636, + 396.2509 + ], + "node_tree": { + "name": "Is not i", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "default_value": [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "hide_value": true, + "name": "Color" + }, + "1": { + "default_value": 0.5, + "hide_value": true, + "name": "Alpha" + } + }, + "width": 140.05548095703125, + "width_hidden": 42.0 + }, + "TextureSettings": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "hide_value": true + }, + "1": { + "hide_value": true + }, + "2": { + "hide_value": true + }, + "3": { + "hide_value": true + }, + "4": { + "hide_value": true + }, + "5": { + "name": "0 S TexSize" + }, + "6": { + "name": "0 T TexSize" + }, + "7": { + "name": "1 S TexSize" + }, + "8": { + "name": "1 T TexSize" + }, + "9": { + "hide_value": true + }, + "10": { + "name": "0 S Shift" + }, + "11": { + "default_value": 5, + "name": "0 S Mask" + }, + "12": { + "name": "0 S Low" + }, + "13": { + "default_value": 63.0, + "name": "0 S High" + }, + "14": { + "name": "0 T Shift" + }, + "15": { + "default_value": 5, + "name": "0 T Mask" + }, + "16": { + "default_value": -18.599998474121094, + "name": "0 T Low" + }, + "17": { + "default_value": 63.0, + "name": "0 T High" + }, + "18": { + "hide_value": true + }, + "19": { + "name": "1 S Shift" + }, + "20": { + "name": "1 S Low" + }, + "21": { + "default_value": 63.0, + "name": "1 S High" + }, + "22": { + "default_value": 5, + "name": "1 S Mask" + }, + "23": { + "name": "1 T Shift" + }, + "24": { + "name": "1 T Low" + }, + "25": { + "default_value": 31.0, + "name": "1 T High" + }, + "26": { + "default_value": 5, + "name": "1 T Mask" + }, + "27": { + "hide_value": true + }, + "28": { + "default_value": 1, + "name": "0 ClampX" + }, + "29": { + "default_value": 1, + "name": "0 ClampY" + }, + "30": { + "name": "0 MirrorX" + }, + "31": { + "name": "0 MirrorY" + }, + "32": { + "hide_value": true + }, + "33": { + "name": "1 ClampX" + }, + "34": { + "name": "1 ClampY" + }, + "35": { + "name": "1 MirrorX" + }, + "36": { + "name": "1 MirrorY" + }, + "37": { + "hide_value": true + }, + "38": { + "default_value": 1, + "name": "3 Point" + } + }, + "location": [ + -574.8806, + 723.6606 + ], + "node_tree": { + "name": "TextureSettings_Advanced", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "Reroute.013" + } + ], + "name": "0_UV00" + }, + "1": { + "links": [ + { + "index": 0, + "node": "Reroute.002" + } + ], + "name": "0_UV01" + }, + "2": { + "links": [ + { + "index": 0, + "node": "Reroute.022" + } + ], + "name": "0_UV10" + }, + "3": { + "links": [ + { + "index": 0, + "node": "Reroute.049" + } + ], + "name": "0_UV11" + }, + "4": { + "links": [ + { + "index": 0, + "node": "Reroute.005" + } + ], + "name": "1_UV00" + }, + "5": { + "links": [ + { + "index": 0, + "node": "Reroute.041" + } + ], + "name": "1_UV01" + }, + "6": { + "links": [ + { + "index": 0, + "node": "Reroute.040" + } + ], + "name": "1_UV10" + }, + "7": { + "links": [ + { + "index": 0, + "node": "Reroute.051" + } + ], + "name": "1_UV11" + }, + "8": { + "links": [ + { + "index": 0, + "node": "Reroute.012" + } + ], + "name": "3 Point" + }, + "9": { + "links": [ + { + "index": 0, + "node": "Reroute.053" + } + ], + "name": "0 Lerp S" + }, + "10": { + "links": [ + { + "index": 0, + "node": "Reroute.054" + } + ], + "name": "0 Lerp T" + }, + "11": { + "links": [ + { + "index": 0, + "node": "Reroute.055" + } + ], + "name": "1 Lerp S" + }, + "12": { + "links": [ + { + "index": 0, + "node": "Reroute.056" + } + ], + "name": "1 Lerp T" + } + }, + "width": 189.42694091796875, + "width_hidden": 42.0 + }, + "UV": { + "bl_idname": "ShaderNodeGroup", + "location": [ + -987.291, + 174.8046 + ], + "node_tree": { + "name": "UV", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "hide_value": true, + "links": [ + { + "index": 0, + "node": "UV Basis" + } + ], + "name": "Vector" + } + }, + "width": 165.39825439453125, + "width_hidden": 42.0 + }, + "UV Basis": { + "bl_idname": "ShaderNodeGroup", + "inputs": { + "0": { + "name": "UV" + }, + "1": { + "default_value": 32, + "name": "0 S TexSize" + }, + "2": { + "default_value": 32, + "name": "0 T TexSize" + }, + "3": { + "default_value": 32, + "name": "1 S TexSize" + }, + "4": { + "default_value": 32, + "name": "1 T TexSize" + }, + "5": { + "default_value": 0.054999999701976776, + "name": "S Scale" + }, + "6": { + "default_value": 0.054999999701976776, + "name": "T Scale" + }, + "7": { + "default_value": 1, + "name": "EnableOffset" + } + }, + "location": [ + -786.6605, + 404.5032 + ], + "node_tree": { + "name": "UV Basis 0", + "serialized_type": "NodeTree" + }, + "outputs": { + "0": { + "links": [ + { + "index": 0, + "node": "TextureSettings" + } + ] + }, + "1": { + "links": [ + { + "index": 1, + "node": "TextureSettings" + } + ] + }, + "2": { + "links": [ + { + "index": 2, + "node": "TextureSettings" + } + ] + }, + "3": { + "links": [ + { + "index": 3, + "node": "TextureSettings" + } + ] + }, + "4": { + "hide_value": true, + "name": "" + }, + "5": { + "links": [ + { + "index": 5, + "node": "TextureSettings" + } + ], + "name": "0 S TexSize" + }, + "6": { + "links": [ + { + "index": 6, + "node": "TextureSettings" + } + ], + "name": "0 T TexSize" + }, + "7": { + "links": [ + { + "index": 7, + "node": "TextureSettings" + } + ], + "name": "1 S TexSize" + }, + "8": { + "links": [ + { + "index": 8, + "node": "TextureSettings" + } + ], + "name": "1 T TexSize" + } + }, + "width": 163.71954345703125, + "width_hidden": 42.0 + } + } +} \ No newline at end of file diff --git a/fast64_internal/f3d_material_converter.py b/fast64_internal/f3d_material_converter.py index 992c2c221..7a566a315 100644 --- a/fast64_internal/f3d_material_converter.py +++ b/fast64_internal/f3d_material_converter.py @@ -3,14 +3,15 @@ import bpy from bpy.utils import register_class, unregister_class from .f3d.f3d_material import * -from .f3d.f3d_material_helpers import node_tree_copy +from .f3d.f3d_node_gen import update_f3d_material_nodes from .utility import * +from .operators import OperatorBase from bl_operators.presets import AddPresetBase def upgrade_f3d_version_all_meshes() -> None: + generate_f3d_node_groups() objs = [obj for obj in bpy.data.objects if obj.type == "MESH"] - f3d_node_tree = get_f3d_node_tree() # Remove original v2 node groups so that they can be recreated. deleteGroups = [] @@ -26,14 +27,14 @@ def upgrade_f3d_version_all_meshes() -> None: # handles cases where materials are used in multiple objects materialDict = {} for obj in objs: - upgradeF3DVersionOneObject(obj, materialDict, f3d_node_tree) + upgradeF3DVersionOneObject(obj, materialDict) -def upgradeF3DVersionOneObject(obj, materialDict, f3d_node_tree: bpy.types.NodeTree): +def upgradeF3DVersionOneObject(obj, materialDict): for index in range(len(obj.material_slots)): material = obj.material_slots[index].material if material is not None and material.is_f3d and material not in materialDict: - convertF3DtoNewVersion(obj, index, material, f3d_node_tree) + convertF3DtoNewVersion(obj, index, material) materialDict[material] = material @@ -132,9 +133,7 @@ def set_best_draw_layer_for_materials(): finished_mats.add(mat.name) -def convertF3DtoNewVersion( - obj: bpy.types.Object | bpy.types.Bone, index: int, material, f3d_node_tree: bpy.types.NodeTree -): +def convertF3DtoNewVersion(obj: bpy.types.Object | bpy.types.Bone, index: int, material): try: if not has_valid_mat_ver(material): return @@ -149,15 +148,9 @@ def convertF3DtoNewVersion( # Convert before node tree changes, as old materials store some values in the actual nodes if material.mat_ver <= 3: convertToNewMat(material) - - node_tree_copy(f3d_node_tree, material.node_tree) - - material.is_f3d, material.f3d_update_flag = True, False + material.is_f3d = True material.mat_ver = F3D_MAT_CUR_VERSION - - createScenePropertiesForMaterial(material) - with bpy.context.temp_override(material=material): - update_all_node_values(material, bpy.context) # Reload everything + update_f3d_material_nodes(material) except Exception as exc: print("Failed to upgrade", material.name) @@ -277,7 +270,6 @@ def execute(self, context): try: if context.mode != "OBJECT": raise PluginError("Operator can only be used in object mode.") - if self.update_conv_all: upgrade_f3d_version_all_meshes() else: @@ -285,9 +277,9 @@ def execute(self, context): raise PluginError("Mesh not selected.") elif type(context.selected_objects[0].data) is not bpy.types.Mesh: raise PluginError("Mesh not selected.") - + generate_f3d_node_groups() obj = context.selected_objects[0] - upgradeF3DVersionOneObject(obj, {}, get_f3d_node_tree()) + upgradeF3DVersionOneObject(obj, {}) except Exception as e: raisePluginError(self, e) @@ -297,6 +289,16 @@ def execute(self, context): return {"FINISHED"} # must return a set +class RecreateAllF3DNodes(OperatorBase): + bl_idname = "scene.recreate_all_f3d_nodes" + bl_label = "Recreate All F3D Shader Nodes" + bl_options = {"REGISTER", "UNDO", "PRESET"} + bl_description = "Recreates the node tree for f3d materials, use if material preview is broken." + + def execute_operator(self, context): + generate_f3d_node_groups(False, True) + + class F3DMaterialConverterPanel(bpy.types.Panel): bl_label = "F3D Material Converter" bl_idname = "MATERIAL_PT_F3D_Material_Converter" @@ -318,12 +320,14 @@ def draw(self, context): op = self.layout.operator(MatUpdateConvert.bl_idname) op.update_conv_all = context.scene.update_conv_all self.layout.prop(context.scene, "update_conv_all") + self.layout.operator(RecreateAllF3DNodes.bl_idname) self.layout.operator(ReloadDefaultF3DPresets.bl_idname) bsdf_conv_classes = ( BSDFConvert, MatUpdateConvert, + RecreateAllF3DNodes, ) bsdf_conv_panel_classes = (F3DMaterialConverterPanel,) diff --git a/fast64_internal/operators.py b/fast64_internal/operators.py index 335a0a9e2..df85dbb4a 100644 --- a/fast64_internal/operators.py +++ b/fast64_internal/operators.py @@ -20,6 +20,8 @@ def addMaterialByName(obj, matName, preset): + from .f3d.f3d_material import createF3DMat + if matName in bpy.data.materials: bpy.ops.object.material_slot_add() obj.material_slots[0].material = bpy.data.materials[matName] diff --git a/fast64_internal/render_settings.py b/fast64_internal/render_settings.py index 29e5a7385..335388ee6 100644 --- a/fast64_internal/render_settings.py +++ b/fast64_internal/render_settings.py @@ -1,6 +1,8 @@ import bpy import mathutils import math + +from .f3d.f3d_node_gen import find_node_group from .utility import * @@ -161,9 +163,10 @@ def update_scene_props_from_rs_light1SpecSize( def update_scene_props_from_rs_useWorldSpaceLighting(renderSettings: "Fast64RenderSettings_Properties"): - bpy.data.node_groups["GetSpecularNormal"].nodes["GeometryNormal"].node_tree = bpy.data.node_groups[ + specular_normal_node_tree = find_node_group("GetSpecularNormal") + specular_normal_node_tree.nodes["GeometryNormal"].node_tree = find_node_group( "GeometryNormal_WorldSpace" if renderSettings.useWorldSpaceLighting else "GeometryNormal_ViewSpace" - ] + ) def update_scene_props_from_render_settings( @@ -271,7 +274,7 @@ def poll_oot_scene(self, object): def resync_scene_props(): - if "GetSpecularNormal" in bpy.data.node_groups: + if find_node_group("GetSpecularNormal") is not None: # Lighting space needs to be updated due to the nodes being shared and reloaded update_scene_props_from_rs_useWorldSpaceLighting(bpy.context.scene.fast64.renderSettings) diff --git a/fast64_internal/utility.py b/fast64_internal/utility.py index e69bf710a..c273fef9c 100644 --- a/fast64_internal/utility.py +++ b/fast64_internal/utility.py @@ -2011,6 +2011,13 @@ def wrapper(*args, **kwargs): return decorator +def to_valid_file_name(name: str): + """Replace any invalid characters with an underscore""" + valid_chars = set(string.ascii_letters + string.digits) | {"."} + valid_chars -= {"\\", "/", ":", "*", "?", '"', "'", "<", ">", "|", " "} + return "".join(c if c in valid_chars else "_" for c in name) + + def as_posix(path: Path) -> str: return path.as_posix().replace("\\", "/") # Windows path sometimes still has backslashes?