RibAttributesΒΆ

class RibAttributes

RibAttributes allows for overriding rendered objects Rib attributes.

When rendering, RibAttributes nodes connected to a SceneGraphNode are queried and the renderToRib method is called for each RibAttributes connected. Nodes of this class can override attributes for a whole hierarchy. Note that RibAttributes are called after Guerilla sets its own attributes, so it is still possible to override base attributes. Connected RibAttributes nodes are called in a now predefined order, so conflicts of attributes between RibAttributes will result in undefined behaviour.

In order for the RibAttributes node to be assigned to a node, you must add a dependency on the node's RibAttributes plug. For instance:

-- Find the node we want to assign attributes to
local myNode = Document:findchild ("myNode")
-- Find the attributes
local myAttributes = Document:findchild ("myAttributes")
myNode.RibAttributes:adddependencies (myAttributes.MyRibAttributesPlug)

The RibAttributes class must implement the getattributes method so attributes are correctly queried are render start, and optionally the getGLattributes in order for the openGL display to render with correct parameters.

Hierarchy

class RibAttributes < class Node

Members

Methods:

nil getGLattributes ( ) Update the openGL display attributes of the node
nil getattributes ( ) getattributes is called when a connected SceneGraphNode is sent to the renderer


Inherited from class Node

Plugs:

string Name RW The node name

Methods:

bool result belongstoreference ( Reference ref ) Tells if the node belongs to the reference, or a sub reference
nil delete ( ) Delete a node
any value eval ( Plug plug ) Called by the framework when plug (a node's plug) must be evaluated
Node|Plug child findchild ( string path ) Find a child node or plug using a path
Node parent findparent ( string name ) Find the first parent Node of this Node of a specific class
Node result getchild ( string name ) Get a child node by its name
[string|number] name getname ( ) Get the Node name in its parent
Node parent getparent ( ) Get the parent Node of this Node
string path getpath ( ) Returns the node path as a string that can be reused with findchild
Reference reference getreference ( ) Returns the reference node it is connected to
of table getreferences ( [ topref Reference ] ) Returns the references in the document sorted depth first.
string result getstringcopy ( ) Return a copy of the node and its content as a string to be pasted
Reference reference gettopreference ( ) Returns the top reference node it is connected to
boolean editable iseditable ( ) Indicates if the node can be edited by the user in the UI
bool result ismoveable ( ) Tells if the node can be moved
boolean result isparent ( Node child ) Tells if this node is parent of the potential child
boolean result isreference ( ) Tells if a node comes from a reference project
boolean state isselected ( ) Tell if the node is selected
{Node} result loadfile ( string filename ) load a file content in this node.
Node result loadtemplate ( string template , string name ) load a template file
nil move ( Node parent ) Move a node to a new parent
nil onpathchanged ( ) Called by the framework when the name of this node or of one of its parent is modified
{Node},string result,error pastestringcopy ( string copy ) Paste a string copy into this node
nil rename ( string name ) Rename a node
bool,string success,error savefile ( string filename ) load a node to a file
nil seteditable ( boolean editable ) Change the editable state of the node
nil setflags ( ) Set the node flags

Documentation

nil getGLattributes ( )

Update the openGL display attributes of the node

Override this method so the openGL display is consistent with the actual render. For example:

function MyRibAttributes:getGLattributes ()
    return {
        Color = {1,0,0}
    }
end

nil getattributes ( )

getattributes is called when a connected SceneGraphNode is sent to the renderer

Override this method to sent Rib commands to the render. For example:

-- force the shader value 'Albedo' to red
attributes["variable.Albedo"] = {1,0,0}
-- force the primitive not to be subdivided
attributes["shape.subdivide"] = {0}