Skip to content

Commit

Permalink
Fix shader parameters not displaying the right value until set for th…
Browse files Browse the repository at this point in the history
…e first time
  • Loading branch information
Zylann committed Oct 15, 2023
1 parent afb412d commit 51ff429
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ For a more detailed list of past and incoming changes, see the commit history.
- Exposed specular parameter in ground shaders
- Fixed brush cursor looked off-center at close range when using tiny brush sizes
- Fixed error when trying to change `TextureSet` mode while it has textures in it
- Fixed shader parameters not displaying the right value in the inspector until they are set by the user at least once


1.7.2
Expand Down
2 changes: 1 addition & 1 deletion addons/zylann.hterrain/hterrain.gd
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,7 @@ func _on_texture_set_changed():


func get_shader_param(param_name: String):
return _material.get_shader_parameter(param_name)
return HT_Util.get_shader_material_parameter(_material, param_name)


func set_shader_param(param_name: String, v):
Expand Down
2 changes: 1 addition & 1 deletion addons/zylann.hterrain/hterrain_detail_layer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ func _set(key: StringName, v):


func get_shader_param(param_name: String):
return _material.get_shader_parameter(param_name)
return HT_Util.get_shader_material_parameter(_material, param_name)


func set_shader_param(param_name: String, v):
Expand Down
13 changes: 13 additions & 0 deletions addons/zylann.hterrain/util/util.gd
Original file line number Diff line number Diff line change
Expand Up @@ -547,3 +547,16 @@ static func update_texture_partial(
fuck.blit_rect(im, src_rect, dst_pos)
tex.update(fuck)


# Should be used because if `set_shader_parameter` has never been called, `get_shader_parameter`
# will return null even if the shader's corresponding uniform has a default value.
# See https://github.com/godotengine/godot/issues/44454
static func get_shader_material_parameter(material: ShaderMaterial, param_name: StringName):
var v = material.get_shader_parameter(param_name)
if v == null:
var shader : Shader = material.shader
if shader != null:
v = RenderingServer.shader_get_parameter_default(shader.get_rid(), param_name)
return v


0 comments on commit 51ff429

Please sign in to comment.