Adding all things done so far again

This commit is contained in:
Rodolphe Houdas 2023-01-10 09:38:57 +00:00
parent bc09e1f8db
commit 26c3e70aa5
26 changed files with 786 additions and 3 deletions

131
BlurNoise.tres Normal file
View File

@ -0,0 +1,131 @@
[gd_resource type="VisualShader" load_steps=12 format=3 uid="uid://ulljr4hxdmvr"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_w3o50"]
seed = 666
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_5i62n"]
noise = SubResource("FastNoiseLite_w3o50")
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_p0ff0"]
output_port_for_preview = 0
texture = SubResource("NoiseTexture2D_5i62n")
[sub_resource type="VisualShaderNodeVec3Constant" id="VisualShaderNodeVec3Constant_3q5bf"]
constant = Vector3(1, 1, 1)
[sub_resource type="VisualShaderNodeVec3Constant" id="VisualShaderNodeVec3Constant_t0a48"]
[sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_ii6y5"]
parameter_name = "Texture2DParameter"
[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_by0vp"]
size = Vector2(916.9, 484.033)
expression = "vec3 pixel0 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, -step)).xyz);
vec3 pixel1 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, 0)).xyz);
vec3 pixel2 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, step)).xyz);
vec3 pixel3 = step(step_comparator, texture(sampler, uv.xy + vec2(0, -step)).xyz);
vec3 pixel4 = step(step_comparator, texture(sampler, uv.xy + vec2(0, 0)).xyz);
vec3 pixel5 = step(step_comparator, texture(sampler, uv.xy + vec2(0, +step)).xyz);
vec3 pixel6 = step(step_comparator, texture(sampler, uv.xy + vec2(step, -step)).xyz);
vec3 pixel7 = step(step_comparator, texture(sampler, uv.xy + vec2(step, 0)).xyz);
vec3 pixel8 = step(step_comparator, texture(sampler, uv.xy + vec2(step, step)).xyz);
albedo = (pixel0 + pixel1 + pixel2 + pixel3 + pixel4 + pixel5 + pixel6 + pixel7 + pixel8) / vec3(9, 9, 9);
"
[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_j8b80"]
input_name = "uv"
[sub_resource type="VisualShaderNodeFloatConstant" id="VisualShaderNodeFloatConstant_rnhgr"]
constant = 0.007
[sub_resource type="VisualShaderNodeVec3Constant" id="VisualShaderNodeVec3Constant_v76ww"]
constant = Vector3(0.8, 0.8, 0.8)
[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_ddc37"]
output_port_for_preview = 0
size = Vector2(844.92, 505.52)
expression = "// Scale, and clamp x to 0..1 range
vec3 x = clamp((input0 - minimum) / (maximum - minimum), 0.0, 1.0);
// Evaluate polynomial
output0 = x * x * x * (x * (x * vec3(6) - vec3(15)) + vec3(10));"
[resource]
code = "shader_type spatial;
uniform sampler2D tex_frg_10;
void fragment() {
// Texture2D:10
vec4 n_out10p0 = texture(tex_frg_10, UV);
// Vector3Constant:11
vec3 n_out11p0 = vec3(1.000000, 1.000000, 1.000000);
// Vector3Constant:12
vec3 n_out12p0 = vec3(0.000000, 0.000000, 0.000000);
vec3 n_out9p0;
// Expression:9
n_out9p0 = vec3(0.0, 0.0, 0.0);
{
// Scale, and clamp x to 0..1 range
vec3 x = clamp((vec3(n_out10p0.xyz) - n_out12p0) / (n_out11p0 - n_out12p0), 0.0, 1.0);
// Evaluate polynomial
n_out9p0 = x * x * x * (x * (x * vec3(6) - vec3(15)) + vec3(10));
}
// Output:0
ALBEDO = n_out9p0;
}
"
graph_offset = Vector2(-957.583, 126.888)
nodes/fragment/0/position = Vector2(880, 120)
nodes/fragment/2/node = SubResource("VisualShaderNodeTexture2DParameter_ii6y5")
nodes/fragment/2/position = Vector2(-540, 120)
nodes/fragment/3/node = SubResource("VisualShaderNodeExpression_by0vp")
nodes/fragment/3/position = Vector2(-140, 120)
nodes/fragment/3/size = Vector2(916.9, 484.033)
nodes/fragment/3/input_ports = "0,7,sampler;1,3,uv;2,0,step;3,3,step_comparator;"
nodes/fragment/3/output_ports = "0,3,albedo;"
nodes/fragment/3/expression = "vec3 pixel0 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, -step)).xyz);
vec3 pixel1 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, 0)).xyz);
vec3 pixel2 = step(step_comparator, texture(sampler, uv.xy + vec2(-step, step)).xyz);
vec3 pixel3 = step(step_comparator, texture(sampler, uv.xy + vec2(0, -step)).xyz);
vec3 pixel4 = step(step_comparator, texture(sampler, uv.xy + vec2(0, 0)).xyz);
vec3 pixel5 = step(step_comparator, texture(sampler, uv.xy + vec2(0, +step)).xyz);
vec3 pixel6 = step(step_comparator, texture(sampler, uv.xy + vec2(step, -step)).xyz);
vec3 pixel7 = step(step_comparator, texture(sampler, uv.xy + vec2(step, 0)).xyz);
vec3 pixel8 = step(step_comparator, texture(sampler, uv.xy + vec2(step, step)).xyz);
albedo = (pixel0 + pixel1 + pixel2 + pixel3 + pixel4 + pixel5 + pixel6 + pixel7 + pixel8) / vec3(9, 9, 9);
"
nodes/fragment/6/node = SubResource("VisualShaderNodeInput_j8b80")
nodes/fragment/6/position = Vector2(-540, 400)
nodes/fragment/7/node = SubResource("VisualShaderNodeFloatConstant_rnhgr")
nodes/fragment/7/position = Vector2(-400, 500)
nodes/fragment/8/node = SubResource("VisualShaderNodeVec3Constant_v76ww")
nodes/fragment/8/position = Vector2(-560, 580)
nodes/fragment/9/node = SubResource("VisualShaderNodeExpression_ddc37")
nodes/fragment/9/position = Vector2(-100, 720)
nodes/fragment/9/size = Vector2(844.92, 505.52)
nodes/fragment/9/input_ports = "0,3,input0;1,3,maximum;2,3,minimum;"
nodes/fragment/9/output_ports = "0,3,output0;"
nodes/fragment/9/expression = "// Scale, and clamp x to 0..1 range
vec3 x = clamp((input0 - minimum) / (maximum - minimum), 0.0, 1.0);
// Evaluate polynomial
output0 = x * x * x * (x * (x * vec3(6) - vec3(15)) + vec3(10));"
nodes/fragment/10/node = SubResource("VisualShaderNodeTexture_p0ff0")
nodes/fragment/10/position = Vector2(-760, 720)
nodes/fragment/11/node = SubResource("VisualShaderNodeVec3Constant_3q5bf")
nodes/fragment/11/position = Vector2(-520, 1000)
nodes/fragment/12/node = SubResource("VisualShaderNodeVec3Constant_t0a48")
nodes/fragment/12/position = Vector2(-520, 1100)
nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 6, 0, 3, 1, 7, 0, 3, 2, 8, 0, 3, 3, 10, 0, 9, 0, 9, 0, 0, 0, 11, 0, 9, 1, 12, 0, 9, 2)

