mi::shader_v3::Interface Struct Reference

Top level C++ mental ray interface extensions. More...

#include <mi_shader_if.h>

List of all members.

Public Member Functions

virtual OptionsgetOptions (miTag string_options)
 Access to string options.
virtual miTag createFramebuffer ()
 Framebuffer factory function.
virtual miTag copyFramebuffer (miTag old_buffer_tag)
 Creates a copy of the framebuffer collection.
virtual LightListcreateLightList (miState *state, miTag *slist=0, int n=0)
 Internal function to create a light list.
virtual void release ()
 Release (delete) the instance of the interface.
virtual LightListcreateLightList (miState *state, const miVector &axis, miScalar spread_cos, miTag *slist=0, int n=0)
 Used internally by LightIterator to create a light list.
virtual Edit_map_dbhandlecreateMap (const Map_declaration_base *map_declaration=0)
 Creation of map.
virtual Access_map_dbhandleaccessMap (const miTag map_tag)
 Read-only access to a map in the DB.
virtual Edit_map_dbhandleeditMap (const miTag map_tag)
 Read-write access to a map in the DB.
virtual Access_map_dbhandleaccessMap (const char *filename, Map_status *status)
 Read-only access to a map to be read from file.
virtual Edit_map_dbhandleeditMap (const char *filename, Map_status *status)
 Read-write access to a map to be read from file.
virtual Map_declaration_basecreateMapDeclaration (const miUint dimension)
 Creation of a map declaration.
virtual Map_declaration_basecopyMapDeclaration (const Map_declaration_base *other, Map_status *status)
 Copy of a map declaration.
virtual Map_declaration_basecopyMapDeclaration (const Map_element_base *map_element, Map_status *status)
 Copy of the declaration of a map element.
virtual Map_declaration_basecopyMapDeclaration (const Map_base *map, Map_status *status)
 Copy of the declaration of a map.
virtual Map_element_basecreateMapElement (const Map_declaration_base *declaration=0)
 Creation of a map element.
virtual Map_element_basecopyMapElement (const Map_element_base *other)
 Copy of a map element.
virtual Map_iterator_basecreateMapIterator (const Map_base *map, Map_status *status)
 Creation of a map iterator.
virtual Map_iterator_basecopyMapIterator (const Map_iterator_base *other, Map_status *status)
 Copy of a map iterator.
virtual Map_lookup_basecreateMapLookup (const Map_base *map, Map_status *status)
 Creation of a map lookup.
virtual Map_lookup_basecopyMapLookup (const Map_lookup_base *other, Map_status *status)
 Copy of a map lookup.
virtual Subdivision34accessSubdivision34 (miTag tag)
 Provide access to (allocate) the Subdivision34 class.
virtual void releaseSubdivision34 (const Subdivision34 *subdiv34)
 Release (delete) the Subdivision34 class.
virtual bool lookup_filter_color_texture (miColor *const color, miState *const state, const miTag tex, Mip_remap &remap, miVector *coord)
 Elliptical texture filtering.

Static Public Member Functions

static Interfaceget (int version=mi_ray_interface_version)
 Acquire an instance of the interface.


Detailed Description

Top level C++ mental ray interface extensions.

This class is the top level access to the C++ shader interface extensions. All other C++ extensions like mi::shader::Options and mi::shader::LightIterator are accessible through this class.

An instance of the Interface must be acquired by calling mi_get_shader_interface() or the static method Interface::get(). When the interface is no more needed, it must be released by calling Interface::release():

 mi::shader::Interface *iface = mi::shader::Interface::get();
 // do something with it...
 iface->release();

The C++ interface extensions are implemented as virtual functions in this interface struct in order to avoid linking and symbol lookup problems. The interface is defined in the header file mi_shader_if.h.


Member Function Documentation

static Interface* mi::shader_v3::Interface::get ( int  version = mi_ray_interface_version  )  [inline, static]

Acquire an instance of the interface.

This static method is equivalent to the function mi_get_shader_interface(), see there fore more information. This static function can be used as follows:

 mi::shader::Interface *iface = mi::shader::Interface::get();
Parameters:
version is the version number of the requested interface class, usually no version argument needs to be passed.
Returns:
The returned pointer points to an object in mental ray which contains the interface functions as virtual methods (hence it is possible to call the interface routines from a dynamically loaded library without resolving the routine in a symbol table). The caller may not attempt to modify or delete the returned object but should call the mi::shader::Interface::release() method when done.

References mi_get_shader_interface().

