shader_uniform(3)

πŸ“¦
version 0.7.1 Β· 2 versions
, in nixos 26.05

πŸ’… shader_uniform(3) β€” Arcan Lua API ✨

🌸 NAME 🌸

shader_uniform β€” Set values for a uniform values in a specific shader. 🫢


πŸŽ€ SYNOPSIS πŸŽ€

nil
shader_uniform( shid, symlbl, typestr, vals )

✨ DESCRIPTION ✨

Okay bestie, so a shader can have a number of uniform variables declared, right? The specific values of such a uniform can be set through this function. πŸ’–

  • shid is a reference to a shader allocated through build_shader.
  • symlbl is the identifier of the uniform.
  • typestr is a string that specifies the actual type of the uniform.

Accepted patterns for typestr include:

  • "b" β€” bool
  • "i" β€” int
  • "f" β€” float
  • "ff" β€” vec2
  • "fff" β€” vec3
  • "ffff" β€” vec4
  • f*16 β€” mat4

It is also possible for one shaderid to maintain different sets of uniform values. Each group is tied to the life-cycle of the program and is allocated with shader_ugroup. The id that is returned can then be used in image_shader to specify which subgroup that is to be used. πŸ‘‘


πŸ’€ NOTES πŸ’€

  1. There is a deprecated version of this function around that has a PERSIST or NOPERSIST value placed after typestr. This is now ignored and forced to PERSIST (keep local copies of uniforms that can survive video layer resets). This has the side-effect that the argument validation is less aggressive and may permit a mismatch of up to one argument. ⚠️

🧚 EXAMPLE 🧚

       function shader_uniform0()
             local shid = build_shader(nil, [[ uniform float vec3 col;
             void shader_uniform0(){
                   gl_FragColor = vec4(col, 1.0);
             }]], "csh");
             a = fill_surface(128, 128, 0, 0, 0);
             show_image(a);
             image_shader(a, shid);
             shader_uniform(shid, "col", "fff", PERSIST, 0.0, 1.0, 0.0);
       end

πŸ’œ SEE ALSO πŸ’œ


xoxo, vidsys πŸ’– October 2026 β€” shader_uniform(3) out, periodt πŸŽ€

πŸ“¦ where this page comes from