» Back to Reference Guide Index
gh_gpu_program Library
Descriptiongh_gpu_program is the module that manages GPU programs based on the GLSL language: creation, destruction, binding, uniforms settings.
Number of functions: 36
gh_gpu_program.create
Description
Creates a GLSL program from vertex (vs), pixel (ps), geometry (gs), tessellation control and evaluation (tcs and tes) or compute (cs) shaders.
LanguagesLua - Python
Parameters
vs [STRING]: vertex shader source code string.
ps [STRING]: pixel shader source code string.
gs [STRING]: geometry shader source code string.
tcs [STRING]: tessellation control shader source code string.
tes [STRING]: tessellation eval shader source code string.
cs [STRING]: compute shader source code string.
Return Values
gpu_program [INTEGER]: gpu program identifier
Code sample
vs = "......"
ps = "......"
gpu_prog = gh_gpu_program.create(vs, ps, "", "", "", "")
gh_gpu_program.create_from_file
Description
Loads a GLSL source code from file and creates a new GPU program node (actually a resource).
LanguagesLua - Python
Parameters
filename [STRING]: GPU program source code filename.
absolute_path [INTEGER]: Specifies if the path to the filename is relative (0) or absolute (1).
Return Values
gpu_program [INTEGER]: gpu program identifier
Code sample
abs_path = 0 -- relative path
gpu_prog = gh_gpu_program.create_from_file("data/shader.glsl", abs_path)
gh_gpu_program.bind
Description
Binds (makes it active) the GPU program to the renderer. To unbind a GPU program, just pass 0 as gpu program identifier.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog) -- Binding
...
gh_gpu_program.bind(0) -- Unbinding
gh_gpu_program.run_compute
Description
Runs a compute program (OpenGL 4.3+ feature). See also: OpenGL 4.3: Compute Shaders Details (GL_ARB_compute_shader)
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
num_groups_x, num_groups_y, num_groups_z [INTEGER]: Specifies the number of local work groups that will be dispatched in the X, Y and Z dimensions.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.run_compute(gpu_prog, 16, 16, 16)
gh_gpu_program.uniform1i
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x [INTEGER]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1i(gpu_prog, "index", 2)
gh_gpu_program.uniform2i
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y [INTEGER]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform2i(gpu_prog, "rg", 250, 25)
gh_gpu_program.uniform3i
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z [INTEGER]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform3i(gpu_prog, "rgb", 250, 25, 45)
gh_gpu_program.uniform4i
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z, w [INTEGER]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4i(gpu_prog, "rgba", 250, 25, 45, 100)
gh_gpu_program.uniform1iv
Description
Sets the value of an uniform array.
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
material_ids = {}
InitMaterialIDs(material_ids)
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1iv(gpu_prog, "material_ids", material_ids, 10)
gh_gpu_program.uniform1fv
Description
Sets the value of an uniform array.
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
temperatures = {}
InitTemperatures(temperatures)
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1fv(gpu_prog, "temperatures", 10, temperatures)
gh_gpu_program.uniform2fv
Description
Sets the value of an uniform array.
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
uv = {} -- array element: {x=0, y=0}
InitUV(uv)
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform2fv(gpu_prog, "uv", 10, uv)
gh_gpu_program.uniform3fv
Description
Sets the value of an uniform array.
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
xyz = {} -- array element: {x=0, y=0, z=0}
InitXYZ(xyz)
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform3fv(gpu_prog, "xyz", 10, xyz)
gh_gpu_program.uniform4fv
Description
Sets the value of an uniform array.
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
xyzw = {} -- array element: {x=0, y=0, z=0, w=0}
InitXYZW(xyzw)
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4fv(gpu_prog, "xyzw", 10, xyzw)
gh_gpu_program.uniform1f
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x [REAL]: Uniform value.
Return Values
This function has no return value(s).
Code sample
elapsed_time = gh_utils.get_elapsed_time()
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1f(gpu_prog, "time", elapsed_time)
gh_gpu_program.uniform2f
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y [REAL]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform2f(gpu_prog, "uv", 0.1, 1.0)
gh_gpu_program.uniform3f
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z [REAL]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform3f(gpu_prog, "rgb", 0.25, 0.25, 0.45)
gh_gpu_program.uniform4f
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z, w [REAL]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4f(gpu_prog, "rgba", 0.25, 0.25, 0.45, 1.0)
gh_gpu_program.uniform1d
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x [DOUBLE]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1d(gpu_prog, "r", 0.25)
gh_gpu_program.uniform2d
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y [DOUBLE]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform2d(gpu_prog, "rg", 0.25, 0.22)
gh_gpu_program.uniform3d
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z [DOUBLE]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform3d(gpu_prog, "rgb", 0.25, 0.25, 0.45)
gh_gpu_program.uniform4d
Description
Sets the value of an uniform variable.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z, w [DOUBLE]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4d(gpu_prog, "rgba", 0.25, 0.25, 0.45, 1.0)
gh_gpu_program.uniform1ui64
Description
Sets the value of an uniform variable. Useful with bindless texture (OpenGL 4.4)
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x [INTEGER]: Uniform value.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1ui64(gpu_prog, "tex", bindless_texture_handle)
gh_gpu_program.uniform1ui64v
Description
Sets the value of an uniform array. Useful with bindless texture (OpenGL 4.4)
LanguagesLua
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
array_count [INTEGER]: number of entries of the uniform array.
array [TABLE]: uniform array.
Return Values
This function has no return value(s).
Code sample
all_texture_handles = {}
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform1ui64v(gpu_prog, "all_textures", 32, all_texture_handles)
gh_gpu_program.uniform4i_array
Description
Sets the value of an uniform array of vec4i. Currently limited to one vec4i.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z, w [INTEGER]: Uniform value. The four elements of an uniform array: int xyzw[4]
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4i_array(gpu_prog, "all_textures", 0, 1, 2, 3)
gh_gpu_program.uniform4f_array
Description
Sets the value of an uniform array of vec4. Currently limited to one vec4.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
uniform_name [STRING]: Uniform name.
x, y, z, w [REAL]: Uniform value. The four elements of an uniform array: float xyzw[4]
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.uniform4f_array(gpu_prog, "all_params", 0.2, 10.4, 0.003, 0.001)
gh_gpu_program.set_vertex_attrib_name
Description
Sets the name of a vertex attribute.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
vertex_index [INTEGER]: vertex attribute index.
name [STRING]: vertex attrib name.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.bind(gpu_prog)
gh_gpu_program.set_vertex_attrib_name(gpu_prog, 0, "gxl3d_Position")
gh_gpu_program.get_vertex_attrib_name
Description
Gets the name of a vertex attribute.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
vertex_index [INTEGER]: vertex attribute index.
Return Values
name [STRING]: vertex attrib name.
Code sample
gh_gpu_program.bind(gpu_prog)
name = gh_gpu_program.get_vertex_attrib_name(gpu_prog, 0)
gh_gpu_program.uniform_subroutine
Description
Sets the matrices of a camera as uniforms.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
shader_type [INTEGER]: type of the shader.
subroutine_uniform_name [STRING]: uniform name of the subroutine.
subroutine_name [STRING]: name of the real subroutine.
Return Values
This function has no return value(s).
Code sample
GPU_SHADER_VERTEX = 0
GPU_SHADER_PIXEL = 1
GPU_SHADER_GEOMETRY = 2
GPU_SHADER_TESS_CONTROL = 3
GPU_SHADER_TESS_EVAL = 4
GPU_SHADER_COMPUTE = 5
gh_gpu_program.uniform_subroutine(gpu_prog, GPU_SHADER_PIXEL, "Color", "ColorBlue")
gh_gpu_program.uniform_camera_matrices
Description
Sets the matrices of a camera as uniforms.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
camera [INTEGER]: camera identifier.
uniform_name_view_mat [STRING]: uniform name of the view matrix.
uniform_name_proj_mat [STRING]: uniform name of the projection matrix.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.uniform_camera_matrices(gpu_prog, camera, "ViewMat", "ProjMat")
gh_gpu_program.set_uniform_object_matrix
Description
Sets the local matrix of an object as uniform.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
object [INTEGER]: camera identifier.
uniform_name_mat [STRING]: uniform name of the matrix.
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.set_uniform_object_matrix(gpu_prog, object, "ModelMat")
gh_gpu_program.get_interface_block_index
Description
Gets the index of an interface block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
block_type [STRING]: type of the block: 'UNIFORM', 'SHADER_STORAGE'
block_name [STRING]: name of the block
Return Values
block_index [INTEGER]: block index.
Code sample
index = gh_gpu_program.get_interface_block_index(gpu_prog, "UNIFORM", "CameraMatrix")
gh_gpu_program.get_uniform_block_size
Description
Gets the size in bytes of an uniform block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
block_index [INTEGER]: block index
Return Values
block_size [INTEGER]: block size in bytes.
Code sample
index = gh_gpu_program.get_interface_block_index(gpu_prog, "UNIFORM", "CameraMatrix")
size = gh_gpu_program.get_uniform_block_size(gpu_prog, index)
gh_gpu_program.set_uniform_block_binding
Description
Sets the buffer binding point of an uniform block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
block_index [INTEGER]: block index
binding_point_index [INTEGER]: index of a GPU buffer binding point
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.set_uniform_block_binding(gpu_prog, index, 2)
gh_gpu_program.get_uniform_size_and_offset
Description
Gets the size and offset in bytes of a variable inside an uniform block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
variable_name [STRING]: name of the variable
Return Values
size, offset [INTEGER]: size and offset in bytes.
Code sample
size, offset = gh_gpu_program.get_uniform_size_and_offset(gpu_prog, "positions")
gh_gpu_program.get_uniform_array_stride
Description
Gets the stride in bytes of an array inside an uniform block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
variable_name [STRING]: name of the variable
Return Values
stride [INTEGER]: stride in bytes.
Code sample
stride = gh_gpu_program.get_uniform_array_stride(gpu_prog, "positions")
gh_gpu_program.set_shader_storage_block_binding
Description
Sets the buffer binding point of a shader storage block.
LanguagesLua - Python
Parameters
gpu_program [INTEGER]: gpu program identifier.
block_index [INTEGER]: block index
binding_point_index [INTEGER]: index of a GPU buffer binding point
Return Values
This function has no return value(s).
Code sample
gh_gpu_program.set_shader_storage_block_binding(gpu_prog, index, 3)
2013-2015 Geeks3D. All Rights Reserved.
.:- G3D Network -:.
|