Lua_UnitRendering - beyond-all-reason/springrts_engine_wiki_mirror GitHub Wiki
These functions are now also duplicated for features i.e.
Spring.UnitRendering.SetLODCount
( number unitID, int lodCount ) -> nil
Spring.UnitRendering.SetLODLength (`lod` is 1-indexed)
( number unitID, int lod, number lodLength ) -> nil
Spring.UnitRendering.SetLODDistance (same as SetLODLength(), but adjusted for 45deg FOV + 1024x768)
(number unitID, int lod, number lodDistance ) -> nil
Spring.UnitRendering.SetPieceList (displayList=nil reset to default)
( number unitID, int lod, int piece [, number displayList = nil ] ) -> nil
Spring.UnitRendering.GetMaterial (creates a material userdata)
(
string`` ``MaterialType
,
table`` ``Material
) ->
userdata`` ``Material
Spring.UnitRendering.SetMaterial
( number unitID, int lod,
string`` ``MaterialType
,
userdata`` ``Material
|
table`` ``Material
) -> nil
Spring.UnitRendering.SetMaterialLastLOD
( number unitID,
string`` ``MaterialType
, int lastLOD ) -> nil
Spring.UnitRendering.SetMaterialDisplayLists
( number unitID, int lod,
string`` ``MaterialType
,
preDisplayList
,
postDisplayList
) -> nil
Spring.UnitRendering.SetUnitUniform (unfinished)
( number unitID,
string`` ``MaterialType
, int lod, arg1, arg2, ... ) -> nil
Spring.UnitRendering.Debug (prints some usefull debug informations)
( [ number unitID ] ) -> nil
Spring.UnitRendering.SetUnitLuaDraw (enables the LuaRules' DrawUnit callin)
( number unitID, boolean enabled ) -> nil
Spring.FeatureRendering.SetFeatureLuaDraw (enables the LuaRules' DrawFeature callin)
( number featureID, boolean enabled ) -> nil
Spring.UnitRendering.SetProjectileLuaDraw (enables the LuaRules' DrawProjectile callin)
( number projectileID, boolean enabled ) -> nil
"alpha"
"opaque"
"alpha_reflect"
"opaque_reflect"
"shadow"
none user accessible methods (yet)
Prior to 102.0:
material = {
["order" = number ,]
["culling" =
number`` ``face
,]
["shader" =
lua_shader
| string "3do" | string "s3o" ,]
(95.0: alias standard_shader)
["deferred_shader" = { vertex = ..., ... } ,]
(new in 95.0, alias deferred. Deferred fragment shaders must *ONLY* write to gl_FragData[i] where
i = {0 = normals, 1 = diffuse, 2 = specular, 3 = emissive, 4 = misc})
["texunits" = {
[ [0] = { ["tex" =
see`` ``gl.Texture
,]
["enable" = boolean true ] }, ]
[ [3] =
see`` ``gl.Texture
, ]
(upto [15] and supports holes in it)
} ,]
["texunit0" =
see`` ``gl.Texture
,]
...
["texunit7" =
see`` ``gl.Texture
,]
["prelist" =
lua_displaylist
,]
["postlist" =
lua_displaylist
,]
["usecamera" = boolean ,]
["cameraloc" = number uniformLocation,]
["cameraposloc" = number uniformLocation,]
["camerainvloc" = number uniformLocation,]
["sunposloc" = number uniformLocation,]
(new in 0.83)
["shadowloc" = number uniformLocation,]
["shadowparamsloc" = number uniformLocation,]
}
Post 102.0:
Material tables are now expected to contain subtables defining the uniforms; instead of
material = {shader = ..., cameraposloc = 123, texunits = ..., ...}
say
material = {shader = ..., uniforms = {cameraposloc = 123, ...}, texunits = ..., ...}
For a material that has both types of shader, supply "standardshader", "deferredshader", "standarduniforms", and "deferreduniforms" as keys i.e:
material = {standardshader = ..., standarduniforms = {...}, deferredshader = ..., deferredunifroms = { ... }, texunits = ..., ...}
New keys for these uniform subtables can be
"viewmatrixloc" // synonym for "cameraloc"
"projmatrixloc" // camera projection
"viprmatrixloc" // camera view-projection
"viewmatrixinvloc" // synonym for "camerainvloc"
"projmatrixinvloc" // camera inverse projection
"viprmatrixinvloc" // camera inverse view-projection
"shadowmatrixloc" // synonym for "shadowloc"
"cameradirloc" // camera forward direction
"sundirloc" // synonym for "sunposloc"
"rndvecloc" // random 3-vector with length in [0, 1)
"simframeloc" // current simulation frame
"visframeloc" // current renderer frame
category: Lua