[gd_resource type="ShaderMaterial" load_steps=29 format=2] [ext_resource path="res://Assets/fancyedge_01Normal.png" type="Texture" id=1] [ext_resource path="res://Assets/fancyedge_01Surface_Color.png" type="Texture" id=2] [ext_resource path="res://Assets/fancyedge_01Diffusion.png" type="Texture" id=3] [ext_resource path="res://Assets/noise.png" type="Texture" id=4] [sub_resource type="VisualShaderNodeTexture" id=1] output_port_for_preview = 0 texture = ExtResource( 4 ) [sub_resource type="VisualShaderNodeVectorOp" id=2] output_port_for_preview = 0 operator = 2 [sub_resource type="VisualShaderNodeVectorOp" id=3] output_port_for_preview = 0 default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 0.5, 0.5, 0.5 ) ] operator = 2 [sub_resource type="VisualShaderNodeScalarFunc" id=4] output_port_for_preview = 0 function = 31 [sub_resource type="VisualShaderNodeVectorCompose" id=5] [sub_resource type="VisualShaderNodeInput" id=6] input_name = "time" [sub_resource type="VisualShaderNodeInput" id=7] output_port_for_preview = 0 input_name = "uv" [sub_resource type="VisualShaderNodeScalarOp" id=8] default_input_values = [ 0, 0.0, 1, -0.005 ] operator = 2 [sub_resource type="VisualShaderNodeTexture" id=9] texture = ExtResource( 2 ) texture_type = 1 [sub_resource type="VisualShaderNodeVectorCompose" id=10] [sub_resource type="VisualShaderNodeVectorOp" id=11] output_port_for_preview = 0 [sub_resource type="VisualShaderNodeVectorOp" id=12] output_port_for_preview = 0 default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 7, 0, 0 ) ] operator = 2 [sub_resource type="VisualShaderNodeColorOp" id=13] output_port_for_preview = 0 default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 0.1, 0, 0 ) ] operator = 4 [sub_resource type="VisualShaderNodeVectorDecompose" id=14] [sub_resource type="VisualShaderNodeColorFunc" id=15] [sub_resource type="VisualShaderNodeColorOp" id=16] default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 2, 2, 2 ) ] operator = 8 [sub_resource type="VisualShaderNodeVectorOp" id=17] default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 0.25, 0.25, 0.25 ) ] operator = 2 [sub_resource type="VisualShaderNodeScalarConstant" id=18] [sub_resource type="VisualShaderNodeTexture" id=19] texture = ExtResource( 3 ) [sub_resource type="VisualShaderNodeTexture" id=20] texture = ExtResource( 1 ) texture_type = 2 [sub_resource type="VisualShaderNodeVectorOp" id=21] default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 0.1, 0.025, 0.1 ) ] operator = 2 [sub_resource type="VisualShaderNodeVectorDecompose" id=22] [sub_resource type="VisualShaderNodeVectorOp" id=23] default_input_values = [ 0, Vector3( 0, 0, 0 ), 1, Vector3( 1, 1, 1 ) ] operator = 2 [sub_resource type="VisualShader" id=24] code = "shader_type spatial; render_mode specular_schlick_ggx; uniform sampler2D tex_frg_2 : hint_albedo; uniform sampler2D tex_frg_3; uniform sampler2D tex_frg_10; uniform sampler2D tex_frg_4 : hint_normal; void vertex() { // Output:0 } void fragment() { // Texture:2 vec4 tex_frg_2_read = texture(tex_frg_2, UV.xy); vec3 n_out2p0 = tex_frg_2_read.rgb; float n_out2p1 = tex_frg_2_read.a; // VectorOp:5 vec3 n_in5p1 = vec3(0.10000, 0.02500, 0.10000); vec3 n_out5p0 = n_out2p0 * n_in5p1; // Scalar:29 float n_out29p0 = 0.000000; // ColorFunc:25 vec3 n_out25p0; { vec3 c = n_out2p0; float max1 = max(c.r, c.g); float max2 = max(max1, c.b); float max3 = max(max1, max2); n_out25p0 = vec3(max3, max3, max3); } // ColorOp:26 vec3 n_in26p1 = vec3(2.00000, 2.00000, 2.00000); vec3 n_out26p0; { float base = n_out25p0.x; float blend = n_in26p1.x; if (base < 0.5) { n_out26p0.x = (base * (2.0 * blend)); } else { n_out26p0.x = (1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5))); } } { float base = n_out25p0.y; float blend = n_in26p1.y; if (base < 0.5) { n_out26p0.y = (base * (2.0 * blend)); } else { n_out26p0.y = (1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5))); } } { float base = n_out25p0.z; float blend = n_in26p1.z; if (base < 0.5) { n_out26p0.z = (base * (2.0 * blend)); } else { n_out26p0.z = (1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5))); } } // VectorDecompose:24 float n_out24p0 = n_out26p0.x; float n_out24p1 = n_out26p0.y; float n_out24p2 = n_out26p0.z; // Texture:3 vec4 tex_frg_3_read = texture(tex_frg_3, UV.xy); vec3 n_out3p0 = tex_frg_3_read.rgb; float n_out3p1 = tex_frg_3_read.a; // VectorDecompose:6 float n_out6p0 = n_out3p0.x; float n_out6p1 = n_out3p0.y; float n_out6p2 = n_out3p0.z; // ScalarFunc:15 float n_out15p0 = 1.0 - n_out6p2; // VectorCompose:16 vec3 n_out16p0 = vec3(n_out15p0, n_out15p0, n_out15p0); // Input:18 vec3 n_out18p0 = vec3(UV, 0.0); // VectorOp:27 vec3 n_in27p1 = vec3(0.25000, 0.25000, 0.25000); vec3 n_out27p0 = n_out18p0 * n_in27p1; // Input:17 float n_out17p0 = TIME; // ScalarOp:19 float n_in19p1 = -0.00500; float n_out19p0 = n_out17p0 * n_in19p1; // VectorCompose:20 float n_in20p1 = 0.00000; float n_in20p2 = 0.00000; vec3 n_out20p0 = vec3(n_out19p0, n_in20p1, n_in20p2); // VectorOp:21 vec3 n_out21p0 = n_out27p0 + n_out20p0; // Texture:10 vec4 tex_frg_10_read = texture(tex_frg_10, n_out21p0.xy); vec3 n_out10p0 = tex_frg_10_read.rgb; float n_out10p1 = tex_frg_10_read.a; // VectorOp:11 vec3 n_out11p0 = n_out16p0 * n_out10p0; // VectorOp:22 vec3 n_in22p1 = vec3(7.00000, 0.00000, 0.00000); vec3 n_out22p0 = n_out11p0 * n_in22p1; // ColorOp:23 vec3 n_in23p1 = vec3(0.10000, 0.00000, 0.00000); vec3 n_out23p0; { float base = n_out22p0.x; float blend = n_in23p1.x; if (base < 0.5) { n_out23p0.x = 2.0 * base * blend; } else { n_out23p0.x = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); } } { float base = n_out22p0.y; float blend = n_in23p1.y; if (base < 0.5) { n_out23p0.y = 2.0 * base * blend; } else { n_out23p0.y = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); } } { float base = n_out22p0.z; float blend = n_in23p1.z; if (base < 0.5) { n_out23p0.z = 2.0 * base * blend; } else { n_out23p0.z = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); } } // VectorOp:13 vec3 n_in13p1 = vec3(0.50000, 0.50000, 0.50000); vec3 n_out13p0 = n_out23p0 * n_in13p1; // Texture:4 vec4 tex_frg_4_read = texture(tex_frg_4, UV.xy); vec3 n_out4p0 = tex_frg_4_read.rgb; float n_out4p1 = tex_frg_4_read.a; // VectorOp:7 vec3 n_in7p1 = vec3(1.00000, 1.00000, 1.00000); vec3 n_out7p0 = n_out4p0 * n_in7p1; // Output:0 ALBEDO = n_out5p0; METALLIC = n_out29p0; ROUGHNESS = n_out24p0; EMISSION = n_out13p0; AO = n_out6p0; NORMALMAP = n_out7p0; } void light() { // Output:0 } " graph_offset = Vector2( 657.707, 684.756 ) nodes/fragment/0/position = Vector2( 1920, 340 ) nodes/fragment/2/node = SubResource( 9 ) nodes/fragment/2/position = Vector2( -60, 120 ) nodes/fragment/3/node = SubResource( 19 ) nodes/fragment/3/position = Vector2( -60, 360 ) nodes/fragment/4/node = SubResource( 20 ) nodes/fragment/4/position = Vector2( -60, 940 ) nodes/fragment/5/node = SubResource( 21 ) nodes/fragment/5/position = Vector2( 260, 120 ) nodes/fragment/6/node = SubResource( 22 ) nodes/fragment/6/position = Vector2( 180, 380 ) nodes/fragment/7/node = SubResource( 23 ) nodes/fragment/7/position = Vector2( 285, 792 ) nodes/fragment/10/node = SubResource( 1 ) nodes/fragment/10/position = Vector2( -60, 600 ) nodes/fragment/11/node = SubResource( 2 ) nodes/fragment/11/position = Vector2( 820, 480 ) nodes/fragment/13/node = SubResource( 3 ) nodes/fragment/13/position = Vector2( 1400, 480 ) nodes/fragment/15/node = SubResource( 4 ) nodes/fragment/15/position = Vector2( 400, 460 ) nodes/fragment/16/node = SubResource( 5 ) nodes/fragment/16/position = Vector2( 600, 460 ) nodes/fragment/17/node = SubResource( 6 ) nodes/fragment/17/position = Vector2( -1040, 820 ) nodes/fragment/18/node = SubResource( 7 ) nodes/fragment/18/position = Vector2( -920, 600 ) nodes/fragment/19/node = SubResource( 8 ) nodes/fragment/19/position = Vector2( -840, 800 ) nodes/fragment/20/node = SubResource( 10 ) nodes/fragment/20/position = Vector2( -600, 820 ) nodes/fragment/21/node = SubResource( 11 ) nodes/fragment/21/position = Vector2( -340, 660 ) nodes/fragment/22/node = SubResource( 12 ) nodes/fragment/22/position = Vector2( 1020, 480 ) nodes/fragment/23/node = SubResource( 13 ) nodes/fragment/23/position = Vector2( 1220, 480 ) nodes/fragment/24/node = SubResource( 14 ) nodes/fragment/24/position = Vector2( 880, 320 ) nodes/fragment/25/node = SubResource( 15 ) nodes/fragment/25/position = Vector2( 400, 260 ) nodes/fragment/26/node = SubResource( 16 ) nodes/fragment/26/position = Vector2( 660, 300 ) nodes/fragment/27/node = SubResource( 17 ) nodes/fragment/27/position = Vector2( -660, 640 ) nodes/fragment/29/node = SubResource( 18 ) nodes/fragment/29/position = Vector2( 1280, 280 ) nodes/fragment/connections = PoolIntArray( 2, 0, 5, 0, 3, 0, 6, 0, 4, 0, 7, 0, 10, 0, 11, 1, 6, 2, 15, 0, 15, 0, 16, 2, 15, 0, 16, 0, 15, 0, 16, 1, 16, 0, 11, 0, 7, 0, 0, 8, 20, 0, 21, 1, 21, 0, 10, 0, 17, 0, 19, 0, 5, 0, 0, 0, 11, 0, 22, 0, 22, 0, 23, 0, 23, 0, 13, 0, 2, 0, 25, 0, 25, 0, 26, 0, 26, 0, 24, 0, 19, 0, 20, 0, 27, 0, 21, 0, 18, 0, 27, 0, 13, 0, 0, 5, 6, 0, 0, 6, 29, 0, 0, 2, 24, 0, 0, 3 ) [resource] shader = SubResource( 24 )