← Goo Engine

Every feature

Everything Goo Engine adds on top of Blender, and why we added it.

The current build is based on Blender 4.4, so it also includes all native Blender 4.4 features (see Blender’s 4.4 release notes ↗). Goo Engine renders with its own engine built on EEVEE Legacy; Cycles is not included.

Shading and lighting

The Goo Engine menu

Every Goo Engine node lives in its own Goo Engine section of the Add menu, so it’s clear which nodes aren’t in native Blender.

The Goo Engine section of the Add menu

Shader Info node

The biggest addition for toon shading. Shader Info splits EEVEE’s lighting into separate outputs: Diffuse Shading, Cast Shadows, Self Shadows and Ambient Lighting, plus a Half-lambert factor (added in 4.1.1).

Why: the usual toon setup in Blender (Diffuse BSDF → Shader to RGB → Color Ramp) bakes all of that together. Cast shadows bring shadow terminator artifacts, the jagged peaks along the shading edge, so you are forced to choose between cast shadows and clean shading. The world shader also brightens the diffuse result, which moves your toon threshold and tints it every time you change the world color or add an HDRI.

With the outputs separated, you can keep shadows cast by other objects and drop self shadows, which are what cause the terminator artifacts. Ambient lighting stays out of the threshold entirely, so you can light the environment without breaking your characters’ shading.

The Shader Info node with the Half-lambert factor output

Half Lambert (4.1.1): a new Half Lambert output socket for the Shader Info node, giving you full control over the terminator.

Half Lambert only works for one light at a time per light group. Otherwise, it gets a bit messy.

Self shadows take extra memory, so they are off by default. Enable Check Self Shadowing in the material settings before Cast Shadows and Self Shadows will separate.

Light groups

Make objects respond only to certain lights. Light groups appear in both the Light and Material properties and are name based: create a group on a light, then link the same name on a material. Everything belongs to a default group, so nothing changes until you take a light or material out of it.

Each group link on a material also has its own shadow toggle, so a material can ignore the shadows from one light group without turning off that light’s shadows for the rest of the scene.

Why: shade characters differently from environments, the face differently from the body, the hair differently from the eyes. This is the control NPR needs and physically based lighting doesn’t give you.

The Light Groups panel with the Shader Info node
The Light Groups panel, used together with the Shader Info node.

Blender has since added Light Linking to EEVEE Next, and we helped bring it in. Goo Engine keeps light groups and hides the linking panels to avoid conflicts.

Shadow ID filtering

Adds self-shadow testing options to materials and the Shader Info node. Check Self Shadowing filters shadows cast by the object onto itself. If self shadowing fails on some objects, enable High ID Bit Depth in the scene settings to use 32-bit shadow IDs.

Set Depth node

Works like the In Front option, except you choose how far in front. The geometry doesn’t move; the shader’s pixel depth is pushed forward or back by the View Depth input, so an object can draw in front of something that is physically in front of it.

Why: we use it on eyebrows so they show through the hair. You could composite that later, but with Set Depth the animators see it in the viewport and in playblasts, so they can judge acting the way it will look in the final.

The Set Depth node in Goo Engine 4.4

Plug it in at the end of the node tree. Set the material to Alpha Blend (Opaque won’t work) and enable Show Backface and Backface Culling to avoid Z-sorting issues. A Camera Data Z depth with a Math node is a typical driver for View Depth.

Light Info node

Pick a light object in the node to read its Light Color and Light Power inside a material. Perceptual Power is the power weighted by how bright the light’s color actually looks (its perceived lightness), so a white light reads at full power and a deep blue one reads lower.

Changing a light value updates in real time, with no shader recompiling. It also supports animated energy and color, but the light object needs animation data to update in the shader, so adding an initial keyframe on its scale, location or anything else is necessary first.

The Light Info node in Goo Engine 4.4

Screen space and compositing

Screenspace Info node

