IllumParams Class Reference

IllumParams Class Reference

#include <IllumParams.h>

Class Description

See also
Class Shader, Class Point3, Class Color.

Description:
This class allows the Standard material to get the parameters from a Shader plug-in. It also allows the Shader to supply its computed color data back to the Standard material. The Standard material will handle the texturing but it needs to know the color before the texturing is done.

The shader object holds some raw parameters. But these parameters may be textured. So for each pixel that will be shaded, the 3ds Max shade routine asks the shader to fill in the raw values. Then it applies the texture over the top of any of the values which are textured.
Data Members:
Shader* pShader;

This parameter is available in release 4.0 and later only.

A pointer to the shader.

Mtl* pMtl;

This parameter is available in release 4.0 and later only.

A pointer to the material being shaded or NULL if it's a background.

Color channels[32];

A color channel for each of the possible parameters that may be textured. Note that these channels don't have specific meanings. They are defined by each Shader. The Shader tells the Standard material what data is in these channels using its ChannelType() and StdIDToChannel() methods.

float falloffOpac;

Shaders using standard opacity can ignore this data member. This is available for certain Shaders which don't use the standard 3ds Max transparency equation. This allows these Shaders to simulate the 3ds Max version. This is the pre-computed textured opacity with standard falloff applied. The value here is pre-computed to consider all the standard opacity settings of falloff direction, etc. The standard transparency computation then uses this after shading. So a shader could modify this value if it wanted to to affect the transparency.

Note: The regular opacity can be obtained from the channel data.

float kR;

This value is used when there is a reflection and an atmosphere present. Normally if there is no atmosphere (for instance no Fog in the scene) then the transparency of the reflection is 100% (it is unaffected). However, if there is an atmosphere present it will impart some level of opacity. This opacity (alpha value) is not available via the reflection color. Thus this data member is here to provide this opacity information to the Shader.

This value is the alpha which is returned by the reflection query that has the transparency of the atmosphere contained within it, which is then multiplied by the Amount spinner. This can then be used either by the Shader or by the standard handling for reflection maps.

ULONG hasComponents;

These are the bits for the active components of bump, reflection, refraction and opacity mapping. If the bit is set that component is active. This provides a quick way for a Shader to check if they're used (as opposed to looking through the channels array searching for these channel types).

HAS_BUMPS – If bump mapping is present this is set.

HAS_REFLECT – If there is any kind of reflection (raytraced, etc) then this is set.

HAS_REFRACT – If there is any kind of refraction then this is set..

HAS_OPACITY – If opacity mapping is used this is set.

HAS_REFLECT_MAP – If there is a reflection map only this is set. This is used by the Strauss shader for example. If it sees a reflection map present it dims the diffuse channel.

HAS_REFRACT_MAP – If there is a refraction map only then this is set.

ULONG stdParams;

The standard parameter bits. See Standard Parameter flags. This is filled in by the Standard material.

Color ambIllumOut;

This is the ambient output from the Illum() method.

Color diffIllumOut;

This is the diffuse output from the Illum() method.

Color transIllumOut;

This is the transparency output from the Illum() method.

Color selfIllumOut;

This is the self illumination output from the Illum() method.

Color specIllumOut;

This is the specular illumination output from the Illum() method.

Color reflIllumOut;

This is the reflection output from the Illum() method. Certain shaders may wish to store the reflection output here (as opposed to providing it in the channels array). This is the '"raw " color from the direction of reflection (unattenuated). Some combiner implementations (Shader::CombineComponents())can get the reflection data here, others may get it from the channels.

float diffIllumIntens;

Used only by reflection dimming, intensity of diffIllum prior to color multiply.

float finalAttenuation;

The final attenuation for combining components.

float finalOpac;

This is the final opacity value used for combining components together in Shader::CombineComponents().

Color finalC;

This is the final output color that the Shader::CombineComponents() composites together.

Color finalT;

This is the final Shader transparency color output.
+ Inheritance diagram for IllumParams:

Public Member Functions

CoreExport IllumParams (int nUserOut=0, const MCHAR **pUserNames=NULL)
 
CoreExport ~IllumParams ()
 
int nUserIllumChannels ()
 
const MCHARGetUserIllumName (int n)
 
CoreExport int FindUserIllumName (const MCHAR *name)
 
void SetUserIllumOutput (int n, Color &out)
 
CoreExport void SetUserIllumOutput (const MCHAR *name, Color &out)
 
Color GetUserIllumOutput (int n)
 
CoreExport Color GetUserIllumOutput (const MCHAR *name, int n)
 
void ClearOutputs ()
 
void ClearInputs ()
 
- Public Member Functions inherited from BaseInterfaceServer
virtual UtilExport BaseInterfaceGetInterface (Interface_ID id)
 
virtual UtilExport int NumInterfaces () const
 
virtual UtilExport BaseInterfaceGetInterfaceAt (int i) const
 
virtual UtilExport ~BaseInterfaceServer ()
 
- Public Member Functions inherited from InterfaceServer
virtual UtilExport ~InterfaceServer ()
 Destructor. More...
 

Public Attributes

ShaderpShader
 
MtlpMtl
 
Color channels [STD2_NMAX_TEXMAPS]
 
