Tableau¶
LXsITYPE_LIGHTMATERIAL
LXsICHAN_LIGHTMATERIAL_LIGHTCOL
LXsICHAN_LIGHTMATERIAL_DIFFUSE
LXsICHAN_LIGHTMATERIAL_SPECULAR
LXsICHAN_LIGHTMATERIAL_CAUSTICS
LXsICHAN_LIGHTMATERIAL_SUBSURF
LXsICHAN_LIGHTMATERIAL_SHADCOL
LXsICHAN_LIGHTMATERIAL_SCATCOL
LXsICHAN_LIGHTMATERIAL_SCATTER
LXsICHAN_LIGHTMATERIAL_DENSITY
LXsICHAN_LIGHTMATERIAL_ATTENUATE
LXsICHAN_LIGHTMATERIAL_SHIFT
LXsITYPE_RENDER
LXsICHAN_RENDER_AMBCOLOR
LXsICHAN_RENDER_AMBRAD
LXsICHAN_RENDER_GLOBENABLE
LXsICHAN_RENDER_GLOBSCOPE
LXsICHAN_RENDER_GLOBLIMIT
LXsICHAN_RENDER_GLOBRAYS
LXsICHAN_RENDER_GLOBRANGE
LXsICHAN_RENDER_GLOBSUBS
LXsICHAN_RENDER_GLOBVOLS
LXsICHAN_RENDER_GLOBBUMP
LXsICHAN_RENDER_GLOBSUPER
LXsICHAN_RENDER_GLOBREJECT
LXsICHAN_RENDER_GLOBCAUS
LXsICHAN_RENDER_IRRCACHE
LXsICHAN_RENDER_IRRUSAGE
LXsICHAN_RENDER_IRRDIRECT2
LXsICHAN_RENDER_IRRRAYS
LXsICHAN_RENDER_IRRRAYS2
LXsICHAN_RENDER_IRRRATE
LXsICHAN_RENDER_IRRRATIO
LXsICHAN_RENDER_IRRSMOOTH
LXsICHAN_RENDER_IRRRETRACE
LXsICHAN_RENDER_IRRVALS
LXsICHAN_RENDER_IRRGRADS
LXsICHAN_RENDER_IRRSAMPLE
LXsICHAN_RENDER_IRRDATA
LXsICHAN_RENDER_IRRSTART
LXsICHAN_RENDER_IRREND
LXsICHAN_RENDER_IRRWALK
LXsICHAN_RENDER_IRRLENABLE
LXsICHAN_RENDER_IRRLNAME
LXsICHAN_RENDER_IRRSENABLE
LXsICHAN_RENDER_IRRSNAME
LXsICHAN_RENDER_RADCACHE
LXsICHAN_RENDER_CAMERA
LXsICHAN_RENDER_ENVSAMPLE
LXsICHAN_RENDER_ENVRAYS
LXsICHAN_RENDER_ENVMIS
LXsICHAN_RENDER_CAUSENABLE
LXsICHAN_RENDER_CAUSMULT
LXsICHAN_RENDER_CAUSTOTAL
LXsICHAN_RENDER_CAUSLOCAL
LXsICHAN_RENDER_CAUSWALK
LXsICHAN_RENDER_RAYSHADOW
LXsICHAN_RENDER_DIFFDEPTH
LXsICHAN_RENDER_REFLDEPTH
LXsICHAN_RENDER_REFRDEPTH
LXsICHAN_RENDER_RAYTHRESH
LXsICHAN_RENDER_PATHTHRESH
LXsICHAN_RENDER_UNBIASED
LXsICHAN_RENDER_RAYCLAMP
LXsICHAN_RENDER_RAYOFFSET
LXsICHAN_RENDER_REFLSMPS
LXsICHAN_RENDER_REFRSMPS
LXsICHAN_RENDER_SPECSMPS
LXsICHAN_RENDER_SUBSSMPS
LXsICHAN_RENDER_SMPTHRESH
LXsICHAN_RENDER_VARTHRESH
LXsICHAN_RENDER_ANIMNOISE
LXsICHAN_RENDER_NOISESEED
LXsICHAN_RENDER_RAYACCEL
LXsICHAN_RENDER_BATCHSIZE
LXsICHAN_RENDER_IMPBOOST
LXsICHAN_RENDER_DIRECTSMPS
LXsICHAN_RENDER_DIRECTMIS
LXsICHAN_RENDER_MULTIGEO
LXsICHAN_RENDER_PROXYEXP
LXsICHAN_RENDER_MERGEFUR
LXsICHAN_RENDER_SUBDADAPT
LXsICHAN_RENDER_SUBDRATE
LXsICHAN_RENDER_DISPENABLE
LXsICHAN_RENDER_DISPRATE
LXsICHAN_RENDER_DISPRATIO
LXsICHAN_RENDER_DISPJITTER
LXsICHAN_RENDER_EDGEMIN
LXsICHAN_RENDER_DISPSMOOTH
LXsICHAN_RENDER_DISPBUMP
LXsICHAN_RENDER_SHADE_STACK
LXsICHAN_RENDER_BIN_STACK
LXsICHAN_RENDER_SPG_STACK
LXsICHAN_RENDER_SAMPLEVEC
LXsICVAL_RENDER_GLOBSCOPE_ENVIRONMENT
LXsICVAL_RENDER_GLOBSCOPE_GEOMETRY
LXsICVAL_RENDER_GLOBSCOPE_VOLUMETRICS
LXsICVAL_RENDER_GLOBSCOPE_ALL
LXsICVAL_RENDER_GLOBSUBS_NONE
LXsICVAL_RENDER_GLOBSUBS_GIAFFECTSSS
LXsICVAL_RENDER_GLOBSUBS_SSSAFFECTGI
LXsICVAL_RENDER_GLOBSUBS_BOTH
LXsICVAL_RENDER_GLOBCAUS_NONE
LXsICVAL_RENDER_GLOBCAUS_REFLECTION
LXsICVAL_RENDER_GLOBCAUS_REFRACTION
LXsICVAL_RENDER_GLOBCAUS_BOTH
LXsICVAL_RENDER_IRRUSAGE_FIRST
LXsICVAL_RENDER_IRRUSAGE_SECOND
LXsICVAL_RENDER_IRRUSAGE_BOTH
LXsICVAL_RENDER_IRRSAMPLE_JITTER
LXsICVAL_RENDER_IRRSAMPLE_POISSON
LXsICVAL_RENDER_IRRSAMPLE_CONCENTRIC
LXsICVAL_RENDER_IRRDATA_SMALL
LXsICVAL_RENDER_IRRDATA_FAST
LXsICVAL_RENDER_IRRGRADS_NONE
LXsICVAL_RENDER_IRRGRADS_ROTATION
LXsICVAL_RENDER_IRRGRADS_TRANSLATION
LXsICVAL_RENDER_IRRGRADS_BOTH
LXsICVAL_RENDER_IRRSTART_S2
LXsICVAL_RENDER_IRRSTART_S4
LXsICVAL_RENDER_IRRSTART_S8
LXsICVAL_RENDER_IRRSTART_S16
LXsICVAL_RENDER_IRRSTART_S32
LXsICVAL_RENDER_IRRSTART_S64
LXsICVAL_RENDER_ENVMIS_NONE
LXsICVAL_RENDER_ENVMIS_DIFFUSE
LXsICVAL_RENDER_ENVMIS_REFLECTION
LXsICVAL_RENDER_ENVMIS_BOTH
LXsICVAL_RENDER_DIRECTMIS_NONE
LXsICVAL_RENDER_DIRECTMIS_DIFFUSE
LXsICVAL_RENDER_DIRECTMIS_SPECULAR
LXsICVAL_RENDER_DIRECTMIS_BOTH
LXsITYPE_POLYRENDER
LXsICHAN_POLYRENDER_FIRST
LXsICHAN_POLYRENDER_LAST
LXsICHAN_POLYRENDER_STEP
LXsICHAN_POLYRENDER_RESUNIT
LXsICHAN_POLYRENDER_DPI
LXsICHAN_POLYRENDER_RESX
LXsICHAN_POLYRENDER_RESY
LXsICHAN_POLYRENDER_PASPECT
LXsICHAN_POLYRENDER_REGION
LXsICHAN_POLYRENDER_REGX0
LXsICHAN_POLYRENDER_REGX1
LXsICHAN_POLYRENDER_REGY0
LXsICHAN_POLYRENDER_REGY1
LXsICHAN_POLYRENDER_RENDTYPE
LXsICHAN_POLYRENDER_RAYENGINE
LXsICHAN_POLYRENDER_SHDENGINE
LXsICHAN_POLYRENDER_SPPMIN
LXsICHAN_POLYRENDER_SPPMAX
LXsICHAN_POLYRENDER_AA
LXsICHAN_POLYRENDER_AAFILTER
LXsICHAN_POLYRENDER_AAIMPMIN
LXsICHAN_POLYRENDER_COARSERATE
LXsICHAN_POLYRENDER_FINERATE
LXsICHAN_POLYRENDER_FINETHRESH
LXsICHAN_POLYRENDER_BKTREFINE
LXsICHAN_POLYRENDER_AREFINE
LXsICHAN_POLYRENDER_MERGERAD
LXsICHAN_POLYRENDER_FIELD
LXsICHAN_POLYRENDER_BUCKETX
LXsICHAN_POLYRENDER_BUCKETY
LXsICHAN_POLYRENDER_BKTORDER
LXsICHAN_POLYRENDER_BKTORDERPT
LXsICHAN_POLYRENDER_BKTREVERSE
LXsICHAN_POLYRENDER_BKTWRITE
LXsICHAN_POLYRENDER_BKTSKIP
LXsICHAN_POLYRENDER_FRMPASSES
LXsICHAN_POLYRENDER_FRMRANGE
LXsICHAN_POLYRENDER_OUTPAT
LXsICHAN_POLYRENDER_BAKEU0
LXsICHAN_POLYRENDER_BAKEU1
LXsICHAN_POLYRENDER_BAKEV0
LXsICHAN_POLYRENDER_BAKEV1
LXsICHAN_POLYRENDER_BAKEX
LXsICHAN_POLYRENDER_BAKEY
LXsICHAN_POLYRENDER_BAKEDIR
LXsICHAN_POLYRENDER_PROGCONV
LXsICHAN_POLYRENDER_PROGTIME
LXsICHAN_POLYRENDER_OUTPUTMASK
LXsICVAL_RENDER_RESUNIT_PIXELS
LXsICVAL_RENDER_RESUNIT_INCHES
LXsICVAL_RENDER_RESUNIT_CM
LXsICVAL_RENDER_RENDTYPE_AUTOMATIC
LXsICVAL_RENDER_RENDTYPE_SCANLINE
LXsICVAL_RENDER_RENDTYPE_RAYTRACE
LXsICVAL_RENDER_RENDTYPE_PATHTRACE
LXsICVAL_RENDER_RAYENGINE_SSE
LXsICVAL_RENDER_RAYENGINE_EMBREE
LXsICVAL_RENDER_RAYENGINE_OPTIX_ASYNC
LXsICVAL_RENDER_SHDENGINE_BASE
LXsICVAL_RENDER_SHDENGINE_CPU
LXsICVAL_RENDER_SHDENGINE_CUDA
LXsICVAL_RENDER_AA_S1
LXsICVAL_RENDER_AA_S2
LXsICVAL_RENDER_AA_S4
LXsICVAL_RENDER_AA_S8
LXsICVAL_RENDER_AA_S16
LXsICVAL_RENDER_AA_S32
LXsICVAL_RENDER_AA_S64
LXsICVAL_RENDER_AA_S128
LXsICVAL_RENDER_AA_S256
LXsICVAL_RENDER_AA_S512
LXsICVAL_RENDER_AA_S1024
LXsICVAL_RENDER_AA_S2048
LXsICVAL_RENDER_AA_S4096
LXsICVAL_RENDER_AAFILTER_BOX
LXsICVAL_RENDER_AAFILTER_TRIANGLE
LXsICVAL_RENDER_AAFILTER_GAUSSIAN
LXsICVAL_RENDER_AAFILTER_CATMULL
LXsICVAL_RENDER_AAFILTER_MITCHELL
LXsICVAL_RENDER_FIELD_OFF
LXsICVAL_RENDER_FIELD_UPPER
LXsICVAL_RENDER_FIELD_LOWER
LXsICVAL_RENDER_BKTORDER_ROWS
LXsICVAL_RENDER_BKTORDER_COLUMNS
LXsICVAL_RENDER_BKTORDER_SPIRAL
LXsICVAL_RENDER_BKTORDER_HILBERT
LXsICVAL_RENDER_BKTORDER_RANDOM
LXsICVAL_RENDER_BAKE_RGBA
LXsICVAL_RENDER_BAKE_RGB
LXsICVAL_RENDER_BAKE_RED_ONLY
LXsICVAL_RENDER_BAKE_GREEN_ONLY
LXsICVAL_RENDER_BAKE_BLUE_ONLY
LXsICVAL_RENDER_BAKE_ALPHA_ONLY
LXsICVAL_RENDER_BAKE_SWIZZLING
LXi_BAKE_OUTPUT_FILT_PASS
LXi_BAKE_OUTPUT_FILT_RGB
LXi_BAKE_OUTPUT_FILT_R
LXi_BAKE_OUTPUT_FILT_G
LXi_BAKE_OUTPUT_FILT_B
LXi_BAKE_OUTPUT_FILT_A
LXi_BAKE_SWIZZLING_RGBA
LXi_BAKE_SWIZZLING_RGB
LXi_BAKE_SWIZZLING_R
LXi_BAKE_SWIZZLING_G
LXi_BAKE_SWIZZLING_B
LXi_BAKE_SWIZZLING_A
LXi_BAKE_SWIZZLING_PASS
ILxTableauSurface1¶
-
class
ILxTableauSurface1
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ For 901 the TableauSurface interface adds the SegmentBox() method.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
LxResult
Sample
(LXtObjectID self, const LXtTableauBox bbox, float scale, LXtObjectID trisoup)¶
-
LxResult
Padding
(LXtObjectID self, float *dist)¶
-
LxResult
LXi_ENVMATERIAL_ENVTYPE_CONSTANT
LXi_ENVMATERIAL_ENVTYPE_GRAD2
LXi_ENVMATERIAL_ENVTYPE_GRAD4
LXi_ENVMATERIAL_ENVTYPE_OVERCAST
LXi_ENVMATERIAL_ENVTYPE_PHYSICAL
LXi_ENVMATERIAL_ENVTYPE_CLEAR
-
LXsITYPE_BAKE
¶ A bake item represents a rendering process, and it presents the user-editable attributes of the baking as channels for the user. There can be different kinds of bake items, such as render output baking, texture baking, etc.
LXsICHAN_BAKE_UVNAME
LXsICHAN_BAKE_MORPHNAME
LXsICHAN_BAKE_DISTANCE
LXsICHAN_BAKE_BAKEFROM
LXsICHAN_BAKE_HIDDEN_TGT
LXsICHAN_BAKE_HIDDEN_SRC
LXsICHAN_BAKE_HIDDEN_OUT
LXsICHAN_BAKE_RGBAFROM
LXsICHAN_BAKE_RGBATO
LXsICHAN_BAKE_SAVE_OUTPUT_FILE
LXsICHAN_BAKE_USE_NORMAL_PRESET
LXsICHAN_BAKERO_WIDTH
LXsICHAN_BAKERO_HEIGHT
LXsICHAN_BAKERO_OUTPUT_PATTERN
LXsICHAN_BAKERO_OUTPUT_LOCATION
LXsICHAN_BAKERO_OUTPUT_FORMAT
LXsICHAN_BAKERO_USE_UDIM
LXsICHAN_BAKERO_START_UDIM
LXsICHAN_BAKERO_END_UDIM
LXsITYPE_BAKE_RENDER_OUTPUTS
LXsITYPE_BAKE_TEX_LAYERS
-
LXsGRAPH_BAKE_SURF
¶ The Bake items use 2 different graphs to connect to the surface items and outputs items that are included in the bake.
LXsGRAPH_BAKE_OUTPUT
LXsGRAPH_BAKE_SOURCE
LXsGRAPH_BAKE_TEX_LAYER
ILxTableau¶
-
class
ILxTableau
¶ Public Functions
-
LxResult
Time
(LXtObjectID self, float *t0, float *interval)¶ A Tableau is a snapshot of the 3D scene, partially frozen in time and suitable for rendering. It consists of a collection of various types of elements such as surfaces, volumes, lights, and filters which all contribute to the final rendered appearance. A tableau is created by traversing the item database. Tableaus have a start time and duration interval, and method for adding new elements or instances of existing elements. This interface is provided mainly so clients can add elements to populate the tableau, so this does not give full access.
-
LxResult
AddElement
(LXtObjectID self, LXtObjectID element, LXtObjectID shader)¶
-
LxResult
AddInstance
(LXtObjectID self, LXtObjectID inst, LXtObjectID element, LXtObjectID shader)¶
-
LxResult
Channels
(LXtObjectID self, unsigned type, void **ppvObj)¶ Get a ChannelRead object for subframe times: ‘type’ is 0,1,2 for t0, t1 and frame time.
-
LxResult
Visible
(LXtObjectID self, LXtObjectID item)¶ Returns LXe_TRUE for items that are visible in this tableau.
-
LxResult
FindShader
(LXtObjectID self, LXtObjectID item, LXtObjectID tags, void **ppvObj)¶ Get a tableau shader given an item and string tags for material tags.
-
LXtObjectID
InstanceItem
(LXtObjectID self)¶ Return a peek of the item currently being instanced.
-
LxResult
Update
(LXtObjectID self, LXtObjectID visitor, int immediate)¶ These events are used for incremental updates to the tableau. Update takes in a visitor, which acts as a callback to update the tableau data. When the tableau is “safe”, such as when the render is stopped, it will perform the update. The “immediate” argument is whether or not the tableau contains dangerous / invalid data, in which case any tableau clients need to stop / abort immediately The tableau will add-ref and release the visitor when it’s done, so the client doesn’t need to keep a reference around. UpdateAll tells the tableau that it needs to be completely invalidated and rebuilt. EltNotify notifies clients of the tableau (like the render caches) that a tableau element has changed. It takes in the element object (which the tableau source should have retained) and the event indicating what’s changed. InstNotify is effectively the same.
-
LxResult
UpdateAll
(LXtObjectID self)¶
-
LxResult
EltNotify
(LXtObjectID self, LXtObjectID element, int event)¶
-
LxResult
InstNotify
(LXtObjectID self, LXtObjectID instance, int event)¶
-
LxResult
AddInstanceItem
(LXtObjectID self, LXtObjectID instItem, LXtObjectID fromItem, LXtObjectID inst, LXtObjectID vdesc, const float *vertex)¶ This allows clients to add instance of other items, not just their own elements. This takes the item to be instanced (inst), the item doing the instacing (from), the TableauInstance object giving the transforms for the item. The final arguments give a TableauVertex for particle features and an array of those features, and can both be null if there are no particle features for the instance.
-
LxResult
AddInstanceableElement
(LXtObjectID self, LXtObjectID elt, LXtObjectID tags)¶ Items that provide an instanceable object channel call this method to define the elements that make up the item. The element is the TableauElement to be added and the tags are the string tags to be used for getting shaders for this element. Both objects are often the same.
-
float
Time0
(void)¶ User Class Only:
-
float
Time1
(void)¶
-
bool
IsVisible
(ILxUnknownID item)¶
-
bool
GetShader
(CLxLoc_TableauShader &shader, ILxUnknownID item, ILxUnknownID tags)¶
-
bool
GetChannels
(CLxLoc_ChannelRead &chan, unsigned type)¶
-
LxResult
LXiTBX_CHANS_T0
LXiTBX_CHANS_T1
LXiTBX_CHANS_FRAME
-
LXiTBX_SURF_ADD
¶ EltNotify can have the following events.
LXiTBX_SURF_REMOVE
LXiTBX_SURF_GEO
LXiTBX_SURF_XFRM
LXiTBX_SURF_SHADER
LXiTBX_LGT_ADD
LXiTBX_LGT_REMOVE
LXiTBX_LGT_DATA
LXiTBX_LGT_XFRM
LXiTBX_LGT_SHADER
LXiTBX_LGT_GEO
LXiTBX_VOL_ADD
LXiTBX_VOL_REMOVE
LXiTBX_VOL_DATA
LXiTBX_VOL_XFRM
LXiTBX_VOL_SHADER
-
LXiTBX_INST_ADD
¶ And InstNotify has a smaller set of events.
LXiTBX_INST_REMOVE
LXiTBX_INST_XFRM
-
typedef float
LXtTableauBox
[6]¶
LXe_INFINITE_BOUND
-
LXiTBLX_BASEFEATURE
¶ This feature type and set of names define the most basic set of features that most elements support. Velocity is in object space. Normals exist only for surface samples, and radius is meaningful only for line samples.
LXsTBLX_FEATURE_POS
LXsTBLX_FEATURE_OBJPOS
LXsTBLX_FEATURE_VEL
LXsTBLX_FEATURE_NORMAL
LXsTBLX_FEATURE_RADIUS
LXsTBLX_FEATURE_PARAM_LENGTH
LXsTBLX_FEATURE_PARTID
LXsTBLX_FEATURE_RADIANCE
LXsTBLX_FEATURE_TENSION
LXsTBLX_FEATURE_TORSION
LXiTBLX_DPDU
LXiTBLX_TBASIS
ILxTableauElement¶
-
class
ILxTableauElement
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ We have an element interface, but all the other elements have the same functions at the start as well.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
LxResult
ILxTableauSurface¶
-
class
ILxTableauSurface
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ 2D surface elements are 3D elements that interact with the renderer as a pool of triangles. The Sample() method is called with a bounding box that intersects the surface element, a feature scale, and an interface to collect triangles. The scale parameter gives an approximate edge length scale that is used to determine surface dicing. The vertex vector description should already have been set for this element.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
LxResult
Sample
(LXtObjectID self, const LXtTableauBox bbox, float scale, LXtObjectID trisoup)¶
-
LxResult
Padding
(LXtObjectID self, float *dist)¶ Surface elements can also provide a padding distance that will be added to the bounding box. In general this will be zero but certain surfaces need to add an extra padding. For example surfaces modeling hair may need to set the padding distance as the maximum length of hair guides.
-
LxResult
SegmentBox
(LXtObjectID self, unsigned int segID, LXtTableauBox bbox)¶ The bounding boxes of individual segments can be read. The client need to get the segment IDs by sampling the surface, but once given they can be passed to this function. If it return any error (incluing not-impl) the client should assume that no box is available.
-
LxResult
-
LXeTBLXSURF_ADAPTIVE
¶ The Bound() method for surfaces (since it cannot return “infinite”) may also return a success code indicating that the surface supports adaptive subdivision.
ILxTriangleSoup¶
-
class
ILxTriangleSoup
¶ Public Functions
-
unsigned int
TestBox
(LXtObjectID self, const LXtTableauBox bbox)¶ A triangle “soup” consists of unconnected triangles grouped into segments. The idea of a soup is that although triangles may border on each other and share normals at those borders, there is no connectivity information in the data structure. What we have is just a big batch of triangles and it’s up to the renderer to assure that any transformations it applies will maintain continuity. While this places definite limitations on the renderer, it also makes it much easier to deal with gigantic meshes since they can be processed in arbitrarily small units. The triangle soup interface is passed to the surface object from the renderer, and the surface has the job of generating all the triangles that intersect the bounding box. The triangles are grouped into segments by the surface, each with a unique ID code. Before sending a segment the surface calls the Segment() method with the ID, and the renderer can return LXe_TRUE or LXe_FALSE. If false the segment is skipped, which allows the renderer to cache segments and only update them as needed. Each segment can contain either points, lines, or triangles.
-
LxResult
Segment
(LXtObjectID self, unsigned int segID, unsigned int type)¶
-
LxResult
Vertex
(LXtObjectID self, const float *vertex, unsigned int *index)¶ Within each segment the surface calls Vertex() and Polygon() any number of times in any combination. Each call to Vertex() takes the vector of floats which define the vertex, and the vertices in the fragment are numbered starting from zero, incrementing by one each call. The Polygon() function knits vertices together into a part of the visible surface. For points and lines the Polygon() function ignores the last one or two vertex indices.
-
LxResult
Polygon
(LXtObjectID self, unsigned int v0, unsigned int v1, unsigned int v2)¶
-
void
Connect
(LXtObjectID self, unsigned int type)¶ Connect allows the source to give hints about the connectivity of the elements in the soup. This is completely optional and there is no possibility of an error return.
-
unsigned int
LXiTBLX_SEG_POINT
LXiTBLX_SEG_LINE
LXiTBLX_SEG_TRIANGLE
LXiTBLX_CONNECT_QUAD
LXiTBLX_CONNECT_BEGIN
LXiTBLX_CONNECT_END
-
LXfTBLX_VOL_VOLUME
¶ Volume elements are 3D elements with a depth and internal structure. They need to be evaluated over the entire volume rather than just at the 2D surface.
Type Returns the volume evaluate flags. We support 3 types that can be implemented simultaneously on the same element:
LXfTBLX_VOL_CLIPPING
LXfTBLX_VOL_IMPSURF
LXfTBLX_VOL_LOCAL_SHADER
ILxTableauVolume¶
-
class
ILxTableauVolume
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ RenderInit After the tableau has fully been populated and the sample vector has been set, but before the first ray is fired, volumes are initialized.
RaySample Volumes are sampled with ray marching: during ray tracing volumes are intersected by rays and are evaluated to contribute to the ray. ‘densitySlice’ is the volume density shader slice ‘shadingSlice’ is the volume sample shader slice ‘sv’ is the sample vector.
RayCast Implicit surfaces need to be raycasted, these are volumes that can be evaluated as a surface usually by tracing the isosurface of the volume density field. This method returns the hit distance. It should also set the normal, position and facet packets.
Density Returns the density at the given position, if ‘worldPos’ is true it means that the position is in world space. The density is zero outside the volume so this can also be used to find out if we are inside or outside said volume.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
int
Type
(LXtObjectID self)¶
-
LxResult
RenderInit
(LXtObjectID self, LXtObjectID sv)¶
-
LxResult
RaySample
(LXtObjectID self, LXtObjectID densitySlice, LXtObjectID shadingSlice, LXtObjectID sv, LXtObjectID raycastObj, LXtObjectID raymarchObj)¶
-
LxResult
RayCast
(LXtObjectID self, LXtObjectID densitySlice, LXtObjectID sv, LXtObjectID raycastObj, double *dist, int *localShader)¶
-
LxResult
Density
(LXtObjectID self, LXtObjectID densitySlice, LXtObjectID sv, LXtObjectID raycastObj, const LXtVector pos, int worldPos, double *dens)¶
-
LxResult
ILxTableauLight¶
-
class
ILxTableauLight
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ Lights are 3D elements, where the bound (if any) represents the effective coverage area for anything illuminated by the light. The light source can be sampled at any desired quality level, which is simply the number of samples over the emissive volume defined by the light. ‘Emit’ traces photons from a light. ‘ShadowMap’ returns the map and true if the light uses a shadow map.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
LxResult
Sample
(LXtObjectID self, float u, float v, const LXtFVector dir, LXtFVector wPos, LXtFVector oPos, LXtFVector norm, float t)¶
-
int
Geometry
(LXtObjectID self, void *gc)¶
-
LxResult
Emit
(LXtObjectID self, unsigned int nPhotons, int offset, LXtObjectID slice, LXtSampleVectorID sv)¶
-
int
ShadowMap
(LXtObjectID self, void **ppvObj)¶
-
LxResult
ILxLightSample¶
-
class
ILxLightSample
¶ Public Functions
-
void
Vertex
(LXtObjectID self, const float *vertex)¶
-
void
LXpLightQuality¶
-
struct
st_LXpLightQuality
¶ The shader computes the light intensity and other parameters based on the sample and the ray. Sample source position is in homogeneous coordinates so it can include distant sources. Quality and shadowing are determined reading packets from the shader. These are fixed for a given light, so they can be evaluated once and should not depend on any other inputs. The quality is given by a requested number of samples for the light, as well as approximate information about falloff. For local lights, ‘center’ and ‘radius’ define a region in which the light’s sample points reside. For directional lights, ‘radius’ is half the spread in radians. ‘dir’ is the direction the light is pointing. ‘power’ is the radiant flux of the light in watts and is used for allocating emitted photons. ‘infinite’ should be one for directional lights, zero otherwise. ‘indirect’ should be one for portal lights, zero otherwise. ‘item’ is for light linking and points to the cinema light item that corresponds to this element.
Public Members
-
LXtFVector
center
¶
-
LXtFVector
dir
¶
-
float
radius
¶
-
float
cosine
¶
-
float
intensity
¶
-
float
power
¶
-
float
importance
¶
-
unsigned int
infinite
¶
-
unsigned int
indirect
¶
-
unsigned int
fallType
¶
-
unsigned int
shadType
¶
-
unsigned int
samples
¶
-
unsigned int
linkMode
¶
-
void *
linkGroup
¶
-
void *
item
¶
-
char *
lpeLabel
¶
-
LXtFVector
LXpLightShadowing¶
-
struct
st_LXpLightShadowing
¶ Lights that want to use a shadow map can compute this packet. It indicates the center, direction, orientation, spread angle and resolution of the requested shadow map. ‘exclude’ is for self shadowing. Some items do their own self shadowing and don’t want to be included in the shadow computation.
Public Members
-
LXtFVector
pos
¶
-
LXtFVector
ray
¶
-
LXtFVector
up
¶
-
float
angle
¶
-
unsigned int
mapRes
¶
-
void *
exclude
¶
-
LXtFVector
LXpLightSource¶
-
struct
st_LXpLightSource
¶ The light color and brightness for locations in space is computed using another shader slice. This packet is initialized with the world and object position and the ray for the light sample being shaded.
Public Members
-
LXtFVector
wPos
¶
-
LXtFVector
oPos
¶
-
LXtFVector
dir
¶
-
LXtFVector
norm
¶
-
float
len
¶
-
float
nDotWi
¶
-
int
sampleIndex
¶
-
void *
lightSource
¶
-
void *
lightItem
¶
-
LXtFVector
LXpLightColor¶
-
struct
st_LXpLightColor
¶ The colors at the given sample location are computed by the light and returned in this packet. Brightness takes into account falloff and light shape, and the colors are not pre-multiplied by the attenuation. ‘unshad’ is not set by the light shader itself but is used in computing shadow alpha. ‘pdf’ is used for multiple importance sampling.
Public Members
-
LXtFVector
color
¶
-
LXtFVector
shadow
¶
-
LXtFVector
unshad
¶
-
float
diffuse
¶
-
float
specular
¶
-
float
caustics
¶
-
float
subsurface
¶
-
float
brightness
¶
-
float
pdf
¶
-
LXtFVector
LXsP_LGT_QUALITY
LXsP_LGT_SHADOWING
LXsP_LGT_SOURCE
LXsP_LGT_COLOR
-
LXs_FX_LIGHTCOLOR
¶ These are the texture effect names that apply to lights.
LXs_FX_LIGHTSHADOW
LXs_FX_LIGHTDIFFUSE
LXs_FX_LIGHTSPECULAR
LXs_FX_LIGHTCAUSTICS
LXs_FX_LIGHTDISTANCE
LXs_FX_LIGHTANGLE
-
LXs_FX_VOLSCATTER
¶ These are the texture effect names that apply to volumetrics.
LXs_FX_VOLSCATTER_COL
LXs_FX_VOLABSORB
LXs_FX_VOLABSORB_COL
LXs_FX_VOLDENSITY
LXs_FX_VOLLEVEL
LXs_FX_VOLSMPDENSITY
LXs_FX_VOLAMB_COL
LXs_FX_VOLLUMI
LXs_FX_VOLLUMI_COL
ILxTableauProxy¶
-
class
ILxTableauProxy
¶ Public Functions
-
LxResult
Bound
(LXtObjectID self, LXtTableauBox bbox)¶ A proxy is sampled to add elements to the tableau. The proxy object needs to keep track of which sub-elements have been added to the tableau so they are only added once.
-
unsigned int
FeatureCount
(LXtObjectID self, LXtID4 type)¶
-
LxResult
FeatureByIndex
(LXtObjectID self, LXtID4 type, unsigned int index, const char **name)¶
-
LxResult
SetVertex
(LXtObjectID self, LXtObjectID vdesc)¶
-
LxResult
Sample
(LXtObjectID self, const LXtTableauBox bbox, LXtObjectID tableau)¶
-
LxResult
ILxTableauInstance¶
-
class
ILxTableauInstance
¶ Public Functions
-
LxResult
Properties
(LXtObjectID self, LXtObjectID vecstack)¶ An instance is a copy of another element, with variations. It most likely has a different position and orientation, and it may have differences in shading or shading parameters. These differences are encoded in the instance interface. Any normal element may also present this interface, if it wants to have these attributes as well. Instances can set packets in the sample vector for global parameters of the element to be used by its shader.
-
LxResult
GetTransform
(LXtObjectID self, unsigned endPoint, LXtVector offset, LXtMatrix xfrm)¶ The transformation of an instance (or any element) can be read with this method. The endpoint can specify either the start or end of the tableau time interval.
-
LxResult
GetDissolve
(LXtObjectID self, double *dissolve)¶ The instance may be dissolved independently.
-
LxResult
ParticleDescription
(LXtObjectID self, void **ppvObj)¶ An instance can define particle features. These are given by a tableau vertex to describe the feature vector, which can then be read.
-
LxResult
ParticleArray
(LXtObjectID self, float *vector)¶
-
LxResult
LXiTBLX_ENDPOINT_T0
LXiTBLX_ENDPOINT_T1
ILxTableauShader¶
-
class
ILxTableauShader
¶ Public Functions
-
LxResult
Select
(LXtObjectID self, LXtObjectID teElt, LXtObjectID tvDesc)¶ All 3D elements have shaders, which are used by the renderer to compute desired sample vector packets from a set of input packets. Shaders are polymorphic with an ILxVectorType interface, so it’s easy to determine what they take as input and output. To perform computations we need to “slice” the shader, which basically selects a set of desired output packets. The output packets are determined by the vector type, and the vertex description provides information about vertex packets to use during computation.
-
LxResult
Slice
(LXtObjectID self, LXtObjectID vtOutput, LXtObjectID tvDesc, void **ppvObj)¶
-
bool
GetSlice
(CLxLoc_ShaderSlice &slice, ILxUnknownID vtOutput, ILxUnknownID tvDesc)¶ User Class Only:
-
LxResult
ILxShaderSlice¶
-
class
ILxShaderSlice
¶ Public Functions
-
LxResult
Evaluate
(LXtObjectID self, LXtObjectID vecstack)¶ The result of a successful slice is a shader slice interface. This is also polymorphic with an ILxVectorType to select its inputs. The Evaluate() method computes the output packets for a sample vector.
-
LxResult
LXpCameraRay¶
-
struct
st_LXpCameraRay
¶ The environment in the tableau is given as a list of shaders. The primary function of an environment is to read the direction of the camera ray and output the color at infinity. Origin is also provided, although for environment shaders this can be ignored since the background is assumed to be at infinity. Spread is the angular size of the sampling cone, in radians.
LXpEnvInfiniteColor¶
-
struct
st_LXpEnvInfiniteColor
¶
LXpEnvVisibility¶
-
struct
st_LXpEnvVisibility
¶ An environment can also provide flags to determine where it is visible. Typically only one environment would be visible in a specific context. If there are multiple environments visible to the camera, for example, it’s undetermined what the render camera will see. Environments can also be restricted to match particular light path expressions with a label.
LXpEnvShape¶
-
struct
st_LXpEnvShape
¶ In PhotoView, sometimes we render the environment as if it were an actual sphere in the background of everything. This packet is used for that feature.
LXpEnvFog¶
-
struct
st_LXpEnvFog
¶ An environment can also provide fog values indicating color and absorption values.
LXpGlobalLighting¶
-
struct
st_LXpGlobalLighting
¶ The environment shaders can also provide global render settings. Each of these packets should occur in only one shader, or else the result is undetermined. The global lighting packet sets ambient illumination and some basic raytracing settings.
Public Members
-
LXtFVector
ambientColor
¶
-
float
ambientIntensity
¶
-
float
rayThresh
¶
-
float
rayClamp
¶
-
float
rayOffset
¶
-
unsigned int
shadDepth
¶
-
unsigned int
reflDepth
¶
-
unsigned int
refrDepth
¶
-
unsigned int
unbiased
¶
-
unsigned int
specSmps
¶
-
unsigned int
animNoise
¶
-
unsigned int
rayAccel
¶
-
unsigned int
batchSize
¶
-
unsigned int
impBoost
¶
-
unsigned int
directSmps
¶
-
unsigned int
directMIS
¶
-
unsigned int
reflSmps
¶
-
unsigned int
refrSmps
¶
-
unsigned int
subsSmps
¶
-
unsigned int
noiseSeed
¶
-
float
smpThresh
¶
-
float
varThresh
¶
-
float
pathThresh
¶
-
LXtFVector
LXpGlobalDisplacement¶
-
struct
st_LXpGlobalDisplacement
¶ Displacement settings.
LXpGlobalIndirect¶
-
struct
st_LXpGlobalIndirect
¶ Indirect illumination and caustics settings.
Public Members
-
float
range
¶
-
float
irrRays2
¶
-
float
irrRate
¶
-
float
irrRatio
¶
-
float
irrSmooth
¶
-
float
irrRetrace
¶
-
unsigned int
enable
¶
-
unsigned int
scope
¶
-
unsigned int
limit
¶
-
unsigned int
rays
¶
-
unsigned int
subs
¶
-
unsigned int
vols
¶
-
unsigned int
bump
¶
-
unsigned int
super
¶
-
unsigned int
reject
¶
-
unsigned int
caus
¶
-
unsigned int
giBack
¶
-
unsigned int
irrCache
¶
-
unsigned int
irrDirect2
¶
-
unsigned int
irrRays
¶
-
unsigned int
irrVals
¶
-
unsigned int
irrGrads
¶
-
unsigned int
irrSample
¶
-
unsigned int
irrData
¶
-
unsigned int
irrStart
¶
-
unsigned int
irrEnd
¶
-
unsigned int
irrWalk
¶
-
unsigned int
irrLEnable
¶
-
unsigned int
irrSEnable
¶
-
unsigned int
radCache
¶
-
unsigned int
envSample
¶
-
unsigned int
envRays
¶
-
unsigned int
envMIS
¶
-
char *
irrLName
¶
-
char *
irrSName
¶
-
float
LXpGlobalCaustics¶
-
struct
st_LXpGlobalCaustics
¶
LXpGlobalRendering¶
-
struct
st_LXpGlobalRendering
¶ Miscellaneous render settings, specific to our built-in renderer.
Public Members
-
float
subdRate
¶
-
float
coarseRate
¶
-
float
fineRate
¶
-
float
fineThresh
¶
-
float
aaImpMin
¶
-
unsigned int
multiGeo
¶
-
unsigned int
mergeFur
¶
-
unsigned int
subdAdapt
¶
-
unsigned int
renderType
¶
-
unsigned int
aa
¶
-
unsigned int
aaFilter
¶
-
unsigned int
motionBlur
¶
-
unsigned int
field
¶
-
unsigned int
frmPasses
¶
-
unsigned int
dof
¶
-
unsigned int
stereo
¶
-
unsigned int
stereoEye
¶
-
unsigned int
stereoComp
¶
-
unsigned int
upAxis
¶
-
unsigned int
bucketX
¶
-
unsigned int
bucketY
¶
-
unsigned int
bktOrder
¶
-
unsigned int
bktReverse
¶
-
unsigned int
bktWrite
¶
-
unsigned int
bktSkip
¶
-
unsigned int
bktRefine
¶
-
unsigned int
aRefine
¶
-
unsigned int
mergeRad
¶
-
unsigned int
bakeDir
¶
-
unsigned int
outputMasking
¶
-
unsigned int
proxyExp
¶
-
unsigned int
rayEngine
¶
-
unsigned int
sppMin
¶
-
unsigned int
sppMax
¶
-
unsigned int
shdEngine
¶
-
float
-
LXsP_CAM_RAY
¶ There are actually two camera ray packets. The default one contains the camera ray at time t0, the start interval for the tableau. The second ray packet contains the ray at time T1, the end of the interval. Good environment shaders will interpolate colors along an arc between the two rays to account for motion blurring of the environment as the camera rotates.
LXsP_CAM_RAY_T1
LXsP_ENV_INFINITECOLOR
LXsP_ENV_VISIBILITY
LXsP_GLO_LIGHTING
LXsP_GLO_DISPLACEMENT
LXsP_GLO_INDIRECT
LXsP_GLO_CAUSTICS
LXsP_GLO_RENDERING
LXpCameraResolution¶
-
struct
st_LXpCameraResolution
¶ The environment shader also provides packets to describe the camera used for rendering. Some are required and some are optional, and which ones are present determines the type of camera to use for the rendering. This required packet defines the frame buffer size in pixels and the per-pixel sampling. Sampling quality is given by a floating point number of samples per pixel, and a shading rate. These may be interpreted in any manner appropriate to the renderer.
LXpCameraFrustum¶
-
struct
st_LXpCameraFrustum
¶ Orthographic cameras are specified by a set of parameters which define the view frustum, lens and aperture. Eye position and transform are the location and orientation of the camera in world coordinates. Focal length, focus distance and f-Stop define the camera’s zoom and depth of field. Iris blades, rotation, and bias affect the depth of field “bokeh” shape. Distort is a barrel or pin-cushion value and is 1.0 for a flat projection. Interocular distance is the distance between the eyes for stereo rendering. The remaining parameters define the projection from 3D to 2D, ala Maya.
Public Members
-
LXtFVector
eyePos
¶
-
float
focalLength
¶
-
float
focusDist
¶
-
float
fStop
¶
-
float
irisRot
¶
-
float
irisBias
¶
-
float
distort
¶
-
float
ioDist
¶
-
float
convDist
¶
-
float
blurLength
¶
-
float
blurOffset
¶
-
float
apertureX
¶
-
float
apertureY
¶
-
float
offsetX
¶
-
float
offsetY
¶
-
float
squeeze
¶
-
float
target
¶
-
float
clipDist
¶
-
int
clipping
¶
-
int
filmFit
¶
-
int
projType
¶
-
int
irisBlades
¶
-
void *
item
¶
-
int
useMask
¶
-
float
overscan
¶
-
float
filmRoll
¶
-
LXtFVector
LXpCameraPixel¶
-
struct
st_LXpCameraPixel
¶ In addition to simple distortion, raytrace camera distortions can be computed procedurally for each pixel. If the environment has a slice that reads the camera pixel packet and writes the LXpCameraRay packet, then the slice will be evaluated before raytracing. The slice reads the buffer XY, and optionally the ray direction packet (which is initialized based on the frustum if any), and writes an updated ray direction.
LXpCameraUVBake¶
-
struct
st_LXpCameraUVBake
¶ A camera intended to perform UV baking is specified by providing one of these packets instead of a frustum. The packet contains the name of the feature which is the source of the UV coordinates. Any element that doesn’t support this UV feature name is not rendered.
Public Members
-
const char *
name
¶
-
const char *
-
LXsP_CAM_RESOLUTION
¶ The frustum may be a source of motion blur, so the renderer will query for one at time T0 and another at time T1. If the T1 frustum is missing, the camera is assumed to be non-moving.
LXsP_CAM_FRUSTUM
LXsP_CAM_FRUSTUM_T1
LXsP_CAM_PIXEL
LXsP_CAM_UVBAKE
ILxTableauFilter¶
-
class
ILxTableauFilter
¶ Public Functions
-
const char *
Order
(LXtObjectID self)¶ Filters are fundamentally 2D elements, and operate in the image space over the frame buffer. The bound method for a filter returns a 2D bounding box and a kernel radius, plus some flags.
-
LxResult
Select
(LXtObjectID self, LXtObjectID framebuf)¶
-
unsigned int
Bound
(LXtObjectID self, float box[4], float *kernel)¶
-
unsigned int
Pixel
(LXtObjectID self, LXtObjectID framebuf, const float pos[2])¶ The Pixel() and Region() methods are used to do proecessing based on the filter type. Both get the frame buffer and the
-
unsigned int
Region
(LXtObjectID self, LXtObjectID framebuf, const float box[4])¶
-
const char *
LXfTBLX_FILT_PIXEL
LXfTBLX_FILT_STRIP
LXfTBLX_FILT_RELATIVE
-
LXfTBLX_PREVIEW_UPDATE_NONE
¶ A channel change can have no affect on the preview, or it may be necessary to update the geometry or the shading. The item can decide how individual channels should update the preview by returning the appropriate combination of the following values when the PreviewUpdate function is called.
LXfTBLX_PREVIEW_UPDATE_GEOMETRY
LXfTBLX_PREVIEW_UPDATE_SHADING
-
LXiTBXELT_SURFACE
¶ Any item can potentially participate in rendering by adding elements to the tableau. Any item (or package) which presents the following interface will get called upon when it’s time to create a tableau from a cinema.
Elements This is called to let the item add elements directly to a tableau.
Preview This is similar, but is used for adding elements needed to preview this item.
Instance This will be called by other items which want instances of this item. The item should add elements to instance itself given the tableua instance object as reference.
SubShader Elements such as lights can affect their own shading. If that’s the case, this method will be called to allow the item to create a shader to be used as a part of the shader for this item.
GetCurves Elements may be able to provide curves which can be used as hair guides. The string tag interface selects a subset of curves, and the object returned is a tableau surface element which can be sampled.
ElementType If implemented, ElementType allows the tableau source to specify what types of elements it can add to the tableau. It is queried with one of the following types, and puts 1 into *supported if it will add elements of that type, 0 if it won’t, or -1 if it doesn’t know.
LXiTBXELT_VOLUME
LXiTBXELT_LIGHT
LXiTBXELT_FILTER
LXiTBXELT_PROXY
ILxTableauSource¶
-
class
ILxTableauSource
¶ Public Functions
-
LxResult
Elements
(LXtObjectID self, LXtObjectID tableau)¶
-
LxResult
Preview
(LXtObjectID self, LXtObjectID tableau)¶
-
LxResult
Instance
(LXtObjectID self, LXtObjectID tableau, LXtObjectID instance)¶
-
LxResult
SubShader
(LXtObjectID self, LXtObjectID tableau, void **ppvObj)¶
-
LxResult
PreviewUpdate
(LXtObjectID self, int chanIndex, int *update)¶
-
LxResult
GetCurves
(LXtObjectID self, LXtObjectID tableau, LXtObjectID tags, void **ppvObj)¶
-
LxResult
ElementType
(LXtObjectID self, int type, int *supported)¶
-
LxResult
LXsPKG_INSTANCEABLE_CHANNEL
ILxInstanceable¶
-
class
ILxInstanceable
¶ The cleanest way for items to provide elements that can be instanced is to implement an Instanceable object. This is stored in an OBJREF channel on the item, given by a server tag on the package. The item type will implement a modifier for computing the instanceable object from the state of the item’s channels.
Public Functions
-
int
Compare
(LXtObjectID self, LXtObjectID other)¶ Compare this instanceable to another of the same type and return a value on a comparison metric. The value is the same sense as strcmp(), with zero for identical objects, and positive and negative values indicating relatve order.
-
LxResult
AddElements
(LXtObjectID self, LXtObjectID tableau, LXtObjectID instT0, LXtObjectID instT1)¶ When the elements are needed such as when the item itself is to be rendered or instanced the AddElements() method is called. The T0 and T1 instanceable objects are from the shutter open and close times, and can be read to compute state that changes while the shutter is open. The object itself is computed at the frame time. The method should call AddInstanceableElement() for all elements in the item.
-
LxResult
GetSurface
(LXtObjectID self, void **ppvObj)¶ Alternately the instanceable object can provide a Surface object which will be added to the tableau.
-
int
ILxTableauService¶
-
class
ILxTableauService
¶ Public Functions
-
LxResult
ScriptQuery
(LXtObjectID self, void **ppvObj)¶
-
LxResult
AllocVertex
(LXtObjectID self, void **ppvObj)¶
-
LxResult
VertexFromFeatures
(LXtObjectID self, LXtObjectID surfObj, LXtObjectID vertex)¶ This utility method will populate a vertex description with all the known features of the tableau surface object. It puts the four required features at the front as normal.
-
bool
NewVertex
(CLxLoc_TableauVertex &vert)¶ User Class Only:
-
LxResult
ILxNodalService¶
-
class
ILxNodalService
¶ Public Functions
-
int
AddSampleChan
(LXtObjectID self, LXtObjectID eval, LXtObjectID item, int chanIndex, int *idxArray, int type)¶ The nodal service is used to establish and evaluate channels as part of the Nodal Shading system. The service is used by textures & shaders in two ways: as part of the Shader Tree, their inputs can be evaluated on a per-sample basis, and their outputs can also be requested as part of the Nodal Modifier system. The Nodal Service will transparently handle both of these cases. AddSampleChan & AddSampleChanName are used to add a channel of an item to the nodal evaluation system. When processed as part of the Shader Tree, the evaluator index will be stored in the ‘idxArray’ passed, and when processed as a nodal modifier, the evaluator index will be stored internally within the nodal evaluator (and ‘idxArray’ may be NULL). Additionally, within the Shader Tree, if the channel is not actually driven on a per-sample basis for the current pass, the evaluator index is stored as LXiNODAL_NOT_DRIVEN. This value speeds up the evaluations by letting the Get* methods know that the value does not have to be read from the evaluator. When adding channels for texture locators, LXfECHAN_LOCATOR should be ORed with the LXfECHAN_READ and/or LXfECHAN_WRITE flags. GetFloat, GetInt & GetValue are used to get the current sample values from a nodal evaluator. ‘index’ is the index of channel in the item. For evaluations in Shader Tree, the values will be read from the evaluator using the ‘idxArray’ passed, unless the stored index is LXiNODAL_NOT_DRIVEN, in which case the ‘orig’ value will be returned. When evaluated as a nodal modifier, the internal index array will be used. IsDriven & IsDrivenName are used to determine if a channel is driven per-sample, and therefore needs to be read at every sample. If not, the value can be read once per layer. AnyDrivenChans is used for optimization of the evaluation. It is passed a contiguous array of evaluator indexes, and will return LXe_TRUE for the first sample-driven channel, and LXe_FALSE if none are found.
-
int
AddSampleChanName
(LXtObjectID self, LXtObjectID eval, LXtObjectID item, const char *chanName, int *idxArray, int type)¶
-
double
GetFloat
(LXtObjectID self, LXtObjectID etor, int *idxArray, int index, double orig)¶
-
int
GetInt
(LXtObjectID self, LXtObjectID etor, int *idxArray, int index, int orig)¶
-
void *
GetValue
(LXtObjectID self, LXtObjectID etor, int *idxArray, int index, void *orig)¶
-
int
IsDriven
(LXtObjectID self, LXtObjectID item, int chanIndex)¶
-
int
IsDrivenName
(LXtObjectID self, LXtObjectID item, const char *chanName)¶
-
int
AnyDrivenChans
(LXtObjectID self, int *chans, int count)¶
-
int
LXtSampleIndex¶
-
struct
st_LXtSampleIndex
¶ This structure can be used to simplify conversion from the older value textures. It contains 3 indexes, the channel index inthe item, the evaluator index for the per-layer data, and the evaluator index for the per-sample data.
LXfECHAN_LOCATOR
LXiNODAL_NOT_DRIVEN
ILxTableauListener¶
-
class
ILxTableauListener
¶ Public Functions
-
void
ChannelChange
(LXtObjectID self, LXtObjectID tableau, LXtObjectID item, int channel)¶ In order for plugins to listen to events, we provide the following event translator interface. A tableau channel change event is a general event such that a plugin can listen for any channel changes through the tableau. This is useful for plugins which generate tableau elements, as it gets events on both animation and general modification events, so it’s simple to then fire a tableau update event.
-
void
FlushElements
(LXtObjectID self, LXtObjectID tableau)¶ The only two other events are when a tableau indicates that every element in the tableau is being flushed, and when the tableau is warning clients that it is being destroyed.
-
void
TableauDestroy
(LXtObjectID self, LXtObjectID tableau)¶
-
void
ILxTableauSource1¶
-
class
ILxTableauSource1
¶ Public Functions
-
LxResult
Elements
(LXtObjectID self, LXtObjectID tableau)¶ The TableauSource1 interface is the legacy interface, without the ElementType function.
-
LxResult
Preview
(LXtObjectID self, LXtObjectID tableau)¶
-
LxResult
Instance
(LXtObjectID self, LXtObjectID tableau, LXtObjectID instance)¶
-
LxResult
SubShader
(LXtObjectID self, LXtObjectID tableau, void **ppvObj)¶
-
LxResult
PreviewUpdate
(LXtObjectID self, int chanIndex, int *update)¶
-
LxResult
GetCurves
(LXtObjectID self, LXtObjectID tableau, LXtObjectID tags, void **ppvObj)¶
-
LxResult
ILxTableauInstance1¶
-
class
ILxTableauInstance1
¶ Public Functions
-
LxResult
Properties
(LXtObjectID self, LXtObjectID vecstack)¶
-
LxResult
GetTransform
(LXtObjectID self, unsigned endPoint, LXtVector offset, LXtMatrix xfrm)¶
-
LxResult
LXsITYPE_ENVMATERIAL
LXsICHAN_ENVMATERIAL_TYPE
LXsICHAN_ENVMATERIAL_ZENCOLOR
LXsICHAN_ENVMATERIAL_SKYCOLOR
LXsICHAN_ENVMATERIAL_GNDCOLOR
LXsICHAN_ENVMATERIAL_NADCOLOR
LXsICHAN_ENVMATERIAL_SKYEXP
LXsICHAN_ENVMATERIAL_GNDEXP
LXsICHAN_ENVMATERIAL_HAZE
LXsICHAN_ENVMATERIAL_NORMALIZE
LXsICHAN_ENVMATERIAL_DISC
LXsICHAN_ENVMATERIAL_CLMPGAMMA
LXsICHAN_ENVMATERIAL_FOG_TYPE
LXsICHAN_ENVMATERIAL_FOG_START
LXsICHAN_ENVMATERIAL_FOG_END
LXsICHAN_ENVMATERIAL_FOG_DENSITY
LXsICHAN_ENVMATERIAL_FOG_HEIGHT
LXsICHAN_ENVMATERIAL_FOG_FALLOFF
LXsICHAN_ENVMATERIAL_ALBEDOCOLOR
LXsICHAN_ENVMATERIAL_DISCCOLOR
LXsICHAN_ENVMATERIAL_INSCATTER
LXsICVAL_ENVMATERIAL_ENVTYPE_CONSTANT
LXsICVAL_ENVMATERIAL_ENVTYPE_GRAD2
LXsICVAL_ENVMATERIAL_ENVTYPE_GRAD4
LXsICVAL_ENVMATERIAL_ENVTYPE_OVERCAST