Releases: hmans/composer-suite
[email protected]
Minor Changes
-
85f851f: Breaking Change:
<Emitter>
received a big overhaul and now supportsrate
andlimit
props, next to thesetup
callback prop that was already there. Together with the helper components from Timeline Composer, this should now allow for all typical particle emission workloads. -
ea13985: Breaking Change: Upgrade to the latest Shader Composer and Material Composer. Lots of new APIs! Aaaah! Please refer to the examples for guidance.
-
dc04f03:
VFXMaterial
and the animation modules have been extracted into a new package, Material Composer, that this library now uses as a dependency. -
c09304e: All the react-three-fiber specific bits that were formerly available at
vfx-composer/fiber
now live in a separatevfx-composer-r3f
package. -
a11c4b7: Added
useParticles
, a high-level hook that will set up the most important variables needed for typical particle systems.Added
useParticleAttribute
, a simple hook to quickly create a memoized particle attribute.A typical (minimal) particles effect now looks like this:
const Effect = () => { const particles = useParticles() const velocity = useParticleAttribute(() => new Vector3()) return ( <Particles maxParticles={1_000} safetyBuffer={1_000}> <planeGeometry args={[0.2, 0.2]} /> <composable.MeshStandardMaterial> <modules.Billboard /> <modules.Scale scale={OneMinus(particles.Progress)} /> <modules.Velocity velocity={velocity} time={particles.Age} /> <modules.Lifetime {...particles} /> </composable.MeshStandardMaterial> <Emitter rate={20} setup={() => { particles.setLifetime(between(1, 3)) velocity.value.set(plusMinus(1), between(1, 3), plusMinus(1)) }} /> </Particles> ) }
Patch Changes
[email protected]
[email protected]
Minor Changes
- 85f851f: Breaking Change:
<Emitter>
received a big overhaul and now supportsrate
andlimit
props, next to thesetup
callback prop that was already there. Together with the helper components from Timeline Composer, this should now allow for all typical particle emission workloads. - ea13985: Upgrade to the latest Shader Composer and Material Composer. Lots of new APIs!
- dc04f03:
VFXMaterial
and the animation modules have been extracted into a new package, Material Composer, that this library now uses as a dependency.
Patch Changes
[email protected]
Minor Changes
- c09304e: All the react-three-fiber specific bits that were formerly available at
vfx-composer/fiber
now live in a separatevfx-composer-r3f
package. - a11c4b7: Breaking Change: The
Lifetime
module was replaced by theParticles
module, which takes the object returned fromcreateParticleUnits
as props.
Patch Changes
- a11c4b7:
vfx-composer/units
now exportscreateParticleUnits
, a helper that creates the necessary Shader Composer units for managing particle lifetimes.
[email protected]
Minor Changes
-
c09304e: All the react-three-fiber specific bits that were formerly available at
vfx-composer/fiber
now live in a separatevfx-composer-r3f
package. -
a11c4b7: Added
useParticles
, a high-level hook that will set up the most important variables needed for typical particle systems.Added
useParticleAttribute
, a simple hook to quickly create a memoized particle attribute.A typical (minimal) particles effect now looks like this:
const Effect = () => { const particles = useParticles() const velocity = useParticleAttribute(() => new Vector3()) return ( <Particles maxParticles={1_000} safetyBuffer={1_000}> <planeGeometry args={[0.2, 0.2]} /> <VFXMaterial baseMaterial={MeshStandardMaterial}> <VFX.Billboard /> <VFX.Scale scale={OneMinus(particles.Progress)} /> <VFX.Velocity velocity={velocity} time={particles.Age} /> <VFX.Particles {...particles} /> </VFXMaterial> <Emitter continuous setup={() => { particles.setLifetime(between(1, 3)) velocity.value.set(plusMinus(1), between(1, 3), plusMinus(1)) }} /> </Particles> ) }
Patch Changes
[email protected]
Patch Changes
- bfd1588: Fixed:
<Emitter>
could no longer work with<Particles>
refs passed into itsparticles
prop. Woops!
[email protected]
Minor Changes
- cd19781: Changed:
<Emitter>
now applies its world transform to spawned particles, meaning you can parent it to other scene objects for easy-peasy particle trails.
[email protected]
Minor Changes
- 3134d51: Changed: VFX Composer now requires CustomShaderMaterial 4.0.0 and up.
- c4ef849: Added: Partial attribute buffer uploads! Now only the parts of the buffers that have been used for newly spawned particles are actually uploaded to the GPU.
- f8b4c05: Changed:
ParticlesMaterial
is nowVFXMaterial
. - f8b4c05: Changed: A complete refactoring around a new imperative/vanilla core. Enjoy!
Patch Changes
- 2d867ec: Added:
<Emitter>
will now retrieve the parent<Particles>
via context if none is specified explicitly.
[email protected]
Minor Changes
- 6645c1f: All new
vfx-composer
! Woohoo! 🚀
[email protected]
vfx
0.2.0
WARNING: Please do not use this version of the library, unless you're ready for more extreme breaking changes in future releases. I am about to give the whole library a complete rewrite (to base it on Shader Composer); I am only pushing this 0.2.0 for completeness' sake.
Minor Changes
-
e3ceedd: New: The shader that runs particle effects has been heavily refactored and modularized, giving you significantly more control over its behavior.
-
eb0c10d: Breaking Change:
<ParticlesMaterial>
has been renamed to<MeshParticlesMaterial>
to reflect the fact that it is supposed to be used together with<MeshParticles>
. Among other things, this is also in preparation for potential future support of point particles. -
5ed1564: Breaking Change: Due to the complete refactoring of much of the shader code, some of the per-particle defaults have changed:
- Min and max Alpha now default to 1 (before, particles were configured to fade to 0 over their lifetime)
- Lifetime duration of new particles now defaults to
Infinity
(before, the default was1
.)
-
8aec47f: Breaking Change: The top-level
<VisualEffect>
component has been removed, as it didn't actually implement any kind of functionality whatsoever. -
baf11be: New: Soft Particles support!
<MeshParticlesMaterial>
now has newsoftness
,softnessFunction
anddepthTexture
props.export const SoftParticlesExample = () => { const depthBuffer = useDepthBuffer() return ( <MeshParticles> <planeGeometry args={[20, 20]} /> <MeshParticlesMaterial baseMaterial={MeshStandardMaterial} color="hotpink" billboard transparent depthWrite={false} softness={5} depthTexture={depthBuffer.depthTexture} /> <Emitter count={1} setup={(c) => { c.lifetime = Infinity }} /> </MeshParticles> ) }
Patch Changes
- 4371469: New:
<Emitter>
now is a full Three.js scene object and can nest children. - 4371469: New:
<Emitter>
now supports an optionalcontinuous
flag. If it is set, the emitter will emit particles every frame. This is useful for effects that need to constantly emit new particles, where the use of<Repeat>
would be too costly and/or inaccurate. - be7aff8: Fixed: The
u_time
uniform now starts at 0 and accumulates frame delta times, meaning that 1) it can be used to determine the absolute age of the emitter (potentially time-scaled), and 2) its simulation is essentially paused when no delta times accumulate (eg. when the time is scaled to 0, or the browser tab is in the background.)
0.1.0
Minor Changes
- 7b2756b: New Package Name: The package has been renamed from
vfx
tothree-vfx
.
Patch Changes
- 02da7fc: New:
<ParticlesMaterial>
now allows you to use an existing material as its base material. - ebc8db4: New:
<VisualEffect>
, a root component for all visual effects. Currently only an abstraction over . - 793bed5: New:
<Lifetime seconds={...}>
will give its children the specified lifetime and then unmount them. - 08b4d0b: New:
<Repeat times={...} interval={...}>
will re-render its childrentimes
times with an interval ofinterval
. - dfdb72e: New:
<Delay seconds={...}>
will only render its children after the specified time has passed.
0.0.13
Patch Changes
- 3869d43: New: Added
quaternion
to the components passed tosetup
, allowing you to initialize each particle's original rotation.
0.0.12
Patch Changes
- c7fef32: Fixed: billboarding code in vertex shader was borked.
0.0.10
Patch Changes
- 1705a13: First changesets-driven release to get the ball rolling.