Keep rain above generated tree canopies
This commit is contained in:
parent
45c903bd24
commit
8456093f8c
2 changed files with 36 additions and 8 deletions
|
|
@ -524,6 +524,15 @@ func _validate_weather_presentation() -> void:
|
||||||
assert(rain.emitting)
|
assert(rain.emitting)
|
||||||
assert(rain.amount_ratio > 0.99)
|
assert(rain.amount_ratio > 0.99)
|
||||||
assert(rain.amount == WorldTimeVisualControllerType.RAIN_PARTICLE_AMOUNT)
|
assert(rain.amount == WorldTimeVisualControllerType.RAIN_PARTICLE_AMOUNT)
|
||||||
|
assert(
|
||||||
|
WorldTimeVisualControllerType.RAIN_EMITTER_OFFSET.y
|
||||||
|
>= WorldTimeVisualControllerType.RAIN_SUPPORTED_CANOPY_HEIGHT
|
||||||
|
+ WorldTimeVisualControllerType.RAIN_CANOPY_CLEARANCE
|
||||||
|
)
|
||||||
|
assert(is_equal_approx(
|
||||||
|
rain.lifetime,
|
||||||
|
WorldTimeVisualControllerType.RAIN_LIFETIME_SECONDS,
|
||||||
|
))
|
||||||
assert(rain.visibility_aabb == (
|
assert(rain.visibility_aabb == (
|
||||||
WorldTimeVisualControllerType.RAIN_VISIBILITY_AABB
|
WorldTimeVisualControllerType.RAIN_VISIBILITY_AABB
|
||||||
))
|
))
|
||||||
|
|
@ -548,6 +557,9 @@ func _validate_weather_presentation() -> void:
|
||||||
rain_material.initial_velocity_max,
|
rain_material.initial_velocity_max,
|
||||||
WorldTimeVisualControllerType.RAIN_VELOCITY_MAX,
|
WorldTimeVisualControllerType.RAIN_VELOCITY_MAX,
|
||||||
))
|
))
|
||||||
|
assert(rain_material.gravity.is_equal_approx(
|
||||||
|
WorldTimeVisualControllerType.RAIN_GRAVITY
|
||||||
|
))
|
||||||
var rain_mesh := rain.draw_pass_1 as BoxMesh
|
var rain_mesh := rain.draw_pass_1 as BoxMesh
|
||||||
assert(rain_mesh != null)
|
assert(rain_mesh != null)
|
||||||
assert(rain_mesh.size.is_equal_approx(
|
assert(rain_mesh.size.is_equal_approx(
|
||||||
|
|
@ -569,6 +581,11 @@ func _validate_weather_presentation() -> void:
|
||||||
assert(rain_collision.size.is_equal_approx(
|
assert(rain_collision.size.is_equal_approx(
|
||||||
WorldTimeVisualControllerType.RAIN_COLLISION_SIZE
|
WorldTimeVisualControllerType.RAIN_COLLISION_SIZE
|
||||||
))
|
))
|
||||||
|
assert(
|
||||||
|
rain_collision.size.y * 0.5
|
||||||
|
> WorldTimeVisualControllerType.RAIN_EMITTER_OFFSET.y
|
||||||
|
+ WorldTimeVisualControllerType.RAIN_EMISSION_EXTENTS.y
|
||||||
|
)
|
||||||
assert(
|
assert(
|
||||||
rain_collision.heightfield_mask
|
rain_collision.heightfield_mask
|
||||||
== PrecipitationOcclusionType.RENDER_LAYER_MASK
|
== PrecipitationOcclusionType.RENDER_LAYER_MASK
|
||||||
|
|
|
||||||
|
|
@ -5,20 +5,31 @@ const UPDATE_INTERVAL_SECONDS: float = 0.1
|
||||||
const LIGHT_UPDATE_INTERVAL_SECONDS: float = 0.25
|
const LIGHT_UPDATE_INTERVAL_SECONDS: float = 0.25
|
||||||
const SUN_YAW_DEGREES: float = -32.0
|
const SUN_YAW_DEGREES: float = -32.0
|
||||||
const WEATHER_TRANSITION_SECONDS: float = 10.0
|
const WEATHER_TRANSITION_SECONDS: float = 10.0
|
||||||
const RAIN_EMITTER_OFFSET := Vector3(0.0, 7.0, 0.0)
|
# Large generated trees reach nearly 22 m at their maximum authored scale.
|
||||||
|
# Keep the rain source above those canopies so drops cannot be born underneath
|
||||||
|
# the height-field surface that is meant to hide them.
|
||||||
|
const RAIN_SUPPORTED_CANOPY_HEIGHT: float = 22.0
|
||||||
|
const RAIN_CANOPY_CLEARANCE: float = 4.0
|
||||||
|
const RAIN_EMITTER_OFFSET := Vector3(
|
||||||
|
0.0,
|
||||||
|
RAIN_SUPPORTED_CANOPY_HEIGHT + RAIN_CANOPY_CLEARANCE,
|
||||||
|
0.0,
|
||||||
|
)
|
||||||
const RAIN_EMISSION_EXTENTS := Vector3(13.0, 1.0, 13.0)
|
const RAIN_EMISSION_EXTENTS := Vector3(13.0, 1.0, 13.0)
|
||||||
const RAIN_VISIBILITY_AABB := AABB(
|
const RAIN_VISIBILITY_AABB := AABB(
|
||||||
Vector3(-13.5, -9.0, -13.5),
|
Vector3(-13.5, -36.0, -13.5),
|
||||||
Vector3(27.0, 12.0, 27.0),
|
Vector3(27.0, 40.0, 27.0),
|
||||||
)
|
)
|
||||||
const RAIN_PARTICLE_AMOUNT: int = 2240
|
const RAIN_PARTICLE_AMOUNT: int = 2240
|
||||||
const LIGHT_RAIN_PARTICLE_AMOUNT: int = 48
|
const LIGHT_RAIN_PARTICLE_AMOUNT: int = 48
|
||||||
const LIGHT_RAIN_FIXED_FPS: int = 8
|
const LIGHT_RAIN_FIXED_FPS: int = 8
|
||||||
const RAIN_VELOCITY_MIN: float = 16.0
|
const RAIN_LIFETIME_SECONDS: float = 1.4
|
||||||
const RAIN_VELOCITY_MAX: float = 20.0
|
const RAIN_VELOCITY_MIN: float = 20.0
|
||||||
|
const RAIN_VELOCITY_MAX: float = 24.0
|
||||||
|
const RAIN_GRAVITY := Vector3(0.0, -2.0, 0.0)
|
||||||
const RAIN_DROP_SIZE := Vector3(0.014, 0.34, 0.014)
|
const RAIN_DROP_SIZE := Vector3(0.014, 0.34, 0.014)
|
||||||
const RAIN_COLLISION_BASE_SIZE: float = 0.08
|
const RAIN_COLLISION_BASE_SIZE: float = 0.08
|
||||||
const RAIN_COLLISION_SIZE := Vector3(28.0, 24.0, 28.0)
|
const RAIN_COLLISION_SIZE := Vector3(28.0, 64.0, 28.0)
|
||||||
const FOG_DAYLIGHT_SCENE_BRIGHTNESS: float = 0.42
|
const FOG_DAYLIGHT_SCENE_BRIGHTNESS: float = 0.42
|
||||||
const FOG_DAYLIGHT_FOG_LIGHT_BRIGHTNESS: float = 0.42
|
const FOG_DAYLIGHT_FOG_LIGHT_BRIGHTNESS: float = 0.42
|
||||||
const FOG_DAYLIGHT_WATER_BRIGHTNESS: float = 0.42
|
const FOG_DAYLIGHT_WATER_BRIGHTNESS: float = 0.42
|
||||||
|
|
@ -212,7 +223,7 @@ func _prepare_rain() -> void:
|
||||||
else RAIN_PARTICLE_AMOUNT
|
else RAIN_PARTICLE_AMOUNT
|
||||||
)
|
)
|
||||||
_rain.amount_ratio = 0.0
|
_rain.amount_ratio = 0.0
|
||||||
_rain.lifetime = 1.25
|
_rain.lifetime = RAIN_LIFETIME_SECONDS
|
||||||
_rain.fixed_fps = (
|
_rain.fixed_fps = (
|
||||||
LIGHT_RAIN_FIXED_FPS if _light_performance_profile else 30
|
LIGHT_RAIN_FIXED_FPS if _light_performance_profile else 30
|
||||||
)
|
)
|
||||||
|
|
@ -228,7 +239,7 @@ func _prepare_rain() -> void:
|
||||||
process_material.spread = 5.0
|
process_material.spread = 5.0
|
||||||
process_material.initial_velocity_min = RAIN_VELOCITY_MIN
|
process_material.initial_velocity_min = RAIN_VELOCITY_MIN
|
||||||
process_material.initial_velocity_max = RAIN_VELOCITY_MAX
|
process_material.initial_velocity_max = RAIN_VELOCITY_MAX
|
||||||
process_material.gravity = Vector3(0.0, -2.0, 0.0)
|
process_material.gravity = RAIN_GRAVITY
|
||||||
process_material.collision_mode = (
|
process_material.collision_mode = (
|
||||||
ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT
|
ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue