heightmap terrain for experiment

This commit is contained in:
hzzzln 2025-02-17 21:02:07 +01:00
parent 07df01ea5b
commit 6cdd817cad
8 changed files with 240 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gtwqo5oclbvx"
path.s3tc="res://.godot/imported/Photoreal_Grass_06-512x512.png-eacac434657df19f4c9ca4f63722dbe5.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://experimente/felox/Photoreal_Grass_06-512x512.png"
dest_files=["res://.godot/imported/Photoreal_Grass_06-512x512.png-eacac434657df19f4c9ca4f63722dbe5.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dyo2qsfjeva8k"
path.s3tc="res://.godot/imported/Photoreal_Stone_04-512x512.png-8b2724f2aeb7c1f0c7e952c9aeac99d3.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://experimente/felox/Photoreal_Stone_04-512x512.png"
dest_files=["res://.godot/imported/Photoreal_Stone_04-512x512.png-8b2724f2aeb7c1f0c7e952c9aeac99d3.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
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

View File

@ -0,0 +1,51 @@
@tool
extends StaticBody3D
@export var generate_mesh : bool = false : set = generate
@export var noise: NoiseTexture2D
signal clicked_on_move(position: Vector3)
signal clicked_on_look(position: Vector3)
func _on_input_event(camera: Node, event: InputEvent, position: Vector3, normal: Vector3, shape_idx: int) -> void:
if event.is_action_pressed("mouse_move_to"):
clicked_on_move.emit(position)
if event.is_action_pressed("mouse_look_at"):
clicked_on_look.emit(position)
func generate(__):
var plane_mesh = PlaneMesh.new()
plane_mesh.size = Vector2(500,500)
plane_mesh.subdivide_depth = 249
plane_mesh.subdivide_width = 249
var surface_tool = SurfaceTool.new()
surface_tool.create_from(plane_mesh,0)
var data = surface_tool.commit_to_arrays()
var vertices = data[ArrayMesh.ARRAY_VERTEX]
var image = noise.get_image()
for i in vertices.size():
var vertex : Vector3 = vertices[i]
var noise_value : float
if vertex.distance_to(Vector3.ZERO) > 180:
noise_value = 15
else:
noise_value = image.get_pixel((vertex.x*1.2)+250,(vertex.z*1.2)+250).v*15
noise_value += randf_range(-.1,.1)
vertices[i].y = noise_value
#var random_offset = Vector2(randf_range(-.2,.2),randf_range(-.2,.2))
#vertices[i].x += random_offset.x
#vertices[i].z += random_offset.y
data[ArrayMesh.ARRAY_VERTEX] = vertices
var array_mesh = ArrayMesh.new()
array_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, data)
surface_tool.create_from(array_mesh,0)
surface_tool.generate_normals()
$MeshInstance3D.mesh = surface_tool.commit()
$CollisionShape3D.shape = array_mesh.create_trimesh_shape()

View File

@ -56,8 +56,8 @@ func _physics_process(delta: float) -> void:
var asd = Vector2.ZERO
if not_dead:
if Input.is_action_just_pressed("shoot3"):
handle_dying()
#if Input.is_action_just_pressed("shoot3"):
#handle_dying()
asd = Input.get_vector("strafe_left", "strafe_right", "move_front", "move_back")*5
rotation.y -= delta*Input.get_axis("turn_left","turn_right")*2

View File

@ -0,0 +1,60 @@
// NOTE: Shader automatically converted from Godot Engine 4.2.2.stable's StandardMaterial3D.
shader_type spatial;
render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx;
uniform vec4 albedo : source_color;
uniform sampler2D texture_albedo : source_color,filter_nearest_mipmap_anisotropic,repeat_enable;
uniform sampler2D texture_albedo2 : source_color,filter_nearest_mipmap_anisotropic,repeat_enable;
uniform float point_size : hint_range(0,128);
uniform float roughness : hint_range(0,1);
varying vec3 uv1_triplanar_pos;
uniform float uv1_blend_sharpness;
varying vec3 uv1_power_normal;
uniform vec3 uv1_scale;
uniform vec3 uv1_offset;
uniform vec3 uv2_scale;
uniform vec3 uv2_offset;
varying float normal_y;
uniform float min_rock_slope:hint_range(0.0, 1.0, 0.1);
uniform float max_ice_slope:hint_range(0.0, 1.0, 0.1);
void vertex() {
vec3 normal = NORMAL;
TANGENT = vec3(0.0,0.0,-1.0) * abs(normal.x);
TANGENT+= vec3(1.0,0.0,0.0) * abs(normal.y);
TANGENT+= vec3(1.0,0.0,0.0) * abs(normal.z);
TANGENT = normalize(TANGENT);
BINORMAL = vec3(0.0,1.0,0.0) * abs(normal.x);
BINORMAL+= vec3(0.0,0.0,-1.0) * abs(normal.y);
BINORMAL+= vec3(0.0,1.0,0.0) * abs(normal.z);
BINORMAL = normalize(BINORMAL);
uv1_power_normal=pow(abs(NORMAL),vec3(uv1_blend_sharpness));
uv1_triplanar_pos = VERTEX * uv1_scale + uv1_offset;
uv1_power_normal/=dot(uv1_power_normal,vec3(1.0));
uv1_triplanar_pos *= vec3(1.0,-1.0, 1.0);
normal_y = normal.y;
}
vec4 triplanar_texture(sampler2D p_sampler,vec3 p_weights,vec3 p_triplanar_pos) {
vec4 samp=vec4(0.0);
samp+= texture(p_sampler,p_triplanar_pos.xy) * p_weights.z;
samp+= texture(p_sampler,p_triplanar_pos.xz) * p_weights.y;
samp+= texture(p_sampler,p_triplanar_pos.zy * vec2(-1.0,1.0)) * p_weights.x;
return samp;
}
void fragment() {
float rock_ice_weight = normal_y;
rock_ice_weight = max(min_rock_slope, rock_ice_weight);
rock_ice_weight = min(max_ice_slope, rock_ice_weight);
rock_ice_weight -= min_rock_slope;
rock_ice_weight /= max_ice_slope - min_rock_slope;
vec4 albedo_tex = triplanar_texture(texture_albedo,uv1_power_normal,uv1_triplanar_pos);
vec4 albedo_tex2 = triplanar_texture(texture_albedo2,uv1_power_normal,uv1_triplanar_pos);
ALBEDO = albedo.rgb * mix(albedo_tex2.rgb, albedo_tex.rgb, rock_ice_weight);
}

File diff suppressed because one or more lines are too long