[gd_resource type="VisualShader" load_steps=20 format=3 uid="uid://c66rr4lq10okt"] [ext_resource type="Texture2D" uid="uid://0nwylr3o4b27" path="res://assets/textures/grass_rock/aerial_grass_rock_diff_1k.jpg" id="1_fvu23"] [sub_resource type="VisualShaderNodeVec2Constant" id="VisualShaderNodeVec2Constant_0gqw2"] constant = Vector2(0.5, 0.5) [sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_e4ora"] size = Vector2(468, 400) expression = "uv_in -= pivot; float rotation_radians = radians(rotation_degrees); float c = cos(rotation_degrees); float s = sin(rotation_degrees); uv_out.x = uv_in.x * c + uv_in.y * s; uv_out.y = uv_in.y * c - uv_in.x * s; uv_out += pivot;" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_o4sga"] texture = ExtResource("1_fvu23") texture_type = 1 [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_wtcp4"] function = 1 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_vyfqc"] input_name = "uv" [sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_ygstf"] constant = 50.0 [sub_resource type="FastNoiseLite" id="FastNoiseLite_5ogwx"] noise_type = 2 frequency = 0.1 fractal_type = 0 cellular_return_type = 0 [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_du4hg"] noise = SubResource("FastNoiseLite_5ogwx") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_3u3s1"] texture = SubResource("NoiseTexture2D_du4hg") [sub_resource type="VisualShaderNodeRemap" id="VisualShaderNodeRemap_qfmdb"] default_input_values = [1, 0.0, 2, 1.0, 3, 0.0, 4, 360.0] [sub_resource type="Gradient" id="Gradient_f1ne1"] offsets = PackedFloat32Array(0, 0.157692, 0.273077) colors = PackedColorArray(1, 1, 1, 1, 0.444444, 0.444444, 0.444444, 1, 0, 0, 0, 1) [sub_resource type="FastNoiseLite" id="FastNoiseLite_3uqdu"] noise_type = 2 frequency = 0.1 fractal_type = 0 cellular_return_type = 4 [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_3esh7"] color_ramp = SubResource("Gradient_f1ne1") noise = SubResource("FastNoiseLite_3uqdu") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_w50n5"] texture = SubResource("NoiseTexture2D_3esh7") [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_yqwyb"] texture = ExtResource("1_fvu23") texture_type = 1 [sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_7xmur"] default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, Vector3(0.5, 0.5, 0.5)] op_type = 3 [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_lhnbm"] function = 1 [sub_resource type="VisualShaderNodeRemap" id="VisualShaderNodeRemap_q66io"] default_input_values = [1, 0.0, 2, 1.0, 3, 0.8, 4, 1.2] [resource] code = "shader_type spatial; render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; uniform sampler2D tex_frg_26; uniform sampler2D tex_frg_21 : source_color; uniform sampler2D tex_frg_29 : source_color; uniform sampler2D tex_frg_28; void fragment() { // Input:24 vec2 n_out24p0 = UV; // FloatConstant:25 float n_out25p0 = 50.000000; // UVFunc:23 vec2 n_in23p2 = vec2(0.00000, 0.00000); vec2 n_out23p0 = (n_out24p0 - n_in23p2) * vec2(n_out25p0) + n_in23p2; // Texture2D:26 vec4 n_out26p0 = texture(tex_frg_26, UV); float n_out32p0; // Remap:32 float n_in32p1 = 0.00000; float n_in32p2 = 1.00000; float n_in32p3 = 0.80000; float n_in32p4 = 1.20000; { float __input_range = n_in32p2 - n_in32p1; float __output_range = n_in32p4 - n_in32p3; n_out32p0 = n_in32p3 + __output_range * ((n_out26p0.x - n_in32p1) / __input_range); } // UVFunc:31 vec2 n_in31p2 = vec2(0.00000, 0.00000); vec2 n_out31p0 = (n_out23p0 - n_in31p2) * vec2(n_out32p0) + n_in31p2; // Vector2Constant:19 vec2 n_out19p0 = vec2(0.500000, 0.500000); float n_out27p0; // Remap:27 float n_in27p1 = 0.00000; float n_in27p2 = 1.00000; float n_in27p3 = 0.00000; float n_in27p4 = 360.00000; { float __input_range = n_in27p2 - n_in27p1; float __output_range = n_in27p4 - n_in27p3; n_out27p0 = n_in27p3 + __output_range * ((n_out26p0.x - n_in27p1) / __input_range); } vec2 n_out20p0; // Expression:20 n_out20p0 = vec2(0.0, 0.0); { n_out31p0 -= n_out19p0; float rotation_radians = radians(n_out27p0); float c = cos(n_out27p0); float s = sin(n_out27p0); n_out20p0.x = n_out31p0.x * c + n_out31p0.y * s; n_out20p0.y = n_out31p0.y * c - n_out31p0.x * s; n_out20p0 += n_out19p0; } // Texture2D:21 vec4 n_out21p0 = texture(tex_frg_21, n_out20p0); // Texture2D:29 vec4 n_out29p0 = texture(tex_frg_29, n_out23p0); // Texture2D:28 vec4 n_out28p0 = texture(tex_frg_28, UV); // Mix:30 vec3 n_out30p0 = mix(vec3(n_out21p0.xyz), vec3(n_out29p0.xyz), vec3(n_out28p0.xyz)); // Output:0 ALBEDO = n_out30p0; } " nodes/fragment/0/position = Vector2(1000, 220) nodes/fragment/19/node = SubResource("VisualShaderNodeVec2Constant_0gqw2") nodes/fragment/19/position = Vector2(-2120, 580) nodes/fragment/20/node = SubResource("VisualShaderNodeExpression_e4ora") nodes/fragment/20/position = Vector2(-1040, 420) nodes/fragment/20/size = Vector2(468, 400) nodes/fragment/20/input_ports = "0,3,uv_in;1,3,pivot;2,0,rotation_degrees;" nodes/fragment/20/output_ports = "0,3,uv_out;" nodes/fragment/20/expression = "uv_in -= pivot; float rotation_radians = radians(rotation_degrees); float c = cos(rotation_degrees); float s = sin(rotation_degrees); uv_out.x = uv_in.x * c + uv_in.y * s; uv_out.y = uv_in.y * c - uv_in.x * s; uv_out += pivot;" nodes/fragment/21/node = SubResource("VisualShaderNodeTexture_o4sga") nodes/fragment/21/position = Vector2(-60, 340) nodes/fragment/23/node = SubResource("VisualShaderNodeUVFunc_wtcp4") nodes/fragment/23/position = Vector2(-1680, 200) nodes/fragment/24/node = SubResource("VisualShaderNodeInput_vyfqc") nodes/fragment/24/position = Vector2(-2200, 360) nodes/fragment/25/node = SubResource("VisualShaderNodeFloatConstant_ygstf") nodes/fragment/25/position = Vector2(-2100, 460) nodes/fragment/26/node = SubResource("VisualShaderNodeTexture_3u3s1") nodes/fragment/26/position = Vector2(-2040, 720) nodes/fragment/27/node = SubResource("VisualShaderNodeRemap_qfmdb") nodes/fragment/27/position = Vector2(-1600, 940) nodes/fragment/28/node = SubResource("VisualShaderNodeTexture_w50n5") nodes/fragment/28/position = Vector2(-120, 960) nodes/fragment/29/node = SubResource("VisualShaderNodeTexture_yqwyb") nodes/fragment/29/position = Vector2(-60, 640) nodes/fragment/30/node = SubResource("VisualShaderNodeMix_7xmur") nodes/fragment/30/position = Vector2(280, 540) nodes/fragment/31/node = SubResource("VisualShaderNodeUVFunc_lhnbm") nodes/fragment/31/position = Vector2(-1360, 200) nodes/fragment/32/node = SubResource("VisualShaderNodeRemap_q66io") nodes/fragment/32/position = Vector2(-1680, 680) nodes/fragment/connections = PackedInt32Array(19, 0, 20, 1, 24, 0, 23, 0, 25, 0, 23, 1, 26, 0, 27, 0, 27, 0, 20, 2, 20, 0, 21, 0, 21, 0, 30, 0, 29, 0, 30, 1, 28, 0, 30, 2, 30, 0, 0, 0, 31, 0, 20, 0, 23, 0, 31, 0, 26, 0, 32, 0, 32, 0, 31, 1, 23, 0, 29, 0)