npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@neutrinoparticles/bloom-v1.1-pixi7

v1.0.0

Published

PIXI v7 NeutrinoParticles HDR-glow bloom add-on (JS export format v1.1)

Downloads

76

Readme

@neutrinoparticles/bloom-v1.1-pixi7

HDR-glow bloom add-on for the PIXI v7 NeutrinoParticles runtime (@neutrinoparticles/js-v1.1-pixi7, JS export format v1.1). Particles whose colour exceeds 1.0 glow with true HDR energy — the exact algorithm the editor preview shows, so the editor matches the game.

For PIXI v8 use @neutrinoparticles/bloom-v1.1-pixi8.

Installation

npm install @neutrinoparticles/bloom-v1.1-pixi7

pixi.js@^7 and @neutrinoparticles/js-v1.1-pixi7 are peer dependencies. The version-agnostic core (@neutrinoparticles/bloom-v1.1) is installed automatically.

Requirements

WebGL2 only. Bloom renders into a float (RGBA16F) target so colour > 1 survives; that needs a WebGL2 context with a renderable float colour buffer. On WebGL1 the add-on throws a clear error at construction — render without it there.

Export Target in Editor

Set the export target to JavaScript v1.1 (same as the base runtime). Bloom only affects rendering — no bloom-specific export setting. For particles to glow, the effect must produce colour above 1.0 (HDR colour in the editor); colour ≤ 1 is preserved untouched.

Quick Start

Render your effect into the add-on's HDR scene target, then present() composites the bloom to the screen.

import * as PIXI from 'pixi.js';
import * as PIXINeutrino from '@neutrinoparticles/js-v1.1-pixi7';
import { NeutrinoBloomPixi7 } from '@neutrinoparticles/bloom-v1.1-pixi7';

const app = new PIXI.Application({
  width: 800, height: 600,
  autoStart: false,               // we drive the loop so bloom presents each frame
  preferWebGLVersion: 2,          // bloom needs WebGL2
  neutrinoV11: { texturesBasePath: 'textures/' },
});
document.body.appendChild(app.view);

const sceneRT = NeutrinoBloomPixi7.createSceneTarget(app.renderer, app.renderer.width, app.renderer.height);
const bloom = new NeutrinoBloomPixi7(app.renderer, sceneRT, { intensity: 1.0 });

PIXI.Assets.add({ alias: 'effectModel', src: 'export_js/my_effect.js', data: app.neutrinoV11.loadData });
const effectModel = await PIXI.Assets.load('effectModel');
const effect = new PIXINeutrino.Effect(effectModel, { position: [400, 300, 0] });

const scene = new PIXI.Container();
scene.addChild(effect);

app.ticker.add(() => {
  const sec = Math.min(app.ticker.deltaMS / 1000, 1.0);
  effect.update(sec);
  app.renderer.render(scene, { renderTexture: sceneRT, clear: true }); // scene -> HDR target
  bloom.present();                                                      // scene + bloom -> screen
});
app.start();

Turn bloom off by rendering scene straight to the screen instead (app.renderer.render(scene)). The preview-without-bloom then matches game-without-bloom.

Options

| Option | Default | Notes | |---|---|---| | intensity | 1.0 | Additive glow strength, baked into the combine at construction (editor value). |

The glow threshold is fixed at luminance 1.0 (scene ≤ 1 is preserved) and the white-core present tuning is baked to match the editor exactly.

API

| Member | Description | |---|---| | NeutrinoBloomPixi7.createSceneTarget(renderer, width, height) | Create the HDR (RGBA16F) RenderTexture the effect renders into. | | new NeutrinoBloomPixi7(renderer, sceneRT, options?) | Create the bloom over a scene target. Throws on a WebGL1 context. | | present() | Run the bloom over the scene RT and composite to the screen. Call once per frame after rendering the scene into the RT. | | destroy() | Release the bloom's GL resources. |

Algorithm

Soft-knee prefilter at half-res (only luminance > 1 glows) → 4-tap downsample down a 4-level pyramid → dual-Kawase 8-tap upsample → composite scene + additive bloom into a full-res HDR target → hue-preserving + white-core present. All targets are RGBA16F. A raw-WebGL2 port of the editor's BloomNeutrino via @neutrinoparticles/bloom-v1.1; the PIXI Filter API cannot express a mip pyramid, so bloom runs on raw WebGL2, bracketed by PIXI GL-state save/restore so it coexists with normal PIXI rendering (sprites, blend modes, masks, filters, and render textures).

Common Issues

  • requires a WebGL2 context error at construction: bloom needs WebGL2 float targets. Set preferWebGLVersion: 2; do not force WebGL1.
  • No glow: the effect's colour never exceeds 1.0, or the scene is not rendered into the HDR sceneRT. Bloom is scene-preserving — only HDR colour > 1 glows.
  • Upside-down / mirrored: present() targets the screen and flips accordingly; render your scene into the provided sceneRT, not a hand-made top-left one.
  • Black frame / bloom flashes then disappears: PIXI's autoStart cleared the canvas after present(). Use autoStart: false and drive the loop yourself, calling present() last.

Documentation

Full documentation at neutrinoparticles.com.

License

Copyright (c) Yurii Miroshnyk. All rights reserved.