65 lines
1.5 KiB
GDScript
65 lines
1.5 KiB
GDScript
extends Node
|
|
|
|
# Copyright (c) 2024 Julian Müller (ChaoticByte)
|
|
|
|
var wind_strength: float:
|
|
set(value):
|
|
wind_strength = value
|
|
_update_shader_param("wind_strength", value)
|
|
|
|
var wind_turbulence: float:
|
|
set(value):
|
|
wind_turbulence = value
|
|
_update_shader_param("wind_turbulence", value)
|
|
|
|
var wind_direction: Vector2:
|
|
set(value):
|
|
value = value.normalized()
|
|
wind_direction = value
|
|
_update_shader_param("wind_direction", value)
|
|
|
|
var wind_noise_texture_size: int:
|
|
set(value):
|
|
wind_noise_texture_size = value
|
|
_update_wind_noise()
|
|
|
|
var wind_noise: Noise:
|
|
set(value):
|
|
wind_noise = value
|
|
_update_wind_noise()
|
|
|
|
func _update_wind_noise():
|
|
var tex = ImageTexture.new()
|
|
if wind_noise != null:
|
|
var img = wind_noise.get_seamless_image(
|
|
wind_noise_texture_size, wind_noise_texture_size)
|
|
tex.set_image(img)
|
|
_update_shader_param("wind_noise", tex)
|
|
|
|
var wind_noise_scale: float:
|
|
set(value):
|
|
wind_noise_scale = value
|
|
_update_shader_param("wind_noise_scale", value)
|
|
|
|
var wind_noise_strength: float:
|
|
set(value):
|
|
wind_noise_strength = value
|
|
_update_shader_param("wind_noise_strength", value)
|
|
|
|
# reset all params to default
|
|
func reset():
|
|
wind_strength = 0.2
|
|
wind_turbulence = 0.5
|
|
wind_direction = Vector2(1, 1)
|
|
wind_noise_texture_size = 2048
|
|
wind_noise = FastNoiseLite.new()
|
|
wind_noise_scale = 8.0
|
|
wind_noise_strength = 1.0
|
|
|
|
# internal stuff
|
|
|
|
func _ready():
|
|
reset() # init with defaults
|
|
|
|
func _update_shader_param(varname: String, value):
|
|
RenderingServer.global_shader_parameter_set(varname, value)
|