creating lavalamp wobble shader

This commit is contained in:
betalars 2023-07-01 15:45:51 +02:00
parent 130230e2d3
commit 99c19807f2
7 changed files with 319 additions and 1 deletions

BIN
design/lavalamp.blend Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,55 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://igrbso3lobka"
path="res://.godot/imported/lava-lamp.glb-30e055f82546d82b1a4b6e6043031488.scn"
[deps]
source_file="res://base-environments/youth_room/import/lava-lamp.glb"
dest_files=["res://.godot/imported/lava-lamp.glb-30e055f82546d82b1a4b6e6043031488.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Scene Root"
nodes/apply_root_scale=true
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
import_script/path=""
_subresources={
"meshes": {
"lava-lamp_Mesh": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://base-environments/youth_room/shaders/raising-lava.res"
},
"lava-lamp_Mesh2": {
"generate/lightmap_uv": 0,
"generate/lods": 0,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 60.0,
"lods/normal_split_angle": 25.0,
"save_to_file/enabled": true,
"save_to_file/make_streamable": "",
"save_to_file/path": "res://base-environments/youth_room/shaders/falling-lava.res"
}
}
}
gltf/embedded_image_handling=1

View File

@ -0,0 +1,56 @@
[gd_resource type="VisualShader" load_steps=6 format=3 uid="uid://diua81fqg1ygg"]
[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_2yjsa"]
parameter_name = "ball_1_origin"
[sub_resource type="VisualShaderNodeVec2Parameter" id="VisualShaderNodeVec2Parameter_2y23m"]
parameter_name = "ball_2_origin"
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_j8wbi"]
input_name = "uv"
[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_u7n81"]
[sub_resource type="VisualShaderNodeCompare" id="VisualShaderNodeCompare_3v1ps"]
default_input_values = [0, 0.0, 1, 1.0, 2, 1e-05]
function = 2
[resource]
code = "shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx, unshaded;
void fragment() {
// FloatOp:7
float n_in7p0 = 0.00000;
float n_in7p1 = 0.00000;
float n_out7p0 = n_in7p0 + n_in7p1;
// Compare:8
float n_in8p1 = 1.00000;
bool n_out8p0 = n_out7p0 > n_in8p1;
// Output:0
ALBEDO = vec3(n_out8p0 ? 1.0 : 0.0);
}
"
graph_offset = Vector2(-907.416, -156.666)
flags/unshaded = true
nodes/fragment/0/position = Vector2(720, 100)
nodes/fragment/2/node = SubResource("VisualShaderNodeVec2Parameter_2yjsa")
nodes/fragment/2/position = Vector2(-660, 100)
nodes/fragment/3/node = SubResource("VisualShaderNodeVec2Parameter_2y23m")
nodes/fragment/3/position = Vector2(-460, 280)
nodes/fragment/4/node = SubResource("VisualShaderNodeInput_j8wbi")
nodes/fragment/4/position = Vector2(-700, -40)
nodes/fragment/7/node = SubResource("VisualShaderNodeFloatOp_u7n81")
nodes/fragment/7/position = Vector2(180, 100)
nodes/fragment/8/node = SubResource("VisualShaderNodeCompare_3v1ps")
nodes/fragment/8/position = Vector2(400, 100)
nodes/fragment/connections = PackedInt32Array(7, 0, 8, 0, 8, 0, 0, 0)

View File

@ -1,5 +1,212 @@
[gd_scene format=3 uid="uid://bigr0lnen1xdh"] [gd_scene load_steps=16 format=3 uid="uid://bigr0lnen1xdh"]
[ext_resource type="ArrayMesh" uid="uid://cbbreijekdjel" path="res://base-environments/youth_room/shaders/raising-lava.res" id="1_kkx3t"]
[ext_resource type="ArrayMesh" uid="uid://7bpgy7uud2ai" path="res://base-environments/youth_room/shaders/falling-lava.res" id="2_tokpx"]
[sub_resource type="QuadMesh" id="QuadMesh_sj0jk"]
[sub_resource type="Shader" id="Shader_kfdmq"]
code = "shader_type spatial;
render_mode blend_mix, depth_draw_opaque, diffuse_lambert, specular_schlick_ggx, unshaded;
uniform sampler2D gradient;
uniform float drop_size;
uniform float stretch_compensatioon;
uniform float fill;
uniform float speed;
void fragment() {
float fresnel = 1.0/(1.0-abs(NORMAL.x));
float dist = 1.0 / distance(vec2(NORMAL.x/stretch_compensatioon, UV.y), vec2(0.0, mod(-TIME*speed*UV.x, 1.0)));
dist += 1.0 / distance(vec2(NORMAL.x/stretch_compensatioon, UV.y), vec2(0.0, mod(-TIME*speed*UV.x+0.2, 1.0)));
dist += 1.0 / distance(vec2(NORMAL.x/stretch_compensatioon, UV.y), vec2(0.0, mod(-TIME*speed*UV.x+0.6, 1.0)));
//dist = 0.0;
dist += 1.3 / distance(vec2(NORMAL.x/stretch_compensatioon, UV.y), vec2(0.0, fill));
ALBEDO = texture(gradient, UV2).xyz;
ALPHA = float(int(dist > 1.0/drop_size))+0.2;
}
"
[sub_resource type="Gradient" id="Gradient_r18tr"]
colors = PackedColorArray(0.929412, 5.69804, 0.211765, 1, 0.0901961, 1, 0, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_42bqf"]
gradient = SubResource("Gradient_r18tr")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_31q3g"]
render_priority = 0
shader = SubResource("Shader_kfdmq")
shader_parameter/drop_size = 0.015
shader_parameter/stretch_compensatioon = 35.0
shader_parameter/fill = 0.663
shader_parameter/speed = 0.01
shader_parameter/gradient = SubResource("GradientTexture2D_42bqf")
[sub_resource type="Animation" id="Animation_ovxyq"]
resource_name = "lavalamp"
length = 60.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 60),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 6.28319, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../falling:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 60),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 6.28319, 0), Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_0ijgr"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../falling:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_88lyq"]
_data = {
"RESET": SubResource("Animation_0ijgr"),
"lavalamp": SubResource("Animation_ovxyq")
}
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_3yn7w"]
sky_top_color = Color(0, 0, 1, 1)
sky_horizon_color = Color(0.858824, 0.541176, 0.4, 1)
sky_curve = 0.54075
[sub_resource type="Sky" id="Sky_lumfb"]
sky_material = SubResource("ProceduralSkyMaterial_3yn7w")
[sub_resource type="Environment" id="Environment_f0flp"]
background_mode = 2
background_energy_multiplier = 0.2
sky = SubResource("Sky_lumfb")
sky_rotation = Vector3(0, 0.352557, 0)
ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1)
reflected_light_source = 1
tonemap_mode = 2
ssr_enabled = true
ssr_max_steps = 512
ssr_depth_tolerance = 0.01
ssao_enabled = true
ssao_radius = 1.24
ssao_intensity = 3.09
ssao_power = 1.91184
ssao_detail = 3.0
ssil_intensity = 0.72
ssil_normal_rejection = 0.56
sdfgi_enabled = true
sdfgi_use_occlusion = true
glow_enabled = true
glow_levels/2 = 0.3
glow_levels/7 = 2.0
glow_intensity = 0.4
glow_strength = 0.7
glow_bloom = 0.13
glow_blend_mode = 1
glow_hdr_threshold = 0.46
fog_enabled = true
fog_light_color = Color(0.141176, 0.133333, 0.301961, 1)
fog_sky_affect = 0.0
fog_height = 1.0
fog_height_density = 0.1
adjustment_enabled = true
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_2qx32"]
auto_exposure_enabled = true
auto_exposure_scale = 0.2
dof_blur_far_enabled = true
dof_blur_far_distance = 0.4
dof_blur_far_transition = 0.2
dof_blur_near_distance = 0.79
dof_blur_amount = 0.0
auto_exposure_min_sensitivity = 100.0
[sub_resource type="GDScript" id="GDScript_uqlwy"]
script/source = "extends WorldEnvironment
func _ready():
focus_env()
func focus_env():
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0, 1)
func focus_object():
var dof_strength_tween: Tween = create_tween()
dof_strength_tween.tween_property(camera_attributes, \"dof_blur_amount\", 0.6, 1)
"
[node name="Node3D" type="Node3D"] [node name="Node3D" type="Node3D"]
[node name="Node3D" type="Node3D" parent="."] [node name="Node3D" type="Node3D" parent="."]
[node name="MeshInstance3D" type="MeshInstance3D" parent="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.29184, 0, 0)
mesh = SubResource("QuadMesh_sj0jk")
surface_material_override/0 = SubResource("ShaderMaterial_31q3g")
[node name="falling" type="MeshInstance3D" parent="."]
visible = false
mesh = ExtResource("1_kkx3t")
skeleton = NodePath("../Node3D/MeshInstance3D")
surface_material_override/0 = SubResource("ShaderMaterial_31q3g")
[node name="raising" type="MeshInstance3D" parent="."]
mesh = ExtResource("2_tokpx")
skeleton = NodePath("../Node3D/MeshInstance3D")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../raising")
libraries = {
"": SubResource("AnimationLibrary_88lyq")
}
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_f0flp")
camera_attributes = SubResource("CameraAttributesPractical_2qx32")
script = SubResource("GDScript_uqlwy")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.987688, -0.156434, 0, 0.156434, 0.987688, 0, -0.058, 0.77)
fov = 18.0