com.luminframe.effect

luminframe.com

Documentation

A custom shader effect: GLSL fragment code plus the typed parameters that drive it, publishable to the author's repo and loadable by Luminframe at runtime. The grammar a valid record must satisfy (reserved uniform names, body shape, parameter rules) is the shader environment contract, versioned by `env`.

main record

A custom shader effect: GLSL fragment code plus the typed parameters that drive it, publishable to the author's repo and loadable by Luminframe at runtime. The grammar a valid record must satisfy (reserved uniform names, body shape, parameter rules) is the shader environment contract, versioned by `env`.

Record Key any Any valid record key

Properties

animatedBy string Optional

Name of the range param that gates the effect's motion: at zero the effect is still even though its body references time.

maxLength: 64 bytes
body string Required

GLSL ES 1.00 fragment code containing void main() and writing gl_FragColor. Uniform declarations are generated by the host from `params`; the body must not declare its own.

maxLength: 20000 bytes
createdAt string datetime Required

When the record was created.

description string Optional

One-line blurb shown under the name.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
env integer Required

Shader environment contract version the body was written against. Clients refuse records requiring an environment they don't speak.

minimum: 1
name string Required

Display name shown in the effect library.

maxLength: 64 bytes
params string Required

The effect's editable parameters, a JSON-encoded array of typed definitions (env 1: range, color, boolean, vec2; env 2 adds image, text, and vec2 track bounds). A string rather than an array of objects because the atproto data model has no float type and parameter defaults and bounds are fractional — the same encoding as com.luminframe.image's effectStep.params.

maxLength: 10000 bytes
View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "name",
      "env",
      "params",
      "body",
      "createdAt"
    ],
    "properties": {
      "env": {
        "type": "integer",
        "minimum": 1,
        "description": "Shader environment contract version the body was written against. Clients refuse records requiring an environment they don't speak."
      },
      "body": {
        "type": "string",
        "maxLength": 20000,
        "description": "GLSL ES 1.00 fragment code containing void main() and writing gl_FragColor. Uniform declarations are generated by the host from `params`; the body must not declare its own."
      },
      "name": {
        "type": "string",
        "maxLength": 64,
        "description": "Display name shown in the effect library."
      },
      "params": {
        "type": "string",
        "maxLength": 10000,
        "description": "The effect's editable parameters, a JSON-encoded array of typed definitions (env 1: range, color, boolean, vec2; env 2 adds image, text, and vec2 track bounds). A string rather than an array of objects because the atproto data model has no float type and parameter defaults and bounds are fractional — the same encoding as com.luminframe.image's effectStep.params."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the record was created."
      },
      "animatedBy": {
        "type": "string",
        "maxLength": 64,
        "description": "Name of the range param that gates the effect's motion: at zero the effect is still even though its body references time."
      },
      "description": {
        "type": "string",
        "maxLength": 3000,
        "description": "One-line blurb shown under the name.",
        "maxGraphemes": 300
      }
    }
  },
  "description": "A custom shader effect: GLSL fragment code plus the typed parameters that drive it, publishable to the author's repo and loadable by Luminframe at runtime. The grammar a valid record must satisfy (reserved uniform names, body shape, parameter rules) is the shader environment contract, versioned by `env`."
}

Lexicon Garden

@