No matching definitions.

opengl/shaders

src/opengl/shaders.tur
defn

compile-shader

(compile-shader [stage :cstr source :cstr] :int)

compile a single GLSL shader stage.

stageshader stage keyword: :vertex | :fragment | :geometry | :compute
sourceGLSL source string (e.g. from compile-glsl in tur-glsl)

Opaque :int shader handle. Prints the driver error log and calls exit(1) if compilation fails.

(compile-shader ":vertex" vert-src)   ; => :int shader handle

Since: v0.1.0

defn

shader-program

(shader-program [& shaders] :int)

link compiled shader objects into a GL program.

shadersvariadic list of :int shader handles from compile-shader

Opaque :int program handle. Individual shaders are deleted after linking. Prints the driver error log and calls exit(1) if linking fails.

(shader-program vs fs)          ; vertex + fragment
  (shader-program vs gs fs)       ; + geometry stage

Since: v0.1.0

defn

use-program

(use-program [prog :int] :void)

install a shader program as the current program.

progprogram handle from shader-program, or 0 to uninstall
(use-program prog)
  ...
  (use-program 0)

Since: v0.1.0

defmacro

with-program

(with-program [prog & body])

install a program for the duration of body, then uninstall it.

progprogram handle from shader-program
bodyone or more expressions executed with the program active
(with-program prog
    (set-uniform-mat4 prog "model" (mat4-ptr model))
    (draw-arrays ":triangles" 0 3))

Since: v0.1.0

defn

set-uniform-int

(set-uniform-int [prog :int name :cstr v :int] :void)

set an integer uniform in a shader program.

progprogram handle
nameuniform variable name string
vinteger value
(set-uniform-int prog "texture1" 0)

Since: v0.1.0

defn

set-uniform-float

(set-uniform-float [prog :int name :cstr v :float] :void)

set a float uniform in a shader program.

progprogram handle
nameuniform variable name string
vfloat value

Since: v0.1.0

defn

set-uniform-vec2

(set-uniform-vec2 [prog :int name :cstr x :float y :float] :void)

set a vec2 uniform in a shader program.

progprogram handle
nameuniform variable name string
x y -- vector components

Since: v0.1.0

defn

set-uniform-vec3

(set-uniform-vec3 [prog :int name :cstr x :float y :float z :float] :void)

set a vec3 uniform in a shader program.

progprogram handle
nameuniform variable name string
x y z -- vector components
(set-uniform-vec3 prog "light-pos" 1.5 1.5 1.5)

Since: v0.1.0

defn

set-uniform-vec4

(set-uniform-vec4 [prog :int name :cstr x :float y :float z :float w :float] :void)

set a vec4 uniform in a shader program.

progprogram handle
nameuniform variable name string
x y z w -- vector components

Since: v0.1.0

defn

set-uniform-mat4

(set-uniform-mat4 [prog :int name :cstr mat :int] :void)

upload a 4x4 column-major float matrix to a uniform.

progprogram handle
nameuniform variable name string
matpointer to 16 floats in column-major order (from mat4-ptr)
(set-uniform-mat4 prog "model" (mat4-ptr model-mat))

Since: v0.1.0