Vibrant Visuals MER/PBR
Give particle textures metal, glow, roughness, translucency and depth for Bedrock Vibrant Visuals.
What a set is
Bedrock Vibrant Visuals reads a texture set beside a texture: <texture>.texture_set.json naming a _mers image whose channels are Red = metal, Green = emissive (glow), Blue = rough, Alpha = subsurface (light through the sprite), plus an optional _normal or _heightmap image (never both). Values are 0 to 255. The vanilla particles use metal 0, roughness on every opaque pixel, dim glow on bright pixels only, and subsurface on smoke and leaves; CyberStorm's presets are those numbers.
A set belongs to the texture file: every effect that uses the texture shares it. Editing the set changes all of them; make a second texture file for a different look. CyberStorm's included textures live inside the app and cannot carry a set until you save them into your pack.
Three ways in
Materials tab: Include Vibrant Visuals MER/PBRs. Turning it on opens the preset picker; Apply writes the set beside the texture at once and turns the switch on. Turning it off keeps the files and excludes the texture from export. The status line under it names the files.
Right-click a texture (Library card, texture gallery card) or use Particle > Create / edit MER/PBRs: Create opens the picker and writes on Apply; Edit opens the channel editor on the existing set. Exclude from MER/PBR marks the texture so nothing is drawn or exported for it; Include in MER/PBR reverses it.
Nothing is written when you open, preview or browse. Files are written only by Apply in the picker, Save in the editor, or the export you confirm.
Presets
Each preset is a recipe from the vanilla numbers: Matte, Glow (soul), Smoke (campfire), Leaf / petal, Petal, Gust, Spark / ember, Fire / lava glow, Magic, Dust, Water / wet, Snow / ice, Metal fleck, Flat glow. The picker shows the M/E/R/S values, a one-line description, a before/after thumbnail (an approximation; the game decides) and the exact byte size of the PNG and TGA forms. PNG or TGA is your choice; both are read by Bedrock, TGA wins when both exist.
The channel editor
Metal · Emissive · Rough · Subsurface · Depth, one at a time. Brush, Eraser, Fill and Pick work on a 0 to 255 Value with a brush size. Channel tools: From alpha (the value wherever the texture is opaque), From brightness (a glow band: pixels between the lo and hi luminance get min to max), Threshold at the Value, Invert, Levels (in and out ranges), Outline (the rim of the sprite, N pixels deep), Soften (a 3×3 smoothing inside the sprite) and Clear. Transparent pixels always stay 0.
Depth: choose None, Normal map or Height map. Emboss from alpha makes a pixel-art relief (interior high, each rim step lower); Normal from height converts the height to a normal map with a Strength; Flat resets. Painting on Depth edits the height and, when the kind is Normal, rebuilds the normal after the stroke. Bedrock keeps one of the two; Microsoft says heightmaps do not apply to texture-based objects such as items, so Normal is the default.
Undo steps back through edits; Preset… regenerates from a preset; Format switches PNG/TGA; Save writes the MERS, the depth image and the texture_set.json (overwriting the previous set); Ctrl+S saves.
In the viewport
A texture with a set draws its emissive channel as self-glow in the preview (the batch shader adds colour × E).
Vibrant Visuals preview (the icon under Skybox in the right toolbar, or Render > Vibrant Visuals preview; off by default): the emissive channel is drawn into a half-resolution target, bloomed with a mip-chain blur and added over the frame, and the sky follows Noon, Sunset, Midnight and Sunrise. Midnight uses the dark charcoal VV reference supplied from the game; with VV off, the Night sky preset uses the darker near-black reference. A box appears in the viewport's bottom strip: Time (click to step through the four times), Bloom and Glow; the full set with Radius and Revert to calibration defaults is in Preview settings; Save as default keeps your numbers.
It is an approximation calibrated against in-game captures, not the engine: no tone mapping, no exposure, no shadows or reflections, and no auto-exposure, so a glow reads the same at noon and at midnight here while the game darkens the view at noon. Dense additive bursts washing to white under bloom is the game's behaviour too. A player on Favor Performance or a low tier sees less or no bloom in the game.
Export
File > Export .json (desktop) opens Export particle: choose the destination on Export…; Include MER/PBRs is on when a set sits beside the texture (or Create MER/PBRs… first). The set files already sit beside the texture, so nothing is copied; the pack's manifest.json above the texture gets "pbr" in capabilities and min_engine_version raised to 1.21.120 when lower, by a text edit that keeps your formatting. The result line names what changed.
File > Export show to behavior pack: Include Vibrant Visuals MER/PBRs (on by default) carries each texture's set into RP/textures/<namespace>/ under the export name, writes its texture_set.json, adds "pbr" to the generated manifest and raises the engine floor; the review lists the sets. Textures excluded in the Library are skipped.
A player without Vibrant Visuals sees the plain texture; the set changes nothing for them.
How-tos
Make a spark glow: Materials > Include on, choose Spark / ember, Apply. Check the glow in the viewport; Edit MER/PBRs to paint the Emissive channel where you want more.
Soft smoke: choose Smoke; the Subsurface channel carries 191 across the puff so sunlight passes through it.
Pixel-art depth: Edit MER/PBRs > Depth > Emboss from alpha with rim 1 to 2, then Normal from height with Strength 2; Save.
Ship a finished fireworks pack: Tools > Add MER/PBRs to a pack…: choose the pack, back it up (or continue without), then every texture is listed down the left, click any to jump, with a large Before/After (zoom) in the centre and the presets down the right; Customize any value, Save as preset to reuse it, Apply to all for a one-preset pack, then Write. Or, per effect, Include on with one preset; then Export .json with Include MER/PBRs and let it patch the manifest.