Files

25 lines
1.0 KiB
GDScript

extends Node3D
## Shared opaque boughs; decorative presentation without simulation state.
const WIND_SHADER := preload("res://world/jajce/materials/wind.gdshader")
func _ready() -> void:
var canopy := $Geometry/ConiferCanopy as MeshInstance3D
var material := ShaderMaterial.new()
material.shader = WIND_SHADER
material.set_shader_parameter("albedo", Color(0.28, 0.47, 0.33))
material.set_shader_parameter("painted_vertex_weight", 1.0)
material.set_shader_parameter("wind_strength", 0.055)
material.set_shader_parameter("wind_speed", 0.55)
material.set_shader_parameter("wind_phase", float(posmod(hash(global_position), 6283)) / 1000.0)
material.set_shader_parameter("wind_base_height", 0.45)
material.set_shader_parameter("wind_full_height", 3.1)
canopy.material_override = material
var trunk := $Geometry/ConiferTrunk as MeshInstance3D
var bark := StandardMaterial3D.new()
bark.vertex_color_use_as_albedo = true
bark.roughness = 0.95
bark.specular_mode = BaseMaterial3D.SPECULAR_DISABLED
trunk.material_override = bark