Skip to content

Releases: loksangho/proceduralfx-studio

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 21:30

Volume and Heightfield Wrangles, an L-system, and a performance monitor.

Wrangles for volumes and terrains

  • Volume Wrangle (Volumes menu) runs VEX over every voxel: @density (fog) or @surface (level set), with @P at the voxel's centre. Positions stay put; removepoint() switches a voxel off. The viewport look follows the new values. The examples menu has fade with height, noise breakup, blur and a sphere mask.
  • Heightfield Wrangle (Terrain menu) runs VEX over a terrain's points: @height, @mask and its other attributes, with x and z fixed. It works on a group's points too. The examples menu has ripples, flatten above a height, mask from height and smoothing.
  • New VEX functions read a volume, or a terrain's "height" and "mask", anywhere: volumesample(), volumegradient(), volumeindex(), volumepostoindex() and volumeindextopos().

L-system (Generators menu)

  • Rewrites a premise by rules (one per line, e.g. A=F[+A][-A]) for a number of generations, then draws it with a 3D turtle as curves with a tapering width. Resample, the groom nodes and rendering work on the result.
  • It supports the turtle symbols F f + - & ^ \ / | [ ] ! ", amounts such as F(0.5) and +(45), and several rules for one symbol picked at random, optionally weighted. Angle randomness and a seed make each plant different.
  • Presets: a 3D tree, a fractal plant, grass, the Koch curve and a 3D Hilbert curve.

Performance Monitor

  • Windows → Performance Monitor times every node cook: each node's own time (without its inputs), how often it cooked, its last, average and slowest cook, and its share of the total, slowest first. Click a node to go to it.
  • Show cook times on nodes writes each node's latest cook time next to it in the network, in amber from 10 ms and red from 100 ms.

AI assistant

  • The assistant can build with the new nodes: wrangle code, and L-system premises and rules.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 12:57

An AI assistant that builds node networks from a description, and Merge with any number of inputs.

AI assistant

  • Click ✨ AI in the toolbar and describe what you want, or a change to your scene, e.g. 200 rocks of random sizes scattered on a hilly terrain. The assistant adds and wires real nodes, cooks them to check point counts and errors, looks at the viewport, and fixes what's wrong.
  • It works on a copy of your scene. Accept the result, and undo it in one step if you change your mind, or Discard it.
  • Choose how it runs under ⚙:
    • ProceduralFX credits: sign in with your email, no API key needed. Pay with a monthly plan or top-ups, in Australian dollars. The panel shows what each request cost. Details are at www.build3dstudio.com.
    • Your own Claude API key. It's stored only on your computer.
    • Another service, or a model on your own computer: OpenAI, Google Gemini, OpenRouter, Groq, Mistral or DeepSeek with their API key, or a local model with Ollama, LM Studio, llama.cpp or vLLM. List models fetches what the server offers.
  • Help → Documentation has a new AI assistant section.

Nodes

  • Merge and LOP Merge take any number of inputs. The input bar always has one free slot: drop a wire on it, or onto the node, to add another.
  • Merged geometry keeps its normals and shows white rather than black where an input has no N or Cd.
  • Copy to Points rotates copies by an orient quaternion on the points, as well as by a single Y rotation in degrees.
  • New Attribute Wrangles run over points by default.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 05:55

Quads and polygons, expressions in parameters, Alembic, a flipbook, and new everyday nodes.

Polygons

  • Geometry is made of polygons, not just triangles: Grid, Box, Tube, Cone, Sphere, Torus and Capsule make quads (caps are single polygons), and the viewport shows polygon edges without the diagonals.
  • Primitive numbers mean polygons everywhere: picking selects whole faces, group patterns (0-5, @primnum, @P), Group Create, the spreadsheet and VEX run per polygon. addprim() takes any number of points.
  • OBJ, USD and FBX import keep their quads and n-gons; OBJ, USD and Alembic export write them. Subdivide splits polygons into quads, Extrude works on whole polygons with a quad per side wall.

Expressions in parameters

  • Type an expression into any number field, e.g. $F or $FF in Scatter's seed for a new pattern every frame: VEX with $F, $FF, $T and $FPS (sin($T*2), rand($F)*10, fit(...)).
  • Right-click a parameter → Delete Channel removes its expression and keys. The Animation section shows and edits each parameter's expression.

