Refine environment texture rendering

This commit is contained in:
Alexander Sellite 2026-08-04 22:34:52 -04:00
parent 2bcb4a3c93
commit 47a1990090
5 changed files with 55 additions and 22 deletions

View file

@ -3,21 +3,19 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://crci2on30ctoc"
path.s3tc="res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.s3tc.ctex"
path.etc2="res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.etc2.ctex"
path="res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://art/exported/environment/textures/grass_lite.png"
dest_files=["res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.s3tc.ctex", "res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.etc2.ctex"]
dest_files=["res://.godot/imported/grass_lite.png-f89cf6413257cd31582bd4f9f875ae85.ctex"]
[params]
compress/mode=2
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@ -25,7 +23,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -39,4 +37,4 @@ 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
detect_3d/compress_to=1

View file

@ -3,21 +3,19 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bnje415gq85nn"
path.s3tc="res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.s3tc.ctex"
path.etc2="res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.etc2.ctex"
path="res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
"vram_texture": false
}
[deps]
source_file="res://art/exported/environment/textures/sand.png"
dest_files=["res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.s3tc.ctex", "res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.etc2.ctex"]
dest_files=["res://.godot/imported/sand.png-41fc96c392119deeba43c2d4e49d88a5.ctex"]
[params]
compress/mode=2
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@ -25,7 +23,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -39,4 +37,4 @@ 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
detect_3d/compress_to=1

View file

@ -22,8 +22,14 @@ func _run() -> void:
assert(terrain.mesh.surface_get_name(3) == "cliff_wall")
assert(terrain.mesh.surface_get_name(4) == "dirt_wall")
_validate_projected_material(terrain.get_surface_override_material(0))
_validate_projected_material(terrain.get_surface_override_material(2))
_validate_projected_material(
terrain.get_surface_override_material(0),
"res://art/exported/environment/textures/grass_lite.png"
)
_validate_projected_material(
terrain.get_surface_override_material(2),
"res://art/exported/environment/textures/sand.png"
)
for surface: int in [1, 3, 4]:
assert(terrain.get_surface_override_material(surface) == null)
assert(terrain.mesh.surface_get_material(surface) is StandardMaterial3D)
@ -33,7 +39,10 @@ func _run() -> void:
quit()
func _validate_projected_material(material: Material) -> void:
func _validate_projected_material(
material: Material,
expected_texture_path: String,
) -> void:
assert(material is ShaderMaterial)
var shader_material := material as ShaderMaterial
assert(
@ -58,3 +67,12 @@ func _validate_projected_material(material: Material) -> void:
2.0
)
)
var texture: Texture2D = shader_material.get_shader_parameter(
"albedo_texture"
) as Texture2D
assert(texture != null)
assert(texture.resource_path == expected_texture_path)
var imported_image: Image = texture.get_image()
assert(imported_image != null)
assert(not imported_image.has_mipmaps())
assert(imported_image.get_format() == Image.FORMAT_RGBA8)

View file

@ -1,9 +1,28 @@
[gd_resource type="Sky" load_steps=3 format=3 uid="uid://dersyay71dyat"]
[gd_resource type="Sky" format=3 uid="uid://dersyay71dyat"]
[ext_resource type="Shader" path="res://world/environment/netfishing_sky.gdshader" id="1_sky_shader"]
[ext_resource type="Shader" uid="uid://chbcdlhui3ro4" path="res://world/environment/netfishing_sky.gdshader" id="1_sky_shader"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_netfishing"]
shader = ExtResource("1_sky_shader")
shader_parameter/sky_top_color = Color(0.204, 0.498, 0.643, 1)
shader_parameter/sky_horizon_color = Color(0.663, 0.843, 0.847, 1)
shader_parameter/ground_bottom_color = Color(0.157, 0.361, 0.439, 1)
shader_parameter/ground_horizon_color = Color(0.549, 0.749, 0.765, 1)
shader_parameter/horizon_blend_width = 0.01
shader_parameter/sun_direction = Vector3(0, 1, 0)
shader_parameter/sun_color = Color(1, 0.86, 0.46, 1)
shader_parameter/sun_visibility = 1.0
shader_parameter/sun_radius = 0.055
shader_parameter/sun_edge_softness = 0.003
shader_parameter/sun_halo_radius = 0.14
shader_parameter/sun_halo_strength = 0.16
shader_parameter/moon_direction = Vector3(0, -1, 0)
shader_parameter/moon_color = Color(0.78, 0.88, 1, 1)
shader_parameter/moon_visibility = 0.0
shader_parameter/moon_radius = 0.045
shader_parameter/moon_edge_softness = 0.003
shader_parameter/moon_halo_radius = 0.11
shader_parameter/moon_halo_strength = 0.12
[resource]
sky_material = SubResource("ShaderMaterial_netfishing")

View file

@ -1,7 +1,7 @@
shader_type spatial;
render_mode cull_back;
uniform sampler2D albedo_texture : source_color, repeat_enable, filter_nearest_mipmap_anisotropic;
uniform sampler2D albedo_texture : source_color, repeat_enable, filter_nearest;
uniform vec4 albedo_tint : source_color = vec4(1.0);
uniform float tile_world_size : hint_range(0.1, 20.0, 0.05) = 2.5;
uniform float blend_sharpness : hint_range(1.0, 16.0, 0.25) = 6.0;