tweak leaf motion

This commit is contained in:
Cody Glassman 2025-03-10 10:13:35 -07:00
parent 935df3a239
commit 07d62eaa01

View file

@ -21,13 +21,14 @@ vec4 transformLeafVertex(LeafParams params, vec4 position, vec4 color, vec3 norm
if (amplitude <= 0.f)
return position;
const vec2 axisFrequencyFactor = vec2(0.1, 0.25);
float gust = 0.5 * sin(0.15 * osg_SimulationTime * 6.136 + params.mTimeOffset) + 0.5;
float wind = sin(osg_SimulationTime * 10.0 + params.mTimeOffset) * windSpeed * gust;
float offset = params.mTimeOffset + position.x * 0.1 + position.y * 0.1;
float period = 0.5 * sin(0.15 * osg_SimulationTime * 6.136 + params.mTimeOffset) + 0.5;
float wind = sin(osg_SimulationTime * params.mLeafFrequency + offset) * params.mLeafAmplitude * windSpeed * period;
float spatialOffset = dot(position.xyz, vec3(1.0));
vec2 phase = fract(axisFrequencyFactor * (wind * params.mLeafFrequency) + spatialOffset + 0.5);
vec2 leafMotion = smoothstep(0.0, 1.0, abs(2.0 * phase - 1.0)) * 10.0;
const vec2 axisFrequencyFactor = vec2(0.1, 0.25);
vec2 phase = fract(axisFrequencyFactor * (wind * params.mLeafFrequency * 10) + spatialOffset + 0.5);
vec2 leafMotion = smoothstep(0.0, 1.0, abs(2.0 * phase - 1.0));
float normalMultiplier = (leafMotion.x + 0.1 * leafMotion.y) * amplitude;
position.xyz += normal.xyz * normalMultiplier;