15
BlurNoise.tscn Normal file
View File

@ -0,0 +1,15 @@
[gd_scene load_steps=4 format=3 uid="uid://dh012o0lwgja0"]
[ext_resource type="Shader" uid="uid://ulljr4hxdmvr" path="res://BlurNoise.tres" id="1_u072e"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_kldin"]
render_priority = 0
shader = ExtResource("1_u072e")
[sub_resource type="PlaneMesh" id="PlaneMesh_8idyw"]
material = SubResource("ShaderMaterial_kldin")
[node name="BlurNoise" type="Node3D"]
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
mesh = SubResource("PlaneMesh_8idyw")

113
FreeLookCamera.gd Normal file
View File

@ -0,0 +1,113 @@
extends Camera3D
# Modifier keys' speed multiplier
const SHIFT_MULTIPLIER = 2.5
const ALT_MULTIPLIER = 1.0 / SHIFT_MULTIPLIER
@export var sensitivity : float = 0.25
# Mouse state
var _mouse_position = Vector2(0.0, 0.0)
var _total_pitch = 0.0
# Movement state
var _direction = Vector3(0.0, 0.0, 0.0)
var _velocity = Vector3(0.0, 0.0, 0.0)
var _acceleration = 30
var _deceleration = -10
var _vel_multiplier = 4
# Keyboard state
var _w = false
var _s = false
var _a = false
var _d = false
var _q = false
var _e = false
var _shift = false
var _alt = false
func _input(event):
# Receives mouse motion
if event is InputEventMouseMotion:
_mouse_position = event.relative
# Receives mouse button input
if event is InputEventMouseButton:
match event.button_index:
MOUSE_BUTTON_RIGHT: # Only allows rotation if right click down
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED if event.pressed else Input.MOUSE_MODE_VISIBLE)
MOUSE_BUTTON_WHEEL_UP: # Increases max velocity
_vel_multiplier = clamp(_vel_multiplier * 1.1, 0.2, 20)
MOUSE_BUTTON_WHEEL_DOWN: # Decereases max velocity
_vel_multiplier = clamp(_vel_multiplier / 1.1, 0.2, 20)
# Receives key input
if event is InputEventKey:
match event.keycode:
KEY_W:
_w = event.pressed
KEY_S:
_s = event.pressed
KEY_A:
_a = event.pressed
KEY_D:
_d = event.pressed
KEY_Q:
_q = event.pressed
KEY_E:
_e = event.pressed
KEY_SHIFT:
_shift = event.pressed
KEY_ALT:
_alt = event.pressed
# Updates mouselook and movement every frame
func _physics_process(delta):
_update_mouselook()
_update_movement(delta)
# Updates camera movement
func _update_movement(delta):
# Computes desired direction from key states
_direction = Vector3(float(_d) - float(_a),
float(_e) - float(_q),
float(_s) - float(_w))
# Computes the change in velocity due to desired direction and "drag"
# The "drag" is a constant acceleration on the camera to bring it's velocity to 0
var offset = _direction.normalized() * _acceleration * _vel_multiplier * delta \
+ _velocity.normalized() * _deceleration * _vel_multiplier * delta
# Compute modifiers' speed multiplier
var speed_multi = 1
if _shift: speed_multi *= SHIFT_MULTIPLIER
if _alt: speed_multi *= ALT_MULTIPLIER
# Checks if we should bother translating the camera
if _direction == Vector3.ZERO and offset.length_squared() > _velocity.length_squared():
# Sets the velocity to 0 to prevent jittering due to imperfect deceleration
_velocity = Vector3.ZERO
else:
# Clamps speed to stay within maximum value (_vel_multiplier)
_velocity.x = clamp(_velocity.x + offset.x, -_vel_multiplier, _vel_multiplier)
_velocity.y = clamp(_velocity.y + offset.y, -_vel_multiplier, _vel_multiplier)
_velocity.z = clamp(_velocity.z + offset.z, -_vel_multiplier, _vel_multiplier)
translate(_velocity * delta * speed_multi)
# Updates mouse look
func _update_mouselook():
# Only rotates mouse if the mouse is captured
if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
_mouse_position *= sensitivity
var yaw = _mouse_position.x
var pitch = _mouse_position.y
_mouse_position = Vector2(0, 0)
# Prevents looking up/down too far
pitch = clamp(pitch, -90 - _total_pitch, 90 - _total_pitch)
_total_pitch += pitch
rotate_y(deg_to_rad(-yaw))
rotate_object_local(Vector3(1,0,0), deg_to_rad(-pitch))

12
Points.gd Normal file
View File

@ -0,0 +1,12 @@
@tool
extends Node3D
@export var sphere : NodePath
@export var cube : NodePath
@export var material : ShaderMaterial
func _process(delta):
material.set_shader_parameter("sphere_pos", -(get_node(sphere) as Node3D).position)
material.set_shader_parameter("cube_pos", -(get_node(cube) as Node3D).position)
material.set_shader_parameter("plane_dir", (get_node(cube) as Node3D).rotation)

139
RayMarching.gdshader Normal file
View File

@ -0,0 +1,139 @@
shader_type spatial;
uniform bool disable_threshold = false;
uniform float threshold = 0.001f;
uniform int max_iterations = 300;
uniform vec4 colour : source_color;
uniform float epsilon = 0.1f;
uniform vec3 sphere_pos = vec3(0.2f, -0.2f, -0.1f);
uniform vec3 cube_pos = vec3(0.3f, 0, 0);
uniform vec3 plane_dir = vec3(0, 1.0f, 0);
// polynomial smooth min
float sminCubic( float a, float b, float k )
{
float h = max( k-abs(a-b), 0.0 )/k;
return min( a, b ) - h*h*h*k*(1.0/6.0);
}
float intersectSDF(float distA, float distB) {
return max(distA, distB);
}
float unionSDF(float distA, float distB) {
return min(distA, distB);
}
float differenceSDF(float distA, float distB) {
return max(distA, -distB);
}
void vertex() {
//POSITION = vec4(VERTEX, 1.0);
}
float sdEllipsoid( vec3 p, vec3 r ) {
float k0 = length(p/r);
float k1 = length(p/(r*r));
return (k0<1.0) ? (k0-1.0)*min(min(r.x,r.y),r.z) : k0*(k0-1.0)/k1;
}
float sdPlane(vec3 p, vec3 n, float h) {
return dot(n, p) + h;
}
float sdBox( vec3 b, vec3 p ) {
vec3 q = abs(p) - b;
return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
}
float dstFromSphere(vec3 target, vec3 pos, float r) {
return distance(target, pos) - r;
}
float sdVerticalCapsule( vec3 p, float h, float r ) {
p.y -= clamp( p.y, 0.0, h );
return length( p ) - r;
}
float get_distance(vec3 p) {
//return sdEllipsoid(p + sphere_pos, vec3(0.01f, 0.01f, 0.015f));
//return sdVerticalCapsule(p + sphere_pos, 0.015f, 0.01f);
return sminCubic(
sdVerticalCapsule(p + sphere_pos, 0.015f, 0.01f),
sdVerticalCapsule(p + cube_pos, 0.015f, 0.01f),
epsilon
);
/*return sminCubic(
sdBox(vec3(0.2f), p + cube_pos),
//sdPlane(p + cube_pos, plane_dir, 0),
//dstFromSphere(p + sphere_pos, vec3(0), 0.199f),
sdEllipsoid(p + sphere_pos, vec3(0.01f, 0.01f, 0.015f)),
epsilon
);*/
/*return sminCubic(
sdEllipsoid(p + cube_pos, vec3(0.01f, 0.01f, 0.015f)),
sdEllipsoid(p + sphere_pos, vec3(0.01f, 0.01f, 0.015f)),
0.1
);*/
}
vec3 get_normal(vec3 p) {
vec2 e = vec2(1e-5, 0);
vec3 n = get_distance(p) - vec3(
get_distance(p - e.xyy),
get_distance(p - e.yxy),
get_distance(p - e.yyx)
);
return normalize(n);
}
vec4 rayMarch(vec3 orig, vec3 dir) {
vec3 sphere_orig = vec3(0, 0, 0);
float dst = get_distance(orig);
int inc = 0;
for (int i = 0; i < max_iterations; i++) {
if (dst <= threshold && !disable_threshold) {
break;
}
orig += dst * dir;
dst = get_distance(orig);
}
if (dst <= threshold) {
// We touched a shape
return vec4(orig, 1.0f);
}
else {
// Render some white transparent background so we can still see the quad
return vec4(vec3(1), 0);
}
}
void fragment() {
vec2 uv = SCREEN_UV * 2.0 - 1.0;
vec4 camera = INV_VIEW_MATRIX * INV_PROJECTION_MATRIX * vec4(uv, 1, 1);
vec3 orig = INV_VIEW_MATRIX[3].xyz;
vec3 dir = normalize(camera.xyz);
vec4 point = rayMarch(orig, dir);
// Render white transparent background by default
vec4 col = vec4(1, 1, 1, 0.1f);
// The w member of the vec4 is used to convey that we hit something.
// Let put a colour on that and compute the normal
if (point.w > 0.0f) {
col = colour;
col.a = point.w;
NORMAL = (vec4(get_normal(point.xyz), 1) * INV_VIEW_MATRIX).xyz;
}
ALPHA = col.a;
ALBEDO = col.rgb;
}