float finalOpac
 
float reflectAmt
 
float refractAmt
 
ULONG hasComponents
 
ULONG stdParams
 
intstdIDToChannel
 
Color ambIllumOut
 
Color diffIllumOut
 
Color transIllumOut
 
Color selfIllumOut
 
Color specIllumOut
 
Color reflIllumOut
 
int nUserIllumOut
 
const MCHAR ** userIllumNames
 
ColoruserIllumOut
 
float diffIllumIntens
 
float finalAttenuation
 
Color finalC
 
Color finalT
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport voidoperator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport voidoperator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport voidoperator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport voidoperator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
- Protected Attributes inherited from BaseInterfaceServer
Tab< BaseInterface * > interfaces
 

Constructor & Destructor Documentation

CoreExport IllumParams ( int  nUserOut = 0,
const MCHAR **  pUserNames = NULL 
)

Member Function Documentation

int nUserIllumChannels ( )
inline
165 { return nUserIllumOut; }
int nUserIllumOut
Definition: IllumParams.h:137
const MCHAR* GetUserIllumName ( int  n)
inline
168  {
169  DbgAssert( n < nUserIllumOut );
170  if( userIllumNames )
171  return userIllumNames[n];
172  return NULL;
173  }
const MCHAR ** userIllumNames
Definition: IllumParams.h:138
#define NULL
Definition: autoptr.h:18
int nUserIllumOut
Definition: IllumParams.h:137
#define DbgAssert(expr)
Definition: assert1.h:72
CoreExport int FindUserIllumName ( const MCHAR name)
void SetUserIllumOutput ( int  n,
Color out 
)
inline
180  {
181  DbgAssert( n < nUserIllumOut );
182  userIllumOut[n] = out;
183  }
int nUserIllumOut
Definition: IllumParams.h:137
#define DbgAssert(expr)
Definition: assert1.h:72
Color * userIllumOut
Definition: IllumParams.h:139
CoreExport void SetUserIllumOutput ( const MCHAR name,
Color out 
)
Color GetUserIllumOutput ( int  n)
inline
187  {
188  DbgAssert( n < nUserIllumOut );
189  return userIllumOut[n];
190  }
int nUserIllumOut
Definition: IllumParams.h:137
#define DbgAssert(expr)
Definition: assert1.h:72
Color * userIllumOut
Definition: IllumParams.h:139
CoreExport Color GetUserIllumOutput ( const MCHAR name,
int  n 
)
void ClearOutputs ( )
inline
Remarks
This method is called by the Standard material prior to calling the Illum() method of the Shader. It sets to black all the output colors:

ambIllumOut=diffIllumOut=transIllumOut=selfIllumOut=

specIllumOut=reflIllumOut=Color(0.0f, 0.0f, 0.0f);
199  {
201  specIllumOut=reflIllumOut= Color( 0.0f, 0.0f, 0.0f );
203  for( int i=0; i < nUserIllumOut; ++i )
204  userIllumOut[i] = finalC;
205  }
Color diffIllumOut
Definition: IllumParams.h:133
Color finalC
Definition: IllumParams.h:145
float finalAttenuation
Definition: IllumParams.h:142
Definition: color.h:69
Color reflIllumOut
Definition: IllumParams.h:134
Color specIllumOut
Definition: IllumParams.h:134
float diffIllumIntens
Definition: IllumParams.h:141
int nUserIllumOut
Definition: IllumParams.h:137
Color transIllumOut
Definition: IllumParams.h:133
Color finalT
Definition: IllumParams.h:146
Color ambIllumOut
Definition: IllumParams.h:133
Color selfIllumOut
Definition: IllumParams.h:133
Color * userIllumOut
Definition: IllumParams.h:139
void ClearInputs ( )
inline
207  {
208  /*mtlFlags = */ stdParams = hasComponents = 0;
209  pShader = NULL; pMtl = NULL;
211  refractAmt = reflectAmt = 0.0f;
212  for( int i=0; i < STD2_NMAX_TEXMAPS; ++i )
213  channels[ i ] = Color( 0, 0, 0 );
214  }
ULONG stdParams
Definition: IllumParams.h:129
float refractAmt
Definition: IllumParams.h:127
ULONG hasComponents
Definition: IllumParams.h:128
Definition: color.h:69
#define NULL
Definition: autoptr.h:18
Mtl * pMtl
Definition: IllumParams.h:121
int * stdIDToChannel
Definition: IllumParams.h:130
float reflectAmt
Definition: IllumParams.h:126
Shader * pShader
Definition: IllumParams.h:120
#define STD2_NMAX_TEXMAPS
Definition: IllumParams.h:20
Color channels[STD2_NMAX_TEXMAPS]
Definition: IllumParams.h:123

Member Data Documentation

Shader* pShader
Mtl* pMtl
float finalOpac
float reflectAmt
float refractAmt
ULONG hasComponents
ULONG stdParams
int* stdIDToChannel
Color ambIllumOut
Color diffIllumOut
Color transIllumOut
Color selfIllumOut
Color specIllumOut
Color reflIllumOut
int nUserIllumOut
const MCHAR** userIllumNames
Color* userIllumOut
float diffIllumIntens
float finalAttenuation
Color finalC
Color finalT