|
| RAY_ProcIsoBase () |
|
| ~RAY_ProcIsoBase () override |
|
virtual fpreal | evaluateDensity (const float pos[3]) const =0 |
|
virtual RAY_ProcIsoBase * | createChild (const UT_BoundingBox &box)=0 |
|
virtual bool | addAttributes (GU_Detail *gdp, float &velocityscale, GA_ROHandleV3 &velocity_attribute) |
|
void | getBoundingBox (UT_BoundingBox &box) override |
| The bounding box is the "object space" bounds of the procedural. More...
|
|
void | render () override |
|
| RAY_Procedural () |
|
virtual | ~RAY_Procedural () |
|
virtual const char * | className () const =0 |
|
virtual int | initialize (const UT_BoundingBox *box)=0 |
|
virtual bool | isEqual (const RAY_Procedural *) const |
|
virtual bool | canGenerateInstancedGeometry () const |
|
int | lookupParmToken (const char *name) const |
|
RAY_ProceduralGeo | createGeometry () const |
| Allocate geometry for this procedural. More...
|
|
const int64 * | getIParm (int token, size_t &size) const |
|
const fpreal64 * | getFParm (int token, size_t &size) const |
|
const UT_StringHolder * | getSParm (int token, size_t &size) const |
|
const int64 * | getIParm (const char *name, size_t &size) const |
|
const fpreal64 * | getFParm (const char *name, size_t &size) const |
|
const UT_StringHolder * | getSParm (const char *name, size_t &size) const |
|
bool | import (const char *name, int32 *value, int vectorsize) const |
|
bool | import (const char *name, int64 *value, int vectorsize) const |
|
bool | import (const char *name, fpreal32 *value, int vectorsize) const |
|
bool | import (const char *name, fpreal64 *value, int vectorsize) const |
|
bool | import (const char *name, UT_String &result, int idx=0) const |
|
bool | import (const char *name, UT_StringHolder &result, int idx=0) const |
|
bool | import (RAY_Handle handle, const char *name, int32 *value, int vectorsize) const |
|
bool | import (RAY_Handle handle, const char *name, int64 *value, int vectorsize) const |
|
bool | import (RAY_Handle handle, const char *name, fpreal32 *value, int vectorsize) const |
|
bool | import (RAY_Handle handle, const char *name, fpreal64 *value, int vectorsize) const |
|
bool | import (RAY_Handle handle, const char *name, UT_String &result, int idx=0) const |
|
bool | import (RAY_Handle handle, const char *name, UT_StringHolder &result, int idx=0) const |
|
bool | importAll (RAY_Handle handle, UT_Options &settings, bool local_only=false) const |
|
RAY_ROProceduralGeo | createGeometry (GU_DetailHandle &gdh) const |
|
RAY_ROProceduralGeo | createGeometry (GU_ConstDetailHandle &gdh) const |
|
RAY_ROProceduralGeo | createGeometry (const GU_DetailHandle *gdh, int nsegments, const fpreal *shutter_times=nullptr) const |
|
RAY_ROProceduralGeo | createGeometry (const GU_ConstDetailHandle *gdh, int nsegments, const fpreal *shutter_times=nullptr) const |
|
RAY_ProceduralData * | data () |
|
|
static void | optimizeGeometry (GU_Detail &gdp, bool create_normals_if_needed) |
|
static void | optimizeGeometry (GU_DetailHandle &gdp, bool create_normals_if_needed) |
|
const GA_Attribute * | queryGeometrySegment (const GA_Attribute *attr, int seg) const |
|
void | clearGeometrySegments (GA_Attribute *attr) |
|
fpreal | getLevelOfDetail (const UT_BoundingBox &box) const |
|
RAY_ProceduralChildPtr | createChild () const |
|
void | openGeometryObject () |
|
void | addGeometry (GU_Detail *gdp, fpreal shutter) |
|
int | openProceduralObject () |
| Open a procedural object. More...
|
|
void | addProcedural (RAY_Procedural *proc) |
|
int | addProcedural (int argc, char *argv[], const UT_BoundingBox *box=0) |
|
void | openVolumeObject () |
| Open a volume object. More...
|
|
void | addVolume (VGEO_Volume *volume, fpreal shutter) |
|
void | setPreTransform (const UT_Matrix4D &transform, fpreal shutter) |
|
void | setTransform (const UT_Matrix4D &transform, fpreal shutter) |
|
void | setStylerInfo (const RAY_StylerInfo &styler_info) |
|
bool | setShopMaterialPath (const char *shop_materialpath, const char *material_override=nullptr, const char *property_map=nullptr) |
|
void | debugSettings (const char *style="object") const |
| Print out the object's settings to stderr. More...
|
|
void | processPrimitiveMaterial (const GEO_Primitive *prim) |
|
void | closeObject () |
|
bool | parseMaterialIFD (const char *filename) |
|
int | queryWorldTransformSamples () const |
| Query the number of transform samples for the world. More...
|
|
UT_Matrix4D | queryWorldTransform (int sample) const |
| Get the world transform. More...
|
|
RAY_ObjectHandle | queryObject (const char *name) const |
|
RAY_MaterialHandle | queryMaterial (const char *name) const |
|
RAY_LightHandle | queryLight (const char *name) const |
|
int | queryTransformSamples (RAY_Handle handle) const |
|
UT_Matrix4D | queryTransform (RAY_Handle handle, int sample) const |
|
const UT_Matrix4D & | queryShaderTransform (RAY_ObjectHandle handle, int sample) const |
|
const STY_Styler & | queryStyler (RAY_ObjectHandle handle) const |
|
const char * | queryName (RAY_Handle handle) const |
|
const char * | queryRootName () const |
| Get the name of the object which owns this procedural. More...
|
|
int | queryGeometrySamples (RAY_ObjectHandle handle) const |
|
RAY_ROProceduralGeo | queryGeometry (RAY_ObjectHandle handle) const |
|
bool | changeSetting (const char *name, const char *value, const char *style="object") |
|
bool | changeSetting (const char *name, int argc, const char *const *argv, const char *style="object") |
|
bool | changeSetting (const char *name, int argc, const int *argv, const char *style="object") |
|
bool | changeSetting (const char *name, int argc, const fpreal *argv, const char *style="object") |
|
bool | declareSetting (const char *name, const char *value) |
|
bool | declareSetting (const char *name, int argc, const char *const *argv) |
|
bool | declareSetting (const char *name, int argc, const int *argv) |
|
bool | declareSetting (const char *name, int argc, const fpreal *argv) |
|
static void | lookupPrimitiveMaterialAttributes (const GEO_Detail &geo, RAY_PrimitiveMaterialAttributes &attribs) |
|
Definition at line 19 of file RAY_ProcIsoBase.h.
void RAY_ProcIsoBase::render |
( |
| ) |
|
|
overridevirtual |
The render method is called when the procedural is required to either generate geometry or split into more procedurals. Inside the render() method you should make calls to open/add/close geometry or sub-procedurals.
The way that a procedural splits is critical to the performance of mantra's ray tracer. For optimal performance, make sure that sub-procedural bounding boxes overlap as little as possible - which allows mantra to build more optimal trees for ray tracing.
In multi-threaded renders, the render() method needs to be reentrant
- that is, the render() method on different RAY_Procedural objects may be called simultaneously by different threads. This means that you should design the code in your procedural such that global data structures are protected by a thread lock (for example, a UT_Lock).
- Note
- The render method may be called more than once during a render to regenerate the geometry.
Implements RAY_Procedural.