A distilled form of the refraction node. It gives a material the Scene Color and Scene Depth of whatever is behind it, so you can composite in real time on the surface itself.

Feed View Position with Camera Data to read straight through; add a vector to offset it for refraction-style distortion. Change hue and saturation of what’s behind, or add the depth for a fog portal. Scene Depth is in meters and will look white because it’s above 1, so use a Map Range. It is also what our screenspace shadows are built on.

The Screenspace Info node in Goo Engine 4.4Screenspace Info node used to distort the scene behind a plane
Offsetting the View Position samples the scene behind a surface.

Curvature node

Made to replicate what painters do: highlight the bevels that wear and tear puts on every hard-surface corner, which anime uses for both definition and prettiness. Without it, hard-surface NPR is a dead giveaway that it’s 3D.

Outputs Scene Curvature (acute angles and edges) and Scene Rim (the silhouette). Samples sets how many samples are taken (1 is often enough), Sample Radius how far out from the center it looks (around 0.1), and Thickness the rim width (around 5). Combine both with an Add node and color dodge or multiply onto your shader.

The Curvature node in Goo Engine 4.4Curvature node outputs on three sets of cubes
Curvature, cavity and rim from one node.

Best for hard surfaces. On subdivided organic meshes the curvature output gets noisy, but the rim output works great on characters.

Holdout for transparent materials

Blender’s holdout is broken for transparent materials. Set a collection to holdout and it overrides the whole material as a mask, so a transparent FX plane in front blocks everything behind it.

Goo Engine reads the original shader’s alpha and uses it to drive the holdout, limiting it to what was opaque. The transparent parts draw as they normally would, so you get clean render passes for stylized elements like image planes and effects.

Material and world overrides

Select material and world overrides per view layer, replacing all shaders with a single shader. Useful for render passes without having to duplicate geometry.

View layer sample override

Set EEVEE render samples per view layer, reusing the view layer samples setting from Cycles.

Why: cel-shaded characters and effects don’t need soft shadows, so we render those layers at 1 or 2 samples and keep backgrounds higher. It has cut our render times dramatically.

Other changes

  • Shift-click a collection’s visibility to force-enable all of its child collections.
  • The radiance buffer is copied between the Opaque Refraction and Transparent passes, so screen space reads stay correct across both.

Procedural textures

SDF nodes

Signed distance fields are essentially infinite-resolution gradient maps. Sdf Primitive gives you prefabricated procedural shapes, 40 in 2D and 3D, from circles and boxes to stars, hearts and moons. Add a Greater Than node for a crisp, clean shape at any resolution.

Sdf Operator combines and shapes distances (union, intersect, difference, blend, onion, pipe, engrave, groove and more), Sdf Vector Operator transforms the space they’re built in, and Sdf Noise adds detail. Based on the SDF nodes patch co-authored by Charlie Jolly.

The Sdf Primitive, Sdf Vector Operator, Sdf Operator and Sdf Noise nodes

Hex Grid Texture

A fully procedural hexagon repeating texture that functions similar to the Brick Texture node, with multiple options for the generation pattern: hexagons or dots, horizontal or vertical. The Cell UV and Cell ID outputs let you vary each cell.

The Hex Grid Texture node in use

Water Ripples node

A procedural animated texture that simulates water ripples, water flow and water caustics without any dynamic simulation. Modes: Drops, Ripples, Flow and Caustic. Outputs a Distorted Vector to feed other textures, and a Mask.

The Water Ripples node in use

Twirl node

Creates fully procedural twirl textures by twisting a vector around a center point.

The Twirl node in use

OKLab Color Ramp

A special OKLab Color Ramp node in the Converter menu. Its mixing algorithm gives a much cleaner transition between colors, with better hue shifting.

The OKLab Color Ramp in the Converter menu

Adding OKLab to Blender’s own Color Ramp would risk versioning and other issues, so we intentionally made it a separate node.

