Real liquid in any closed mesh: set the level, tip it, shake it, drink it. 64 liquid styles, 16 glass styles, 12 potion bottles and four example scenes. URP and HDRP.💬 Join the AnkleBreaker Community! 💬Got a question, feedback, or a feature you'd love to see? Join our Discord, we actively improve our assets based on your input, it's where we drop our latest announcements and run giveaways.👥 Discord: 👉 https://discord.gg/2D36VUmsYN🌐 Website: 👉 https://anklebreaker-studio.com🧪 A Liquid That Behaves Like Liquid 🧪Most potion assets are a coloured lump of glass. This one holds an actual volume.There is a real surface inside the container. It sits at the level you choose, stays horizontal when the container tips, sloshes when it moves and settles again, and goes down when you drink, leaving a film on the glass. Drag the level in the Scene view and watch it fill: no Play mode needed.🌊 It Is Not Tied To Our Meshes 🌊The liquid works on any closed mesh you own. Select your container, run one menu command, and it is wired: the component finds the liquid renderer, reads the volume off the mesh, and tells you straight away whether the mesh is watertight, drawing the open edges if it is not.Your own bottles, a vat, a wine glass, a jam jar, a Unity cube, a Unity cylinder.Any shape: a square decanter or a cube fills its corners instead of showing a ball of colour, and Pane Edges keeps the flat front of a glass box visible.🎨 64 Liquid Styles, Applied In One Click 🎨Every style ships twice: as a preset asset you can open, copy and edit, and as a material you can drag onto a renderer.Core — Health, Mana, Stamina, Poison, Antidote, Nectar, Springwater, Tonic.Radiant — Uranium, Bioluminescent, Emberflame, Voidfire, Frostlight, Plasma, Radium, Moonwell.Sparkling — Stardust, Fairy Dust, Gold Flake, Nebula, Diamond Dust, Champagne, Seafoam. Real drifting flecks, not a texture.Swirling — Marbled, Duotone, Oil Slick, Galaxy, and a Lava Lamp with actual metaballs.Thick — Blood Clot, Slime, Tar, Honey, Sludge, Quicksilver, Cream, Inkwell.States — Boiling, Chilled, Frozen, Dry Ice, Corruption, Smoulder.Special — Witches Brew, Ectoplasm, Liquid Gold, Absinthe, Djinn, Miasma, Layered Elixir, Tricolore.Browse them as thumbnails rendered on your own container's mesh, save your own with one button, and crossfade from one style to another at runtime as a brew comes to the boil or a potion freezes.🧊 The Container Is A Second Catalogue 🧊16 glass styles, independent of the liquid: any glass goes with any liquid.Plain — Clean, Lab, Smoked, and Lantern, which conducts the light of whatever it holds.Crystal — clear cut glass that catches a glint from every light in the scene.Old — Antique, Apothecary, Green Bottle, Cellar, Ancient.Worn — Scratched, Cracked, Crazed.Opaque — Frosted, Opaline, Sea Glass.Twelve switchable features build them: thick tint, blown glass, wall bubbles, scratches, cracks, dried rings of former levels, patina, grime and a hand print, frosting, milk glass, glints and pane edges.💫 Everything Else Is Opt-In 💫Add a component only when you want the effect. Absent, it costs exactly nothing.Foam — a head with real height that builds when you stir it and settles on its own.Effervescence — columns of bubbles that rise, spread and break at the surface.Bursting caps — domes that swell on a boiling surface, burst and throw drops in 3D.Embers — sparks born on the liquid's surface, thinning as they rise.Smoke — held in the air pocket above the liquid, or climbing out of a cauldron. A volume, so it never cuts through your geometry.Caustics — the net of light the surface folds into the liquid and onto the wall.Glow — pulsing emission, a halo that needs no bloom, and a real Light that throws the liquid's colour onto the floor.Layers — four colours stacked with soft interfaces.Cork, tap and floaters — ice cubes or petals ride exactly where the surface is drawn.🍶 Twelve Potion Bottles, Ready To Drop 🍶Three sizes of the classic flask — small, medium and large — then nine shaped bottles: crystal, donut, fire, heart, mushroom, skull, star, hourglass and triangle. Plus a cauldron.Every prefab arrives finished: glass, cork, metalwork and a liquid style, with the component wired. 60 transparent inventory icons come with them, imported as sprites.🔬 Four Scenes That Teach It 🔬The Demo — the whole catalogue in a lit case. Walk the styles and bottles, click any bottle to close up on it.The Lab — one bottle with every setting on screen. Pick the bottle and the glass from icon grids, carry it with the mouse, shake it, tip it, fill it from the tap, compare two side by side, and save the result as a preset.Containers — six everyday containers, from a wine glass to a Unity cube aquarium. Hover one to read what it shows, click it to change its level or its glass.Crystal — three bottles in Crystal glass, and the lighting that makes clear glass read as crystal.🧰 Built To Ship 🧰No solver. No particles, no grid, no SPH: a rendered volume, which is what makes a hundred of them affordable in one scene.Two motion qualities. Standard by default. Advanced adds a crest that climbs the wall, a circulation that outlives a spin, a hard stop that settles with a quiet tail, and it holds the amount of liquid as the container rolls over.A knock lands by itself — with a collider and a rigidbody, setting a bottle down rocks the liquid, no code. A bottle held in a character's hand or an XR grab sloshes too.Hook your own sounds — an event fires when the liquid hits the wall or something lands on the surface, with the point and the strength.Gravity is a setting — a bottle on a rolling ship still holds its liquid the right way up.The inspector tells you what is wrong and fixes it with a button.42 pages of documentation inside the editor, plus a welcome window and a one-click hub.🧩 Render Pipelines 🧩The same styles and prefabs in URP (Unity 2022.3 LTS / URP 14+) or HDRP (Unity 6 / HDRP 17+). In an HDRP project, one click converts the example scenes in place. The Built-in pipeline is not supported.📦 What You Get 📦12 potion models and 14 prefabs, including a cauldron64 liquid styles and 16 glass styles, as presets and materials60 transparent inventory icons12 shaders and 11 components4 example scenes — Demo, Lab, Containers, CrystalA 42-page documentation window inside UnityA briefing for AI coding assistants, so yours uses the real API🎬 About The Videos 🎬The alchemist's workshop video is dressed with Stylized Cauldron - 3 Tiers - AAA quality, a separate AnkleBreaker asset, not included here. The liquid, smoke, embers and bottles in it are this package.🛠️ And also quality & productivity tools for Save Systems, Character Customization, Ballistic Systems, Popups & Notifications, Minimaps, Maps & Compasses, and more.Compatibility
Render pipelines: URP 14+ and HDRP 17+, with native passes in the same shaders. Presets and prefabs follow the active pipeline automatically. Built-in, URP below 14 and HDRP below 17 show magenta.
Unity: 2022.3 LTS or newer for URP; Unity 6 for HDRP. Linear colour space.
Tested on Unity 6000.0.68f1 with URP 17.0.4 and HDRP 17.0.4, and on Unity 2022.3 with URP 14, in separate projects; the four example scenes checked in a player.
No third-party dependencies. Hand-written HLSL. The installer recognizes either pipeline.
Mobile is not claimed, because it has not been measured.
Models
12 FBX. 22,046 triangles for the whole set, from 868 (Triangle) to 3,424 (Time, the hourglass).
Each bottle is 3 to 6 separate meshes: Shell, Cork, Glass (or Glass_Outer plus Glass_Inner) and Liquid.
The Liquid mesh of all twelve bottles is a closed, watertight volume. That is the condition of the technique: the fill clips the mesh at the surface and shades the back faces it opens, so a hole in the mesh is a hole in the liquid.
Bottles are 16 to 22 cm tall, real-world scale (FBX Scale Factor 0.35).
No LODs, no colliders, no rigs, no animation clips, no blend shapes. Lightmap UVs are not generated; the liquid is dynamic and never lightmapped.
Textures and icons
22 PNG at 1024 x 1024: 11 albedo (_A, sRGB) and 11 Unity mask maps (_MS, red metallic, alpha smoothness, linear). No normal maps: flat-shaded by design.
The glass and the liquid use no texture at all: both are procedural.
60 icons at 256 x 256, imported as Sprite (2D and UI): twelve bottles in five fill states.
Shaders
12 shaders. URP procedural passes use shader model 3.0; HDRP uses shader model 4.5.
Liquid: opaque, alpha-clipped, double sided, with ForwardLit, ShadowCaster, DepthOnly, DepthNormals and MotionVectors passes in URP, so shadows, depth, SSAO and TAA respect the fill level.
Glass: transparent, premultiplied, double sided, casting no shadow on purpose: the opaque liquid casts the real one.
URP features covered: Forward, Forward+ and Deferred, per-vertex additional lights, soft shadow quality levels, Light Layers, Adaptive Probe Volumes (Unity 6), XR single-pass instanced.
The other shaders (halo, smoke, caps, drops, embers, light cookie, Container Surface) are placed by the components that use them.
Every effect is a shader keyword and compiles out when unused. With everything off, the liquid fragment program is 72,654 bytes and the glass 2,966 bytes.
SRP Batcher compatible materials, and liquid materials ship with GPU Instancing enabled. Per-container fill and slosh go through a MaterialPropertyBlock; instancing is why a hundred containers on one material still batch.
HDRP setup
Enable Transparent Backface in the HDRP asset and Refraction in camera Frame Settings.
The example scenes were authored in URP. An HDRP overlay ships inside the package: on import in an HDRP project a window lists every file it would write and converts the four example scenes and their grades in place, GUIDs kept. Reopen it from Tools > AnkleBreaker > Fluid Volumes and Potions > Render Pipeline Upgrade.
For transparent runtime icons, use the R16G16B16A16 Color Buffer Format.
What it asks of your URP asset
Glass refraction and frosting read the Opaque Texture and the Depth Texture. Without them refraction simply stops: nothing goes black. The inspectors check both and offer a button.
Transmission draws at queue 2950, outside the depth prepass: post-process depth of field will focus a transmissive bottle at the depth of the wall behind it.
Cast Light needs Light Cookies (on by default). The cookie is drawn on the GPU at 128 x 128; no texture exists when the feature is off.
Scripts
Assemblies: AnkleBreaker.FluidVolumesAndPotions, .Editor and .Installer.Editor, plus an optional HDRP assembly. The example scenes' code lives under 2-Examples/: delete that folder and nothing else breaks.
No URP or Input System dependency in the base runtime.
11 components: FluidVolume, FluidVolumeMotion, FluidCork, FluidEmbers, FluidFaucet, FluidFloater, FluidHalo, FluidLight, FluidPour, FluidSmoke, FluidSurfaceDomes.
Public API on FluidVolume: Fill, AnimateFillTo, Drink, Sip, Refill, Splash, Ripple, Knock, ApplyFeel, ApplyPreset, TransitionTo, SetColors, GravityUp, Quality, ContainerShape, Quantity01, Capacity, Volume, SurfaceHeightAt, SurfaceOffsetAt, SurfaceNormalAt, SurfacePlane, and the OnEmptied, OnFillAnimationCompleted and OnSurfaceEvent events.
A volume profile per container (about a thousand weighted cells of its inside) gives the capacity in litres. Bottles and cauldron come prepared.
Works with pooling, SetActive and Time.timeScale at 0; no garbage per frame in the Demo.
Cost
Whole component step per container per frame, editor, Release scripts, Ryzen 7 5800X: Advanced 13 to 21 microseconds still, 75 to 95 carried, 130 to 150 under the hardest rock of the test bench. Standard costs less.
In a player (RTX 3070, 1080p), fifty Advanced bottles on screen cost about 1 ms more GPU than fifty Standard ones (3.5 against 2.5 ms).
Limits, stated plainly
Raster rendering only. No path-traced or ray-traced material passes. In HDRP the liquid has no motion-vector pass; SSR, SSGI and decal reception are not validated.
The liquid mesh must be closed. The outer shell does not: the cauldron holds a closed puck of liquid.
No mixing of two liquids in the same volume, and no UI or HUD variant.
Third-party content in the media
The workshop video is dressed with Stylized Cauldron - 3 Tiers - AAA quality (AnkleBreaker), sold separately, not included: Asset Store page.
One console message
On Unity 6.1+ the liquid shader logs one deprecation warning about _FORWARD_PLUS. It is deliberate: that keyword carries Forward+ lights on 2022.3 and 6.0, and _CLUSTER_LIGHT_LOOP sits beside it for 6.1+.