Alembic

  • File Import reads .abc meshes and point clouds (with uv, N, Cd, ids and widths), animated at the current time; File Export writes the timeline range into one animated .abc.

Flipbook

  • 🎞 Flipbook in the Timeline captures the viewport for every frame of the playback range, then plays it back; save the frames as PNGs, or as an MP4 with FFmpeg installed.

New nodes

  • Extract Centroid, Match Size, Convert Line, Metaball, Connectivity, Resample, and Jitter is now Point Jitter with per-axis scale.
  • Attribute Randomize takes a custom attribute: any name, class (points, primitives, detail), size (1 to 4) and range, set or added. orient is now a proper random rotation.
  • Object Merge picks sources from a menu per object, including other nodes in its own network.

Also

  • Quitting with unsaved changes asks to save (also on Cmd+Q); the window title marks unsaved changes.
  • The cone is a closed solid now (one apex point, an outward base), so it fractures properly.
  • Viewport shading keeps sharp edges sharp (a 60° cusp angle without N), so boxes and fractured pieces look faceted, not blotchy.
  • Fixed: Blast and Clip scrambled primitive attributes (materials, groups) of what they kept; viewport corner colours and UVs were off by one corner.
  • Software Update falls back to the release pages when GitHub's API is rate limited.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 00:30

Rigid-body destruction with Bullet, Hydra rendering, and the Mac app now runs on macOS 14 Sonoma.

