Namespace: compute
Language: Lua
Type: Defold Lua
File: script_compute.cpp
Source: engine/gamesys/src/gamesys/scripts/script_compute.cpp
Functions for interacting with compute programs.
Type: FUNCTION Returns a table of all the shader constants in the compute program.
Parameters
path (hash |
string) - The path to the resource |
Returns
table (table) - A table of tables, where each entry contains info about the shader constants:namehash the hashed name of the constant</dd>
typenumber the type of the constant. Supported values:</dd> </dl>
material.CONSTANT_TYPE_USERmaterial.CONSTANT_TYPE_USER_MATRIX4material.CONSTANT_TYPE_VIEWPROJmaterial.CONSTANT_TYPE_WORLDmaterial.CONSTANT_TYPE_TEXTUREmaterial.CONSTANT_TYPE_VIEWmaterial.CONSTANT_TYPE_PROJECTIONmaterial.CONSTANT_TYPE_NORMALmaterial.CONSTANT_TYPE_WORLDVIEWmaterial.CONSTANT_TYPE_WORLDVIEWPROJmaterial.CONSTANT_TYPE_TIMEmaterial.CONSTANT_TYPE_WORLD_INVERSEmaterial.CONSTANT_TYPE_VIEW_INVERSEmaterial.CONSTANT_TYPE_PROJECTION_INVERSEmaterial.CONSTANT_TYPE_VIEWPROJ_INVERSEmaterial.CONSTANT_TYPE_WORLDVIEW_INVERSEmaterial.CONSTANT_TYPE_WORLDVIEWPROJ_INVERSEvaluevmath.vector4 | vmath.matrix4 the value(s) of the constant. If the constant is an array, the value will be a table of vmath.vector4 or vmath.matrix4 if the type is material.CONSTANT_TYPE_USER_MATRIX4.</dd>
</dl>
Examples
Get the shader constants from a compute program resource
function init(self)
local constants = compute.get_constants("/my_compute.computec")
end
Type: FUNCTION Returns a table of all the texture samplers in the compute program. This function will return all the texture samplers that are available, even the ones that have not been specified in the compute resource.
Parameters
path (hash |
string) - The path to the resource |
Returns
table (table) - A table of tables, where each entry contains info about the texture samplers:namehash the hashed name of the texture sampler</dd>
u_wrapnumber the u wrap mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_WRAP_CLAMP_TO_BORDERgraphics.TEXTURE_WRAP_CLAMP_TO_EDGEgraphics.TEXTURE_WRAP_MIRRORED_REPEATgraphics.TEXTURE_WRAP_REPEATv_wrapnumber the v wrap mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_WRAP_CLAMP_TO_BORDERgraphics.TEXTURE_WRAP_CLAMP_TO_EDGEgraphics.TEXTURE_WRAP_MIRRORED_REPEATgraphics.TEXTURE_WRAP_REPEATmin_filternumber the min filter mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_FILTER_DEFAULTgraphics.TEXTURE_FILTER_NEARESTgraphics.TEXTURE_FILTER_LINEARgraphics.TEXTURE_FILTER_NEAREST_MIPMAP_NEARESTgraphics.TEXTURE_FILTER_NEAREST_MIPMAP_LINEARgraphics.TEXTURE_FILTER_LINEAR_MIPMAP_NEARESTgraphics.TEXTURE_FILTER_LINEAR_MIPMAP_LINEARmag_filternumber the mag filter mode of the texture sampler</dd> </dl>
graphics.TEXTURE_FILTER_DEFAULTgraphics.TEXTURE_FILTER_NEARESTgraphics.TEXTURE_FILTER_LINEARmax_anisotropynumber the max anisotropy of the texture sampler</dd> </dl>
Examples
Get the texture samplers from a compute program resource
function init(self)
local samplers = compute.get_samplers("/my_compute.computec")
end
Type: FUNCTION Returns a table of all the textures from the compute program.
Parameters
path (hash |
string) - The path to the resource |
Returns
table (table) - A table of tables, where each entry contains info about the compute textures:pathhash the resource path of the texture. Only available if the texture is a resource.</dd>
handlehash the runtime handle of the texture.</dd>
widthnumber the width of the texture</dd>
heightnumber the height of the texture</dd>
depthnumber the depth of the texture. Corresponds to the number of layers in an array texture.</dd>
mipmapsnumber the number of mipmaps in the texture</dd>
typenumber the type of the texture. Supported values:</dd> </dl>
graphics.TEXTURE_TYPE_2Dgraphics.TEXTURE_TYPE_2D_ARRAYgraphics.TEXTURE_TYPE_CUBE_MAPgraphics.TEXTURE_TYPE_IMAGE_2Dgraphics.TEXTURE_TYPE_3Dgraphics.TEXTURE_TYPE_IMAGE_3Dflagsnumber the flags of the texture. This field is a bit mask of these supported flags:</dd> </dl>
graphics.TEXTURE_USAGE_FLAG_SAMPLEgraphics.TEXTURE_USAGE_FLAG_MEMORYLESSgraphics.TEXTURE_USAGE_FLAG_STORAGEgraphics.TEXTURE_USAGE_FLAG_INPUTgraphics.TEXTURE_USAGE_FLAG_COLORExamples
Get the textures from a compute program resource
function init(self)
local textures = compute.get_textures("/my_compute.computec")
end
Type: FUNCTION Sets shader constants in a compute program, if the constants exist.
Parameters
path (hash |
string) - The path to the resource |
constants (table) - A table keyed by constant name with args tables as values. Constants can be partially updated. Supported entries:typenumber the type of the constant. Supported values:</dd> </dl>
material.CONSTANT_TYPE_USERmaterial.CONSTANT_TYPE_USER_MATRIX4material.CONSTANT_TYPE_VIEWPROJmaterial.CONSTANT_TYPE_WORLDmaterial.CONSTANT_TYPE_TEXTUREmaterial.CONSTANT_TYPE_VIEWmaterial.CONSTANT_TYPE_PROJECTIONmaterial.CONSTANT_TYPE_NORMALmaterial.CONSTANT_TYPE_WORLDVIEWmaterial.CONSTANT_TYPE_WORLDVIEWPROJmaterial.CONSTANT_TYPE_TIMEmaterial.CONSTANT_TYPE_WORLD_INVERSEmaterial.CONSTANT_TYPE_VIEW_INVERSEmaterial.CONSTANT_TYPE_PROJECTION_INVERSEmaterial.CONSTANT_TYPE_VIEWPROJ_INVERSEmaterial.CONSTANT_TYPE_WORLDVIEW_INVERSEmaterial.CONSTANT_TYPE_WORLDVIEWPROJ_INVERSEvaluevmath.vector4 | vmath.vector3 | vmath.matrix4 | number | table the value(s) of the constant. If the shader constant is an array, the amount of values to update depends on how many values that are passed in the ‘value’ field.</dd> </dl>
Examples
Set a shader constant in a compute program
function update(self)
-- update the 'tint' constant
compute.set_constants("/my_compute.computec", {
tint = { value = vmath.vector4(1, 0, 0, 1) }
})
-- change the type of the 'view_proj' constant to CONSTANT_TYPE_USER_MATRIX4 so the renderer can set our custom data
compute.set_constants("/my_compute.computec", {
view_proj = { value = self.my_view_proj, type = material.CONSTANT_TYPE_USER_MATRIX4 }
})
end
Type: FUNCTION Sets texture samplers in a compute program, if the samplers exist. Use this function to change the settings of texture samplers. To set actual textures that should be bound to the samplers, use the compute.set_textures function instead.
Parameters
path (hash |
string) - The path to the resource |
samplers (table) - A table keyed by sampler name with args tables as values. Partial updates are supported. Supported entries:u_wrapnumber the u wrap mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_WRAP_CLAMP_TO_BORDERgraphics.TEXTURE_WRAP_CLAMP_TO_EDGEgraphics.TEXTURE_WRAP_MIRRORED_REPEATgraphics.TEXTURE_WRAP_REPEATv_wrapnumber the v wrap mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_WRAP_CLAMP_TO_BORDERgraphics.TEXTURE_WRAP_CLAMP_TO_EDGEgraphics.TEXTURE_WRAP_MIRRORED_REPEATgraphics.TEXTURE_WRAP_REPEATmin_filternumber the min filter mode of the texture sampler. Supported values:</dd> </dl>
graphics.TEXTURE_FILTER_DEFAULTgraphics.TEXTURE_FILTER_NEARESTgraphics.TEXTURE_FILTER_LINEARgraphics.TEXTURE_FILTER_NEAREST_MIPMAP_NEARESTgraphics.TEXTURE_FILTER_NEAREST_MIPMAP_LINEARgraphics.TEXTURE_FILTER_LINEAR_MIPMAP_NEARESTgraphics.TEXTURE_FILTER_LINEAR_MIPMAP_LINEARmag_filternumber the mag filter mode of the texture sampler</dd> </dl>
graphics.TEXTURE_FILTER_DEFAULTgraphics.TEXTURE_FILTER_NEARESTgraphics.TEXTURE_FILTER_LINEARmax_anisotropynumber the max anisotropy of the texture sampler</dd> </dl>
Examples
Configures a sampler in a compute program
function init(self)
compute.set_samplers("/my_compute.computec", {
texture_sampler = { u_wrap = graphics.TEXTURE_WRAP_REPEAT, v_wrap = graphics.TEXTURE_WRAP_MIRRORED_REPEAT }
})
end
Type: FUNCTION Sets textures in a compute program, if the samplers exist.
Parameters
path (hash |
string) - The path to the resource |
textures (table) - A table keyed by sampler name with texture resources as values.Examples
Set a texture in a compute program from a resource
go.property("my_texture", resource.texture())
function init(self)
compute.set_textures("/my_compute.computec", {
my_texture = self.my_texture
})
end