virtual Options* mi::shader_v3::Interface::getOptions ( miTag  string_options  )  [virtual]

Access to string options.

This may later be extended to also access all other options from the miOptions structure. This function can be used as follows:

 Options *stringOptions = interface->getOptions(options->string_options);
Parameters:
string_options is the tag of the string options, taken from the string_options field of the miOptions structure to be read or modified. It must be valid throughout the use of the Options instance.
Returns:
A pointer to an interface class. The Options::release() method should be called when done.

virtual miTag mi::shader_v3::Interface::createFramebuffer (  )  [virtual]

Framebuffer factory function.

Returns:
a database tag for an empty framebuffer collection.

virtual miTag mi::shader_v3::Interface::copyFramebuffer ( miTag  old_buffer_tag  )  [virtual]

Creates a copy of the framebuffer collection.

Parameters:
old_buffer_tag A database tag for the framebuffer to copy
Returns:
a database tag for a copy of framebuffer collection.

virtual LightList* mi::shader_v3::Interface::createLightList ( miState *  state,
miTag *  slist = 0,
int  n = 0 
) [virtual]

Internal function to create a light list.

Deprecated:
This may be used to generate light iterators. This method is needed by the LightIterator::LightIterator() constructor. Usually there is no need to invoke this method directly.
Parameters:
state provided the method with the current rendering state. From the state the current instance light list may be deduced.
slist is an optional list of light tags. If provided, this list will be used instead of the default instance light list.
n gives the number of light tags in the optional light list.
Returns:
the method returns a pointer to a LightList.

virtual void mi::shader_v3::Interface::release (  )  [virtual]

Release (delete) the instance of the interface.

An interface acquired with mi_get_shader_interface() or mi::shader::Interface::get() must be released with this call when done. The call may delete the object, and the interface may no longer be used afterwards.

Referenced by mi::shader_v3::Access_fb::~Access_fb(), mi::shader_v3::Access_interface::~Access_interface(), mi::shader_v3::Access_subdivision34::~Access_subdivision34(), and mi::shader_v3::Edit_fb::~Edit_fb().

virtual LightList* mi::shader_v3::Interface::createLightList ( miState *  state,
const miVector &  axis,
miScalar  spread_cos,
miTag *  slist = 0,
int  n = 0 
) [virtual]

Used internally by LightIterator to create a light list.

This may be used to generate light iterators. This method is needed by the LightIterator::LightIterator() constructor. Usually there is no need to invoke this method directly.

Parameters:
state provided the method with the current rendering state. From the state the current instance light list may be deduced.
axis specifies the axis for the light cone. The value should be normalized.
spread_cos specifies the cosine of the angle to the light cone axis.
slist is an optional list of light tags. If provided, this list will be used instead of the default instance light list.
n gives the number of light tags in the optional light list.
Returns:
the method returns a pointer to a LightList.

virtual Edit_map_dbhandle* mi::shader_v3::Interface::createMap ( const Map_declaration_base map_declaration = 0  )  [virtual]

Creation of map.

This function is wrapped by the Edit_map class and should not be used directly.

Parameters:
map_declaration is the declaration (possibly NULL) of the new map
Returns:
pointer to the newly created map

virtual Access_map_dbhandle* mi::shader_v3::Interface::accessMap ( const miTag  map_tag  )  [virtual]

Read-only access to a map in the DB.

This function is wrapped by the Access_map class and should not be used directly

Parameters:
map_tag database tag of the map
Returns:
pointer to the map

virtual Edit_map_dbhandle* mi::shader_v3::Interface::editMap ( const miTag  map_tag  )  [virtual]

Read-write access to a map in the DB.

This function is wrapped by the Edit_map class and should not be used directly

Parameters:
map_tag database tag of the map
Returns:
pointer to the map

virtual Access_map_dbhandle* mi::shader_v3::Interface::accessMap ( const char *  filename,
Map_status status 
) [virtual]

Read-only access to a map to be read from file.

This function is wrapped by the Access_map class and should not be used directly

Parameters:
filename the file name of the map to read
status a status code
Returns:
pointer to the map

virtual Edit_map_dbhandle* mi::shader_v3::Interface::editMap ( const char *  filename,
Map_status status 
) [virtual]

Read-write access to a map to be read from file.

This function is wrapped by the Edit_map class and should not be used directly

Parameters:
filename the file name of the map to read
status a status code
Returns:
pointer to the map

virtual Map_declaration_base* mi::shader_v3::Interface::createMapDeclaration ( const miUint  dimension  )  [virtual]