15
RayMarching.tres Normal file
View File

@ -0,0 +1,15 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://bjaju04p8dibc"]
[ext_resource type="Shader" path="res://RayMarching.gdshader" id="1_lgue0"]
[resource]
render_priority = 0
shader = ExtResource("1_lgue0")
shader_parameter/disable_threshold = true
shader_parameter/threshold = 0.001
shader_parameter/max_iterations = 300
shader_parameter/colour = Color(0.988235, 0.529412, 0.988235, 1)
shader_parameter/epsilon = 0.05
shader_parameter/sphere_pos = Vector3(0, -0.0428429, -0.00133324)
shader_parameter/cube_pos = Vector3(0, 0, 0)
shader_parameter/plane_dir = Vector3(0, 0, 0)

51
RayMarching.tscn Normal file
View File

@ -0,0 +1,51 @@
[gd_scene load_steps=8 format=3 uid="uid://3ulakdj5yski"]
[ext_resource type="Material" uid="uid://bjaju04p8dibc" path="res://RayMarching.tres" id="2_mld7j"]
[ext_resource type="Script" path="res://FreeLookCamera.gd" id="2_vgmbw"]
[ext_resource type="Script" path="res://Points.gd" id="3_uwkra"]
[sub_resource type="QuadMesh" id="QuadMesh_k5f3w"]
material = ExtResource("2_mld7j")
size = Vector2(2, 2)
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_uqjfj"]
[sub_resource type="Sky" id="Sky_ovm7d"]
sky_material = SubResource("ProceduralSkyMaterial_uqjfj")
[sub_resource type="Environment" id="Environment_ujk77"]
background_mode = 2
sky = SubResource("Sky_ovm7d")
[node name="RayMarching" type="Node3D"]
[node name="CSGSphere3D" type="CSGSphere3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.26359, 0, 0)
radial_segments = 64
rings = 64
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.34284)
script = ExtResource("2_vgmbw")
[node name="MeshInstance3D" type="MeshInstance3D" parent="Camera3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.34284)
mesh = SubResource("QuadMesh_k5f3w")
skeleton = NodePath("../..")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.563065, 0.604085, -0.56395, 1.89847e-08, 0.682407, 0.730973, 0.826413, -0.411585, 0.384239, 0, 2.90305, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_ujk77")
[node name="Points" type="Node3D" parent="."]
script = ExtResource("3_uwkra")
sphere = NodePath("Sphere")
cube = NodePath("Cube")
material = ExtResource("2_mld7j")
[node name="Sphere" type="Node3D" parent="Points"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0428429, 0.00133324)
[node name="Cube" type="Node3D" parent="Points"]

69
SoapBubble.tscn Normal file
View File

@ -0,0 +1,69 @@
[gd_scene load_steps=11 format=3 uid="uid://dfuaaaimxo810"]
[ext_resource type="PackedScene" uid="uid://sft6mp442uxe" path="res://models/icosphere.glb" id="1_dqpwr"]
[ext_resource type="Material" uid="uid://ccjdj6yfj5gfg" path="res://materials/soap.tres" id="2_em4sg"]
[ext_resource type="Texture2D" uid="uid://s3urfbs8wl8d" path="res://textures/AllSkyFree_Sky_EpicBlueSunset_Equirect.png" id="3_jmgiy"]
[ext_resource type="Script" path="res://FreeLookCamera.gd" id="4_at5xm"]
[ext_resource type="PackedScene" uid="uid://b0ht1ye2dpq51" path="res://models/weird_bubble.blend" id="5_u12t1"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_su7nb"]
panorama = ExtResource("3_jmgiy")
[sub_resource type="Sky" id="Sky_gjovo"]
sky_material = SubResource("PanoramaSkyMaterial_su7nb")
radiance_size = 6
[sub_resource type="Environment" id="Environment_mjq32"]
background_mode = 2
sky = SubResource("Sky_gjovo")
ambient_light_source = 3
reflected_light_source = 2
tonemap_mode = 3
tonemap_exposure = 0.5
sdfgi_enabled = true
sdfgi_use_occlusion = true
glow_enabled = true
[sub_resource type="SphereShape3D" id="SphereShape3D_f3t7v"]
radius = 0.2
[sub_resource type="SphereMesh" id="SphereMesh_wf6pm"]
[node name="SoapBubble" type="Node3D"]
[node name="icosphere2" parent="." instance=ExtResource("1_dqpwr")]
[node name="Icosphere" parent="icosphere2" index="0"]
material_override = ExtResource("2_em4sg")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 10, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_mjq32")
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(-0.777113, 0, -0.629361, 0, 1, 0, 0.629361, 0, -0.777113, 0, -0.556943, 1.45498)
script = ExtResource("4_at5xm")
[node name="RigidBody3D" type="RigidBody3D" parent="Camera3D"]
freeze = true
freeze_mode = 1
[node name="CollisionShape3D" type="CollisionShape3D" parent="Camera3D/RigidBody3D"]
shape = SubResource("SphereShape3D_f3t7v")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.89841)
visible = false
material_override = ExtResource("2_em4sg")
mesh = SubResource("SphereMesh_wf6pm")
[node name="weird_bubble" parent="." instance=ExtResource("5_u12t1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -6.19148)
[node name="Mball004" parent="weird_bubble" index="0"]
material_override = ExtResource("2_em4sg")
[editable path="icosphere2"]
[editable path="weird_bubble"]

View File

@ -1,4 +1,4 @@
[gd_resource type="VisualShader" load_steps=19 format=3 uid="uid://dotlcmfer5kxw"]
[gd_resource type="VisualShader" load_steps=20 format=3 uid="uid://dotlcmfer5kxw"]
[ext_resource type="Texture2D" uid="uid://dxcmick7pytlf" path="res://noise.tres" id="1_xedsf"]
@ -51,6 +51,8 @@ op_type = 3
[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_gb7li"]
operator = 2
[sub_resource type="VisualShaderNodeExpression" id="VisualShaderNodeExpression_1868y"]
[sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_b0p1s"]
output_port_for_preview = 0
expanded_output_ports = [0]
@ -92,7 +94,6 @@ void vertex() {
// Texture2D:5
vec4 n_out5p0 = texture(tex_vtx_5, UV);
float n_out5p1 = n_out5p0.r;
// VectorOp:11
@ -134,7 +135,7 @@ void vertex() {
}
"
graph_offset = Vector2(-1143.06, -151.487)
graph_offset = Vector2(-401.502, 311.459)
nodes/vertex/0/position = Vector2(1580, 120)
nodes/vertex/3/node = SubResource("VisualShaderNodeInput_7j14n")
nodes/vertex/3/position = Vector2(-1340, 260)
@ -166,4 +167,10 @@ nodes/vertex/30/node = SubResource("VisualShaderNodeMix_vyit1")
nodes/vertex/30/position = Vector2(-500, -260)
nodes/vertex/31/node = SubResource("VisualShaderNodeVectorOp_gb7li")
nodes/vertex/31/position = Vector2(780, -80)
nodes/vertex/39/node = SubResource("VisualShaderNodeExpression_1868y")
nodes/vertex/39/position = Vector2(3260, 2960)
nodes/vertex/39/size = Vector2(0, 0)
nodes/vertex/39/input_ports = ""
nodes/vertex/39/output_ports = ""
nodes/vertex/39/expression = ""
nodes/vertex/connections = PackedInt32Array(3, 0, 14, 0, 3, 0, 15, 1, 11, 0, 16, 0, 16, 0, 12, 1, 15, 0, 21, 0, 5, 0, 11, 1, 21, 0, 11, 0, 23, 0, 22, 2, 22, 0, 15, 0, 22, 0, 12, 0, 14, 0, 22, 1, 3, 0, 22, 0, 27, 0, 16, 1, 29, 0, 30, 0, 23, 0, 30, 2, 12, 0, 0, 0, 21, 0, 30, 1, 30, 0, 31, 0, 31, 0, 0, 1, 19, 0, 31, 1)

3
materials/basic.tres Normal file
View File

@ -0,0 +1,3 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://csj153xgrrjd1"]
[resource]

4
materials/plane.tres Normal file
View File

@ -0,0 +1,4 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://cxfvkn1l35sna"]
[resource]
cull_mode = 2

16
materials/soap.tres Normal file
View File

@ -0,0 +1,16 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://ccjdj6yfj5gfg"]
[ext_resource type="Shader" path="res://shaders/soap.gdshader" id="1_4akdf"]
[ext_resource type="Texture2D" uid="uid://2i2g7306xmrh" path="res://textures/Soap.png" id="2_aijul"]
[ext_resource type="Texture2D" uid="uid://dxcmick7pytlf" path="res://noise.tres" id="3_ru46l"]
[resource]
render_priority = 0
shader = ExtResource("1_4akdf")
shader_parameter/thickness = 500.0
shader_parameter/alpha = 0.35
shader_parameter/metallic = 1.0
shader_parameter/roughness = 0.6
shader_parameter/gravity_strength = 350.0
shader_parameter/gradient = ExtResource("2_aijul")
shader_parameter/noise = ExtResource("3_ru46l")

BIN
models/icosphere.glb Normal file

Binary file not shown.

View File

@ -0,0 +1,30 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://sft6mp442uxe"
path="res://.godot/imported/icosphere.glb-fe561c341942b5de3c68acb46c901bbd.scn"
[deps]
source_file="res://models/icosphere.glb"
dest_files=["res://.godot/imported/icosphere.glb-fe561c341942b5de3c68acb46c901bbd.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
import_script/path=""
_subresources={}

BIN
models/plane.blend Normal file

Binary file not shown.

46
models/plane.blend.import Normal file
View File

@ -0,0 +1,46 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://blp2ftypsofyd"
path="res://.godot/imported/plane.blend-42f3e2f3465244747390ade5d653d64d.scn"
[deps]
source_file="res://models/plane.blend"
dest_files=["res://.godot/imported/plane.blend-42f3e2f3465244747390ade5d653d64d.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
import_script/path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

BIN
models/weird_bubble.blend Normal file

Binary file not shown.

View File

@ -0,0 +1,53 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b0ht1ye2dpq51"
path="res://.godot/imported/weird_bubble.blend-63d9183565e6083cf72d44e55c587755.scn"
[deps]
source_file="res://models/weird_bubble.blend"
dest_files=["res://.godot/imported/weird_bubble.blend-63d9183565e6083cf72d44e55c587755.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
import_script/path=""
_subresources={
"materials": {
"@MATERIAL:0": {
"use_external/enabled": true,
"use_external/path": "res://materials/soap.tres"
}
}
}
blender/nodes/visible=0
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

BIN
models/weird_bubble.blend1 Normal file

Binary file not shown.

View File

@ -3,4 +3,5 @@
[sub_resource type="FastNoiseLite" id="FastNoiseLite_66eei"]
[resource]
seamless = true
noise = SubResource("FastNoiseLite_66eei")

View File

@ -11,5 +11,6 @@ config_version=5
[application]
config/name="Shaders"
run/main_scene="res://RayMarching.tscn"
config/features=PackedStringArray("4.0", "Forward Plus")
config/icon="res://icon.svg"

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 MiB

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://s3urfbs8wl8d"
path.s3tc="res://.godot/imported/AllSkyFree_Sky_EpicBlueSunset_Equirect.png-153896cd68204db74e699536a5e343fb.s3tc.ctex"
path.etc2="res://.godot/imported/AllSkyFree_Sky_EpicBlueSunset_Equirect.png-153896cd68204db74e699536a5e343fb.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://textures/AllSkyFree_Sky_EpicBlueSunset_Equirect.png"
dest_files=["res://.godot/imported/AllSkyFree_Sky_EpicBlueSunset_Equirect.png-153896cd68204db74e699536a5e343fb.s3tc.ctex", "res://.godot/imported/AllSkyFree_Sky_EpicBlueSunset_Equirect.png-153896cd68204db74e699536a5e343fb.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

BIN
textures/Soap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

36
textures/Soap.png.import Normal file
View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2i2g7306xmrh"
path.s3tc="res://.godot/imported/Soap.png-8dda8f6b63aa540ff2eba1a5c7eefb96.s3tc.ctex"
path.etc2="res://.godot/imported/Soap.png-8dda8f6b63aa540ff2eba1a5c7eefb96.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://textures/Soap.png"
dest_files=["res://.godot/imported/Soap.png-8dda8f6b63aa540ff2eba1a5c7eefb96.s3tc.ctex", "res://.godot/imported/Soap.png-8dda8f6b63aa540ff2eba1a5c7eefb96.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

5
vertical_noise.tres Normal file
View File

@ -0,0 +1,5 @@
[gd_resource type="FastNoiseLite" format=3 uid="uid://ciqwjntd6xw48"]
[resource]
domain_warp_enabled = true
domain_warp_amplitude = 100.0