Skip to content

Fullscreen Shader Graphs and Custom Textures

Since 2.2.0

Fullscreen Graph resources in the Photon browser

A Fullscreen Graph being edited

A resource can expose sampler parameters for LUTs, noise, ramps, or mod-provided textures.

Fullscreen Graph uses the same typed node system as particle Shader Graph, but its geometry is a full-screen quad and its inputs come from Render Graph pass ports.

Coordinates

  • Fullscreen Position provides the full-screen vertex basis and normalized UV.
  • Texel Size returns the reciprocal target size; multiply it by pixel offsets for blur, outline, or chromatic aberration.
  • Scene/depth reconstruction nodes use the camera state captured for the pass.

Never hard-code a screen resolution. Preview, window resizing, UI scale, and half-resolution passes all change actual target size.

Exposed Inputs

Graph variablePass port/use
Sampler/TextureWire Scene Color, depth-derived texture, previous pass, or Texture Input
floatradius, strength, threshold, time scale
vec2direction, center, distortion scale
vec3/vec4/colortint, channel weights, outline color

Weight is engine-managed and is not exposed as an ordinary pass port. Use the Effect Weight node when the shader must participate in blending internally.

External Textures

LUTs, blue noise, ramps, lens dirt, and other images can enter through Texture Input. Keep them in the project/FX Pack namespace and document expected filtering/wrap behavior. A LUT's dimensions and packing are part of the effect contract; replacing it with an arbitrary image will not produce a meaningful result.

Graph Pass vs Core Shader Pass

Fullscreen GraphHand-written Core Shader
Visual editing and typed connectionsDirect GLSL control
Exposed variables define portsJSON samplers/uniforms are introspected
Compiler supplies stage plumbingAuthor owns JSON/VSH/FSH compatibility
Easier resource refactoringEasier to port established shaders

Both sources run on the same full-screen quad and target pool, and can be mixed in one Render Graph.

See Hand-written Fullscreen Shaders for JSON reflection rules, sampler ports, and engine uniforms.

Common Multi-pass Patterns

text
Blur: Scene -> horizontal half-res pass -> vertical half-res pass -> Output
Bloom-like: Scene -> bright pass -> downsample/blur chain -> add-mix with Scene
Outline: Scene Depth -> edge pass; Scene Color + edge -> composite -> Output
LUT: Scene -> color lookup pass -> Output

Released under the MIT License.