Creation of a map declaration.

This function is wrapped by the Map_declaration class and should not be used directly

Parameters:
dimension is the dimension of the position
Returns:
pointer to the newly created map declaration

virtual Map_declaration_base* mi::shader_v3::Interface::copyMapDeclaration ( const Map_declaration_base other,
Map_status status 
) [virtual]

Copy of a map declaration.

This function is wrapped by the Map_declaration class and should not be used directly

Parameters:
other is the handle of the declaration to copy
status is a status code
Returns:
pointer to the newly copied map declaration

virtual Map_declaration_base* mi::shader_v3::Interface::copyMapDeclaration ( const Map_element_base map_element,
Map_status status 
) [virtual]

Copy of the declaration of a map element.

This function is wrapped by the Map_declaration class and should not be used directly

Parameters:
map_element is the map element to get a copy of the decl from
status is a status code
Returns:
pointer to the newly copied map declaration

virtual Map_declaration_base* mi::shader_v3::Interface::copyMapDeclaration ( const Map_base map,
Map_status status 
) [virtual]

Copy of the declaration of a map.

This function is wrapped by the Map_declaration class and should not be used directly

Parameters:
map is the map to get a copy of the declaration from
status is a status code
Returns:
pointer to the newly copied map declaration

virtual Map_element_base* mi::shader_v3::Interface::createMapElement ( const Map_declaration_base declaration = 0  )  [virtual]

Creation of a map element.

This function is wrapped by the Map_element class and should not be used directly

Parameters:
declaration is the (possible) declaration to use
Returns:
pointer to the newly created map element

virtual Map_element_base* mi::shader_v3::Interface::copyMapElement ( const Map_element_base other  )  [virtual]

Copy of a map element.

This function is wrapped by the Map_element class and should not be used directly

Parameters:
other is the element to copy
Returns:
pointer to the newly copied map element

virtual Map_iterator_base* mi::shader_v3::Interface::createMapIterator ( const Map_base map,
Map_status status 
) [virtual]

Creation of a map iterator.

This function is wrapped by the Access_map_iterator/edit classes and should not be used directly

Parameters:
map is the map to attach the iterator to
status is a status code
Returns:
pointer to the newly created map iterator

virtual Map_iterator_base* mi::shader_v3::Interface::copyMapIterator ( const Map_iterator_base other,
Map_status status 
) [virtual]

Copy of a map iterator.

This function is wrapped by the map_iterator_access/edit classes and should not be used directly

Parameters:
other is the iterator to copy
status is a status code
Returns:
pointer to the newly copied map iterator

virtual Map_lookup_base* mi::shader_v3::Interface::createMapLookup ( const Map_base map,
Map_status status 
) [virtual]

Creation of a map lookup.

This function is wrapped by the Map_lookup class and should not be used directly

Parameters:
map is the map to attach the lookup to
status is a status code
Returns:
pointer to the newly created map lookup

virtual Map_lookup_base* mi::shader_v3::Interface::copyMapLookup ( const Map_lookup_base other,
Map_status status 
) [virtual]

Copy of a map lookup.

This function is wrapped by the Map_lookup class and should not be used directly

Parameters:
other is the lookup to copy
status is a status code
Returns:
pointer to the newly created map lookup

virtual Subdivision34* mi::shader_v3::Interface::accessSubdivision34 ( miTag  tag  )  [virtual]

Provide access to (allocate) the Subdivision34 class.

Parameters:
tag is the MI::SDS::Subdiv34 class tag

virtual void mi::shader_v3::Interface::releaseSubdivision34 ( const Subdivision34 subdiv34  )  [virtual]

Release (delete) the Subdivision34 class.

Parameters:
subdiv34 is the pointer returned by accessSubdivision34

Referenced by mi::shader_v3::Access_subdivision34::~Access_subdivision34().

virtual bool mi::shader_v3::Interface::lookup_filter_color_texture ( miColor *const   color,
miState *const   state,
const miTag  tex,
Mip_remap remap,
miVector *  coord 
) [virtual]

Elliptical texture filtering.

Parameters:
color result color
state current rendering state
tex tag of database element miSCENE_IMAGE (the texture)
remap reference to derived class Mip_remap providing implementation of texture coordinate transformation and remapping
coord 2d texture coordinates (only x and y used).
Returns:
returns true on success, false if for example the input texture does not have the type miSCENE_IMAGE.

Copyright © 1986-2011 by mental images GmbH

t