Skip to content

Releases: hmans/composer-suite

[email protected]

31 Aug 16:24
8fcda35
Compare
Choose a tag to compare

Minor Changes

  • 85f851f: Breaking Change: <Emitter> received a big overhaul and now supports rate and limit props, next to the setup 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 separate vfx-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]

30 Aug 15:08
3e11257
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Minor Changes

  • 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.

[email protected]

30 Aug 15:08
3e11257
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Minor Changes

  • 85f851f: Breaking Change: <Emitter> received a big overhaul and now supports rate and limit props, next to the setup 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]

21 Aug 15:11
aa0ddef
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Minor Changes

  • c09304e: All the react-three-fiber specific bits that were formerly available at vfx-composer/fiber now live in a separate vfx-composer-r3f package.
  • a11c4b7: Breaking Change: The Lifetime module was replaced by the Particles module, which takes the object returned from createParticleUnits as props.

Patch Changes

  • a11c4b7: vfx-composer/units now exports createParticleUnits, a helper that creates the necessary Shader Composer units for managing particle lifetimes.

[email protected]

21 Aug 15:11
aa0ddef
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Minor Changes

  • c09304e: All the react-three-fiber specific bits that were formerly available at vfx-composer/fiber now live in a separate vfx-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]

02 Aug 08:39
7c7d7e3
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

Patch Changes

  • bfd1588: Fixed: <Emitter> could no longer work with <Particles> refs passed into its particles prop. Woops!

[email protected]

02 Aug 08:20
d68c614
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

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]

02 Aug 07:18
6f4770b
Compare
Choose a tag to compare
[email protected] Pre-release
Pre-release

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 now VFXMaterial.
  • 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]

01 Aug 07:38
e32276d
Compare
Choose a tag to compare

Minor Changes

  • 6645c1f: All new vfx-composer! Woohoo! 🚀

[email protected]

27 Jul 15:41
Compare
Choose a tag to compare

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 was 1.)
  • 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 new softness, softnessFunction and depthTexture 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 optional continuous 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 to three-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 children times times with an interval of interval.
  • 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 to setup, 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.