ShadeOutput Class Reference

#include <ShadeContext.h>

Class Description

See also
Class ShadeContext, Class Color.

Description:
An instance of this class is a data member of the ShadeContext. This is used to contain the computed color and transparency of the pixel being shaded by a material. All methods of this class are implemented by the system.
Data Members:
ULONG flags;

These flags are not currently used.

Color c;

Shaded color of the pixel.

Color t;

Transparency of the pixel.

float ior;

Index of refraction of the pixel.

int gbufId;

The G-buffer ID. This allows the MixIn() method to pick the id of the material which was blended in the highest proportion.
+ Inheritance diagram for ShadeOutput:

Public Member Functions

CoreExport void MixIn (ShadeOutput &a, float f)
 
 ShadeOutput ()
 
 ShadeOutput (int nEle)
 
void Reset (int nEle=-1)
 
CoreExport ShadeOutputClone ()
 
int NewElementVal ()
 
int NElementVals ()
 
void SetNElements (int n)
 
AColor ElementVal (int n)
 
void SetElementVal (int n, AColor color)
 
void AccumElementVal (int n, AColor color)
 
void Sum (ShadeOutput *pSample)
 
void Scale (float x)
 
void SumClr (ShadeOutput *pSample)
 
ShadeOutputoperator+= (ShadeOutput &a)
 
ShadeOutputoperator*= (Color x)
 
ShadeOutputoperator= (const ShadeOutput &a)
 
- 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

ULONG flags
 
Color c
 
Color t
 
float ior
 
int gbufId
 
int nElements
 
AColor elementVals [N_MAX_RENDER_ELEMENTS]
 

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...
 
static UtilExport voidaligned_malloc (size_t size, size_t alignment)
 Allocates memory on a specified alignment boundary. More...
 
static UtilExport voidaligned_realloc (void *ptr, size_t size, size_t alignment)
 Reallocates memory on a specified alignment boundary. More...
 
static UtilExport void aligned_free (void *ptr)
 Frees a block of memory that was allocated with aligned_malloc/aligned_realloc. More...
 
- Protected Attributes inherited from BaseInterfaceServer
Tab< BaseInterface * > interfaces
 

Constructor & Destructor Documentation

ShadeOutput ( )
inline
179 :nElements(0), flags(0), gbufId(0){};
int gbufId
Definition: ShadeContext.h:140
ULONG flags
Definition: ShadeContext.h:136
int nElements
Definition: ShadeContext.h:143
ShadeOutput ( int  nEle)
inline
180 :flags(0), gbufId(0){ nElements = nEle; }
int gbufId
Definition: ShadeContext.h:140
ULONG flags
Definition: ShadeContext.h:136
int nElements
Definition: ShadeContext.h:143

Member Function Documentation

CoreExport void MixIn ( ShadeOutput a,
float  f 
)
Remarks
This method is used to blend the output of two texmaps, for example, in the Mix texmap. The function is as follows:
{
if (f<=0.0f) {
(*this) = a;
return;
}
else if (f>=1.0f) {
return;
}
else {
float s = 1.0f - f;
flags |= a.flags;
c = s*a.c + f*c;
t = s*a.t + f*t;
ior = s*a.ior + f*ior;
if (f<=0.5f) gbufId = a.gbufId;
}
}
This does a blend of a with (*this). This blend is applied to the color, transparency, and index of refraction. The flags of are OR'ed together.
Parameters:
ShadeOutput& a

The output of the texmap to blend in.

float f

The amount to blend in, i.e.:

a.MixIn(b, 1.0f) results in 100% of a and none of b.
void Reset ( int  nEle = -1)
inline
Remarks
Implemented by the System.

This method resets the data member such that: c is set to black, t is set to black, ior is set to 1.0, gbufId is set to 0, and the flags are set to 0.
Parameters:
int n = -1

