namespace RED
Namespace of all REDsdk interfaces and classes.
Classes:
Functions:
RED_RC REDFullExp | GetREDErrorMessage ( RED::String & oErrorMessage, RED_RC iRC ) |
void REDFullExp | REDBreak ( RED_RC iRC, const char * iCaller, const void * iObject, const char * iExpression, const char * iInfo ) |
Enumerations:
Typedefs:
typedef void(* | BATCH_SYNC_CALLBACK )(void *iUserData) |
typedef RED_RC(* | IChunkInterpreterProto )(RED::IReferenceManager *iReferenceManager, RED::IStream *iStream, const RED::StreamingPolicy &iPolicy, unsigned int iChunkSignature, RED::uint64 iChunkSize, RED::Object **oResult, const RED::State &iState) |
typedef RED_RC(* | IMAGE_TOOLS_LOAD_CALLBACK )(RED::Object *oImage, const RED::String &iFilePath, RED::FORMAT iPixelFormat, bool iVerticalFlip, bool iLocalStorage, RED::TARGET iTarget, const RED::State &iState) |
typedef RED_RC(* | INSTANCE_COUNTER_CALLBACK )(RED::Vector4 &oReferenceValue, int iUid, const RED::Vector< RED::Object * > &iInstancePath, void *iUserData) |
typedef RED_RC(* | INSTANCE_COUNTER_IMAGE_CALLBACK )(RED::Object *&oReferenceValue, int iUid, const RED::Vector< RED::Object * > &iInstancePath, void *iUserData) |
typedef unsigned | int (__stdcall *THREAD_CALLBACK)(void *iThreadClass) |
typedef int __w64 | int64 |
typedef bool(* | INTERRUPT_CALLBACK )(void *iUserData) |
typedef void(* | LoadChunkNotificationCallback )(RED::uint64 iSize, void *iParameter) |
typedef void(* | OPENGL_BUFFER_CALLBACK )(void *iUser) |
typedef void(* | OPENGL_MATERIAL_CALLBACK )(RED::Object *iWindow, RED::Object *iVRL, RED::Object *iViewpoint, RED::Object *iMaterial, RED::MATERIAL_PASS iPass, RED::Object *iLight, unsigned int iShaderID, void *iUser) |
typedef void(* | OPENGL_VIEWPOINT_CALLBACK )(RED::Object *iWindow, RED::Object *iVRL, RED::Object *iViewpoint, void *iUser) |
typedef void(* | ProgressCallback )(const RED::String &iMessage, float iProgression, void *iUserData) |
typedef void(* | REDSDK_ERROR_CALLBACK )(RED_RC iRC, const char *iCaller, const void *iObject, const char *iExpression, const char *iInfo, void *iUser) |
typedef RED_RC(* | RENDERING_PROGRESS_CALLBACK )(const RED::FrameStatistics &iFrameStatistics, void *iUserData) |
typedef RED_RC(* | SOFT_BUCKET_CALLBACK )(const RED::Object *iViewpoint, RED::ISoftBucket *ioISoftBucket, void *ioUserData) |
typedef RED_RC(* | SOFT_GEOMETRY_SHADER )(RED::Vector< double >(&oVertexAttrib)[RED_VSH_NB_INPUTS], RED_VSH_INPUT(&oChannels)[RED_VSH_NB_INPUTS], int &oChannelsCount, RED::Vector< int > &oPrimitives, RED::SOFT_GEOMETRY_PRIMITIVE &oType, void *(iVertexAttrib[RED_VSH_NB_INPUTS]), RED::MESH_FORMAT iFormat[RED_VSH_NB_INPUTS], int iSize[RED_VSH_NB_INPUTS], int iVerticesCount, int *iIndex, int iCount, RED::SOFT_GEOMETRY_PRIMITIVE &iType, const double *iProgramLocal, const double *iModelViewMatrix, const double *iModelViewProjMatrix, const double *iModelMatrix) |
typedef RED_RC(* | SOFT_PIXEL_ANALYSIS_CALLBACK )(bool &oNext, const RED::ISoftRayContext &iRayContext, const RED::ISoftRenderingContext &iRenderingContext, void *iUser) |
typedef bool(* | SOFT_RAY_PROCESSING_INTERSECTION_CALLBACK )(double &oTHit, double &oTHit1, double &oTHit2, const double iE[3], const double iP[3], double iTIn, const RED::LayerSet *iLayerSet, int iNumThread, void *ioUserData) |
typedef RED_RC(* | SOFT_RAY_PROCESSING_SHADING_CALLBACK )(double oDataChannel[RED::MCL_SIZE][4], double oGeoNormal[4], RED::Object *&oMaterial, RED::LayerSet *&oLayerSet, double iTHit, double iTHit1, double iTHit2, const double iE[3], const double iP[3], int iNumThread, void *ioUserData) |
typedef RED_RC(* | SOFT_SHADER_CALLBACK )(RED::SoftFrameBufferSample &ioFrameBufferSample, const RED::ISoftRayContext &iRayContext, const RED::ISoftShaderContext &iShaderContext, const RED::ISoftRenderingContext &iRenderingContext, const RED::Version &iVersion, void *iUserData) |
typedef unsigned int __w64 | uint64 |
typedef RED_RC(* | USER_SWITCH_CALLBACK )(const RED::Object *iViewpoint, const RED::Object *iShape, RED::Vector< int > &iSelectedChildren, void *iUserData, int iStateNumber) |
Functions documentation
RED_RC REDFullExp RED::GetREDErrorMessage | ( | RED::String & | oErrorMessage, |
RED_RC | iRC | ||
) |
Gets an error message for a given RED_RC error code.
The method returns a string message in oErrorMessage filled with an explanatory text based on the value of iRC. The text is written in plain english, using standard ascii characters. Text lines are around 80 characters wide.
The audience of these messages are developpers. The message is mainly a simplified version of the return code documentation, provided for convenience.
Parameters:
oErrorMessage: | The returned error message string. |
iRC: | The return code to translate. |
Returns:
RED_BAD_PARAM if iRC is not recognized,
RED_ALLOC_FAILURE if we can't allocate oErrorMessage.
void REDFullExp RED::REDBreak | ( | RED_RC | iRC, |
const char * | iCaller, | ||
const void * | iObject, | ||
const char * | iExpression, | ||
const char * | iInfo | ||
) |
Internal error break routine.
Parameters:
iRC: | Error code. |
iCaller: | Name of the calling method or function. |
iObject: | Relevant object address for the error. |
iExpression: | Called source expression string. |
iInfo: | Extra information string. |
Enumerations documentation
Enumerator:
AA_NOTHING | enum AA_FILTER Lists all built-in post filters of the RED::RenderShaderAAFilter. Anti-aliasing post filter that does nothing. It can be used to act as a pass-through of the input image without modifying it. |
AA_AREA_FXAA | Anti-aliasing post filter based on the original FXAA algorithm from NVIDIA. |
This enumeration lists all stream read / write modes.
Enumerator:
AM_READ | The stream will be accessed in read only mode. |
AM_WRITE | The stream will be accessed in write only mode. Existing data will be overwritten. |
AM_READWRITE_OVER | The stream will be accessed in read-write mode. If the stream already exists, it will be overwritten. |
AM_READWRITE_APPEND | The stream will be accessed in read-write mode. If the stream already exists: |
Lists all the built-in attenuation equations that can be used by the light source. Parameters that are mentioned must be supplied to through RED::ILightShape::SetAttenuation or through a built-in construction helper such as RED::ILightShape::SetPointLight. See the section Decay equations to learn about the various attenuation modes and settings.
Enumerator:
ATN_LINQUA | I = 1/(1+ klin*d + kqua*d^2), where klin is the linear attenuation factor, kqua the quadratic attenuation factor and d is the distance between the point being lit and the light source. |
ATN_DMAX2 | I = 1-(d/dmax)^2, where d is the distance between the point being lit and the light source, and dmax an attenuation distance. |
ATN_NONE | The light intensity does not decrease as the lit point goes farther from the light. |
ATN_LINEAR | I = Imax/d equation. d is the distance between the lit point and the light source. |
ATN_QUADRATIC | I = Imax/(d*d) equation. d is the distance between the lit point and the light source. |
ATN_CUBIC | I = Imax/(d*d*d) equation. d is the distance between the lit point and the light source. |
ATN_N3DSMAX | No attenuation due to distance, but near and far attenuation can still be used (specific to 3DS Max software). |
ATN_L3DSMAX | A linear-like attenuation, I = min(1,att[0]/d). (specific to 3DS Max software). |
ATN_Q3DSMAX | A quadratic-like attenuation, I = min(1,(att[0] * att[0])/(d * d)). (specific to 3DS Max software). |
Identification of an image channel. An image that has a single channel is considered as a RED::CHN_RED channel image.
Enumerator:
CHN_RED | Red pixel component of an image. |
CHN_GREEN | Green pixel component of an image. |
CHN_BLUE | Blue pixel component of an image. |
CHN_ALPHA | Alpha pixel component of an image. |
Defines the type of a clouds layer in the sky (see List of REDsdk clouds type).
Enumerator:
CT_CUMULUS | Puffy clouds with high density and clearly defined edges. |
CT_STRATUS | Flat hazy clouds with low density. |
CT_CIRRUS_1 | Thin, wispy clouds visible at high altitude, model 1. |
CT_CIRRUS_2 | Thin, wispy clouds visible at high altitude, model 2. |
CT_CIRRUS_3 | Thin, wispy clouds visible at high altitude, model 3. |
CT_CIRRUS_4 | Thin, wispy clouds visible at high altitude, model 4. |
CT_CIRRUS_5 | Thin, wispy clouds visible at high altitude, model 5. |
Lists all available timers for the time spent during the GPU update for REDsdk.
Enumerator:
CGT_INIT | Initialization sequence of the GPU cluster update. |
CGT_EVENT_HANDLING | Time spent parsing and handling changes resulting of the list of events received for the REDsdk transaction being closed and that triggered the GPU cluster update. |
CGT_STREAMS_UPDATES | Time spent updating GPU scene streams. This is the internal REDsdk view of all scene graphs. |
CGT_BATCHES_UPDATES | Time spent updating GPU data containing geometry batches. A geometry batch update is triggered by the update of shapes contents ( changes in RED::MESH_CHANNEL contents ). |
CGT_FONTS_UPDATE | Time spent updating modified fonts. |
CGT_CUBES_UPDATE | Time spent updating dynamic cube maps. |
CGT_ALL | This is the total time spending in cluster GPU update. E.g. the sum of all other timers. |
CGT_SIZE | Size of this enumeration. |
Lists the different driver validation levels that are returned by the RED::IGraphicDevice interface.
Enumerator:
DR_OK | This driver version should work with all REDsdk applications. This code is returned if the installed driver for a graphic card is matching the recommended driver for this card. |
DR_OK_NEWER | This driver version should work with all REDsdk applications. This code is returned if the installed driver is newer than the recommended driver for this card. We assume that a driver which is newer than the recommendation we make should be working. This code is made to avoid creating user frustrations in indicating that a driver is not correct whereas it's working and valid. Nearly all the time, a DR_OK_NEWER code indicates that a working driver is installed and running. However, sometimes, there can still be problems. Therefore, this return codes lets you indicate a green flag to the user while still keeping in mind that the driver recommendation is available in case of problems. |
DR_NOT_CERTIFIED | This driver version may work with REDsdk but we can't be sure of it. The current installed driver version is usually older than the driver version which is recommended for this graphic card. We can't tell whether it'll be working or not. |
DR_KNOWN_ERRORS | Please change the version of this driver for a recommended version. This installed version has known issues and we don't recommend using it at all with REDsdk. |
DR_NO_DRIVER_INSTALLED | On legacy operating systems, this message indicated that no graphic driver was installed on the system and that a valid driver had to be installed before executing REDsdk. On recent operating systems (Windows 10+) REDsdk may not be able to access the details of a graphic card's driver and this return code won't be returned anymore since the operating system is in charge of the driver revisions. DR_OK is returned. |
DR_OK_SOFTWARE_RENDERING | Indicates that a software driver is installed on the local computer. This corresponds to REDsdk running in a virtualization environment. No graphic driver is needed in this case and REDsdk must be started in software rendering mode. |
List of the supported environmental projection types.
Enumerator:
ENV_SPHERICAL | Environment mapping type for RED::IImageCube::CreateEnvironmentMap. The source image must be a latitude / longitude spherical map. The (u,v) = (0,0.5) texture map point intersects the X axis of the cube map; the (u,v) = (0,1) texture map point intersects the Z axis of the cube map. |
ENV_CYLINDRICAL | Environment mapping type for RED::IImageCube::CreateEnvironmentMap. The source image is wrapped as a cylinder to define the cube map. The cylinder axis is aligned with the Z axis of the cube map. The (u,v) = (0,0.5) point is mapped along the X axis of the cube map. |
ENV_HEMISPHERICAL | Environment mapping type for RED::IImageCube::CreateEnvironmentMap. The source image must be a latitude / longitude hemispherical map. This is similar to the ENV_SPHERICAL mapping considering only the part of the map above the line of horizon. The (u,v) = (0,0) texture map point intersects the X axis of the cube map; the (u,v) = (0,1) texture map point intersects the Z axis of the cube map. |
Lists the possible texture sampling modes when the texture needs to be minified or magnified on screen.
Enumerator:
FM_LINEAR | The sampling of a texel is interpolated amongst all neighboring texels. |
FM_NEAREST | The sampling of a texel is chosen to be the value of the closest texture pixel. |
Lists all possible charsets for a font. Charsets indicates the set of unicode characters that will be made accessible for a given font.
Enumerator:
FNT_DEFAULT_CHARSET | Font default system character set. This value redirects to a given charset based on the system's locale. |
FNT_ANSI_CHARSET | Font character set. |
FNT_SYMBOL_CHARSET | Font character set. |
FNT_SHIFTJIS_CHARSET | Font character set. |
FNT_HANGEUL_CHARSET | Font character set. |
FNT_HANGUL_CHARSET | Font character set. |
FNT_GB2312_CHARSET | Font character set. |
FNT_CHINESEBIG5_CHARSET | Font character set. |
FNT_JOHAB_CHARSET | Font character set. |
FNT_HEBREW_CHARSET | Font character set. |
FNT_ARABIC_CHARSET | Font character set. |
FNT_GREEK_CHARSET | Font character set. |
FNT_TURKISH_CHARSET | Font character set. |
FNT_VIETNAMESE_CHARSET | Font character set. |
FNT_THAI_CHARSET | Font character set. |
FNT_EASTEUROPE_CHARSET | Font character set. |
FNT_MAC_CHARSET | Font character set. |
FNT_BALTIC_CHARSET | Font character set. |
Possible rendering modes for a font. Valid for system fonts.
Enumerator:
FNT_UNKNOWN | Unspecified font rendering mode. |
FNT_BITMAP | Renders a font using bitmaps. |
FNT_TRIANGLE | Renders a font using triangles. |
FNT_LINE | Renders a font using lines. |
FNT_TEXTURE | Renders a font using textures. Used for high quality font display. |
Top level font classification. Indicates the font data source.
Enumerator:
FNT_UNDEFINED | Indicates a font with undefined contents. |
FNT_SYSTEM | Indicates a system font. |
FNT_CUSTOM | Indicates a custom font. |
Lists all possible pixel formats for an image.
Enumerator:
FMT_NODATA | Currently we've nothing in the image. Such an image is bound as a black texture for all targets. |
FMT_RGBA | 8 bits per component, 32 bits per pixel, RGBA in memory. |
FMT_RGB | 8 bits per component, 24 bits per pixel, RGB in memory. |
FMT_FLOAT | s1e8m23 IEEE floating point format. 32 bits per pixel. |
FMT_FLOAT_RGBA | 1 float per component, 128 bits per pixel, RGBA in memory. |
FMT_FLOAT_RGB | 1 float per component, 96 bits per pixel, RGB in memory. |
FMT_L8 | 8 bits per component, 8 bits per pixel, L in memory. Loaded as a (L,L,L,1) texture on the GPU. |
FMT_A8 | 8 bits per component, 8 bits per pixel, A in memory. Loaded as a (0,0,0,A) texture on the GPU. |
FMT_RGBA_DXT1 | Compressed image format (lossy). Uses one bit for alpha values. Is the greatest compressed form with the RED::FMT_RGB_DXT1. |
FMT_RGBA_DXT3 | Compressed image format (lossy). Uses a better encoding for alpha values. Uses more memory than RED::FMT_RGBA_DXT1. |
FMT_RGBA_DXT5 | Compressed image format (lossy). Uses the best alpha encoding that is available for these compressed formats. Uses the same memory amount as the RED::FMT_RGBA_DXT3. |
FMT_RGB_DXT1 | Compressed image format (lossy). Is the biggest compression kind with RED::FMT_RGBA_DXT1. |
FMT_HALF_FLOAT | Half-float format. 16 bits per pixel. |
FMT_HALF_FLOAT_RGBA | Half-float RGBA format. 16 bits per component, 64 bits per pixel. |
FMT_HALF_FLOAT_RGB | Half-float RGB format. 16 bits per component, 48 bits per pixel. |
FMT_FLOAT_RGBA_AA | Compressed RGBA format for anti-aliased images. 256 bits per pixel. Can be parsed as a RGBA double format, using 8 bytes per R,G,B,A component. |
Lists feedback modes of the RED::IWindow::FrameTracing call.
Enumerator:
FTF_BY_BLOCKS | RED::IWindow::FrameTracing will return based on the specified time interval and will use a basic progressive refinement method to display the image. At the coarsest feedback level, 32 x 32 pixel blocks are displayed that are progressively refined until the full image is calculated. |
FTF_BY_SURFACE_LEVEL_0 | RED::IWindow::FrameTracing will return once the level 0 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 0 (1 ray calculated every 32 x 32 pixels). The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_SURFACE_LEVEL_1 | RED::IWindow::FrameTracing will return once the level 1 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 1 (1 ray calculated every 16 x 16 pixels). The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_SURFACE_LEVEL_2 | RED::IWindow::FrameTracing will return once the level 2 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 2 (1 ray calculated every 8 x 8 pixels). The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_SURFACE_LEVEL_3 | RED::IWindow::FrameTracing will return once the level 3 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 3 (1 ray calculated every 4 x 4 pixels). The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_SURFACE_LEVEL_4 | RED::IWindow::FrameTracing will return once the level 4 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 4 (1 ray calculated every 2 x 2 pixels). The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_SURFACE_LEVEL_5 | RED::IWindow::FrameTracing will return once the image has been fully processed. Note that because of the feedback interval of the method, the calculation may return before the image is actually completed. The image is complete only when RED::IWindow::FrameTracing says so. The feedback uses geometry surfaces rather than blocks. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_0 | RED::IWindow::FrameTracing will return once the level 0 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 0 (1 ray calculated every 32 x 32 pixels). The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_1 | RED::IWindow::FrameTracing will return once the level 1 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 1 (1 ray calculated every 16 x 16 pixels). The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_2 | RED::IWindow::FrameTracing will return once the level 2 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 2 (1 ray calculated every 8 x 8 pixels). The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_3 | RED::IWindow::FrameTracing will return once the level 3 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 3 (1 ray calculated every 4 x 4 pixels). The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_4 | RED::IWindow::FrameTracing will return once the level 4 of the image has been fully processed. This means that all pixels first hit surface are calculated and that the shading is calculated at level 4 (1 ray calculated every 2 x 2 pixels). The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_BY_BLOCKS_LEVEL_5 | RED::IWindow::FrameTracing will return once the image has been fully processed. Note that because of the feedback interval of the method, the calculation may return before the image is actually completed. The image is complete only when RED::IWindow::FrameTracing says so. The feedback uses blocks rather than geometry surfaces. See RED::IWindow::FrameTracing for details. |
FTF_PATH_TRACING | RED::IWindow::FrameTracing will return based on the specified time interval and will use a path tracing-based refinement method to display the image. |
Lists GI cache computation modes of the RED::IWindow::FrameTracingGICache call.
Enumerator:
GICM_CAMERA_VIEW | The GI cache is computed for the given camera only. |
GICM_CAMERA_SPHERICAL | The GI cache is computed for the whole set of directions around the camera position. The generated GI cache is then suitable to render panoramas. |
GICM_WORLD | The GI cache is computed for the whole scene, without taking the camera into account. |
Defines all possible grey levelling operations.
Enumerator:
GOP_GGG1 | The grey level is replicated on all RGB channels. 1.0 is set in the alpha channel. |
GOP_GGGG | The grey level is replicated on all RGBA channels. |
GOP_000G | The grey level is replicated in the alpha channel. RGB channels are set to 0.0. |
GOP_111G | The grey level is replicated in the alpha channel. RGB channels are set to 1.0. |
GOP_XXXG | The grey level is replicated in the alpha channel. RGB channels are not modified. |
GOP_GGGX | The grey level is replicated in all RGB channels. The alpha channel is not modified. |
Identification of the hardware platform used by the application.
Enumerator:
HW_GENERIC | Generic platform identifier. This is the shader configuration that is searched for when no other configurations matching the runtime platform have been found. |
HW_NVIDIA_GENERIC | NVIDIA hardware platform identifier for all NVIDIA chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_GENERIC configuration will be searched for. |
HW_NVIDIA_NV30 | NVIDIA hardware platform identifier for all NV30 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_NVIDIA_GENERIC configuration will be searched for. |
HW_NVIDIA_NV40 | NVIDIA hardware platform identifier for all NV40 and G70 chipsets revisions. G70 chipsets correspond mainly to a die shrink of NV40 chipsets and are not considered as being different. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_NVIDIA_GENERIC configuration will be searched for. |
HW_NVIDIA_G80 | NVIDIA hardware platform identifier for all G80 and G90 chipsets revisions. G90 chipsets correspond mainly to a die shrink of G80 chipsets and are not considered as being different. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_NVIDIA_GENERIC configuration will be searched for. |
HW_NVIDIA_G200 | NVIDIA hardware platform identifier for all G200 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_NVIDIA_GENERIC configuration will be searched for. |
HW_NVIDIA_G400 | NVIDIA hardware platform identifier for all G400 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_NVIDIA_GENERIC configuration will be searched for. |
HW_ATI_GENERIC | ATI hardware platform identifier for all ATI chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_GENERIC configuration will be searched for. |
HW_ATI_R300 | ATI hardware platform identifier for all R300 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_ATI_R400 | ATI hardware platform identifier for all R400 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_ATI_R500 | ATI hardware platform identifier for all R500 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_ATI_R600 | ATI hardware platform identifier for all R600 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_ATI_R700 | ATI hardware platform identifier for all R700 chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_ATI_R800 | ATI hardware platform identifier for all R800 (Evergreen) chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_ATI_GENERIC configuration will be searched for. |
HW_INTEL_GENERIC | INTEL hardware platform identifier for all INTEL chipsets revisions. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_GENERIC configuration will be searched for. |
HW_INTEL_GMA_3000 | INTEL hardware platform identifier for integrated graphics "Graphics Media Accelerator": 915G, 915GM, 945G, 945GM, 946QZ, Q965, Q963, Q35, G33, G31, Q33, G965, GM965, GL960 and G35 chipsets. |
HW_INTEL_GMA_4000 | INTEL hardware platform identifier for integrated graphics "Graphics Media Accelerator": GL40, GS45, GM45, GM47, Q43, Q45, G41, G43 and G45 chipsets. |
HW_INTEL_GMA_GEN7 | INTEL hardware platform identifier for integrated "Graphics Media Accelerator" in the Ivy Bridge and Haswell INTEL processors product lines. |
HW_SOFT_TRACER | Software ray-tracing platform identifier. This is the platform identifier for all frames being rendered without any GPU. |
HW_USER_GENERIC | Uer platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_GENERIC configuration will be searched for. |
HW_USER_01 | User platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_USER_GENERIC configuration will be searched for. |
HW_USER_02 | User platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_USER_GENERIC configuration will be searched for. |
HW_USER_03 | User platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_USER_GENERIC configuration will be searched for. |
HW_VIRTUAL_GENERIC | Virtualization software layer platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_GENERIC configuration will be searched for. |
HW_VIRTUAL_01 | Virtualization software layer platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_VIRTUAL_GENERIC configuration will be searched for. |
HW_VIRTUAL_02 | Virtualization software layer platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_VIRTUAL_GENERIC configuration will be searched for. |
HW_VIRTUAL_03 | Virtualization software layer platform identifier. If this platform is the runtime platform and if the shader has no configuration for that platform, the RED::HW_VIRTUAL_GENERIC configuration will be searched for. |
Aliases for the external products that can host REDsdk applications. This is used internally and can be freely omitted just by using the HPROD_UNKNOWN value.
Enumerator:
HPROD_UNKNOWN | |
HPROD_AUTODESK_MAX | |
HPROD_AUTODESK_VIZ |
Lists all possible material types used during IO loading.
Enumerator:
IOLMT_GENERIC | Create generic material during loading. |
IOLMT_REALISTIC | Create realistic material during loading. |
Lists transparency mode in loaded texture.
Enumerator:
IOLTT_ALPHA | Transparency information is in the alpha channel. |
IOLTT_RGB | Transparency information is in the RGB channels. |
Object types for import/export.
Enumerator:
IOOT_NODE | Node hierarchy. |
IOOT_MESH | Mesh. |
IOOT_LINE | Line. |
IOOT_MATERIAL | Material. |
IOOT_TEXTURE | Texture. |
IOOT_LIGHT | Light. |
IOOT_VIEWPOINT | Viewpoint. |
IOOT_SKINNING | Skeleton and Skinning data. |
IOOT_ANIMATION | Animations. |
IOOT_ALL | All objects. |
Defines the possible texture composition modes when using the built-in REDImageComposite::Layered method.
Enumerator:
LRM_ALPHA_PLUS_ONE_MINUS_ALPHA | The operation uses the alpha * src + (1 - alpha) * dest combination. |
LRM_ONE_PLUS_ONE_MINUS_ALPHA | The operation uses the 1 * src + (1 - alpha) * dest combination. |
Defines the type of a light.
Lists all the types of lights.
Enumerator:
LT_NONE | |
LT_AMBIENT | |
LT_DIRECTIONAL | |
LT_POINT | |
LT_POINT_SPOT | |
LT_BEAM | |
LT_AREA | |
LT_AREA_SPOT | |
LT_SUN | |
LT_SKY | |
LT_PHYSICAL | |
LT_MOON |
Indicates the position of a shader in the list of shaders for a rendering pass.
Enumerator:
LIST_LAST | Inserts the shader after all other shaders in the list at the time of the call. |
LIST_FIRST | Inserts the shader first before all other shaders in the list at the time of the call. |
Lists all the possible passes that can be the target of a Shader object. We have three kind of rendering passes:
- Direct lighting passes ( PRELIT, LIT, POSTLIT ) that target one stage of the normal 3d drawing pipeline. Rendering order is PRELIT, LIT and finally POSTLIT. Ambient lighting is managed by the PRELIT pass. All other lights are handled during the LIT pass (one or many rendering passes are processed for each light, depending on the lighting configuration).
- Indirect lighting passes ( INDIRECT_PRELIT, INDIRECT_LIT and MTL_INDIRECT_POSTLIT ) are identical to the direct passes, but are used for all indirect lighting workflows (ray-traced reflections, transparencies and all other indirect illumination stuff).
- The RAYTRACE pass is a special pass used by the raytracer for the configuration of the whole engine behavior.
- MTL_INTERNAL indicates an internal rendering pass of the engine.
Note that the MTL_ALL pass can be used for some shader searches.
Enumerator:
MTL_PRELIT | |
MTL_LIT | |
MTL_POSTLIT | |
MTL_RAYTRACE | |
MTL_INDIRECT_PRELIT | |
MTL_INDIRECT_LIT | |
MTL_INDIRECT_POSTLIT | |
MTL_ALL | |
MTL_INTERNAL |
Lists all data channels in a CID_REDMeshShape. We have 16 predefined channels that can store data arrays for the rendering of the geometry.
Enumerator:
MCL_VERTEX | Usually stores geometry spatial coordinates. |
MCL_USER0 | This channel is often chosen as the default channel for tangent space vector information for the application of a bump map. See RED::IMeshShape::BuildTangents. |
MCL_NORMAL | Usually stores per vertex normals. |
MCL_COLOR | |
MCL_USER1 | |
MCL_USER2 | |
MCL_USER3 | |
MCL_USER4 | |
MCL_TEX0 | MCL_TEX0 - 7 are usually storing texture coordinates. |
MCL_TEX1 | |
MCL_TEX2 | |
MCL_TEX3 | |
MCL_TEX4 | |
MCL_TEX5 | |
MCL_TEX6 | |
MCL_TEX7 | |
MCL_SIZE |
Lists all possible data channels formats of a mesh. See RED::IMeshShape::SetArray.
Enumerator:
MFT_ZERO | No data in the corresponding channel. |
MFT_UBYTE | One byte per component, unsigned int8. Note that using this data format usually requires a 4 bytes memory alignment for optimal performances. Therefore, you should declare 4 coordinates per vertex. |
MFT_SHORT | Two bytes per component, short16. As for the byte format, a memory alignment on 4 bytes boundaries is usually required for optimal performances. Therefore, a choice of 2 or 4 coordinates per vertex is recommended. |
MFT_INT | Four bytes per component, int32. |
MFT_FLOAT | Four bytes per component, float32. |
MFT_DOUBLE | Eight bytes per component, float64. |
MFT_HALF_FLOAT | Two bytes per component, half16. Memory alignment on 4 bytes boundaries is usually preferred for optimnal performances. |
Lists all texture coordinates calculation methods in a CID_REDMeshShape. Generally used for texture coordinates generation. See RED::IMeshShape::BuildTextureCoordinates.
Enumerator:
MTCM_PLANAR | Defines a planar texture coordinates mapping. |
MTCM_SPHERICAL | Defines a spherical texture coordinates mapping. |
MTCM_CYLINDRICAL | Defines a cylindrical texture coordinates mapping. |
MTCM_CYLINDRICAL_CAP | Defines a cylindrical cap texture coordinates mapping. |
MTCM_BOX | Defines a box texture coordinates mapping. |
Lists all REDsdk supported operating systems.
Enumerator:
OS_NOT_SUPPORTED | RED::IGraphicDevice operating system identifier. Identify any operating system that can't run REDsdk. |
OS_WIN_2000 | RED::IGraphicDevice operating system identifier. Windows 2000. |
OS_WIN_XP_32 | RED::IGraphicDevice operating system identifier. Windows XP 32 bits. |
OS_WIN_XP_64 | RED::IGraphicDevice operating system identifier. Windows XP 64 bits. |
OS_WIN_VISTA_32 | RED::IGraphicDevice operating system identifier. Windows Vista 32 bits. |
OS_WIN_VISTA_64 | RED::IGraphicDevice operating system identifier. Windows Vista 64 bits. |
OS_WIN_SEVEN_32 | RED::IGraphicDevice operating system identifier. Windows Seven 32 bits. |
OS_WIN_SEVEN_64 | RED::IGraphicDevice operating system identifier. Windows Seven 64 bits. |
OS_WIN_EIGHT_32 | RED::IGraphicDevice operating system identifier. Windows Eight 32 bits. |
OS_WIN_EIGHT_64 | RED::IGraphicDevice operating system identifier. Windows Eight 64 bits. |
OS_WIN_TEN_32 | RED::IGraphicDevice operating system identifier. Windows Ten 32 bits. |
OS_WIN_TEN_64 | RED::IGraphicDevice operating system identifier. Windows Ten 64 bits. |
OS_LIN_32 | RED::IGraphicDevice operating system identifier. All Linux 32 bits editions. |
OS_LIN_64 | RED::IGraphicDevice operating system identifier. All Linux 64 bits editions. |
OS_MAC_OSX_64 | RED::IGraphicDevice operating system identifier. Macintosh OS X 64 bits edition. |
Identifies all possible formats for an option value.
Enumerator:
OPT_UNKNOWN | Unknown option format. |
OPT_BOOLEAN | Indicates a boolean value option. |
OPT_DOUBLE | Indicates a double precision floating point value option. Note that this format can be used for simple precision & double precision query methods. Internal options are stored in double precision, but they can be accessed in simple precision format for convenience. |
OPT_INTEGER | Indicates an integer value option. |
Lists all REDsdk engine options. A REDsdk option can be set at three different engine interface levels:
- On the RED::IResourceManager interface. An option set on the resource manager applies to all windows and cameras of the cluster, unless the window or camera has overloaded the same option by itself.
- On the RED::IWindow interface. An option set on a window applies to all cameras linked to that window, unless the camera has overloaded the same option.
- On the RED::IViewpoint interface. Most options can be applied at the three interfaces, but some of them are restricted to two or one single interface. Please refer to the documentation for each option for all details on this.
Enumerator:
OPTIONS_RAY_PRIMARY | [boolean]: [false, true]. Activate the primary-ray casting in the rendering workflow of all viewpoints in the scope of that option container. Primary-ray casting is a pre-requisite for all ray-tracer lighting calculations. Primary-ray casting provides the list of visible objects in a scene (perfect occlusion culling). |
OPTIONS_RAY_SHADOWS | [integer]: [0,inf[. Activate shadow casting for all lights that can cast ray-traced shadows when the specified value is greater than or equal to 1. Activation of shadows forces the activation of the primary ray option. The value of this option indicates the depth of the shadow casting process in the ray-tracing tree. |
OPTIONS_RAY_REFLECTIONS | [integer]: [0,inf[. Activate the calculation of ray-traced reflections for objects that can reflect light when the specified value is greater than or equal to 1. Activation of reflection forces the activation of the primary ray option. The value of this option indicates the depth of the reflection calculation process in the ray-tracing tree. |
OPTIONS_RAY_REFRACTIONS | [integer]: [0,inf[. Activate the calculation of ray-traced refractions for objects that are refractive. Activation of the refractions forces the activation of the primary ray option. The value of this option indicates the depth of the refraction calculation process in the ray-tracing tree. |
OPTIONS_RAY_TRANSPARENCY | [integer]: [0,inf[. Activate the calculation of ray-traced transparencies for objects that are transparent. Activating this option does not force the activation of the primary ray option. The value of this option indicates the transparency depth that'll be rendered for transparent objects. |
OPTIONS_RAY_REFRACTIONS_BACK | [boolean]: [false, true]. When this option is off, the last refractive rays of the rendered ray- tree pass through all refractive objects to only hit opaque objects. For example, if we consider a refractive surfacic sphere over an opaque ground, and render that scene with a refraction depth set to one, then refractive rays will show the inner face of the sphere if the option is set to true, or they'll show the background if the option is set to false. Disabling this option result in better looking images - however with fake refraction rays for the last depth - whenever there's not enough refraction depth to get through all refractive layers. |
OPTIONS_RAY_MAX_THREADS | [integer]: [1,inf[. The Red engine ray-tracer uses every processor available in the host computer for its rendering. This option can be used to clamp this number to a maximal number of threads running in parallel for the ray- tracer, so that some CPU bandwidth can be reserved for other tasks. |
OPTIONS_RAY_CUTOFF | [double]: [0.0, 1.0]. The value of this option is used as input for the ray-tracer to set the minimal intensity of a ray that is considered as having a valid contribution to the final image. Note that a 0.0f cutoff value removes all optimization effects that can be related to using a cutoff shader such as the RED::RayCutoffShader. |
OPTIONS_RAY_ENABLE_GLOSSY_EFFECTS | [boolean]: [false,true]. The value of this option let the user to enable or to disable the calculation of glossy ray-traced effects. When off, whatever may be specified by ray-tracer shaders, only one reflection ray and only one refraction ray is fired to render reflection and refraction effects. |
OPTIONS_RAY_ENABLE_AREA_SAMPLING | [boolean]: [false, true]. The value of this option let the user to enable or to disable the calculation of area light sampling effects. If turned off, then all area lights are replaced by point lights using one single sample. This result in faster lighting and shadowing for example suitable for all pre-visualization purposes. |
OPTIONS_RAY_ENABLE_SOFT_TRACER | [integer]: 0 (disabled), 1 (enabled, hybrid) or 2 (enabled, exclusive). The value of this option let the user to enable or to disable the software based ray- tracer. This option must be enabled while in a transaction and before any call to RED::IWindow::FrameTracing or to RED::IWindow::FrameDrawing. It indicates the engine that it must proceed to all the necessary setup to be able to render a frame in software. Note that this option does not conflict with the GPU rendering at all. On activation, software tracing is made possible and all GPU accelerated rendering modes remain available. The option is disabled by default to avoid the extra burden caused by the CPU rendering setup needs (for examples with textures that have to be accessible on the CPU). This option has three values:
Setting this option is only valid at the resource manager level and must be done at the application startup before any REDsdk operation, and the option value can't be changed anymore after the closing of the first transaction. |
OPTIONS_RAY_ENABLE_CAUSTICS | [boolean]: [false, true]. Activate the calculation of caustics for transparent and reflective objects. Note that the generation of caustics depends also on the setup of the object materials and the lights. Caustics are supported by physical lights only. |
OPTIONS_RAY_CAUSTICS_SAMPLING_RATE | [integer]: [0, 100000]. Set the sampling rate of the caustics photons. The total number of caustics photons for the whole scene is the squared value of the sampling rate (default is 1000x1000 photons). |
OPTIONS_RAY_CAUSTICS_SEARCH_RADIUS | [double]: [0.0, inf[. When rendering caustics, the n nearest photons from the point being shaded are queried. This option defines the radius of the search area around that point in scene units. The bigger the radius, the smoother the caustics. |
OPTIONS_RAY_CAUSTICS_SEARCH_COUNT | [integer]: [0, 4096]. Number of photons used for the caustics estimation. The photons search is limited by the value of OPTIONS_RAY_CAUSTICS_SEARCH_RADIUS but if more than OPTIONS_RAY_CAUSTICS_SEARCH_COUNT are found, only the OPTIONS_RAY_CAUSTICS_SEARCH_COUNT nearest photons will be used to estimate caustics. If the option is set to 0 then all the valid photons inside the search radius will be used to compute the caustics estimate. |
OPTIONS_RAY_LIGHTS_SAMPLING_RATE | [integer]: [0,inf[. Set the number of samples to be taken while sampling scene lights. A value of 0 means that the number of samples set to each light is taken. Any other positive values overwrite the lights settings. The real number of samples taken is the square of the option value. For example, if the option is set to 4, 16 samples will be taken. |
OPTIONS_RAY_GLOSSY_SAMPLING_RATE | [integer]: [0,inf[. Set the number of samples to be taken while sampling glossiness (reflection or refraction). A value of 0 means that the number of samples set to each material is taken. Any other positive values overwrite the materials settings. The real number of samples taken is the square of the option value. For example, if the option is set to 4, 16 samples will be taken. |
OPTIONS_RAY_VOLUME | [integer]: [0,inf[. Activate the calculation of ray-traced volume for volume shape containing volumetric effects when the specified value is greater than or equal to 1. The value of this option indicates the depth of the volume calculation to be processed in the ray-tracing tree. |
OPTIONS_RAY_DISPLACEMENT | [boolean]: [false,true]. Activate software ray-tracer displacement mapping calculations when enabled. If the option is turned on (default) then displacement maps specified by RED::StateShader::SetDisplacement are used to modify the rendered geometries. If the option is turned off, then no displacement occurs. |
OPTIONS_RAY_USE_EMBREE | [boolean]: [false, true]. Intel Embree is a collection of ray casting methods. Thanks to its careful handling of SSE instruction sets, it can provide an acceleration ratio between x1.2 and x2 to the rendering of images. However, it does not currently support lot of RED features: double precision matrices and geometries, lines, displacement... When the option is turned on, the Embree raycaster is used only for triangle-based geometries in 32bit float precision (vertex channel). Other type of geometries, or geometries using higher precision vertex channels are still processed using the RED raycasting mechanism or ignored. Please note that for geometries processed by Embree, the transformation matrices are casted to 32bit float (which may result in a loss of accuracy). If the Intel Embree library can't be found, REDsdk will return a RED_EMBREE_DLL_NOT_FOUND return code. The error can be resolved on disabling RED::OPTIONS_RAY_USE_EMBREE. If a scene contains lines, then Embree will not be used unless the RED::OPTIONS_RAY_FORCE_EMBREE is enabled. In that case, the scene is rendered without lines by Embree. If the option is off, the whole data are processed using the RED raycasting algorithms. If GPU-based ray-tracing is used, the option value is automatically ignored and considered as false. |
OPTIONS_RAY_FORCE_EMBREE | [boolean]: [false, true]. This option can be turned on to force the usage of Embree regardless of the scene contents. In this case all lines present in the scene are ignored. Note that displaced surfaces are still visible, but are always processed by the RED raycasting solution. This option should be set once for all before using any ray-tracing feature. |
OPTIONS_RAY_ENABLE_OPEN_IMAGE_DENOISE | [boolean]: [false,true]. This option turns on the Intel Open Image Denoise that can modify software generated images during a post calculation pass. The denoiser will try to remove noise in the image while preserving all its details. |
OPTIONS_VIEWPOINT_PICKABLE | [boolean]: [false, true]. Defines whether objects can be picked in that viewpoint. The picking is a method of the window used to perform screen based ray selection of shapes within the DAG displayed by the window. |
OPTIONS_SHADOW_MAP_DEPTH | [integer]: [0,inf[. Defines the rendering depth for which shadow maps are applied on scene elements. A depth of 2 enables shadow maps to generate shadows in a reflection image for example. |
OPTIONS_POLYGON_FILL_MODE | [integer]: 0, 1 or 2. Defines the polygon fill mode (points, line, filled) for all rendered geometries that are sent to the rendering for the viewpoint that has the given option value. Value 0 is used to render triangles as filled polygons. Value 1 is used to render triangles as only edges and value 2 is to render triangles as only their three definition vertices. |
OPTIONS_SHADOW_MAP_TRANSPARENCY | [boolean]: [false, true]. Defines the behavior of shadow mapping versus transparent objects. Because shadow mapping is a shadowing method based on the distance of an occluder from the light source, transparent objects cast black shadows and the amount of transparency can't be considered in the shadowing. This option is used to change this behavior. Whenever set to true, shadow maps will ignore all transparent objects that won't cast shadows anymore. |
OPTIONS_AUTO_CUBE_ENV_SIZE | [integer]: 1 to maximum texture size. Must be POTD. Defines the size of cube images that are dynamically created for the RED::RenderShaderParameter::REF_AUTO_CUBE_MAP reference. The value must be a power-of-two number. |
OPTIONS_AUTO_CUBE_ENV_UPDATE_MODE | [integer]: 0 or 1. This option rules the update mode of all cube images that are dynamically created for the RED::RenderShaderParameter::REF_AUTO_CUBE_MAP reference. 0 means that all dynamic cube images are calculated once and are never updated. 1 means that all dynamic cube images are updated every frame. It's possible to switch the option value from 0 to 1 and vice-versa the next frame to do one single update of all images. |
OPTIONS_AUTO_CUBE_ALLOW_RAYTRACER | [boolean]: [false, true]. If this option's value is false, then cube images that are dynamically created or update for the RED::RenderShaderParameter::REF_AUTO_CUBE_MAP reference and through the RED::IImageCube::AutoCubeUpdate call will be generated without any ray-tracer option being activated. If this option's value is true, then the source camera scene's ray-tracing options will be used. |
OPTIONS_GI_CACHE_TRANSPAR_DRAW | [boolean]: [false, true]. If this option's value is false, then an indirect irradiance cache set on a VRL won't be rendered for transparent objects for all cameras that have the option turned off. This saves render time in configurations where transparent objects are almost not diffuse (all common glasses) and for which the global illumination contribution can be neglected. By default, this option is disabled, so that we render faster ignoring transparency rendering passes. |
OPTIONS_MATERIAL_LAYER_INTERSECT | [boolean]: [false, true]. This behavior can be changed through this option. By enabling it, the rendering configuration of a material will be defined by the set of shaders that have been registered with a RED::LayerSet that intersects the RED::LayerSet of the camera that is viewing the scene. Several remarks on this option:
It's worth mentioning that what we call a rendering configuration is the list of shaders that have been registered for a given RED::LayerSet. If a shader #1 is added to a pass using layers A,B,C and another one #2 is added to a pass using layers A,C,D; then the two shaders won't coexist in the same rendering configuration, even if the camera layerset contains A which is shared by both shaders in their passes. If shader #1 is added to a pass using A,B,C, shader #2 added to A,C,D and shader #2 also added to A,B,C; then using a camera with layerset with B only will select the configuration with shaders #1 and #2. If the camera layerset is defined using layer C; then the configuration with shader #2 will be selected instead, because it was added last. The configuration with #1 and #2 could be selected also, but it was declared first. |
OPTIONS_TONE_MAPPING_IGNORE_BACKGROUND | [boolean]: [false, true]. This option let the user control whether the contribution of the background images or clear color is considered during the tone mapping calculations or not. If the option is enabled, all pixels of the image that are viewing the background are discarded during tone mapping calculations: they don't have any impact on the image luminance and their colors are not modified. If the option is disabled, the VRL's clear color or background images will participate to the tonemapping process, both in luminance calculations and tonemapping. Note that this option is not supported if the tonemapping is performed by the GPU and if the engine anti-aliasing is activated at the same time. In this specific configuration, an aliasing border may be visible in the resulting image. |
OPTIONS_VIEWPOINT_ORTHOGRAPHIC_EYE_AUTO_OFFSET | [double]: [ 0.0, DBL_MAX [. This option causes the eye position of all orthographic cameras to be moved away along the opposite direction of the camera sight distance during rendering phases. This is used to reduce the parallax error in shading programs that are using the camera position reference (RED::RenderShaderParameter::REF_EYE_POS_WCS) or that are calculated in the view space axis system, for which the eye position is at the origin. The eye position returned by RED::IViewpoint::GetEye remains unchanged. The modification only occurs during the rendering of the camera. The offset value is set by default to 10.000 model units. Note that the application can mimic the behavior of this offset by manually shifting the eye position of the camera from the wished number of units. Please also note that using too large values here may lead to inacurracies in the hardware display. |
OPTIONS_REFRESH_INSTANCE_COUNTERS | [boolean]: [false, true]. This option let the user force the update mechanism for instance counters. Instance counters are detailed noticeably there: Using instance counters. Instance counter values (for both values and images) are only updated when a shape event occurs on the path to the shape instance. It may be wishful to also force a global scene graph refresh of the scene values noticeably if there are material changes and no corresponding scene graph data updates. Enabling this option will refresh instance counter values for the entire scene graph(s) of the camera(s) receiving the option value enabled (either natively or after inheritance). |
OPTIONS_WINDOW_HDR | [integer]: 0 to 2. Enable or disable the HDR rendering pipeline for the specified window. Available values for this option are:
HDR is directly performed using the hardware capabilities if the hardware has the appropriate blending functions available. The HDR function is enabled at the window level and it can be overridden at the RED::IViewpointRenderList level. However, cameras do not have any control over the HDR (cameras are not associated to rendering buffers whereas VRLs are). Half float HDR consumes less memory than full float HDR (50% less), but has a lower accuracy resulting of 16 bits half floating point values being used to store color components. |
OPTIONS_WINDOW_PICK_AREA | [integer]: 0 to 20. Specify the radius in pixels of the picking window used to find geometries during a RED::IWindow::FramePicking call. The default size of 1 means that any geometry under a 3x3 pixel block will be selected by the call. |
OPTIONS_WINDOW_PICK_AREA_TRIANGLE | [boolean]: [false, true]. This is a performance option for the RED::IWindow::FramePicking call. If the option is enabled, then the picking method will use the full picking window frustum to determine whether a triangle or a textured text is being intersected or not. If this option is disabled, triangles and textured texts triangles are picked using the ray emanated from the pick window center. Practically, then, if the option is turned on, very small triangles or objects will be returned by the picking. Otherwise, they can be missed because the ray used for the picking operation will not hit them, but in this latter case, the picking operation is faster. |
OPTIONS_WINDOW_DRAW_SYNC | [boolean]: [false, true]. This is a performance option that affects the behavior of a window rendering. By default REDsdk does not synchronize the rendering before swapping the window back buffer. Consequently, all hardware vendors usually combine several frames to get better rendering performances. This behavior may be problematic with big data models that take time to render. In this case, the frame overlap can cause a bit of delay in the responsiveness of the application that may be unpleasant. Using this option adds several synchronization points at the end of the rendering of each pass in a frame: all pending rendering orders are flushed and executed before moving forward in the rendering pipeline and before the buffers are effectively swapped. Turning this option on may have a small negative impact on performances, but forces every frame to be finished before a new one is actually started. This can also be useful for multi-threaded high performance applications to measure the real rendering time of a frame on the rendering thread: the RED::IWindow::FrameDrawing call won't return before the actual completion of the frame, which is not the case by default: the option is disabled. |
OPTIONS_DATA_RELEASE_TIMER | [integer]: [1,inf[ indicates a number of transactions. The RED engine uses a number of graphic resources for all its internal processing purposes (shadow mapping, ray-tracing, composite images, texturing operations to only name the main data sources). All these resources are shared by all rendering tasks that are performed by the engine. By default, all these resources are maintained alive when they are used for the rendering of every transaction: BeginState + Do some data edition + EndState + FrameDrawing for one or many windows and then BeginState again and so on. Some applications can render multiple windows separately, each window being on its own transaction cycle, making the previous live condition (survival for 1 transaction) inefficient: If the application renders a given window 100 times before rendering another window that was using for example some buffers for shadow mapping, then upon restarting the rendering of that window, the shared buffer will have to be re-allocated, as it has been found unused for 100 frames and therefore has been destroyed. This option can be used to control the behavior of the internal pool of shared resources in the engine. It defines the number of consecutive transactions below which no shared resource will be released from memory. |
OPTIONS_IMMEDIATE_MODE | [integer]: 0 (force off), 1 (let the material decide) or 2 (force on). This option can be used to configure the rendering mode of all geometries inside the REDsdk cluster. It may override the setup made by the RED::IMaterial::SetImmediateMode call. Immediate mode is a legacy slow rendering method that has the advantage to not consume any memory on the graphic card (all the data to render is sent to the graphic card every frame). Therefore, turning this option to "2" (force on) will remove all memory needs for the geometry rendering. Then, if immediate mode is enabled on materials or "forced on", the rendering will take more time than if it's disabled on materials or "forced off". |
OPTIONS_LIGHT_CUTOFF | [double]: [0.0,inf[. This value defines a minimal lighting intensity a light must emit to be taken into consideration. This parameter helps improving rendering performances in environments where many lights are set. In such environments, it's not rare to see that many lights have a neglectable influence over the shading at a given point. This cutoff value helps the engine discard neglectable lights, whose color contribution to the shaded point is below the cutoff value. See details on this option here: Light cutoff option. Please note that this value is empirical and arbitrary: it's an absolute intensity cutoff threshold applied to the contribution of a single light, regardless of its environment. In physical HDR environments, the real contribution of a physical light goes infinitely far away. Therefore, if the cutoff is set too high in dark scenes, the application of tonemapping can reveal the light cutoff as a smooth frontier between lit and non lit areas. The cutoff works for both physical and non physical lights. Very small cutoff values can be ignored for non physical lights rendered on the GPU to preserve some numerical accuracy in the decay calculations performed by rendering shaders. |
OPTIONS_FORCE_STENCIL | [boolean]: [false, true]. This option forces the usage of stencil buffers for auxiliary RED::IViewpointRenderLists and for all internal buffers used by a window. Some hardware configurations (virtualization platforms, some bad hardware / os driver combinations) don't support stencil buffers to be turned on for OpenGL Framebuffer objects. If the option is enabled on a system that does not support FBOs with stencil buffers, then RED_DRV_FRAMEBUFFER_CREATION_ERROR can be returned by REDsdk calls. This option should be setup once at the engine startup. |
OPTIONS_SAMPLER | [integer]: 0 (legacy QMC sampler), 1 (HM sampler). This option can be used to change the Quasi Monte Carlo sampler used by REDsdk. There are currently two QMC samplers available:
|
OPTIONS_FORCE_COMPRESSED_IMAGES_INTEL | [boolean]: [ false, true ]. This option is used to change the behavior of the RED::IImage2D::SetCompressedPixels methods specifically on INTEL GPUs. Due to an INTEL driver bug, the loading of compressed images on the GPU can fail when texture mipmaps are also enabled for these textures. The default bypass for this problem used by REDsdk is to load the texture in its uncompressed form on INTEL GPUs so that the texture corruption bug does not show up when texture mipmaps are enabled. Turning on this option changes the behavior and forces the texture to be compressed in the GPU video memory when asked to do so. |
OPTIONS_OPENGL_CONTEXT_MAJOR | [integer]: [ 0, inf [. This option can be used before the engine startup to force the version of OpenGL contexts creation. By default, REDsdk does not require any OpenGL context version. On setting up any positive value for this option, contexts will be created using wglCreateContextAttribsARB using the WGL_CONTEXT_PROFILE_MASK_ARB flag and the WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB flags. This option's value define the major version of the OpenGL context. |
OPTIONS_OPENGL_CONTEXT_MINOR | [integer]: [ 0, inf [. This option can be used before the engine startup to force the version of OpenGL contexts creation. This option's value defines the minor version of the OpenGL context. See RED::OPTIONS_OPENGL_CONTEXT_MAJOR for further details. |
OPTIONS_OPENGL_CONTEXT_DEBUG | [boolean]: [ false, true ]. This option can be used before the engine startup to force the debug mode for OpenGL contexts creation. This option is only effective if the OPTIONS_OPENGL_CONTEXT_MAJOR is being set. |
OPTIONS_RAY_GI | [boolean]: [false, true]. Enable or disable Global Illumination rendering. |
OPTIONS_RAY_GI_ERROR | [double]: [0.001,1000.0] indicates the error tolerance of the global illumination solution. The error is inversely proportional to the global illumination precision. A good choice is too leave the error to its default value (except in RED::GICM_WORLD generation mode). Decreasing this error would enhance the final global illumination quality but at the price of a bigger memory consumption and a longer rendering time. In RED::GICM_CAMERA_VIEW and RED::GICM_CAMERA_SPHERICAL GI cache generation modes, the option value is unitless. In RED::GICM_WORLD mode, the error becomes the minimum distance allowed between two cache samples in model units. |
OPTIONS_RAY_GI_ESTIMATOR_SAMPLING_RATE | [integer]: [1,65535[ indicates the squared root of the number of rays used to compute the estimator. This is the sampling rate of the estimator, i.e the squared root of the total number of rays that will be traced to compute the indirect illumination estimator (first GI pass). You can increase this value for a better estimator convergence but the default value will be good most of the time. |
OPTIONS_RAY_GI_CACHE_PASSES_COUNT | [integer]: [-127,127] indicates the number of indirect illumination cache refinement passes if positive; if negative, it is interpreted as a minimum convergence threshold. The indirect illumination cache is built by iteratively refining an initial set of irradiance samples taken into the scene. The initial set a a density proportional to the OPTIONS_RAY_GI_ERROR value. Then a fixed or variable number of refinement passes are processed to locally refine the cache following scene geometric and/or lighting variations. The fixed number of passes is given by the value of the OPTIONS_RAY_GI_CACHE_PASSES_COUNT option if positive. If negative, a convergence threshold is computed as: convergence_threshold = 1.0 + 1.0 / OPTIONS_RAY_GI_CACHE_PASSES_COUNT. Then, the cache is refined until it converges to at least the convergence threshold value. |
OPTIONS_RAY_GI_CACHE_HEMI_SAMPLING_RATE | [integer]: [1,inf[ indicates the number of samples to be taken while sampling the hemisphere. The real number of samples is the square of the option value. This is the square root of the actual number of samples taken to estimate the global illumination at a given location during the global illumination cache computation. If a null or negative value is set, a value of 1 will be automatically assumed. |
OPTIONS_RAY_GI_CACHE_INTERP_SAMPLES_COUNT | [integer]: [1,inf[ indicates the number of samples taken while estimating the indirect illumination using the cache. This number is used after the global illumination cache computation, during the rendering phase. It influences the smoothness of the rendered indirect illumination. The bigger the interpolation samples count is, the smoother the result will be (meaning that small details will be lost). If a null or negative value is set, a value of 1 will be automatically assumed. |
OPTIONS_RAY_GI_SHOW_SAMPLES | [integer]: 0, 1, 2 or 4. This option is mainly for debugging purposes as it discards any shading operation to only render the position of the selected GI samples. Its use should be reserved to expert users. 0 means show no GI samples. 1 means show GI estimator samples. 2 means show GI cache samples. 4 means show pixels where GI cache samples were used to approximate glossiness (in magenta). |
OPTIONS_RAY_GI_ENABLE_VOLUME | [boolean]: [false, true]. Enable or disable the volume rendering during the global illumination process. |
OPTIONS_RAY_GI_CACHE_PRECISE | [boolean]: [false, true]. Enable the high precision computation mode for the global illumination cache. If enabled, small geometric details are automatically detected by the engine and better GI estimation is performed. This is good to avoid interpolation artifacts over fine geometry variations like cabinet gaps, tiles edges, window frames... |
OPTIONS_RAY_GI_FOR_GLOSSINESS | [double]: [0, 32]. This option enables the use of the global illumination cache for the acceleration of glossiness computation. Because glossiness is a blurry effect, we can use computations of cheaper quality for rays being spread through a glossy reflection/refraction as they will finally be averaged together. Once turned on, the option lets the engine to reconstruct an approximation of the lighting reaching a point by requesting the global illumination cache instead of directly compute the illumination. This can dramatically reduce the time needed to render a scene with a lot of glossy materials. The lesser the value, the better the glossiness quality (a value of 0 turns glossiness approximation off). If no GI cache has been computed, the option has no effect and is considered as disabled. |
OPTIONS_RAY_GI_FOR_LIGHTING | [boolean]: [false, true]. This option enables the use of the global illumination cache for the enhancement of sampled lights rendering. If turned on, the engine uses the global illumination cache to concentrate sampling on meaningful lights. This generally leads to an increase in lighting quality with no decrease in rendering time. However, the effect of the option is closely related to the quality of the GI cache. Hence, it performs best with default or higher GI cache settings. If no GI cache has been computed, the option has no effect and is considered as disabled. This option has no effect if path tracing is used to render the scene (see RED::OPTIONS_PATH_GI instead). |
OPTIONS_RAY_SOFT_SHADOW_MAP_TRANSPARENCY | [boolean]: [false, true]. This option let the user control the behavior of software shadow maps. A shadow map that is rendered by the graphic card is not able to take into consideration partial occlusion resulting of transparent objects. It can ignore transparent objects or consider them as shadow blockers for the shadow map (see OPTIONS_SHADOW_MAP_TRANSPARENCY). This is not the same for software shadow maps, that can cumulate the lighting attenuation caused by partially transparent occluders found on the path from the light to the surface. This option is then used to turn on or off the contribution of transparent surfaces. |
OPTIONS_RAY_AREA_SHADOW_SPACING | [integer]: [1,inf[. This is the average screen size distance in pixels between two samples used to sample area shadows for the GPU ray-tracer. |
OPTIONS_RAY_AREA_SHADOW_SPREAD | [integer]: [1,inf[. This is the coverage factor of GPU area shadow samples on screen. A larger spread value generates more blurry shadows while a smaller value tends to generate sharper shadows. |
OPTIONS_RAY_CONTEXT_CALLBACK_PERSISTENCE | [boolean]: [false,true]. This option controls the behavior of the ray-tracer vs. the context switch callback that can be set on shapes of a scene graph (see RED::IShape::SetContextSwitchCallback). By default, objects that are discarded by the context switch callback are removed from ALL REDsdk scene processings. This implies that objects discarded at this stage are not present in any of the ray-tracer acceleration structures that can be stored and maintained by the engine. Turning this option on changes the persistence of objects discarded by the context switch callback. Once enabled, objects that are discarded by the context switch callback will still be stored in the ray-tracer acceleration structures maintained by the engine. Consequently, the acceleration structure may consume more memory, but changing the context visibility of an object will have no cost on it. |
OPTIONS_RAY_FORCE_TRANSPARENCY | [boolean]: [false,true]. This option controls the behavior of the ray-tracer vs. the number of transparency layers that are rendered. By default, this option is disabled so that when a primary ray hits an opaque surface, its propagation is stopped. Turning this option on let the software ray-tracer pursue the propagation of a ray, even behind opaque surfaces. The need to see behind opaque surfaces arise in rendering configurations that are using a non-natural depth buffer setup. For example, rendering methods to see backward edges, section cutting, custom depth ordering, or material priorities are rendering setups that may use an exotic depth buffer setup. |
OPTIONS_RAY_SOFT_PREVIEW | [boolean]: [false,true]. This option modifies the behavior of the software ray-tracer after changes of data in the cluster. When enabled, the software ray-tracer does partial update of the rendered image to quickly provide a visual feedback depicting the changes. Then the image resumes and finishes normally. The partial update of the image can be performed if only materials have been modified during the transaction. The option requires a RED::IWindow::FrameTracingImageLayers call to be used, with the RED::RenderLayer::LT_MATERIAL_ID layer activated. It does not work with materials that are modified and returned by custom ray-tracing callbacks (RED::IViewpointRenderList::SetViewpointSoftRayProcessingCallbacks) if these materials are not used by standard geometries in the scene graph. |
OPTIONS_RAY_WORLD_CACHE_SAMPLES_COUNT | [integer]: [1,INT_MAX[. This option rules the number of samples that'll be calculated for a given world space cache. This applies to global illumination caches computed in world space and to shadow caches. Increasing the value will make finer caches that take a longer time to be processed. |
OPTIONS_RAY_WORLD_CACHE_SAMPLES_SPREAD | [double]: [0.001, 1000.0]. This option rules the coverage of a world cache sample when replayed by the GPU. This is the sphere of influence of samples that can be globally increased or decreased by changing this option. The sample spread value is applied as a multiplier on the world cache samples influence. Increasing the value will make the cache look smoother, but fine cache details may be blurred. Decreasing the value will make the cache exhibit more details, but 'bubbles' may appear due to lack of samples and of interpolation. |
OPTIONS_RAY_TRANSPARENCY_TOLERANCE_GPU | [double]: [0.0, inf[. This option rules the numerical tolerancy used by the GPU ray-tracer to let transparency ray takeoff during the GPU ray-casting process. Increasing this value may solve incorrect ray propagation in scene that have large units. Reducing this value may increase the numerical precision of the visible transparency layers crossed by fired GPU rays. Please note that the value of this option should be set once at the application startup. Please destroy the resource manager and re-create it to have this value changed during the course of the application, otherwise, the change may be ignored or improperly handled. |
OPTIONS_RAY_ADAPTIVE_SAMPLING_THRESHOLD | [double]: [0.0,1.0]. This option rules the usage of adaptive sampling during the processing of an anti-aliased image. Adaptive sampling will run only if the image is calculated using several samples per pixel, as specified by the RED::IViewpointRenderList::SetSoftAntiAlias method. If the option value is set to 0.0, adaptive sampling is disabled. At higher values, the number of samples fired to generate an image may be cut if the measured signal contrast value appears to be below this threshold value. Turning on adaptive sampling for the ray-tracer must be done together with a change of the RED::OPTIONS_SAMPLER used by REDsdk. The REDsdk's HM sampler must be used for adaptive sampling to run. If the sampler is not set, then calls to RED::IWindow::FrameTracing will return RED_WFLOW_INVALID_SAMPLER. |
OPTIONS_RAY_MAX_SECONDARY_RAY_INTENSITY | [double]: [ 1.0, DBL_MAX [. This options can be used to clamp the intensity of very bright secondary rays in the image. Secondary rays are reflection and refraction rays. These rays may become very bright when they randomly directly hit visible light sources geometries that are very intense. When this arises and if the sampling quality is not set high enough, these very bright rays tend to add some unpleasant noise in the image (also called fireflies). This option introduces a bias in the final image as the real signal can be clamped if it exceeds the specified threshold level. To disable this option, set it to DBL_MAX. To increase the effect of this option, reduce the max intensity value. |
OPTIONS_RAY_ENABLE_DENOISER | [boolean]: [false,true]. This option turns on the denoiser that can modify software generated images during a post calculation pass. The denoiser will try to remove noise in the image while preserving all its details. The strength of this effect is ruled by the RED::OPTIONS_RAY_DENOISER_STRENGTH and RED::OPTIONS_RAY_DENOISER_RADIUS options. |
OPTIONS_RAY_DENOISER_STRENGTH | [double]: [ 0.01, 10.0 [. This option defines the strength of the denoising effect applied to software generated images if the RED::OPTIONS_RAY_ENABLE_DENOISER is activated. The strength can be assimilated to a kind of blur effect applied to the image. If set to a stronger value, the denoiser will smooth more details in the image, resulting in a less noisy result but at the expense of losses in the details in the original image. |
OPTIONS_RAY_DENOISER_RADIUS | [integer]: [ 0, 100 ]. This option defines the effect radius of the denoising effect applied to software generated images if the RED::OPTIONS_RAY_ENABLE_DENOISER is activated. A larger radius means that the denoiser will analyze more samples to remove the noise in an image, increasing the time it'll take to denoise the image and possibly increasing the quality of the result. Increasing the radius will strengthen the denoising effect too. |
OPTIONS_RAY_TRANSPARENCY_FFP_GPU | [boolean]: [false,true]. This option rules the kind of GPU shaders used by the GPU hardware transparency. By default REDsdk's GPU ray-tracing shaders are using REDsdk's high definition viewing matrices that can provide an increased numerical accuracy during ray propagations. Turning on this option will force REDsdk's ray- traced GPU transparency to use legacy Fixed Function Pipeline matrices instead of high definition matrices. Turning on this option might be required in a mixed GPU rendering environment where different shaders have to co-exist for the rendering of a single frame, so that all shaders are based on the same numerical accuracy. |
OPTIONS_RAY_ADAPTIVE_SAMPLING_ALLOWED_TIME | [ double ] : [ 0.0, inf [ in seconds. [ default ] : 0.0. This option works when Adaptive sampling is enabled for the currently rendered scene. It forces the engine to stop all calculations after the specified amount of time has been spent. This option can be used to drive the quality of the resulting image by specifying an amount of time allowed to calculate it. The engine will optimize the amount of time it's granted to refine the most noisy areas in an image first, trying to provide the best image quality for the allowed time. This is time driven adaptive sampling; If the option value is set to 0 seconds, time driven adaptive sampling is turned off and the value of the RED::OPTIONS_RAY_ADAPTIVE_SAMPLING_THRESHOLD rules adaptation. If set to any positive value, expressed in seconds, this option overrides the RED::OPTIONS_RAY_ADAPTIVE_SAMPLING_THRESHOLD whose value is ignored as not used in that case. The minimal amount of time taken to process an image is bound by the time taken to process global illumination plus the time taken to do a first parsing of the image based on rendering settings. Images processed when this option is turned on are not deterministic as the amount of calculations the engine can issue in a fixed amount of time depends on the target computer number of threads and workload of the system at the time of the processing. |
OPTIONS_PATH_GI | [integer]: [0,100]. Sets the number of bounces used to compute the global illumination. This option has an effect only if path tracing is used to render the image. As you increase the value of that option, the global illumination becomes more accurate but the rendering time increases. The default value is 3 which differs from what you get with the GI cache (the GI cache computes an infinite number of GI bounces). This leads to darker images when using path-tracing comparing to using the GI cache. To get similar results with both methods, you need to increase the option value to something high. This option overcomes the value of the RED::OPTIONS_RAY_GI one. |
OPTIONS_RAY_GI_ESTIMATOR_FULL_PATH | [ boolean ]: [ false, true ]. If turned on, this option modifies the behavior of the GI estimator phase. GI paths that are processed by the system are fully processed until their extinction. This significantly extends the GI estimator phase calculation time, but increases its quality for that extra price. Noticeably, estimator halos that can be visible in very indirectly illuminated scenes tend to be smaller or to disappear and the estimator is more reliable and stable to camera movements and options changes. Please note that this option should be combined with a high value of RED::OPTIONS_RAY_GI_ESTIMATOR_SAMPLING_RATE. The refinement of the estimator will be better when the estimator sampling rate is increased to high values like 2000, 4000 or even 8000. |
Lists polygon winding rule. See RED::IMeshShape::Polygon.
Enumerator:
PWR_ODD | Fill odd numbers, default setting. |
PWR_NON_ZERO | Fill non-zero numbers. |
PWR_POSITIVE | Fill positive numbers. |
PWR_NEGATIVE | Fill negative numbers. |
PWR_ABS_GEQ_TWO | Fill ABSolute values Greater than EQual to TWO. |
Aliases for the Redway3d products. Internal to redway3d.
Redway3d products supported platforms.
Enumerator:
PROD_UNKNOWN | |
PROD_REDEXPORTER_MAX | |
PROD_REDODADEVICE | |
PROD_REDSDK | |
PROD_REDPARASOLID | |
PROD_REDMATERIALEDITOR | |
PROD_REDC3D | |
PROD_REDNET | |
PROD_REDART | |
PROD_COUNT |
Lists the available type for material controller properties.
Enumerator:
PYT_UNDEFINED | The property has undefined type. This is the default type for newly created properties. |
PYT_FLOAT | The property is a numerical floating value in [-FLT_MAX, FLT_MAX] (except if the definition range has been modified using SetRange). |
PYT_INTEGER | The property is a numerical integer value in [INT_MIN, INT_MAX] (except if the definition range has been modified using SetRange). |
PYT_BOOLEAN | The property is a boolean value in { true, false }. |
PYT_COLOR | The property is a RGBA color with each component in [0, 1]. |
PYT_TEXTURE2D | The property is a pointer to a RED::Object instance implementing RED::IImage2D. |
PYT_STRING | The property is a string. |
PYT_TEXTURE3D | The property is a pointer to a RED::Object instance implementing RED::IImage3D. |
PYT_TEXTURECUBE | The property is a pointer to a RED::Object instance implementing RED::IImageCube. |
PYT_VECTOR4 | The property is a four dimensions vector |
PYT_LAYERSET | The property is a layer set. |
PYT_TEXTURECOMPOSITE | The property is a pointer to a RED::Object instance implementing RED::IImageComposite. |
Lists all rendering configurations of a light. These parameters are used to define the behavior of the light.
Enumerator:
RM_SHADOW_CASTER | Is the light casting shadows or not ? |
RM_TEX_INTENSITY_RAMP_RES | Resolution of the intensity ramp texture being used. Default set to 8192 pixels, which is then clamped to the used hardware limits. |
RM_TEX_CUBEMAP_SPOT_RES | Resolution of the spot's cube map being used. Default set to 256 x 256 pixels per face. |
RM_TEX_RADIAL_BEAM_RES | Resolution of the radial beam texture being used. Default set to 256 x 256 pixels. |
RM_SHADOW_MAP | Use shadow maps for this light as the shadow projection method. A light with shadow maps activated won't project any ray-traced shadow. |
RM_ACTIVATED | Is the light source currently activated ? An inactive light source is ignored for the rendering, but remains in the scene however. |
RM_DOUBLE_SIDED | Is the light source double sided? Apply to physical lights only. |
RM_CAUSTICS | Does the light source generate caustics? Apply to physical lights (including the sun) with no IES profile only. |
RM_VISIBLE_GEOMETRY | If this rendering mode is set to zero, then physical lights geometries and skylight portals will become invisible. |
RM_DEFINE_VOLUME | Does the light defines volume when used with RED::VolumetricEffectLightVolume? |
RM_ENLIGHTEN_VOLUME | Does the light enlighten participating media during volumetric rendering? |
RM_BAKED | If this rendering mode is set to any non zero value, then the light is ignored for all lighting passes. However, it participates to the calculation of a GI cache, using RED::IWindow::FrameTracingGICache. Please refer to Light baking for details on light baking. |
RM_SINGLE_SIDED_BIAS | This is a value that can be used to modify the behavior of the RED::ILightShape::SetShadowBias method. By default (value = 0), the shadow bias offset the hit point along the normal at the hit surface, taking into consideration the visible face of the surface. This means that if we see the back side of a double sided surface, the normal is reverted and the shadow bias offsets the hit point along this reverted normal. If the option is enabled (value != 0), then the shadow bias always offset the hit point along the original surface normal with no back side normal inversion. |
RM_USE_EXACT_LIGHT_PROB | This rather cryptic light option can be turned on to increase the accuracy of the probabilistic calculations that occur while sampling lights. If some place in an image appears too noisy for the sampling quality set for the rendering, enabling this render mode for all lights that surround the noisy aera will help reducing the noise. Turning on this render mode costs some extra render time. |
RM_USE_MIS | This rendering mode toggles the use of multiple importance sampling for the visibility of this light in glossy reflections or refractions. By default, the usage of multiple importance sampling is enabled (value = 1). Turning it off (value = 0) will result in lower quality reflections of light emitter shapes. Turning off multiple importance sampling for a light may remove some indirect sampling artifacts for that light that can be oberved after several ray bounces. Turning off multiple importance sampling for ALL lights will save some calculation time in the image. |
RM_COUNT | Number of terms in this enumeration. |
Defines the various GPU rendering passes that compose the rendering of a frame by the GPU.
Enumerator:
RPA_UNDEFINED_PASS | |
RPA_CONTEXT_CULLING | CPU context culling pass for the global scene graph. Time is spent in this pass to parse the entire model to display for the considered camera in the rendered VRL. The RED::IShape::SetContextSwitchCallback time is included in that pass time. |
RPA_VISIBILITY_CULLING | CPU visibility culling pass for the global scene graph. Time is spent in this pass to determine the subset of the scene that is directly visible from the considered camera. The RED::IShape::SetVisibilitySwitchCallback time is included in that pass time. |
RPA_LIGHT_CULLING | CPU light source culling pass for the global scene graph. Time is spent in this pass to determine the subset of the scene that is visible from the light, in the considered camera. |
RPA_RAY_DATABASE_UPDATE | CPU or GPU update time for any ray-tracer acceleration structure. Both the GPU ray-tracer of the software ray-tracer are using acceleration structures. Time spent for the creation, update or destruction of any acceleration structure appear here. |
RPA_PRELIT_OPAQUE | GPU pre-lighting pass for opaque elements. This is the time spent for the rendering of the RED::MTL_PRELIT pass, for opaque elements, for the considered camera in the rendered VRL. |
RPA_PRELIT_TRANSPAR | GPU pre-lighting pass for transparent elements. This is the time spent for the rendering of the RED::MTL_PRELIT pass, for transparent elements, for the considered camera in the rendered VRL. |
RPA_LIT_OPAQUE | GPU lighting pass for opaque elements. This is the time spent for the rendering of the RED::MTL_LIT pass, for opaque elements, for the considered camera in the rendered VRL. |
RPA_LIT_TRANSPAR | GPU lighting pass for transparent elements. This is the time spent for the rendering of the RED::MTL_LIT pass, for transparent elements, for the considered camera in the rendered VRL. |
RPA_POSTLIT_OPAQUE | GPU post-lighting pass for opaque elements. This is the time spent for the rendering of the RED::MTL_POSTLIT pass, for opaque elements, for the considered camera in the rendered VRL. |
RPA_POSTLIT_TRANSPAR | GPU post-lighting pass for transparent elements. This is the time spent for the rendering of the RED::MTL_POSTLIT pass, for transparent elements, for the considered camera in the rendered VRL. |
RPA_COMPOSITE_IMAGE | GPU composite image rendering pass. Such passes may occur before any other pass, on the need to update the contents of a composite image before a draw. |
RPA_SHADOW_MAP_OPAQUE | GPU rendering of a shadow map for opaque elements. The rendering of a shadow map includes several sub-passes. See Customized shadow mapping for details. |
RPA_SHADOW_MAP_TRANSPAR | GPU rendering of a shadow map for transparent elements. The rendering of a shadow map includes several sub-passes. See Customized shadow mapping for details. |
RPA_GI_CACHE_OPAQUE | GPU global illumination cache replay pass for opaque objects. |
RPA_GI_CACHE_TRANSPAR | GPU global illumination cache replay pass for transparent objects. |
RPA_INDIRECT_PRELIT_OPAQUE | GPU indirect pre-lighting pass for opaque elements. |
RPA_INDIRECT_PRELIT_TRANSPAR | GPU indirect pre-lighting pass for transparent elements. |
RPA_INDIRECT_LIT_OPAQUE | GPU indirect lighting pass for opaque elements. |
RPA_INDIRECT_LIT_TRANSPAR | GPU indirect lighting pass for transparent elements. |
RPA_INDIRECT_POSTLIT_OPAQUE | GPU indirect post-lighting pass for opaque elements. |
RPA_INDIRECT_POSTLIT_TRANSPAR | GPU indirect post-lighting pass for transparent elements. |
RPA_INDIRECT_SHADOW_MAP_OPAQUE | GPU indirect rendering pass of a shadow map for opaque elements. |
RPA_INDIRECT_SHADOW_MAP_TRANSPAR | GPU indirect rendering pass of a shadow map for transparent elements. |
RPA_INDIRECT_BACKGROUND | GPU indirect rendering pass for background visibility. |
RPA_GPU_RAY_TRANSPARENCY | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_GPU_RAY_TID | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_GPU_RAY_POSITIONS | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_GPU_RAY_DIRECTIONS | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_GPU_RAY_NORMALS | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_GPU_RAY_CUTOFF | GPU internal ray-tracer pass. Several occurrences of this pass may be recorded for all the different rays that have to be propagated by the GPU ray-tracer. |
RPA_SIZE | Size of the RED::HARDWARE_RENDERING_PASS enumeration. |
Defines the various steps that compose the rendering of a frame by the software ray tracer.
Enumerator:
RPS_RENDER_NOT_STARTED | The rendering of the image has not been started yet. |
RPS_GI_ESTIMATOR_PROCESSING | The Global illumination estimator is being processed. |
RPS_GI_CACHE_PROCESSING | The Global illumination cache is being processed. |
RPS_CAUSTICS_PROCESSING | The caustics map is being processed. |
RPS_RAY_TRACING_PROCESSING | The ray-tracing of the image is being processed (including anti-aliasing). |
RPS_DENOISER_PROCESSING | The image denoiser is running after the ray-traced image has been processed. |
RPS_HARDWARE_RENDERING | The rendering of the frame is being processed by the hardware. This is only informative has no progression can be precisely measured while using the GPU. |
RPS_RENDER_COMPLETE | |
RPS_WORLD_GI_CACHE_PROCESSING | The GI cache definition for the entire scene is being processed. This step comes before other GI cache passes when a world cache is being generated. |
RPS_SIZE |
Identification of a root motion component for the RED::ISkeletalAnimationController.
Enumerator:
RMC_ROTATION | Rotation root motion option. |
RMC_POSITION_X | Root motion option for the X component of the position. |
RMC_POSITION_Y | Root motion option for the Y component of the position. |
RMC_POSITION_Z | Root motion option for the Z component of the position. |
Value to give to the root motion options.
Enumerator:
RMP_DEFAULT | The default value for the root motion component: applies the animation result to the root bone. |
RMP_CUMULATIVE | Cumulates the animation deltas and applies the result to the root bone. |
RMP_DELTA | Sets the animation deltas to the root bone. |
RMP_ZERO | Ignores the animation root motion and sets the root bone transforms to zero. |
Defines the type of primitives that can be shaded using the RenderShaderViewport shader.
Enumerator:
RSV_TRIANGLE | Triangle-based primitives. Primitives must have their normals defined, using a regular xyz or xyzw encoding in RED::MFT_FLOAT or RED::MFT_DOUBLE precision. |
RSV_LINE | Line-based primitives, i.e primitives without normals. |
RSV_TRIANGLE_UBYTE_NORMALS | Triangle-based primitives. Primitives must have their normals defined using a xyzw RED::MFT_UBYTE encoding. w is unusued, but needed for memory alignment. |
Lists different types of geometrical primitives that can be received and produced by a software geometry shader.
Enumerator:
GEO_UNMODIFIED | Indicates that the source primitive kind is not modified. The source primitive assembly is not modified either. |
GEO_POINTS | The geometry shader receives or generates indexed points. |
GEO_LINE_SEGMENTS | The geometry shader receives or produces indexed line segments. |
GEO_LINE_SEGMENTS_ADJACENCY | The geometry shader receives indexed segments with adjacency. |
GEO_LINE_STRIP | The geometry shader receives or produces one indexed line strip. |
GEO_TRIANGLES | The geometry shader receives or produces indexed triangles. |
GEO_TRIANGLES_ADJACENCY | The geometry shader receives indexed triangles with adjacency. |
Lists all possible texture bindings modes for the rendering. A texture need to be bound in a precise manner to be used by the graphical hardware.
Enumerator:
TGT_NONE | The texture is not bound to any valid target. It won't show up anything on screen. |
TGT_TEX_1D | The texture is a single dimension texture, and can be accessed with a single texture coordinate in the [0,1] range. The image bound that way must be a POTD dimensioned texture. |
TGT_TEX_2D | The texture is a two dimensions texture, and can be accessed with two texture coordinates in the [0,1] x [0,1] range. The image bound that way must be a POTD dimensioned texture. |
TGT_TEX_RECT | The texture is a rectangle texture. Unlike the other texture formats, it's accessed with 2D texture coordinates in the [0,width] x [0,height] range, where width and height are the pixel dimensions of the texture. Both POTD and NPOTD (Non-POTD) textures can be set to the rectangular target. |
TGT_TEX_CUBE | The texture is a cube texture. This can be used for all environmental mapping effect. It's sampled using a spatial direction [s,t,r]. |
TGT_TEX_3D | The texture is a three dimensions texture, and can be accessed with three texture coordinates in the [0,1] x [0,1] x [0,1] range. The image bound that way may be POTD or NPOTD textures. |
Chooses the text alpha interpolation method for a RED::RenderShaderText.
Enumerator:
TEXT_ALPHA_LINEAR | Alpha is linearly interpolated. |
TEXT_ALPHA_3A2_MINUS_2A3 | Uses an alpha interpolation formula based on the 3*(a*a) - 2*(a*a*a) equation. |
TEXT_ALPHA_SQRTA | Uses an alpha interpolation formula based on sqrt(a). |
TEXT_ALPHA_LINEAR_DEPTH | Same as TEXT_ALPHA_LINEAR; the text custom depth channel is used to redefine the final depth of the text in the z-buffer. |
TEXT_ALPHA_3A2_MINUS_2A3_DEPTH | Same as TEXT_ALPHA_3A2_MINUS_2A3; the text custom depth channel is used to redefine the final depth of the text in the z-buffer. |
TEXT_ALPHA_SQRTA_DEPTH | Same as TEXT_ALPHA_SQRTA; the text custom depth channel is used to redefine the final depth of the text in the z-buffer. |
Relative position of a text to its anchoring point:

Enumerator:
TAP_TOP_LEFT | The top left corner of the text bounding rectangle will be placed at the anchoring position. |
TAP_TOP | The middle of the top line of the text bounding rectangle will be placed at the anchoring position. |
TAP_TOP_RIGHT | The top right corner of the text bounding rectangle will be placed at the anchoring position. |
TAP_RIGHT | The middle of the right line of the text bounding rectangle will be placed at the anchoring position. |
TAP_BOTTOM_RIGHT | The bottom right corner of the text bounding rectangle will be placed at the anchoring position. |
TAP_BOTTOM | The middle of the bottom line of the text bounding rectangle will be placed at the anchoring position. |
TAP_BOTTOM_LEFT | The bottom left corner of the text bounding rectangle will be placed at the anchoring position. |
TAP_LEFT | The middle of the left line of the text bounding rectangle will be placed at the anchoring position. |
TAP_CENTER | The center of the text bounding rectangle will be placed at the anchoring position. |
TAP_BASELINE_LEFT | The point of the left edge of the text bounding rectangle that corresponds to the height of the text baseline will be placed at the anchoring position. |
TAP_BASELINE_CENTER | The point at the middle of the text bounding rectangle width and at the height that corresponds to the height of the text baseline will be placed at the anchoring position. |
TAP_BASELINE_RIGHT | The point of the right edge of the text bounding rectangle that corresponds to the height of the text baseline will be placed at the anchoring position. |
TAP_TOP_LEFT_EDGE | The leading leftmost vertical edge of the character is used as "left edge" reference. Then, we combine this with the top edge of the text bounding rectangle to get the anchoring position. Technically speaking, we ignore negative glyph origins (gmetrics.gmptGlyphOrigin.x) to anchor the string. |
TAP_BOTTOM_LEFT_EDGE | The leading leftmost vertical edge of the character is used as "left edge" reference. Then, we combine this with the bottom edge of the text bounding rectangle to get the anchoring position. Technically speaking, we ignore negative glyph origins (gmetrics.gmptGlyphOrigin.x) to anchor the string. |
TAP_LEFT_EDGE | The leading leftmost vertical edge of the character is used as "left edge" reference. Then, we combine this with the middle of the text bounding rectangle to get the anchoring position. Technically speaking, we ignore negative glyph origins (gmetrics.gmptGlyphOrigin.x) to anchor the string. |
TAP_BASELINE_LEFT_EDGE | The leading leftmost vertical edge of the character is used as "left edge" reference. Then, we combine this with the baseline of the text bounding rectangle to get the anchoring position. Technically speaking, we ignore negative glyph origins (gmetrics.gmptGlyphOrigin.x) to anchor the string. |
Thread priority. Used on Windows systems only. These values are ignored on other systems.
Enumerator:
TP_LOWEST | Lowest thread priority. |
TP_LOW | Low thread priority. |
TP_NORMAL | Normal thread priority. |
TP_HIGH | High thread priority. |
TP_HIGHEST | Highest thread priority. |
Lists the possible tone mapping operators which can be applied to images.
Enumerator:
TMO_CLAMP | RGBA color components are clamped to [0.0, 1.0]. |
TMO_PHOTOGRAPHIC | Tone mapping operator derived from photographers' best practices. |
TMO_NEUTRAL | This is the neutral 'no tone mapping' operator that does not change any input intensities. |
TMO_EXPOSURE | Tone mapping operator that simply multiplies the input intensities by the exposute parameter value. |
TMO_EXPONENTIAL | Exponential tonemapping operator based on the average luminance in an image. |
Lists the current transaction mode we're in.
Enumerator:
TRANSACTION_OUT | Indicates that we're outside of a transaction. We can't modify any state sensitive data in the cluster. |
TRANSACTION_IN | Indicates that we're inside a transaction. We can modify state sensitive objects in the cluster, using the state instance got from the RED::IResourceManager interface. |
Lists the possible projections for a viewpoint.
Enumerator:
VPT_PARALLEL | Orthographic viewpoint projection. See RED::IViewpoint::SetFrustumParallel. |
VPT_PERSPECTIVE | Perspective viewpoint projection. See RED::IViewpoint::SetFrustumPerspective. |
VPT_CUSTOM | Custom viewpoint projection. See RED::IViewpoint::SetFrustumCustom. |
Enumerates all anchoring and resizing behaviors of a viewpoint that is inserted in a VRL.
Enumerator:
VSP_ANCHOR_FIXED | Specify this parameter when inserting a viewpoint in a VRL to specify that on a REDWindow::Resize operation, the coordinates of the viewpoint anchor will remain fix. When the window is too small to encapsulate the entire viewpoint, it is being cropped to the window dimensions. |
VSP_ANCHOR_STRETCHED | Specify this parameter when inserting a viewpoint in a VRL to specify that on a REDWindow::Resize operation, the coordinates of the viewpoint anchor will move proportionally to the window size change ratio. For example, an anchor at 100,50 in a 640,480 window will be moved at 100x800/640,50x600/480 during a resize operation that turns the 640,480 pixels window in a 800,600 pixels window. |
VSP_SIZE_FIXED | Specify this parameter when inserting a viewpoint in a VRL to specify that on a REDWindow::Resize operation, the viewpoint size remain fixed, whatever may be the movement of it's anchor. If the viewpoint is too wide to be fully contained in the window, it is cropped. |
VSP_SIZE_STRETCHED | Specify this parameter when inserting a viewpoint in a VRL to specify that on a REDWindow::Resize operation, the viewpoint size vary as the vrl size is changing. The viewpoint ratio is not modified, meaning that a cube will be distorted if the vrl's height / width ratio is being modified. |
VSP_SIZE_STRETCHED_AUTO_RATIO | Specify this parameter when inserting a viewpoint in a VRL to specify that on a REDWindow::Resize operation, the viewpoint size vary with the vrl size change. The viewpoint height / width (or vertical fov / horizontal fov) ratio is maintained equal to the vrl height / width ratio, meaning that the rendering of a cube remains seen as a cube whatever may be the vrl size it's in. |
Defines the viewpoint list ordering in the RED::IViewpointRenderList.
Enumerator:
VST_FRONT | Indicates to target the foreground list of viewpoints in a VRL. Foreground viewpoints are drawn over scene and back viewpoints. |
VST_SCENE | Indicates to target the scene list of viewpoints in a VRL. |
VST_BACK | Indicates to target the background list of viewpoints in a VRL. Background viewpoints are drawn behind scene and foreground viewpoints. |
Lists the possible texturing wrap modes for a texture.
Enumerator:
WM_REPEAT | Repeat the texture pattern out of the texture's limits. |
WM_MIRRORED_REPEAT | Repeat the texture pattern with an inversion of the texture out of the texture's limits. |
WM_CLAMP | The texture sampling result is zero outside of the texture's limits. |
WM_CLAMP_TO_EDGE | The texture sampling results remain slightly inside the texture when it's out of the texture's limits. |
WM_CLAMP_TO_BORDER | The texture sampling results are set to the texture's border color when it's out of the texture's limits. |
Types documentation
Prototype of the batch synchronization callback.
This callback can be helpful in high performance multi-threaded rendering environments to control the edition flow of rendering batches that are bypassing the regular transaction system.
Shared geometry data channels or indices are bypassing the REDsdk's transaction system: one single array can be used as source of the data for a geometry. Consequently, modifiying the contents of a shared array in an auxiliary thread while the engine is rendering can be fatal to the application or can lead to visual artifacts.
During the startup of a RED::IWindow::FrameDrawing, the engine synchronizes all the data that have to be visualized on the GPU. This task occurs at the early startup of the rendering call. Once this step is over, shared geometrical data can be safely modified in a multi-threaded context.
The purpose of this callback is to indicate that the GPU geometrical data synchronization is over.
Parameters:
iUserData: | A user data pointer specified by RED::IResourceManager::SetBatchSyncCallback. |
Method used to translate a raw stream into engine data.
Parameters:
iReferenceManager: | The object instance used to solve all links between chunk parameters (crossed references, shared resources, etc...) |
iStream: | The source stream. |
iChunkSignature: | Chunk number. |
iChunkSize: | Byte size of the chunk. |
oResult: | Created object. |
iState: | Current transaction. |
Returns:
RED_BAD_PARAM for all invalid inputs,
RED_ALLOC_FAILURE upon a memory allocation failure,
RED_FAIL otherwise.
Prototype of the RED image custom format loading.
Parameters:
oImage | pointer to the returned image. This image must have been properly created before the call (and must implement RED::IImage and RED::IImage2D interfaces). |
iInput | reference to the input stream. |
iImageFormat | image file format. |
iPixelFormat | requested pixel format for the returned image. |
iVerticalFlip | true to flip the loaded image lines of pixels vertically, false to let it unchanged. |
iLocal | true to load the image in the local (CPU memory) storage of the image, false to load it directly in the graphics card memory. If iLocal is true, then the source pixel array is kept in the local storage of the image regardless of the value of iTarget. If iLocal is false, the source pixel array is loaded and then set into the image with possible formats & conversions depending on the hardware backend capabilities and value of iTarget. For instance, a non-power-of-two (NPOTD) image can be loaded and will remain as NPOTD in the local storage while it'll be turned into a power-of-two (POTD) image if iLocal is false and iTarget is RED::TGT_TEX_2D for instance. |
iTarget | this specifies the target of the loaded image once in the graphics card memory. Note that the target must be chosen in accordance with the requested iPixelFormat. |
iState | current transaction. |
Returns:
other RED_RCs from the custom callback.
Prototype of the instance counter callback.
The instance counter callback is used with the RED::RenderShaderParameter::REF_INSTANCE_COUNTER reference. The callback is useless if the reference is not used in a shader to leverage all values it has returned.
The callback receives several parameters:
- An object UID: This is an unique ID. Two objects in the camera that visualizes the scene graph can't have the same ID (note that two objects in different cameras may have the same ID, the uniqueness is granted at the camera level).
- A shape path from the root of the scene down to the object instance itself. This shape path uniquely identifies the instance.
The callback returns a RED::Vector4 that contains the value that will be received by the shader using the reference for this specific object instance.
See Using instance counters for a practical example of using instance counters.
Parameters:
oReferenceValue: | The result of the callback. |
iUid: | The object instance unique ID. |
iInstancePath: | The path from the root down to the object instance corresponding to 'iUid'. The leaf of this vector is the instanced object shape itself. |
Returns:
Prototype of the instance counter callback for image parameters.
This callback works as the RED::INSTANCE_COUNTER_CALLBACK prototype, but it's used to associate images to instances rather than values. This callback works with the RED::RenderShaderParameter::REF_INSTANCE_COUNTER_IMAGE reference.
See the RED::INSTANCE_COUNTER_CALLBACK documentation for details on the callback mechanism.
See Using instance counters for a practical example of using instance counters.
Parameters:
oReferenceValue: | The result of the callback. |
iUid: | The object instance unique ID. |
iInstancePath: | The path from the root down to the object instance corresponding to 'iUid'. The leaf of this vector is the instanced object shape itself. |
Returns:
Threaded method prototype.
The argument of the method is the RED::Thread class instance that has launched the thread itself. To retrieve user arguments, use RED::Thread::GetUserArgument.
Parameters:
iThreadClass: | The thread class address. |
Returns:
Prototype of the RED rendering interruption method.
If a RED::IResourceManager::SetInterruptCallback call occurs, a method with that prototype is called by the engine during rendering phases, to figure out whether we need to stop the rendering (returns true) or not (returns false).
Parameters:
iUserData: | A user data pointer specified by RED::IResourceManager::SetInterruptCallback. |
Prototype of the OpenGL buffer customization callback.
This callback can be used to do custom OpenGL rendering configuration down the rendering pipeline of REDsdk. It gets called once each time RED::IResourceManager::EndState is called.
On invocation, an OpenGL context corresponding to the rendering pass is already set. According to REDsdk contexts sharing rules (see Managing multiple windows and external OpenGL contexts), this context is shared with all other contexts in REDsdk so there should be no need to change it.
Parameters:
iUser: | User data specified during the callback setup. |
Prototype of the OpenGL material customization callback.
This callback can be used to do custom OpenGL rendering configuration down the rendering pipeline of REDsdk. It gets called as many times as needed each time a material needs to be setup for the rendering of some data. Material setups occur for each window, viewpoint render list, viewpoint, material, shader pass and render shader. Based on culling results, geometrical primitive batching, instanciations, this method will be called whenever set.
On invocation, an OpenGL context corresponding to the rendering pass is already set. According to REDsdk contexts sharing rules (see Managing multiple windows and external OpenGL contexts), this context is shared with all other contexts in REDsdk so there should be no need to change it.
Parameters:
iWindow: | The RED::IWindow being rendered. May be NULL for some internal rendering passes. |
iVRL: | The RED::IViewpointRenderList being rendered. May be NULL for some internal rendering passes. |
iViewpoint: | The RED::IViewpoint being rendered. May be NULL for some internal rendering passes. |
iMaterial: | The REDsdk material object being rendered. May be NULL for some internal rendering passes. |
iPass: | The current rendering pass. Note that there are many internal rendering passes for which iPass is RED::MTL_INTERNAL. |
iLight: | NULL or the current light shape address we're rendering for. |
iShaderID: | RED::Object::GetID value of the calling RED::RenderShader. |
iUser: | User data specified during the callback setup. |
Prototype of the OpenGL viewpoint customization callback.
This callback can be used to do custom OpenGL rendering configuration down the rendering pipeline of REDsdk. It gets called as many times as needed each time a viewpoint needs to be setup for the rendering of some data. Viewpoint setups occur for each window and viewpoint render lists and the callback is called accordingly.
On invocation, an OpenGL context corresponding to the rendering pass is already set. According to REDsdk contexts sharing rules (see Managing multiple windows and external OpenGL contexts), this context is shared with all other contexts in REDsdk so there should be no need to change it.
Parameters:
iWindow: | The RED::IWindow being rendered. |
iVRL: | The RED::IViewpointRenderList being rendered. |
iViewpoint: | The RED::IViewpoint being rendered. |
iUser: | User data specified during the callback setup. |
Prototype of the progress indicator callback.
iMessage text message depending on the current processing. iProgression progression of the current processing (in [0, 1]). iUserData custom user data associated with the callback.
Prototype of the error handling callback.
This callback gets called each time a REDsdk error is being raised. The call will receive a number of informations that may help find out the source of the problem that caused the error to be raised. Use RED::IResourceManager::SetErrorCallback to setup an error callback.
The iRC is the error code. The iObject is the object address that has emitted the error code. This may be a user object (for example the address of a shape or of a material) or this may be an internal REDsdk object address. The iCaller is the calling method or function in REDsdk that has emitted the error. While this may sound meaningless, this information will help us answer you faster if we have to investigate the problem.
Then, two extra informations can be provided: a iExpression and iInfo strings. Both strings are optional but can provide relevant extra informations to understand the cause of the problem.
Please watch out to avoid re-entrance of rendering calls. Raising an application display panel from this callback may provoke recursive re-entering rendering calls (once created, the application event loop is called again to display the panel, and this provokes a paint event that calls a REDsdk rendering method again, while we're still in the process of handling an error).
Parameters:
iRC: | Error code. |
iCaller: | Name of the calling method or function. |
iObject: | Relevant object address for the error. |
iExpression: | Called source expression string. |
iInfo: | Extra information string. |
iUser: | User data specified on callback setup. |
Prototype of the RED rendering progress method.
If a RED::IWindow::SetRenderingProgressCallback call occurs, a method with that prototype is called by the engine during the rendering of a frame to inform the application of the percentage of processing done.
Parameters:
iFrameStatistics: | Calculated frame statistics at the time of the call. |
iUserData: | User data associated to the callback. |
Returns:
Custom bucket definition callback
If this callback is set, the software ray-tracer uses this callback to fill the list of buckets to compute in the image.
This callback gets called each time a ray-tracer thread needs to work on a pixel region of the image. The REDISoftBucket interface can be used to 'feed' the software ray-tracer with new data to process.
This method is called while in a synchronization point between threads, so it should return as quickly as possible. The call will be issued from each calculation thread.
Parameters:
iViewpoint: | Camera being currently rendered in software. |
ioISoftBucket: | Interface to the software ray-tracer for the manipulation of the list of software buckets to process. |
ioUserData: | User data pointer. |
SOFT_GEOMETRY_SHADER: Prototype of a software geometry vertex shader.
Geometry shaders can be used to modify the primitive assembly, unlike regular vertex shaders that are bound to the mesh input geometry.
Geometry shaders are declared through RED::ShaderString::GeometryShaderStart.
Each graphic primitive rendered by a material that is using a geometry shader will receive a call to the geometry shader to modify the input geometry channels. The geometry shader must include the vertex transformation to device space in all its calculations. The result of a geometry shader is sent to the pixel shader stage.
Most common rendering usages of the geometry shader include:
- Double precision data processing, for all legacy hardware that have no native double precision support (in this specific case, the primitive assembly does not need any change).
- Displacement mapping, through the dynamic creation of geometry resulting of a modification of the primitive assembly within the geometry shader.
- Dynamic primitive generation (adaptative tessellation, etc...) using the same primitive assembly edition mechanism.
The geometry shader generates a list of transformed vertex attributes and the list of channels that corresponds to it. For example if the input mesh has 10 vertices with positions, normals and one UV channel and the geometry shader produces 50 vertices with positions, normals and UV transformed 3 times, we'll get the following:
- oVertexAttrib[0]: Points to a vector of 50 * 4 doubles (homogeneous vertex out).
- oVertexAttrib[1]: Points to a vector of 50 * 4 doubles (transformed normals).
- oVertexAttrib[2]: Points to a vector of 50 * 4 doubles (source UV after transform).
- oVertexAttrib[3]: Points to a vector of 50 * 4 doubles (source UV after transform).
- oVertexAttrib[4]: Points to a vector of 50 * 4 doubles (source UV v).
- oChannel[0] = RED_VSH_VERTEX.
- oChannel[1] = RED_VSH_NORMAL.
- oChannel[2] = RED_VSH_TEX0.
- oChannel[3] = RED_VSH_TEX1.
- oChannel[4] = RED_VSH_TEX2.
The first returned channel must be RED_VSH_VERTEX and 'oVertexAttrib[0]' must contain the transformed vertices coordinates in homogeneous space.
Then, the list of primitives has to be returned in 'oPrimitives'. Only one kind of primitive can be returned by the geometry shader. It's not necessarily of the same kind as the input one. The RED::GEO_UNMODIFIED primitive kind can be used to specify that the source indexed primitive list is not modified and therefore, 'oPrimitives' can be ignored. In this case, the rendering occurs using 'iPrimitives'.
The list of primitives is in indexed mode, as the source primitives are. The number of primitives is defined by the actual size used in 'oPrimitives'.
Parameters:
oVertexAttrib: | List of output vertex attributes. 4 doubles are returned for each vertex that is produced by the geometry shader. oVertexAttrib[0] is the list of vertex attributes for 'oChannels[0]'. |
oChannels: | Output channels that are produced by the geometry shader. |
oChannelsCount: | Number of valid output channels returned. |
oPrimitives: | Output list of indexed geometry primitives (lines, triangles, points). |
oType: | The produced primitive type. Can't be GEO_TRIANGLES_ADJACENCY. |
iVertexAttrib: | Input vertex attributes array as defined in the source mesh and mapped by the RED::RenderCode specification. |
iVerticesCount: | Number of input vertices. |
iIndex: | The source indexed set of primitives. |
iCount: | The number of source primitives. |
iType: | The source primitive type. |
iProgramLocal: | Input program local parameters (4 doubles for each program entry being defined by the shader parameters). |
iModelViewMatrix: | Modelview matrix (object to view space). 16 doubles, column major. |
iModelViewProjMatrix: | Modelview-Projection matrix (object to device space). 16 doubles, column major. |
iModelMatrix: | Model matrix (object to world space). 16 doubles, column major. |
Returns:
Prototype of a pixel analyzer callback method.
Defines the prototype for a pixel analyzer method. The pixel analysis callback is being called back for every pixel in the image that hits a geometrical primitive in the image. The propagation occurs for a primary pixel beam and starts with the closest hit primitive from the pixel beam startup. If oNext is returned set to true, the propagation of the pixel beam continues and returns all other primitives behind the last primitive that was hit.
Please note that the callback is repeatedly called for every non empty pixel in the image, taking advantage of multi-threading: there may be concurrent calls to the callback that occurs.
Parameters:
oNext: | If returned true, we'll continue the propagation of the pixel beam to see other primitives that could be behind the previously returned object. |
iRayContext: | Software ray context with informations on the currently hit object. |
iRenderingContext: | Rendering context of the image. |
iUser: | User pointer as specified in RED::IViewpointRenderList::SetPixelAnalysisCallback. |
Returns:
Custom ray intersection callback.
If this callback is set, the ray-tracer uses it to get extra intersection information sourced from data which is not stored inside the scene graph of the camera. The callback is launched for each ray processed by the ray-tracer. It returns either an intersection or no intersection.
The ray is defined by [ iE, iP ], but is limited at its beginning by its ray real starting position defined by iE + iTIn * ( iP - iE ).
The callback returns oTHit which must be set to the parametric length of the source ray [ iE, iP ] at the intersection point. In addition to oTHit, oTHit1 and oTHit2 can be filled with any user proprietary data (UV coordinates for instance, or anything else relevant to the callback RED::SOFT_RAY_PROCESSING_SHADING_CALLBACK that'll be called afterwards).
Parameters:
oTHit: | Parametric length of the ray of the found intersection. |
oTHit1: | Hit primitive user information. |
oTHit2: | Hit primitive user information. |
iE: | Ray starting position. |
iP: | Ray ending position. |
iTIn: | Ray starting position by parametric length on [ iE, iP ]. |
iLayerSet: | Layerset to consider that may be set by REDsdk during the processing of shadow rays. If a valid RED::LayerSet address is received by the callback, then the intersection callback should discard all custom geometries that don't match iLayerSet from its results. |
iNumThread: | Number of the calling thread. |
ioUserData: | User data pointer specified during callback setup. |
Returns:
Custom ray shading callback.
If this callback is set, the ray-tracer uses it to gather shading informations for all the extra primitives being intersected by the means of the SOFT_RAY_PROCESSING_INTERSECTION_CALLBACK.
The shading callback is called after the intersection callback. Therefore, informations to return from the shading callback are relative to the last intersection found for the same iNumThread thread number. The last intersection data is accessible from ( iTHit, iE, iP ).
Parameters:
oDataChannel: | Data channel values to use at the shading point. All fields in this array should be filled accordingly to the RED::RenderCode binding specifications set in oMaterial for the shaders to be processed. |
oGeoNormal: | Geometrical surface normal at the shading point. The geometrical normal may differ from the interpolated surface normal. This normal must be returned with valid values, and will be renormalized after the callback's return. |
oMaterial: | The material address to use for the shading of the last hit primitive for that thread. |
oLayerSet: | The layerset address to use for the shading of the last hit primitive for that thread. Note that the layerset object address (if any is returned) pointed to by this method must remain alive after the call as it'll be used 'as is' by the ray-tracer during shading calculations. |
iTHit: | Parametric length of the ray at the intersection. |
iTHit1: | Hit primitive user information. |
iTHit2: | Hit primitive user information. |
iE: | Ray starting position. |
iP: | Ray ending position. |
iNumThread: | Number of the calling thread. |
ioUserData: | User data pointer specified during callback setup. |
Returns:
Prototype of the software shading method.
This method defines the prototype of a software shading function. All shaders are defined through this prototype when the software ray-tracer is enabled.
The SOFT_SHADER callback is registered in the RED::HW_SOFT_TRACER platform, and is declared as a pixel shader in a RED::RenderShader using RED::ShaderString::SoftShaderStart.
The method is dynamically loaded from the specified DLL at runtime or has been specified as a custom shading callback with RED::IResourceManager::RegisterShadingCallback, and is executed in a multi-threaded environment.
The method receives all the parameter it needs for the production of its results: 'iRayContext', 'iShaderContext' and 'iRenderingContext' all define the shading parameters that can be accessed for the calculation.
Additional framebuffer informations are accessible from the RED::SoftFrameBufferSample data structure that is used as an I/O structure.
A software shader should at least write a color in the framebuffer.
Parameters:
ioFrameBufferSample: | Input / output structure containing framebuffer sample data. |
iRayContext: | The current ray context. |
iShaderContext: | The shader parameters. |
iRenderingContext: | The global rendering context. |
iVersion: | version of the shader being evaluated. |
iUserData: | custom user data set in IResourceManager::RegisterShadingCallback. |
Returns:
Prototype of a custom culling callback.
Defines the prototype for a culling callback. The callback receives the viewpoint that is rendering the shape that owns the callback and a list that must be filled with all indices of the children of the shape that are to be considered further for the rendering of the frame.
If the shape that owns the callback is a node:
- If the node has three children, then it must return 0, 1 and 2 in iSelectedChildren to select all its children. Only numbers written to iSelectedChildren will be kept.
- As a faster alternative, the node can tell the engine to keep all its children by writing a single negative value in iSelectedChildren.
- All child numbers returned in iSelectedChildren must be written in growing order. If 2, 0, 1 is written in the selected children list, then 0 and 1 will be ignored. 0, 1, 2 should be written instead.
If the shape that owns the callback is a leaf:
- If iSelectedChildren is returned empty, the shape will be discarded for the visibility defined by the callback.
See RED::IShape::SetContextSwitchCallback or RED::IShape::SetVisibilitySwitchCallback for details on the callbacks and the effects they produce.
See Using culling callbacks for visibility control for a practical callback usage example.
Parameters:
iViewpoint: | Rendered camera. |
iShape: | Current shape whose child list is being culled. |
iSelectedChildren: | Numbers of selected children in shape's list. |
iUserData: | Custom user data set in the RED::IShape::SetContextSwitchCallback function. |
iStateNumber: | The number of the rendered transaction. |