r3rmprop
real/raytr/r3rmprop.h
r3raytr
Renderer's material property base class (also called shader base class) A renderer material property has one major function: to evaluate the value of a channel/variable.
r3Frmapsource
R3CLID_FRMAPSOURCE
r3Rmatprop
R3CLID_RMATPROP - 418
OutputChannel, OutputName, OutputType, OutputSubCount, InputChannels, InputNames, InputCnt, InputTypes, InputSubCounts, Operation, AntiAlias, Normalize, TransformToMappingSpa, AntiAliasStart, OutputIndex, OutputOffset, InputIndices, InputOffsets, CastFloatParams, InputSubChannels, OutputSubChannel, CallbackMethod, CallbackObject, ChangesInputs,
int R3RegisterRMatPropClass(R3APP *app);
R3RMPM_EVALUATE
EVALUATE
R3RMPM_EVALUATE
R3INT, phase to be evaluated
R3OBJ*, parent mapping object.
obj.EVALUATE(p1, p2, 0);
evaluate the object at given phase
R3RMPM_EVALBYPARAM
EVALBYPARAM
R3RMPM_EVALBYPARAM
R3BOOL, TRUE if evaluation succeeded
R3FLOAT, Result channel
rc = obj.EVALBYPARAM(p1, 0);
When this base class receives R3RMPM_EVALUATE, it computes the address of the target and input channels and sends this message to the object. So, when your custom prop receives R3RMPM_EVALUATE, you may let the super class to handle it. Then your object will receive this message sent by this basic class. The basic property class may send several R3RMPM_EVALBYPARAM calls originating from one R3RMPM_EVALUATE in order to do anti-aliasing. The basic property class takes care of using correct operation type i.e. replacing the previous channel value, summing it etc.
R3RMPM_PHASECHECK
PHASECHECK
R3RMPM_PHASECHECK
char**, pointer to error message pointer
R3INT, active phases from the parent objects
obj.PHASECHECK(p1, p3);
phase related error checking after channel link. * Return FALSE if object is in invalid state (the object is not suitable for use in the specified phase)
OutputChannel
OutputChannel
R3RMPA_OutputChannel
Integer
R3INT
class id of the output channel
value = jsobj.GetOutputChannel();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_OutputChannel, &value, R3TAG_END);
OutputName
OutputName
R3RMPA_OutputName
String
char*
name of the output channel
value = jsobj.GetOutputName();
char* value;
R3GetAttrs(r3obj, R3RMPA_OutputName, &value, R3TAG_END);
OutputType
OutputType
R3RMPA_OutputType
Integer
R3INT
type code (see enum below) for the output channel
value = jsobj.GetOutputType();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_OutputType, &value, R3TAG_END);
OutputSubCount
OutputSubCount
R3RMPA_OutputSubCount
Integer
R3INT
(read-only) sub count of the output channel
value = jsobj.GetOutputSubCount();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_OutputSubCount, &value, R3TAG_END);
InputChannels
InputChannels
R3RMPA_InputChannels
Integer
int*
array of class id of the input channels
value = jsobj.GetInputChannels();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputChannels, &value, R3TAG_END);
InputNames
InputNames
R3RMPA_InputNames
String
char**
array of input channel names
value = jsobj.GetInputNames();
char** value;
R3GetAttrs(r3obj, R3RMPA_InputNames, &value, R3TAG_END);
InputCnt
InputCnt
R3RMPA_InputCnt
Integer
R3INT
number of input channels
value = jsobj.GetInputCnt();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_InputCnt, &value, R3TAG_END);
InputTypes
InputTypes
R3RMPA_InputTypes
Integer
int*
array of type codes (see enum below) for the input channel
value = jsobj.GetInputTypes();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputTypes, &value, R3TAG_END);
InputSubCounts
InputSubCounts
R3RMPA_InputSubCounts
Integer
int*
array of sub counts for the input channels. Read only
value = jsobj.GetInputSubCounts();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputSubCounts, &value, R3TAG_END);
Operation
Operation
R3RMPA_Operation
Integer
R3INT
see operation codes below
jsobj.SetOperation(value);
value = jsobj.GetOperation();
R3INT value = ...;
R3SetAttrs(r3obj, R3RMPA_Operation, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3RMPA_Operation, &value, R3TAG_END);
AntiAlias
AntiAlias
R3RMPA_AntiAlias
Number
R3FLOAT
value 0.0 ... infinity, the higher the value, the higher the antialiasing level
jsobj.SetAntiAlias(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3RMPA_AntiAlias, value, R3TAG_END);
Normalize
Normalize
R3RMPA_Normalize
Boolean
R3BOOL
if set, result channel is normalized
jsobj.SetNormalize(value);
value = jsobj.GetNormalize();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3RMPA_Normalize, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3RMPA_Normalize, &value, R3TAG_END);
TransformToMappingSpa
TransformToMappingSpa
R3RMPA_TransformToMappingSpa
Boolean
R3BOOL
if set, result is transformed to material space
jsobj.SetTransformToMappingSpa(value);
value = jsobj.GetTransformToMappingSpa();
R3BOOL value = ...;
R3SetAttrs(r3obj, R3RMPA_TransformToMappingSpace, value, R3TAG_END);
R3BOOL value;
R3GetAttrs(r3obj, R3RMPA_TransformToMappingSpace, &value, R3TAG_END);
AntiAliasStart
AntiAliasStart
R3RMPA_AntiAliasStart
Number
R3FLOAT
value 0.0 ... infinity, the lower the value, the easier a_a starts
jsobj.SetAntiAliasStart(value);
R3FLOAT value = ...;
R3SetAttrs(r3obj, R3RMPA_AntiAliasStart, value, R3TAG_END);
OutputIndex
OutputIndex
R3RMPA_OutputIndex
Integer
R3INT
read-only. 'Compiled' output data selector
value = jsobj.GetOutputIndex();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_OutputIndex, &value, R3TAG_END);
OutputOffset
OutputOffset
R3RMPA_OutputOffset
Integer
R3INT
read-only. 'Compiled' output data offset
value = jsobj.GetOutputOffset();
R3INT value;
R3GetAttrs(r3obj, R3RMPA_OutputOffset, &value, R3TAG_END);
InputIndices
InputIndices
R3RMPA_InputIndices
Integer
int*
read-only
value = jsobj.GetInputIndices();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputIndices, &value, R3TAG_END);
InputOffsets
InputOffsets
R3RMPA_InputOffsets
Integer
int*
read-only
value = jsobj.GetInputOffsets();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputOffsets, &value, R3TAG_END);
CastFloatParams
CastFloatParams
R3RMPA_CastFloatParams
Boolean
R3BOOL
read-only, TRUE if called should cast float params to vectors
value = jsobj.GetCastFloatParams();
R3BOOL value;
R3GetAttrs(r3obj, R3RMPA_CastFloatParams, &value, R3TAG_END);
InputSubChannels
InputSubChannels
R3RMPA_InputSubChannels
Integer
int*
input sub channel selections. 0=input all sub channels, 1-3=input a selected sub channel.
value = jsobj.GetInputSubChannels();
int* value;
R3GetAttrs(r3obj, R3RMPA_InputSubChannels, &value, R3TAG_END);
OutputSubChannel
OutputSubChannel
R3RMPA_OutputSubChannel
Integer
int
output sub channel selection. 0=write to all sub channels of the output, 1-3=output to a selected sub channel.
value = jsobj.GetOutputSubChannel();
int value;
R3GetAttrs(r3obj, R3RMPA_OutputSubChannel, &value, R3TAG_END);
CallbackMethod
CallbackMethod
R3RMPA_CallbackMethod
Integer
R3INT
jsobj.SetCallbackMethod(value);
R3INT value = ...;
R3SetAttrs(r3obj, R3RMPA_CallbackMethod, value, R3TAG_END);
CallbackObject
CallbackObject
R3RMPA_CallbackObject
Object
R3OBJ*
callback hook. Called from EVALUATE method
jsobj.SetCallbackObject(value);
R3OBJ* value = ...;
R3SetAttrs(r3obj, R3RMPA_CallbackObject, value, R3TAG_END);
ChangesInputs
ChangesInputs
R3RMPA_ChangesInputs
Boolean
R3BOOL
set to TRUE if object outputs data via its input channels
value = jsobj.GetChangesInputs();
R3BOOL value;
R3GetAttrs(r3obj, R3RMPA_ChangesInputs, &value, R3TAG_END);
I/O target types:
In EVALUATE message, the parameter p3 points to a NULL terminated array of pointers to data sections. Each section is specified by the enumeration below. These defines can be used to index the array.
/
This macro finds a data item from the p3 parameter set of EVALUATE method, when R3RMPA_Input(Output)Index (one of defs above) and R3RMPA_Input(Output)Offset is known.
Values for Operation (see inccode 3matprp.h)