Floatbot assets added, and nodetunnel being implemented.

This commit is contained in:
2026-02-03 06:59:07 -05:00
parent b90fdaad98
commit e7570c78c3
105 changed files with 14184 additions and 5 deletions

View File

@@ -0,0 +1,907 @@
{
"connections": [
{
"from": "voronoi2_2",
"from_port": 0,
"to": "math_2",
"to_port": 1
},
{
"from": "math_2",
"from_port": 0,
"to": "math_3",
"to_port": 0
},
{
"from": "radial_gradient",
"from_port": 0,
"to": "math_3",
"to_port": 1
},
{
"from": "math_3",
"from_port": 0,
"to": "sharpen",
"to_port": 0
},
{
"from": "voronoi2",
"from_port": 0,
"to": "math_2",
"to_port": 0
},
{
"from": "sharpen",
"from_port": 0,
"to": "math",
"to_port": 0
},
{
"from": "math",
"from_port": 0,
"to": "tones_step",
"to_port": 0
},
{
"from": "uniform",
"from_port": 0,
"to": "blend2",
"to_port": 0
},
{
"from": "uniform_2",
"from_port": 0,
"to": "blend2",
"to_port": 1
},
{
"from": "tones_step_2",
"from_port": 0,
"to": "blend2",
"to_port": 2
},
{
"from": "blend2",
"from_port": 0,
"to": "blend2_2",
"to_port": 0
},
{
"from": "uniform_3",
"from_port": 0,
"to": "blend2_2",
"to_port": 1
},
{
"from": "normal_map2",
"from_port": 0,
"to": "Material",
"to_port": 4
},
{
"from": "math_4",
"from_port": 0,
"to": "normal_map2",
"to_port": 0
},
{
"from": "tones_step",
"from_port": 0,
"to": "fast_blur",
"to_port": 0
},
{
"from": "fast_blur",
"from_port": 0,
"to": "tones_step_2",
"to_port": 0
},
{
"from": "fast_blur",
"from_port": 0,
"to": "math_4",
"to_port": 0
},
{
"from": "fast_blur",
"from_port": 0,
"to": "blend2_2",
"to_port": 2
},
{
"from": "fast_blur",
"from_port": 0,
"to": "graph_6",
"to_port": 0
},
{
"from": "blend2_2",
"from_port": 0,
"to": "blend2_3",
"to_port": 0
},
{
"from": "graph_6",
"from_port": 0,
"to": "blend2_3",
"to_port": 1
},
{
"from": "blend2_3",
"from_port": 0,
"to": "Material",
"to_port": 0
}
],
"label": "Graph",
"longdesc": "",
"name": "511",
"node_position": {
"x": 0,
"y": 0
},
"nodes": [
{
"export_paths": {
},
"name": "Material",
"node_position": {
"x": 2029,
"y": -92
},
"parameters": {
"albedo_color": {
"a": 1,
"b": 1,
"g": 1,
"r": 1,
"type": "Color"
},
"ao": 1,
"depth_scale": 0.7,
"emission_energy": 0,
"flags_transparent": false,
"metallic": 0,
"normal": 1,
"roughness": 1,
"size": 11,
"sss": 0
},
"seed_int": 0,
"type": "material"
},
{
"name": "voronoi2",
"node_position": {
"x": -2174,
"y": 335
},
"parameters": {
"intensity": 1,
"randomness": 0.85,
"scale_x": 8,
"scale_y": 8,
"stretch_x": 1,
"stretch_y": 1
},
"seed_int": 1884072448,
"type": "voronoi2"
},
{
"name": "voronoi2_2",
"node_position": {
"x": -2185.340332,
"y": 576.901062
},
"parameters": {
"intensity": 1,
"randomness": 1,
"scale_x": 6,
"scale_y": 6,
"stretch_x": 1,
"stretch_y": 1
},
"seed_int": 190614896,
"type": "voronoi2"
},
{
"name": "math_2",
"node_position": {
"x": -1422.340332,
"y": 488.901062
},
"parameters": {
"clamp": false,
"default_in1": 0,
"default_in2": 0,
"op": 2
},
"seed_int": 0,
"type": "math"
},
{
"name": "sharpen",
"node_position": {
"x": -292.340332,
"y": 358.901062
},
"parameters": {
"size": 5
},
"seed_int": 0,
"type": "sharpen"
},
{
"name": "radial_gradient",
"node_position": {
"x": -888.340332,
"y": 141.901062
},
"parameters": {
"gradient": {
"interpolation": 1,
"points": [
{
"a": 1,
"b": 1,
"g": 1,
"pos": 0.400481,
"r": 1
},
{
"a": 1,
"b": 0,
"g": 0,
"pos": 0.718311,
"r": 0
}
],
"type": "Gradient"
},
"repeat": 1
},
"seed_int": 0,
"type": "radial_gradient"
},
{
"name": "math_3",
"node_position": {
"x": -582.340332,
"y": 299.901062
},
"parameters": {
"clamp": true,
"default_in1": 0,
"default_in2": 3,
"op": 2
},
"seed_int": 0,
"type": "math"
},
{
"name": "tones_step",
"node_position": {
"x": 141.659668,
"y": 136.901062
},
"parameters": {
"invert": false,
"value": 0.15,
"width": 0.28
},
"seed_int": 0,
"type": "tones_step"
},
{
"name": "math",
"node_position": {
"x": -133.678223,
"y": 139.390686
},
"parameters": {
"clamp": false,
"default_in1": 0,
"default_in2": 2,
"op": 6
},
"seed_int": 0,
"type": "math"
},
{
"generic_size": 1,
"name": "blend2",
"node_position": {
"x": 877.70166,
"y": -140.297119
},
"parameters": {
"amount1": 0.71,
"blend_type1": 0
},
"seed_int": 0,
"type": "blend2"
},
{
"name": "uniform",
"node_position": {
"x": 526.70166,
"y": -241.297119
},
"parameters": {
"color": {
"a": 0,
"b": 0.239216,
"g": 0.239216,
"r": 0.239216,
"type": "Color"
}
},
"seed_int": 0,
"type": "uniform"
},
{
"name": "uniform_2",
"node_position": {
"x": 521.20166,
"y": -148.297119
},
"parameters": {
"color": {
"a": 1,
"b": 0.183594,
"g": 0.183594,
"r": 0.183594,
"type": "Color"
}
},
"seed_int": 0,
"type": "uniform"
},
{
"name": "uniform_3",
"node_position": {
"x": 949.20166,
"y": 86.702881
},
"parameters": {
"color": {
"a": 1,
"b": 0.042969,
"g": 0.042969,
"r": 0.042969,
"type": "Color"
}
},
"seed_int": 0,
"type": "uniform"
},
{
"name": "tones_step_2",
"node_position": {
"x": 481.70166,
"y": -53.29715
},
"parameters": {
"invert": false,
"value": 0.15,
"width": 0.28
},
"seed_int": 0,
"type": "tones_step"
},
{
"name": "normal_map2",
"node_position": {
"x": 1555.70166,
"y": 264.702881
},
"parameters": {
"buffer": 1,
"param2": 0,
"size": 11,
"strength": -1
},
"seed_int": 0,
"type": "normal_map2"
},
{
"generic_size": 1,
"name": "blend2_2",
"node_position": {
"x": 1227.70166,
"y": 97.702881
},
"parameters": {
"amount1": 1,
"blend_type1": 0
},
"seed_int": 0,
"type": "blend2"
},
{
"name": "math_4",
"node_position": {
"x": 999.70166,
"y": 342.702881
},
"parameters": {
"clamp": false,
"default_in1": 0,
"default_in2": 0.9,
"op": 6
},
"seed_int": 0,
"type": "math"
},
{
"name": "fast_blur",
"node_position": {
"x": 393.70166,
"y": 333.702881
},
"parameters": {
"param0": 11,
"param1": 4,
"param2": 1,
"param3": 1
},
"seed_int": 0,
"type": "fast_blur"
},
{
"connections": [
{
"from": "voronoi_3",
"from_port": 0,
"to": "buffer_5",
"to_port": 0
},
{
"from": "voronoi_2",
"from_port": 0,
"to": "buffer_7",
"to_port": 0
},
{
"from": "buffer_7",
"from_port": 0,
"to": "gen_outputs",
"to_port": 0
},
{
"from": "gen_inputs",
"from_port": 0,
"to": "buffer_2",
"to_port": 0
},
{
"from": "buffer_2",
"from_port": 0,
"to": "voronoi_3",
"to_port": 0
},
{
"from": "buffer_5",
"from_port": 0,
"to": "voronoi_2",
"to_port": 0
}
],
"label": "HBAO",
"longdesc": "",
"name": "graph_6",
"node_position": {
"x": 1400.70166,
"y": -410.297119
},
"nodes": [
{
"name": "voronoi_3",
"node_position": {
"x": -600.80072,
"y": -894.601807
},
"parameters": {
"angleBiasDeg": 15,
"depth_scale": 0.08,
"intensity": 2,
"quality": 4,
"radius": 0.1
},
"seed": 49449,
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"function": true,
"label": "",
"name": "in",
"type": "f"
}
],
"instance": "//inspired by:\n//http://developer.download.nvidia.com/presentations/2008/SIGGRAPH/HBAO_SIG08b.pdf\n//https://gist.github.com/dotModded/981206ae1f4e760b7348\n//https://github.com/scanberg/hbao/blob/master/resources/shaders/hbao_full_frag.glsl\n//radius - radius of influence in screen space\n//angleBiasDeg - ~minimum angle for AO\n//intensity - increase strength of caclulated AO\n//noiseScale - for randomization values\nfloat $(name)_hbao(vec2 uv, float radius, float angleBiasDeg, float intensity, vec2 noiseScale) {\n int samplig_directions = 8;\n int steps = int($quality);\n\n float angleBias = 0.0174532925 * angleBiasDeg;\n\n vec3 c_point = vec3(uv*2.0 - 1.0, $in(uv)*$depth_scale);\n //fun with dfdx & dfdy - https://community.khronos.org/t/getting-the-normal-with-dfdx-and-dfdy/70177\n vec3 c_normal = normalize(cross(dFdx(c_point), dFdy(c_point)));\n\n\n float cosMaxRot = cos(6.28318530718 / float(samplig_directions));\n float sinMaxROt = sin(6.28318530718 / float(samplig_directions));\n \n // it should be faster than standard rotation in each iteartion\n mat2 deltaRotationMatrix = mat2(\n\tvec2(cosMaxRot, -sinMaxROt),\n\tvec2(sinMaxROt, cosMaxRot)\n );\n \n // calculate starting offset, as the smallest step\n vec2 offset_uv = vec2(1.0, 0.0) * (radius /float(steps));\n\n //randomize angle\n vec3 sampleNoise\t= rand3(uv * noiseScale);\n sampleNoise.xy\t = sampleNoise.xy * 2.0 - vec2(1.0);\n mat2 rotationMatrix = mat2(vec2(sampleNoise.x, -sampleNoise.y), \n\t\t\t\t\t\t\t vec2(sampleNoise.y, sampleNoise.x));\n \n // apply a random rotation to the base step vector\n offset_uv = rotationMatrix * offset_uv;\n \n float jitter = sampleNoise.z;\n float occlusion = 0.0;\n \n for (int i = 0; i < samplig_directions; ++i) {\n\t// incrementally rotate sample direction\n\toffset_uv = deltaRotationMatrix * offset_uv;\n\tfloat oldAngle = angleBias;\n\tfor (int j = 0; j < steps; ++j) {\n\t //add jitter & distance to offset UV\n\t vec2 sample_uv\t = uv + (jitter + float(j)) * offset_uv;\n\t vec3 s_point\t = vec3(sample_uv*2.0 - 1.0, $in(sample_uv)*$depth_scale);\n\t vec3 sample_tan = (s_point - c_point); //not sure if correct, but looks ok\n\t // 90 deg - (angle between normal from current point & sampled tangent)\n\t //https://math.stackexchange.com/questions/654315/how-to-convert-a-dot-product-of-two-vectors-to-the-angle-between-the-vectors\n\t float gamma = 1.57079632679 - acos(dot(c_normal, normalize(sample_tan)));\n\t \n\t if (gamma > oldAngle) {\n\t\tfloat value = sin(gamma) - sin(oldAngle);\n\t\tfloat attenuation = clamp(1.0 - pow(length(sample_tan.xy)/radius, 2.0), 0.0, 1.0);\n\t\tocclusion += attenuation * value;\n\t\t//occlusion += value;\n\t\toldAngle = gamma;\n\t }\n\t}\n }\n \n occlusion = 1.0 - occlusion / float(samplig_directions);\n return clamp(pow(occlusion, 1.0 + intensity), 0.0, 1.0);\n}",
"longdesc": "A node that generates several images from a tileable voronoi noise",
"name": "HBAO",
"outputs": [
{
"f": "$(name)_hbao($uv,$radius, $angleBiasDeg, $intensity, vec2(16.0,16.0))",
"longdesc": "A color pattern that assigns a random color to each cell",
"shortdesc": "Random color",
"type": "f"
}
],
"parameters": [
{
"control": "None",
"default": 0.01,
"label": "Radius",
"longdesc": "The scale along the X axis",
"max": 1,
"min": 0,
"name": "radius",
"shortdesc": "Scale.x",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 30,
"label": "Angle Bias",
"longdesc": "Angle bias for AO",
"max": 90,
"min": 0,
"name": "angleBiasDeg",
"shortdesc": "Angle Bias",
"step": 1,
"type": "float"
},
{
"control": "None",
"default": 0.2,
"label": "Intensity",
"longdesc": "Change intensity of AO",
"max": 5,
"min": 0,
"name": "intensity",
"shortdesc": "Intensity",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 1,
"label": "Depth Scale",
"longdesc": "Lineary scales depth values afecting cacluated normals & tangents",
"max": 1,
"min": 0,
"name": "depth_scale",
"shortdesc": "Depth Scale",
"step": 0.01,
"type": "float"
},
{
"control": "None",
"default": 4,
"label": "Steps",
"longdesc": "Steps in given direction per ray",
"max": 12,
"min": 1,
"name": "quality",
"shortdesc": "Quality",
"step": 1,
"type": "float"
}
],
"shortdesc": "Voronoi Noise"
},
"type": "shader"
},
{
"name": "gen_inputs",
"node_position": {
"x": -1338.030762,
"y": -788.080872
},
"parameters": {
},
"ports": [
{
"group_size": 0,
"longdesc": "Greyscale heightmap",
"name": "input",
"shortdesc": "Input",
"type": "f"
}
],
"seed": 43798,
"type": "ios"
},
{
"name": "gen_outputs",
"node_position": {
"x": -902.684204,
"y": -327.282288
},
"parameters": {
},
"ports": [
{
"group_size": 0,
"longdesc": "",
"name": "port0",
"shortdesc": "AO",
"type": "f"
}
],
"seed": 42623,
"type": "ios"
},
{
"name": "gen_parameters",
"node_position": {
"x": -1488.979004,
"y": -561.71167
},
"parameters": {
"param0": 10,
"param1": 0.1,
"param2": 15,
"param3": 0.08,
"param4": 4,
"param5": 2
},
"seed": 58911,
"type": "remote",
"widgets": [
{
"label": "Size",
"linked_widgets": [
{
"node": "voronoi_2",
"widget": "size"
},
{
"node": "buffer_2",
"widget": "size"
},
{
"node": "buffer_5",
"widget": "size"
},
{
"node": "buffer_7",
"widget": "size"
}
],
"name": "param0",
"shortdesc": "Size",
"type": "linked_control"
},
{
"label": "Radius",
"linked_widgets": [
{
"node": "voronoi_3",
"widget": "radius"
}
],
"longdesc": "Affected radius of point in UV size",
"name": "param1",
"shortdesc": "Radius",
"type": "linked_control"
},
{
"label": "Angle Bias",
"linked_widgets": [
{
"node": "voronoi_3",
"widget": "angleBiasDeg"
}
],
"longdesc": "Minimum angle on heightmap for AO to occur. Angle is calculated in UV space, where depth (grayscale input) is scaled by \"Depth Scale\" parameter",
"name": "param2",
"shortdesc": "Angle bias",
"type": "linked_control"
},
{
"label": "Depth Scale",
"linked_widgets": [
{
"node": "voronoi_3",
"widget": "depth_scale"
}
],
"longdesc": "Lineary scales depth values afecting cacluated normals & tangents",
"name": "param3",
"shortdesc": "Depth Scale",
"type": "linked_control"
},
{
"label": "Quality",
"linked_widgets": [
{
"node": "voronoi_3",
"widget": "quality"
}
],
"longdesc": "Number of steps per direction sampling",
"name": "param4",
"shortdesc": "Quality",
"type": "linked_control"
},
{
"label": "Intensity",
"linked_widgets": [
{
"node": "voronoi_3",
"widget": "intensity"
}
],
"longdesc": "Change intensity of calculated AO",
"name": "param5",
"shortdesc": "Intensity",
"type": "linked_control"
}
]
},
{
"name": "voronoi_2",
"node_position": {
"x": -710.111145,
"y": -596.459534
},
"parameters": {
"ksigma": 4,
"sigma": 3,
"size": 10,
"threshold": 0.7
},
"seed": 38722,
"shader_model": {
"code": "",
"global": "",
"inputs": [
{
"default": "0.0",
"function": true,
"label": "",
"name": "in",
"type": "rgba"
}
],
"instance": "//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n// Copyright (c) 2018-2019 Michele Morrone\n// All rights reserved.\n//\n// https://michelemorrone.eu - https://BrutPitt.com\n//\n// me@michelemorrone.eu - brutpitt@gmail.com\n// twitter: @BrutPitt - github: BrutPitt\n// \n// https://github.com/BrutPitt/glslSmartDeNoise/\n//\n// This software is distributed under the terms of the BSD 2-Clause license\n//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n// smartDeNoise - parameters\n//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n//\n// sampler2D tex\t - sampler image / texture\n// vec2 uv\t\t - actual fragment coord\n// float sigma > 0 - sigma Standard Deviation\n// float kSigma >= 0 - sigma coefficient \n//\t kSigma * sigma --> radius of the circular kernel\n// float threshold - edge sharpening threshold \nvec4 $(name)_smartDeNoise(vec2 uv, float sigma, float kSigma, float threshold)\n{\n\tfloat INV_SQRT_OF_2PI = 0.39894228040143267793994605993439; // 1.0/SQRT_OF_2PI\n\tfloat INV_PI = 0.31830988618379067153776752674503;\n\tfloat radius = round(kSigma*sigma);\n\tfloat radQ = radius * radius;\n\n\tfloat invSigmaQx2 = .5 / (sigma * sigma);\t // 1.0 / (sigma^2 * 2.0)\n\tfloat invSigmaQx2PI = INV_PI * invSigmaQx2;\t// 1/(2 * PI * sigma^2)\n\n\tfloat invThresholdSqx2 = .5 / (threshold * threshold);\t // 1.0 / (sigma^2 * 2.0)\n\tfloat invThresholdSqrt2PI = INV_SQRT_OF_2PI / threshold; // 1.0 / (sqrt(2*PI) * sigma^2)\n\n\tvec4 centrPx = $in(uv); \n\n\tfloat zBuff = 0.0;\n\tvec4 aBuff = vec4(0.0);\n\tvec2 size = vec2($size, $size);\n\n\tvec2 d;\n\tfor (d.x=-radius; d.x <= radius; d.x++) {\n\t\tfloat pt = sqrt(radQ-d.x*d.x);\t // pt = yRadius: have circular trend\n\t\tfor (d.y=-pt; d.y <= pt; d.y++) {\n\t\t\tfloat blurFactor = exp( -dot(d , d) * invSigmaQx2 ) * invSigmaQx2PI;\n\n\t\t\tvec4 walkPx = $in(uv+d/size);\n\t\t\tvec4 dC = walkPx-centrPx;\n\t\t\tfloat deltaFactor = exp( -dot(dC, dC) * invThresholdSqx2) * invThresholdSqrt2PI * blurFactor;\n\n\t\t\tzBuff += deltaFactor;\n\t\t\taBuff += deltaFactor*walkPx;\n\t\t}\n\t}\n\treturn aBuff/zBuff;\n}",
"longdesc": "A node that generates several images from a tileable voronoi noise",
"name": "Denoiser",
"outputs": [
{
"longdesc": "A color pattern that assigns a random color to each cell",
"rgba": "$(name)_smartDeNoise($uv, $sigma, $ksigma, $threshold)",
"shortdesc": "Random color",
"type": "rgba"
}
],
"parameters": [
{
"default": 10,
"first": 0,
"label": "size",
"last": 12,
"longdesc": "The scale along the X axis",
"name": "size",
"shortdesc": "Scale.x",
"type": "size"
},
{
"control": "None",
"default": 0.5,
"label": "Sigma",
"max": 1,
"min": 0.005,
"name": "sigma",
"step": 0.1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "kSigma",
"max": 1,
"min": 0,
"name": "ksigma",
"step": 0.1,
"type": "float"
},
{
"control": "None",
"default": 0.5,
"label": "threshold",
"max": 1,
"min": 0,
"name": "threshold",
"step": 0.1,
"type": "float"
}
],
"shortdesc": "Voronoi Noise"
},
"type": "shader"
},
{
"name": "buffer_5",
"node_position": {
"x": -931.449646,
"y": -724.330017
},
"parameters": {
"size": 10
},
"seed": 6771,
"type": "buffer",
"version": 1
},
{
"name": "buffer_7",
"node_position": {
"x": -948.36377,
"y": -449.796295
},
"parameters": {
"size": 10
},
"seed": 16139,
"type": "buffer",
"version": 1
},
{
"name": "buffer_2",
"node_position": {
"x": -976.009644,
"y": -975.5
},
"parameters": {
"size": 10
},
"seed": 42465,
"type": "buffer",
"version": 1
}
],
"parameters": {
"param0": 10,
"param1": 0.1,
"param2": 15,
"param3": 0.08,
"param4": 4,
"param5": 2
},
"seed": 6741,
"shortdesc": "",
"type": "graph"
},
{
"generic_size": 1,
"name": "blend2_3",
"node_position": {
"x": 1737.70166,
"y": -221.297119
},
"parameters": {
"amount1": 1,
"blend_type1": 2
},
"seed_int": 0,
"type": "blend2"
}
],
"parameters": {
},
"seed_int": 0,
"shortdesc": "",
"type": "graph"
}