Version 3.11
Version 3.11.0.3
July 20 2012
This package offers both components to implement such a workflow:
declare data
"mib_data_bool"
(
string "name",
boolean "value"
)
end declare
declare data
"mib_data_int"
(
string "name",
integer "value"
)
end declare
declare data
"mib_data_scalar"
(
string "name",
scalar "value"
)
end declare
declare data
"mib_data_vector"
(
string "name",
vector "value"
)
end declare
declare data
"mib_data_color"
(
string "name",
color "value"
)
end declare
declare data
"mib_data_string"
(
string "name",
string "value"
)
end declare
declare data
"mib_data_texture"
(
string "name",
color texture "value"
)
end declare
declare data
"mib_data_shader"
(
string "name",
shader "value"
)
end declare
declare data
"mib_data_bool_array"
(
array string "names",
array boolean "values"
)
end declare
declare data
"mib_data_int_array"
(
array string "names",
array integer "values"
)
end declare
declare data
"mib_data_scalar_array"
(
array string "names",
array scalar "values"
)
end declare
declare data
"mib_data_vector_array"
(
array string "names",
array vector "values"
)
end declare
declare data
"mib_data_color_array"
(
array string "names",
array color "values"
)
end declare
declare data
"mib_data_string_array"
(
array string "names",
array string "values"
)
end declare
declare data
"mib_data_texture_array"
(
array string "names",
array color texture "values"
)
end declare
declare data
"mib_data_shader_array"
(
array string "names",
array shader "values"
)
end declare
declare shader
boolean
"mib_data_get_bool"
(
string "name",
boolean "default"
)
end declare
declare shader
integer
"mib_data_get_int"
(
string "name",
integer "default"
)
end declare
declare shader
scalar
"mib_data_get_scalar"
(
string "name",
scalar "default"
)
end declare
declare shader
vector
"mib_data_get_vector"
(
string "name",
vector "default"
)
end declare
declare shader
color
"mib_data_get_color"
(
string "name",
color "default"
)
end declare
declare shader
string
"mib_data_get_string"
(
string "name",
string "default"
)
end declare
declare shader
color texture
"mib_data_get_texture"
(
string "name",
color texture "default"
)
end declare
declare shader
shader
"mib_data_get_shader"
(
string "name",
shader "default"
)
end declare
declare shader
boolean
"mib_data_get_shader_bool"
(
string "name",
boolean "default"
)
end declare
declare shader
integer
"mib_data_get_shader_int"
(
string "name",
integer "default"
)
end declare
declare shader
scalar
"mib_data_get_shader_scalar"
(
string "name",
shader "default"
)
end declare
declare shader
vector
"mib_data_get_shader_vector"
(
string "name",
vector "default"
)
end declare
declare shader
color
"mib_data_get_shader_color"
(
string "name",
shader "default"
)
end declare
The user data related shaders are contained in the userdata library. The declaration of the shaders and data blocks can be found in the file userdata.mi. To use the shaders, the declaration file must be included and the library linked:
link "userdata.so" $include "userdata.mi"
This is an excerpt of a simple scene. One exceptional instance of an object should be painted in red while all other instances should carry a default color of white. To achieve this, a mib_data_color user data block defining a red diffuse color is attached to the instance inst of an object obj. The material mat assigned to the instance has a surface shader driven by one input parameter diffuse that is connected to a mib_data_get_color shader. That one looks up the named attribute on the instance and returns its value, here a red color. If the attribute can not be found on the current instance the value of the default parameter of the shader is returned instead, in this example a white color.
data "red_diffuse"
"mib_data_color" (
"name" "diffuse",
"value" 1.0 0.0 0.0 # red
)
shader "get_diffuse"
"mib_data_get_color" (
"name" "diffuse",
"default" 1.0 1.0 1.0 # white
)
material "mat"
"mib_illum_lambert" (
"diffuse" = "get_diffuse"
)
end material
object "obj"
tagged
# ...
end object
instance "inst"
"obj"
data "red_diffuse"
material "mat"
end instance