Refactor wind direction calculation to use in-place vector writing

This commit is contained in:
2026-05-21 06:09:09 +02:00
parent 26e47fd275
commit cc7a8ca768

View File

@@ -114,12 +114,13 @@ function stableStringify(value: unknown): string {
return JSON.stringify(String(value)); return JSON.stringify(String(value));
} }
function resolveFoliageWindDirectionVector( function writeFoliageWindDirectionVector(
target: Vector2,
settings: FoliageQualitySettings settings: FoliageQualitySettings
): Vector2 { ): Vector2 {
const radians = (settings.windDirectionDegrees * Math.PI) / 180; const radians = (settings.windDirectionDegrees * Math.PI) / 180;
return new Vector2(Math.cos(radians), Math.sin(radians)).normalize(); return target.set(Math.cos(radians), Math.sin(radians)).normalize();
} }
function createFoliageWindUniformSet( function createFoliageWindUniformSet(
@@ -130,7 +131,9 @@ function createFoliageWindUniformSet(
time: { value: time }, time: { value: time },
strength: { value: settings.windStrength }, strength: { value: settings.windStrength },
speed: { value: settings.windSpeed }, speed: { value: settings.windSpeed },
direction: { value: resolveFoliageWindDirectionVector(settings) } direction: {
value: writeFoliageWindDirectionVector(new Vector2(), settings)
}
}; };
} }
@@ -142,7 +145,7 @@ function writeFoliageWindUniformValues(
uniforms.time.value = time; uniforms.time.value = time;
uniforms.strength.value = settings.windStrength; uniforms.strength.value = settings.windStrength;
uniforms.speed.value = settings.windSpeed; uniforms.speed.value = settings.windSpeed;
uniforms.direction.value.copy(resolveFoliageWindDirectionVector(settings)); writeFoliageWindDirectionVector(uniforms.direction.value, settings);
} }
function patchFoliageWindMaterial( function patchFoliageWindMaterial(