SMaterial

Index

Functions Index

Function

SMaterial Instantiate()

void SetFloat (string key, float value)

float GetFloat (string key)

void SetColor (string key, SColor color) void SetColor (string key, float r, float g, float b, float a)

SColor GetColor (string key)

void SetColor32 (string key, byte r, byte g, byte b, byte a)

void SetInt (string key, int value)

int GetInt (string key)

void SetTexture (string key, SResource value)

SResource GetTexture (string key)

void SetTextureOffset (string key, float x, float y)

void SetTextureScale (string key, float x, float y)

void SetVector (string key, SVector value)

Properties Index

PropertyDescription

string Name get set

string Shader get

int RenderQueue get set

Functions

Instantiate

SMaterial Instantiate()

Return a new SMaterial from old.

ParameterTypeDescription

local cube=Space.Host.ExecutingObject
local cube2=cube.Children[1]
local mat1=cube.Renderer.Material
local newMat=mat1.Instantiate() newMat.SetColor("_Color",Color.Red) cube2.Renderer.Material=newMat

--at this moment, cube2 will turn to red but cube will keep original color.

SetFloat

void SetFloat (string key, float value)

Sets a shader property to value

ParameterTypeDescription

-- Let's set the Metallic property to 0.75:
local obj = Space.Host.ExecutingObject;
obj.Renderer.Material.SetFloat("_Metallic", 0.75);

GetFloat

float GetFloat (string key)

Gets the current value of a shader property.

ParameterTypeDescription

-- Let's find out the current Glosiness level
local obj = Space.Host.ExecutingObject;
Space.Log(obj.Renderer.Material.GetFloat("_Glossiness"));
-- prints "0.5" (by default) to the console.

SetColor

void SetColor (string key, SColor color) void SetColor (string key, float r, float g, float b, float a)

Sets a shader colour

ParameterTypeDescription

-- Let's change the Color to red:
local obj = Space.Host.ExecutingObject;
local newColor = Color.New(1, 0, 0, 1);
obj.Renderer.Material.SetColor("_Color", newColor);
-- Let's change the Color to purple:
local obj = Space.Host.ExecutingObject;
obj.Renderer.Material.SetColor("_Color", 0.5,0,0.5,1);

GetColor

SColor GetColor (string propertyName)

Get a named color value. Many shaders use more than one color. Use GetColor to get the propertyName color.

ParameterTypeDescription

propertyName

string

Common color names used by Unity's builtin shaders: "_Color" is the main color of a material.

"_SpecColor" is the specular color of a material (used in specular/glossy/vertexlit shaders).

"_EmissionColor" is the emissive color of a material (used in vertexlit shaders). "_ReflectColor" is the reflection color of the material (used in reflective shaders).

Space.Host.ExecutingObject.Renderer.Material.GetColor("_Color")

SetColor32

void SetColor32 (string key, byte r, byte g, byte b, byte a)

Sets a shader colour to value (32-bit, 0..255 values)

ParameterTypeDescription

-- Let's change the Color to light blue:
local obj = Space.Host.ExecutingObject;
obj.Renderer.Material.SetColor32("_Color", 53,172,232,255);

SetInt

void SetInt (string key, int value)

Sets a shader property to value. This can be a convenient way to work with Boolean values.

ParameterTypeDescription

-- For example, let's disable Specular Highlights (enabled by default in the Standard shader):
local obj = Space.Host.ExecutingObject;
obj.Renderer.Material.SetInt("_SpecularHighlights", 0);

GetInt

int GetInt (string key)

Gets the current value of a shader property. This can be a convenient way to work with Boolean values.

ParameterTypeDescription

-- Let's find out if the Reflections property is enabled:
local obj = Space.Host.ExecutingObject;
Space.Log(obj.Renderer.Material.GetInt("_GlossyReflections"));
-- prints "1" (by default) to the console, which means that the Reflections property is indeed enabled.

SetTexture

void SetTexture (string key, SResource value)

Sets a object's specified texture map (specified in parameter 1) to the texture provided as a resource in parameter #2. The example script must be in a object with a '_MainTex' map, and that object should be set as a resource on the scripting runtime. Additionally, that object should be called 'dispobj'.

note also that this function can be used to set any of the texture maps by varying the value of the first parameter accordingly.

ParameterTypeDescription

function hithere()
  image = "mrlee.jpg"

  server = "https://middleware.systems/"

  obj = Space.Host.GetReference("dispobj")

  resrc = Space.WebServices.GetImage(server .. image)

  obj.Renderer.Material.SetTexture("_MainTex", resrc)

end

GetTexture

SResource GetTexture (string propertyName)

Get a named texture. Many shaders use more than one texture. Use GetTexture to get the propertyName texture.

ParameterTypeDescription

propertyName

string

Common texture names used by Unity's builtin shaders:

"_MainTex" is the main diffuse texture.

"_BumpMap" is the normal map. "_Cube" is the reflection cubemap.

textureResource = Space.Host.ExecutingObject.Renderer.Material.GetTexture("_MainTex")

SetTextureOffset

void SetTextureOffset (string key, float x, float y)

Sets a texture offset to a value.

ParameterTypeDescription

Space.Host.ExecutingObject.Renderer.Material.SetTextureOffset("_MainTex", 0, 1)

SetTextureScale

void SetTextureScale (string key, float x, float y)

Sets a texture scale to a value.

ParameterTypeDescription

Space.Host.ExecutingObject.Renderer.Material.SetTextureScale("_MainTex", 0, 1)

SetVector

void SetVector (string key, SVector value)

Sets a shader property to value

ParameterTypeDescription

Space.Host.ExecutingObject.Renderer.Material.SetTexture("_APropertyName", Vector.New(0,1,0))

Properties

Name

string Name get set

Return a new SMaterial from old.

local cube=Space.Host.ExecutingObject
local mat=cube.Renderer.Material
Space.Log(mat.Name)

Shader

string Shader get

Return the shader name of current SMaterial.

local cube=Space.Host.ExecutingObject
local mat=cube.Renderer.Material
Space.Log(mat.Shader)

RenderQueue

int RenderQueue get set

Render queue of this material.

By default materials use render queue of the shader it uses. You can override the render queue used using this variable. Note that if a shader on the material is changed, the render queue resets to that of the shader itself.

Render queue value should be in [0..5000] range to work properly; or -1 to use the render queue from the shader.

RenderQueue = Space.Host.ExecutingObject.Renderer.Material.RenderQueue

Last updated

Sinespace® is a registered trademark of Sine Wave Entertainment Ltd, All Rights Reserved.