By supplying a negative value this method will clear elements but leave the number of elements unchanged.
190  {
191  flags = 0;
192  gbufId = 0;
193  c.Black(); t.Black(); ior = 1.0f;
194  // clear nEle's worth of render elements
195  if (nEle >= 0)
196  nElements = nEle;
197  for( int i=0; i < nElements; ++i )
198  elementVals[i].r = elementVals[i].g =
199  elementVals[i].b = elementVals[i].a = 0.0f;
200  }
int gbufId
Definition: ShadeContext.h:140
Color t
Definition: ShadeContext.h:138
void Black()
Definition: color.h:181
ULONG flags
Definition: ShadeContext.h:136
float ior
Definition: ShadeContext.h:139
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137
CoreExport ShadeOutput* Clone ( )
int NewElementVal ( )
inline
205  {
207  return nElements++;
208  }
int nElements
Definition: ShadeContext.h:143
#define DbgAssert(expr)
Definition: assert1.h:72
#define N_MAX_RENDER_ELEMENTS
Definition: ShadeContext.h:29
int NElementVals ( )
inline
209 { return nElements; }
int nElements
Definition: ShadeContext.h:143
void SetNElements ( int  n)
inline
211  {
212  DbgAssert( n>=0 && n<N_MAX_RENDER_ELEMENTS);
213  nElements = n;
214  }
int nElements
Definition: ShadeContext.h:143
#define DbgAssert(expr)
Definition: assert1.h:72
#define N_MAX_RENDER_ELEMENTS
Definition: ShadeContext.h:29
AColor ElementVal ( int  n)
inline
216  {
217  DbgAssert( n>=0 && n<N_MAX_RENDER_ELEMENTS);
218  return elementVals[n];
219  }
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
#define DbgAssert(expr)
Definition: assert1.h:72
#define N_MAX_RENDER_ELEMENTS
Definition: ShadeContext.h:29
void SetElementVal ( int  n,
AColor  color 
)
inline
221  {
222  DbgAssert( n>=0 && n<N_MAX_RENDER_ELEMENTS);
223  elementVals[n] = color;
224  }
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
#define DbgAssert(expr)
Definition: assert1.h:72
#define N_MAX_RENDER_ELEMENTS
Definition: ShadeContext.h:29
void AccumElementVal ( int  n,
AColor  color 
)
inline
226  {
227  DbgAssert( n>=0 && n<N_MAX_RENDER_ELEMENTS);
228  elementVals[n] += color;
229  }
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
#define DbgAssert(expr)
Definition: assert1.h:72
#define N_MAX_RENDER_ELEMENTS
Definition: ShadeContext.h:29
void Sum ( ShadeOutput pSample)
inline
231  {
232  c += pSample->c; t += pSample->t;
233  for( int i = 0; i < nElements; ++i )
234  elementVals[i] += pSample->elementVals[i];
235  }
Color t
Definition: ShadeContext.h:138
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137
void Scale ( float  x)
inline
236  {
237  c *= x; t *= x;
238  for( int i = 0; i < nElements; ++i )
239  elementVals[i] *= x;
240  }
controller mat max min numsubs x z controller keys x z controller keys x
Definition: generics.inl:211
Color t
Definition: ShadeContext.h:138
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137
void SumClr ( ShadeOutput pSample)
inline
242  {
243  c += pSample->c;
244  for( int i = 0; i < nElements; ++i ){
245  elementVals[i].r += pSample->elementVals[i].r;
246  elementVals[i].g += pSample->elementVals[i].g;
247  elementVals[i].b += pSample->elementVals[i].b;
248  }
249  }
float r
These values are in the range 0.0 to 1.0.
Definition: acolor.h:36
float g
Definition: acolor.h:36
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137
float b
Definition: acolor.h:36
ShadeOutput& operator+= ( ShadeOutput a)
inline
251  {
252  c += a.c;
253  t += a.t;
254  for( int i = 0; i < nElements; ++i )
255  elementVals[i] += a.elementVals[i];
256  return *this;
257  }
Color t
Definition: ShadeContext.h:138
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137
ShadeOutput& operator*= ( Color  x)
inline
258  {
259  c *= x; // t *= x;
260  AColor ac( x );
261  ac.a = Intens( x );
262  for( int i = 0; i < nElements; ++i )
263  elementVals[i] *= ac;
264  return *this;
265  }
controller mat max min numsubs x z controller keys x z controller keys x
Definition: generics.inl:211
static float Intens(const AColor &c)
Definition: acolor.h:334
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Definition: acolor.h:30
Color c
Definition: ShadeContext.h:137
ShadeOutput& operator= ( const ShadeOutput a)
inline
267  {
268  flags = a.flags;
269  c = a.c; t = a.t;
270  ior = a.ior;
271  gbufId = a.gbufId;
272  nElements = a.nElements;
273  for( int i = 0; i < nElements; ++i )
274  elementVals[i] = a.elementVals[i];
275  return *this;
276  }
int gbufId
Definition: ShadeContext.h:140
Color t
Definition: ShadeContext.h:138
ULONG flags
Definition: ShadeContext.h:136
float ior
Definition: ShadeContext.h:139
int nElements
Definition: ShadeContext.h:143
AColor elementVals[N_MAX_RENDER_ELEMENTS]
Definition: ShadeContext.h:144
Color c
Definition: ShadeContext.h:137

Member Data Documentation

ULONG flags
Color c
Color t
float ior
int gbufId
int nElements