TL;DR
Plume là thư viện VFX mới cho Three.js, vừa được ThetaForgeCo công bố trên X ngày 25/04/2026. Tác giả gọi nó là "Niagara cho Three.js" — ám chỉ hệ particle module-based + GPU events nổi tiếng của Unreal Engine. Điểm khác biệt: chạy thuần WebGPU + TSL, không có CPU fallback, không có JS math per-particle, và quan trọng nhất — chained emitters thông qua atomic event buffer ngay trên GPU. Bản release đầu tiên dự kiến tuần đầu tháng 5/2026.
Có gì mới
Trong khi các thư viện particle phổ biến cho Three.js như three.quarks hay wawa-vfx phần lớn vẫn dựa vào WebGL và CPU update, Plume đặt cược toàn bộ vào WebGPU compute pipeline. Mỗi emitter là một Structure-of-Arrays storage buffer kết hợp với hai compute kernels: một cho spawn, một cho update. Bạn lắp ráp behavior bằng cách wire các module lại — thêm module thì có hành vi, gỡ ra thì mất.
Vì sao quan trọng
Đối với dev game web hoặc creative coder, đây là lần đầu tiên paradigm Niagara/Unity VFX Graph được port sang Three.js ở mức độ trung thực này. Các thư viện hiện có hoặc chạy CPU (giới hạn tầm 50k particles theo benchmark thực tế trên hardware phổ thông), hoặc thiếu cơ chế emitter chaining thực sự. Plume đẩy giới hạn đó lên hàng trăm nghìn particles mà không đụng main thread, mở đường cho hiệu ứng phức hợp như pháo hoa nhiều tầng, vụ nổ + mảnh vỡ, hay các spell chain mà trước đây chỉ engine native mới làm mượt được trong browser.
Kỹ thuật cốt lõi
| Thành phần | Chi tiết |
|---|---|
| Backend | WebGPU + TSL (Three Shading Language) |
| CPU fallback | Không có |
| Per-particle JS math | Không có |
| Particle scale target | Hàng trăm nghìn |
| Cấu trúc emitter | SoA storage buffer + 2 compute kernels (spawn / update) |
| Module catalog (đã hé lộ) | spawn rate, init velocity, gravity, drag, color-over-life, ... |
| Event system | Atomic append vào event buffer khi particle chết |
| Emitter chaining | Emitter khác consume events làm spawn trigger — full GPU, zero round-trip |
Vì sao SoA + compute kernels là deal khác biệt
Cấu trúc Structure-of-Arrays (mỗi attribute là một buffer riêng: positions[], velocities[], ages[]) là format GPU thích — cache-friendly khi compute shader đọc song song hàng nghìn particle cùng lúc. Ngược lại, AoS (Array-of-Structs) như cách CPU code thường viết sẽ làm GPU phí băng thông. Việc Plume cam kết SoA + compute kernels từ ngày đầu nghĩa là performance ceiling sẽ cao hơn các port WebGPU làm vội. Cộng thêm atomic event buffer — primitive đặc trưng của compute shader, không có cách nào emulate sạch trên WebGL — và bạn có một kiến trúc về bản chất chỉ tồn tại được trên WebGPU.
So sánh với các thư viện hiện có
| Library | Backend | Scale điển hình | Event chaining |
|---|---|---|---|
| Plume | WebGPU + TSL | 100k+ | Có — atomic event buffer trên GPU |
| three.quarks | WebGL, CPU update | ~50k | Sub-emitter (CPU-driven) |
| wawa-vfx | WebGL / R3F | Nhẹ–trung bình | Không native |
| vfx-composer | WebGL / shader-composer | Trung bình | Hạn chế |
Differentiator rõ nhất là event-driven chained emitters chạy hoàn toàn trên GPU. Đây cũng chính là feature làm nên tên tuổi Niagara trong Unreal: emitter A chết → ghi event → emitter B đọc event → spawn. Plume đem mô hình đó vào browser.
Use cases
- Pháo hoa nhiều tầng: rocket emitter chết → spawn burst emitter → burst chết → spawn sparkle trails. Toàn bộ chain trên GPU.
- Vụ nổ + debris: impact emitter chết → spawn debris + smoke từ death events.
- Compound effects cho game web: spell chains, weapon impacts, environmental particles cho Three.js games.
- Interactive installations: art piece, product showcase cần 100k+ particles mà vẫn 60fps.
Đối tượng hưởng lợi nhất: indie web-game dev dùng Three.js, R3F user muốn VFX chất lượng Unity/Unreal, và creative coder cần compute particles ở quy mô lớn.
Hạn chế & tình trạng phát hành
- WebGPU-only. Không có WebGL fallback — browser thiếu WebGPU (Safari cũ, một số mobile) sẽ không chạy được.
- Chưa public: tại thời điểm bài viết, chưa có repo, chưa có npm package, chưa có docs. Toàn bộ thông tin đến từ một tweet teaser.
- API ergonomics chưa rõ: chỉ mới biết kiến trúc (SoA, kernels, event buffer). Module catalog đầy đủ và DX phải chờ release.
- Pricing & license: chưa công bố.
Sắp tới
Tác giả ThetaForgeCo đang nghỉ phép và dự kiến trở lại ngày 2/5/2026. Bản release đầu tiên kỳ vọng tuần đầu tháng 5/2026. Chưa có roadmap công khai, nhưng dựa trên positioning "modern VFX library", có thể đoán hướng phát triển tiếp theo gồm mở rộng module catalog, R3F bindings, và có thể là một visual editor (như cách three.quarks hay Niagara đã đi). Nếu bạn đang xây Three.js game hoặc immersive web experience cần particle scale lớn, đây là dự án đáng theo dõi sát từ đầu tháng 5.
Nguồn: @ThetaForgeCo trên X, Wawa Sensei — TSL GPGPU, Three.js TSL docs.