[gd_resource type="VisualShader" load_steps=11 format=3 uid="uid://cn6f4k74cxkkn"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/UV/UVRotate.gd" id="1_4i8x8"] [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_1asv8"] default_input_values = [0, Quaternion(0, 0, 0, 0)] op_type = 2 [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_s0gv3"] default_input_values = [1, Vector2(-4, 8), 2, Vector2(0, 0)] function = 1 [sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_1swn8"] default_input_values = [1, Vector2(0, 0), 2, 0.0, 3, Vector2(0, 0)] initialized = true script = ExtResource("1_4i8x8") [sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_8ck2a"] parameter_name = "MainTexture" [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_15o2w"] source = 5 [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_ku0fj"] input_name = "time" [sub_resource type="VisualShaderNodeUVFunc" id="VisualShaderNodeUVFunc_g8x7a"] [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_efnhw"] input_name = "uv" [sub_resource type="VisualShaderNodeVectorCompose" id="VisualShaderNodeVectorCompose_vnmsm"] op_type = 0 [resource] code = "shader_type spatial; render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; uniform sampler2D MainTexture; // UVRotate vec2 uv_rotate(vec2 uv, vec2 pivot, float angle) { mat2 rotation = mat2(vec2(sin(angle), -cos(angle)), vec2(cos(angle), sin(angle))); uv -= pivot; uv = uv * rotation; uv += pivot; return uv; } void fragment() { // Input:6 vec2 n_out6p0 = UV; // UVFunc:16 vec2 n_in16p1 = vec2(-4.00000, 8.00000); vec2 n_in16p2 = vec2(0.00000, 0.00000); vec2 n_out16p0 = (n_out6p0 - n_in16p2) * n_in16p1 + n_in16p2; // Input:4 float n_out4p0 = TIME; // VectorCompose:7 float n_in7p1 = 0.00000; vec2 n_out7p0 = vec2(n_out4p0, n_in7p1); // UVFunc:5 vec2 n_in5p1 = vec2(1.00000, 1.00000); vec2 n_out5p0 = n_out7p0 * n_in5p1 + n_out16p0; vec2 n_out17p0; // UVRotate:17 vec2 n_in17p1 = vec2(0.00000, 0.00000); float n_in17p2 = 0.00000; { n_out17p0.xy = uv_rotate(n_out5p0.xy, n_in17p1.xy, n_in17p2); } vec4 n_out3p0; // Texture2D:3 n_out3p0 = texture(MainTexture, n_out17p0); // VectorDecompose:14 float n_out14p0 = n_out3p0.x; float n_out14p1 = n_out3p0.y; float n_out14p2 = n_out3p0.z; float n_out14p3 = n_out3p0.w; // Output:0 ALBEDO = vec3(n_out3p0.xyz); ALPHA = n_out14p3; EMISSION = vec3(n_out3p0.xyz); } " nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_8ck2a") nodes/fragment/2/position = Vector2(-1080, 240) nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_15o2w") nodes/fragment/3/position = Vector2(-180, 140) nodes/fragment/4/node = SubResource("VisualShaderNodeInput_ku0fj") nodes/fragment/4/position = Vector2(-1480, 80) nodes/fragment/5/node = SubResource("VisualShaderNodeUVFunc_g8x7a") nodes/fragment/5/position = Vector2(-660, -80) nodes/fragment/6/node = SubResource("VisualShaderNodeInput_efnhw") nodes/fragment/6/position = Vector2(-1820, -120) nodes/fragment/7/node = SubResource("VisualShaderNodeVectorCompose_vnmsm") nodes/fragment/7/position = Vector2(-1000, 40) nodes/fragment/14/node = SubResource("VisualShaderNodeVectorDecompose_1asv8") nodes/fragment/14/position = Vector2(-140, 420) nodes/fragment/16/node = SubResource("VisualShaderNodeUVFunc_s0gv3") nodes/fragment/16/position = Vector2(-1040, -160) nodes/fragment/17/node = SubResource("VisualShaderNodeCustom_1swn8") nodes/fragment/17/position = Vector2(-380, -40) nodes/fragment/connections = PackedInt32Array(2, 0, 3, 2, 3, 0, 0, 0, 7, 0, 5, 2, 3, 0, 14, 0, 16, 0, 5, 0, 4, 0, 7, 0, 6, 0, 16, 0, 5, 0, 17, 0, 17, 0, 3, 0, 14, 3, 0, 1, 3, 0, 0, 5)