Rigid bodies

  • RBD Material Fracture: outputs the fractured geometry, glue constraints between neighbouring pieces, and convex proxy geometry, and keeps the materials of the original surfaces (inside faces get their own group).
  • RBD Bullet Solver: simulates the pieces from those three inputs plus a collision input, and passes all three through; glue constraints break when the force through them exceeds their strength.
  • RBD Configure: sets density, friction, bounce, active state and initial velocity on the pieces.
  • Transform Pieces: moves each piece by the matching point of a template (for example the solver's packed output).

Geometry

  • Extrude: Output Front, Back and Side, with front/back/side groups, like Houdini's PolyExtrude.
  • Pack and Unpack: pieces as lightweight packed points, unpacked automatically in the viewport and renders.
  • Point Deform: deforms geometry by how a lattice or point cloud moves from its rest position.
  • Merge takes any number of inputs.

Rendering

  • Through Hydra: render the STAGE with MoonRay's Hydra render delegate (hdMoonray), which reads the stage as USD, as USD-native apps do. In Render Settings or a MoonRay Render node, tick "Render the STAGE", then "Through Hydra".

Also

  • macOS 14: the Mac app runs on macOS 14 Sonoma and later (it needed the latest macOS before).
  • The animation pane names each parameter (size.x, intensity…) instead of parm0, parm1…
  • Renamed nodes still show their type.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 20:09

Compositing and task graphs, For-Each loops, materials per group, and built-in documentation.

New contexts

  • IMG: compositing in COP Networks, shown in the viewport. File, Render (the latest MoonRay render), Constant, Ramp, Noise, Composite (over, add, multiply, screen…), Chroma Key, Color Correct, Levels, Invert, Blur, Sharpen, Glow, Edge Detect, Vignette, Grain, Transform, Crop, Resize, Switch and File Output (EXR, PNG, JPG; one file per frame with $F).
  • TASKS: task graphs in TOP Networks. Frame Range, Wedge (vary any node's parameter), Fetch (run a MoonRay render or File Export per work item), Command, File Pattern, Wait for All and FFmpeg Encode. Cook the last node; each work item shows as a dot that turns green when done.

Geometry networks

  • Flow Control: For-Each Connected Piece, Named Primitive, Point, Primitive and Number, For Loop with Feedback, and Compile Blocks (cached, and loops inside run in parallel).
  • Material: assign MAT materials to groups of primitives, overriding the object's material, in renders, the viewport and USD.
  • Object Merge: bring in other objects' geometry, optionally in this object's space.
  • Measure: area, perimeter, point area, curvature, gradient, volume and curve length.
  • Add: place points at given positions, add them to an input, or delete the input's polygons but keep its points.

Also

  • Help → Documentation: every node and VEX function on a searchable web page, generated from the app.
  • VEX: function overloading (same name, different parameter types).
  • Node names: rename any node (F2, or the Name field).
  • Searching: the right-click add menu has a search box; TAB search matches every word and category names.
  • Shader nodes no longer appear in geometry networks.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 06:05

KineFX rigging and animation, and viewport gizmos for Transform, Pyro and FLIP.

KineFX (new menu)

  • Skeleton: a 27-joint biped in T-pose (hips, spine1, thigh_l, shin_l, foot_l, upperarm_r…), a chain, or a tail. Joints are points with parent and transform, so Wrangles can edit them (3@transform), and the viewport draws them as bones.
  • Rig Pose: rotate and move up to 8 joints, picked from the skeleton's joint list; children follow, and every value can be keyframed.
  • Two Bone IK: bends a root → mid → tip chain so the tip reaches a goal, with a pole for the bend direction and an option to keep the tip level.
  • Procedural Motion: a biped walk cycle (with forward travel), a wave down chains and tails, or idle breathing.
  • Skeleton Blend: mixes two poses of the same skeleton.
  • Joint Capture and Bone Deform: skin a mesh to a skeleton (up to 4 joints per point) and deform it with the animated skeleton.

Viewport

  • Selecting a Transform node shows move, rotate and scale handles (W, E, R), placed correctly inside moved, rotated or scaled objects.
  • Pyro and FLIP domains show as a box: drag a face to resize that side, or the centre to move it.
  • FLIP has a domain now. By default it's the emitter's bounds as before; drag the box (or set a centre and size) for a closed tank the water can spread out in.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:52

Shaders and a Material Builder, whitewater, destruction, crowds and muscles.

Shading (MAT)

  • Principled Shader: one physically based surface for MoonRay: base colour, metallic, roughness, transmission, subsurface, sheen, clearcoat, emission, opacity, anisotropy and iridescence, with base colour, roughness and normal map textures, or the geometry's point colour.
  • Presets for common materials: water, glass, frosted glass, ice, diamond, honey, soap bubble; gold, silver, copper, brass, aluminum, brushed aluminum, chrome, steel, mirror; plastic, glossy plastic, rubber, car paint; porcelain, ceramic, marble, jade, concrete, clay; skin, wax, milk, chocolate, wood, leather, mud; velvet, cotton, paper; lava and neon.
  • Toon Shader: cel shading with banded shadows and a toon highlight (Anime, Cel 3 Tone, Soft Toon, Toon Metal).
  • Hair Shader for grooms (brown, blonde, black, red, grey, fur) and Pyro Shader for smoke and fire volumes (Fire, Smoke, Explosion, Clouds, Steam).
  • Material Builder: wire Image Texture, Normal Map, Point Attribute, Noise, Cells, Checker, Color Ramp, Mix and HSV Adjust nodes into a Surface Output.
  • Renders now get the mesh's UVs and point colour, and image textures are converted automatically to the tiled, mip-mapped format MoonRay needs.

Simulation

  • Whitewater Solver: spray, foam and bubbles from a FLIP simulation, with spray, foam and bubble groups. Renders as small spheres.
  • FLIP is now a cached solver: playing forward only computes the new frames, long simulations are no longer squeezed into a fixed step count, and particles carry their velocity v.
  • Crowd Solver: agents that wander, flock, seek a goal, keep their personal space, walk on a ground mesh and go around obstacles. Shows walking mannequins, or points for Copy to Points.
  • Muscles: Muscle (spindle or strap shaped, with animatable activation that bulges it), Muscle Solver (jiggle with pinned tendons) and Muscle Skin (skin that follows the muscles under it).

Destruction

  • Material Fracture: concrete chunks, glass that cracks out from an impact point, or wood that splinters along the grain. Pieces get piece for the RBD Solver; cut faces are in the inside group.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 10:38

A small fix for the Linux / WSL updater.

Fixes

  • Linux / WSL: the in-app updater failed with "Failed to open file /tmp/ProceduralFxStudio-x86_64.flatpak". The sandbox's /tmp is private, so the downloaded update is now saved in the app's cache folder instead, where Flatpak can install it.

Updating from 0.3.0 or earlier on Linux / WSL: the updater in those versions has this bug, so install 0.3.1 by hand once:

curl -LO https://github.com/loksangho/proceduralfx-studio/releases/download/v0.3.1/ProceduralFxStudio-x86_64.flatpak
flatpak install --user --reinstall ./ProceduralFxStudio-x86_64.flatpak

After that, updates install from inside the app. macOS isn't affected.

See 0.3.0 for Boolean, terrain, Attribute VOP and the configurable workspace.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 09:59

Booleans, terrain, node-based VEX and a configurable workspace.

Modelling

  • Boolean: Union, Intersect and Subtract (A − B) of two closed meshes. Exact keeps sharp edges and flat faces; Volume remeshes through distance fields and copes with dense or leaky input. The result's faces are tagged a_faces / b_faces.

Terrain (new menu)

  • Terrain: a heightfield grid of any size and resolution.
  • Terrain Noise: fBm, ridged, billow, cellular and domain-warped noise, with octaves, roughness, element size and blend modes.
  • Terrain Erode: hydraulic erosion (rivers and gullies) and thermal erosion (talus slopes). Writes flow and debris attributes.
  • Terrain Terrace: stepped plateaus with adjustable sharpness.
  • Terrain Mask: a 0–1 mask from height, slope, flow or debris, with falloff, blur and combine modes. Noise and Terrace can be limited to it, and Attribute Paint can paint it.
  • Terrain Colorize: sand, grass, rock and snow by height and slope, in the viewport and in MoonRay renders.

VOP

  • Attribute VOP: build VEX with nodes. 63 operations (math, vectors, geometry lookups, point clouds, noise, logic, snippets), each with a meaningful name in the menus and on the node.

VEX

  • vector4, matrix3 and matrix types, p@, 3@ and 4@ attributes, quaternions (quaternion, qmultiply, qrotate, slerp, eulertoquaternion…), maketransform, lookat, invert, determinant and more.
  • ch(), chf(), chi() and chv() add sliders to the node, like Houdini's spare parameters.
  • Regular expressions (re_match, re_find, re_replace, re_split), wnoise (Worley) and anoise noise, and more string and array functions.

Workspace

  • Panes can be rearranged, split, tabbed and popped out into their own windows.
  • Save and load named layouts from Windows → Layouts.

Fixes

  • The status bar names the simulation being cooked instead of always saying FLIP.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 06:14

A big feature release: hair grooming, Vellum, groups, HDRI lighting, UV tools and more.

Simulation

  • Vellum Solver: cloth, hair, softbody and grains (XPBD), with colliders, a ground plane, self-collision and pinning (f@pin, a pin group, or pins that follow animation).
  • Particles now take a source geometry and a static collider, and simulate properly (drag, bounce, friction).
  • Colliders work reliably even when something gets deep inside them, and are built once instead of every frame.

Grooming

  • Hair Guides, Guide Process (length, bend, frizz, curl, smooth), Hair Generate (clumping, frizz, tapered width) and Hair Deform (hair follows an animated skin).
  • Attribute Paint: paint density, length, clump, frizz or mask on the skin in the viewport to steer the groom.
  • Hair renders in MoonRay as curves.

Groups

  • A Group field on every node it makes sense for, like Houdini. Use names, ranges (0-10 20-40:2), expressions (@P.y>0) and exclusions (^name).
  • Pick a group's points or primitives in the viewport with ⬚ Select.
  • New Group Create node, and VEX inpointgroup / setpointgroup / inprimgroup / setprimgroup.

Lighting and shading

  • Environment Light: HDRI image-based lighting in MoonRay, matched in the viewport (lighting and background).
  • Normal node, and the viewport shades with stored normals.
  • UV Texture, UV Transform and UV Quick Shade (checker or image shown in the viewport).

Modelling and VEX

  • Scatter points on a surface or inside a closed mesh, with relaxation.
  • VEX: array slicing (a[1:3], a[::-1]), point clouds (pcopen, pcfilter, pciterate…), xyzdist, minpos, intersect, curlnoise and more. Point lookups are much faster.

App

  • Save (⌘S) and Open Recent; scenes are now .pfs files (old .mhip scenes still open).
  • The viewport now uses a depth buffer, so overlapping surfaces always draw in the right order.
  • Built-in updater, new app icon.

Linux / WSL: this version adds network access to the Flatpak so the updater can reach GitHub. If you're on 0.1.0, install this version manually once.