Skip to content

Considerations

Performance notes and the handful of limits worth knowing before you build something big.

There is no runtime toggle and no keyword system here: a node is either in your graph or it is not. Anything you did not connect never reaches the compiled shader, so an unused effect costs exactly nothing. This is the one place where the node workflow is strictly cheaper than an uber shader, which has to carry the branch or the variant.

The flip side is that turning an effect off at runtime means either exposing a blend or strength property and driving it to zero, which still costs the instructions, or swapping to a different material.

The nodes declare no shader keywords at all. If you have hit the “running out of shader keywords” wall with the Sprite Shader or the VFX Toolkit, that whole class of problem does not exist here. Your shader has whatever variants your own graph and your pipeline generate, and nothing this asset adds.

Most effects are a handful of maths instructions on values you already have. These are the ones worth knowing about:

  • Stochastic Sampling takes three texture samples instead of one, with derivatives. That is the price of killing visible tiling, and it is per pixel. Use it on the ground and the big walls, not on everything.
  • Sprite Outline takes eight samples of the texture to find the edge. Fine for sprites and UI, expensive on a full screen quad.
  • Depth nodes (Scene Depth Diff, Intersection Fade, Soft Particles, Intersection Glow) force the camera to produce a depth texture, which is a whole extra pass if nothing else in your scene needed one. Enabling it once for many objects is cheap, enabling it for a single decorative effect is not.
  • Reflections and Reflections Toon sample the environment cubemap, and a high Lod value is a blurrier and more expensive fetch.
  • Vertex effects run per vertex, so their cost follows your mesh density rather than your screen resolution. Vertex Voxel and Vertex Distortion on a dense character are heavier than they look in the demo, which uses simple meshes.

Everything else, the colour effects, the UV effects, the procedural shapes and the lighting models, is small.

The lighting nodes read the main directional light only, its colour and its direction. They do not accumulate point or spot lights, and they do not apply shadow attenuation of their own. That is what makes them cheap and predictable, and it is also why they suit stylized looks better than realistic ones. If you need many lights and full shadowing, use your render pipeline’s Lit master node and put the All In 1 nodes on top of it for the stylized part.

Ordering matters, and the graph will not warn you

Section titled “Ordering matters, and the graph will not warn you”

Effects apply in the order you wire them, and a different order is a different look rather than a bug. The usual chain is UV effects, then the texture sample, then colour effects, then alpha, with vertex effects on their own branch into the Position input. The Chaining Node Effects page walks through it.

Inside the small Shader Graph node previews the lighting is faked, with a fixed light direction and a neutral environment. Anything using the lighting nodes, the matcaps or the reflections will look different in the Scene view, which is where you should judge it.

Nothing here needs compute, geometry stages or anything exotic. The depth nodes are the usual mobile concern, since a depth pass on a tiled GPU is not free, and Stochastic Sampling with its three samples is the other one to watch. The rest of the library is ordinary maths.