Fix terrain surface texture projection
This commit is contained in:
parent
69b7969e25
commit
78a5f0effd
6 changed files with 128 additions and 10 deletions
60
tests/terrain_projection_validation.gd
Normal file
60
tests/terrain_projection_validation.gd
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
extends SceneTree
|
||||
|
||||
const REGION := preload("res://world/regions/starter_island_region.tscn")
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
call_deferred("_run")
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
var region := REGION.instantiate()
|
||||
root.add_child(region)
|
||||
await process_frame
|
||||
var terrain := region.get_node(
|
||||
"Terrain/Visual/starter_island"
|
||||
) as MeshInstance3D
|
||||
assert(terrain != null)
|
||||
assert(terrain.mesh.get_surface_count() == 5)
|
||||
assert(terrain.mesh.surface_get_name(0) == "grass_lite")
|
||||
assert(terrain.mesh.surface_get_name(1) == "dirt")
|
||||
assert(terrain.mesh.surface_get_name(2) == "sand")
|
||||
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))
|
||||
for surface: int in [1, 3, 4]:
|
||||
assert(terrain.get_surface_override_material(surface) == null)
|
||||
assert(terrain.mesh.surface_get_material(surface) is StandardMaterial3D)
|
||||
|
||||
print("Terrain projection validation: PASS")
|
||||
region.free()
|
||||
quit()
|
||||
|
||||
|
||||
func _validate_projected_material(material: Material) -> void:
|
||||
assert(material is ShaderMaterial)
|
||||
var shader_material := material as ShaderMaterial
|
||||
assert(
|
||||
shader_material.shader.resource_path
|
||||
== "res://world/materials/terrain_surface_projection.gdshader"
|
||||
)
|
||||
assert(
|
||||
is_equal_approx(
|
||||
float(shader_material.get_shader_parameter("tile_world_size")),
|
||||
2.5
|
||||
)
|
||||
)
|
||||
assert(
|
||||
is_equal_approx(
|
||||
float(shader_material.get_shader_parameter("blend_sharpness")),
|
||||
6.0
|
||||
)
|
||||
)
|
||||
assert(
|
||||
is_equal_approx(
|
||||
float(shader_material.get_shader_parameter("top_projection_bias")),
|
||||
2.0
|
||||
)
|
||||
)
|
||||
1
tests/terrain_projection_validation.gd.uid
Normal file
1
tests/terrain_projection_validation.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://cto4rc6bn0n4o
|
||||
Loading…
Add table
Add a link
Reference in a new issue