The Light Info, Hex Grid, Water Ripples, Twirl and OKLab nodes were originally written by Joseph and Thorn.

Other changes

  • Scene Time node outputs the scene’s Start Frame and End Frame.
  • Float inputs accept inf and -inf.

Geometry nodes

  • Active camera override A second camera on the scene that only the Active Camera node in geometry nodes uses, with an option to ignore it. We added it for our environment file pipeline.

Grease Pencil

Goo Engine now uses Grease Pencil 3.0, and our Grease Pencil features have been ported over to it.

Texture Mapping randomize

Without this, adding custom textures to lineart repeats the texture across each stroke in exactly the same way, which makes the repetition very noticeable and unusable for organic-looking lines. New Randomize options on the Texture Mapping modifier (Stroke Offset, Stroke Scale, Fill Rotation, Fill Offset, Fill Scale and Seed) vary the texture per stroke, so you can finally use one custom texture on lineart without obvious repetition.

Watercolor house scene with textured Grease Pencil lineart
Watercolor scene demo by Soranin.
The same textured lineart in native Blender and in Goo Engine
Left: native Blender. Right: Goo Engine with randomize.
The Texture Mapping modifier with and without the Randomize panel

Other changes

  • Context-based sculpt mode smoothing for Thickness and Strength modes. Hold Shift to smooth whatever your brush is set to, instead of switching to the smooth brush.
  • Auto-close strokes Strokes close themselves, so they’re ready for the fill bucket. Great for drawing effects.

Animation and rigging

Viewport Line Width

In Preferences → Interface → Display. Thickens lines in the 3D viewport from 1.0 up to 3.0, including rig bones and controls, so they’re easier to see in busy scenes without scaling the whole interface.

Bones drawn at line width 1.0 and 3.0
The Viewport Line Width setting in Preferences

Other changes

  • Continuous Trackball (Preferences → Input). The rotate gizmo follows the object’s 3D rotation instead of screen space, so dragging left and right keeps rotating left and right. Closer to how Maya’s gizmo feels.
  • Isolate bones overlay Hides unselected bones while you move selected ones.
  • Hide in Outliner for pose bones, with a Hidden Pose Bones filter.
  • Copy Rotation constraint: Invert All, to invert the final combined rotation.
  • Merge Bone Constraints operator, which moves constraints onto a new rig and repoints references from the old one.
  • Library Override Resync Enforce ignores Action ID pointers, so animation isn’t lost on resync.

Interface and pipeline

Disable Search on Key Press

In Blender 4.0, several Add menus dropped accelerator keys in favor of typing the first letter to search immediately. As avid users of accelerator keys, we added an option to switch back to the old behavior: Disable Search on Key Press, in the Experimental tab of Preferences.

Search stays one click away through the Search option at the top of each Add menu. This affects the menus Blender 4.0 changed: Modifiers, Shading Nodes, Geometry Nodes, Objects and more. Menus that already kept accelerator keys are unaffected.

The Add menu with default search versus accelerator keysThe Disable Search On Key Press option in Preferences
Left: Blender 4.0’s default and accelerator keys. Right: the option in Preferences → Experimental.

Scene camera drop-down

The scene camera is now a drop-down in the top bar, next to the Scene and View Layer selectors, so you can switch the active camera without going to the Scene tab.

The scene camera drop-down in the top bar

Transparency toggle in the World tab

It’s usually hidden in the Film settings but only affects whether the world shader renders, so it now lives with the world.

The Transparent toggle in the World tab

Topology Mirror button

A T button next to the X/Y/Z axis mirroring buttons in Edit Mode. Topology Mirror already existed, but was tucked away in the options menu.

The Topology Mirror button next to the X, Y and Z mirror buttons

Other changes

  • Option to turn off material icon rendering.
  • Render burn-in puts the frame in the top left and adds a file name line.
  • Linked scene strips with relative paths now show in the Video Sequencer.

Platforms

  • Works on Windows, macOS and Linux, like Blender.