Schemas / Pixel / raster

rig.pixel.effect_chain

v0.31.0 · draft 2 fields 1 required

Fields

FieldTypeMeaning
steps array<object> required Ordered list
nextId uint optional Optional. Next id allocator for steps; absent = highest step id + 1

Ordered effect steps. Format when present.

Step

Chain

Effect-specific parameters are host / pack extension (side table or JSON text keyed by step). No GPU programs in the schema.

Input routing

parentStep names the step whose result this step consumes. It is dataflow, not containment: several steps may share one parentStep and each reads that same result, which is how a chain branches.

With parentStep unset every step reads the one before it, so a plain ordered list needs no routing fields at all. Editors that draw the chain as a tree indent a step under its parentStep.

A branch has to land somewhere: hosts that honor parentStep composite the branch step's result back over the running canvas with per-pixel alpha (how is a host blend policy). A branch is a layer return, never a straight replace - otherwise sharing a parent would be pointless. Ids that don't resolve (forward or stale) degrade to the preceding step.

parentStep is not groupParent on rig.pixel.layer - the compositor stack is a different graph.

JSON Schema

Resolves at https://rig.works/schemas/rig.pixel.effect_chain.schema.jsonraw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.pixel.effect_chain.schema.json",
  "title": "rig.pixel.effect_chain",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "stage",
          "effectId"
        ],
        "properties": {
          "id": {
            "$ref": "./_defs.schema.json#/$defs/uint"
          },
          "stage": {
            "type": "string",
            "enum": [
              "image",
              "draw",
              "generate"
            ]
          },
          "effectId": {
            "$ref": "./_defs.schema.json#/$defs/string"
          },
          "enabled": {
            "$ref": "./_defs.schema.json#/$defs/bool"
          },
          "parentStep": {
            "$ref": "./_defs.schema.json#/$defs/uint"
          }
        }
      }
    },
    "nextId": {
      "$ref": "./_defs.schema.json#/$defs/uint"
    }
  },
  "required": [
    "steps"
  ]
}