Documentation
    Preparing search index...

    Class EffectProgram

    §70's full-screen effect pipeline (R-6) — see the module header.

    Owns its GL program and nothing else: the texture it samples belongs to gl-render-target.ts's cache. Since 2026-09-11 it compiles lazily, on the renderer's first fixed effect pass, and only once registerEffectPipeline has been called — the renderer drops it on context loss and re-acquires it on the next effect (§61), exactly as it handles the skinned pair.

    Implements

    Index
    • Deletes the GL program (§83). Idempotent.

      Only call this on a live context — see UnlitProgram.dispose.

      Returns void

    • Selects the plain copy for the draw about to be issued — §70's blit.

      Issues a uniform1i only if a grade preceded it, so a program that has only ever copied has never uploaded this uniform and the fragment stage runs its no-arithmetic path.

      Returns void

    • Selects §70's colour grade with the three coefficients ColorGradeEffect documents, in that order.

      Issues a GL call only where the draw changes something: the switch when it was off, the coefficients when any of the three moved. A chain that grades with the same numbers every frame therefore uploads them once.

      Parameters

      • exposure: number
      • contrast: number
      • saturation: number

      Returns void

    • Selects §60a's output transform for the draw about to be issued: the source encoded as sRGB, with no grade.

      Issues at most the two switch uploads, and only the ones that actually change — a chain that presents the same way every frame uploads them once in the lifetime of the program.

      Returns void

    • Points the source sampler at texture unit, once per program lifetime.

      glUniform1i writes into the currently bound program, so this cannot happen at creation time without putting the renderer's program state in two places (the argument SpriteProgram.setSampler records). GL's initial sampler value is already EFFECT_TEXTURE_UNIT, so the upload is belt and braces — it costs one call in the lifetime of the program and nothing per frame, which is what keeps a chain of copies free of uniform traffic.

      Parameters

      • unit: number

      Returns void

    • Makes this the current program. Call before any upload below.

      Returns void

    • Compiles and links the effect program on gl.

      Fails exactly as UnlitProgram.create does — see it, and createLinkedProgram, for the contract; the messages name "effect" and the §89 code is the same SHADER_COMPILATION_FAILED.

      Parameters

      Returns EffectProgram