44 lines
1.7 KiB
C++
Executable File
44 lines
1.7 KiB
C++
Executable File
/**********************************************************************
|
|
*<
|
|
FILE: shadbuf.h : Shadow buffer renderer.
|
|
|
|
DESCRIPTION:
|
|
|
|
CREATED BY: Dan Silva
|
|
|
|
HISTORY:
|
|
|
|
*> Copyright (c) 1994, All Rights Reserved.
|
|
**********************************************************************/
|
|
|
|
#ifndef __SHADBUF__H
|
|
#define __SHADBUF__H
|
|
|
|
class ShadBufRenderer {
|
|
public:
|
|
// Compute a shadow Z buffer for the current scene from the viewpoint of the light.
|
|
// NOTE: The computed shadow buffer has positive Z values as you go away from the light, which is
|
|
// the reverse of the MAX coord system.
|
|
// Returns the number of objects that the shadow volume intersected. If this value is 0,
|
|
// the shadow buffer can be freed to save memory.
|
|
virtual int Render(
|
|
RendContext &rc,
|
|
RenderGlobalContext *RGC,
|
|
float *buf, // preallocated (shadsize*shadsize) floats
|
|
BOOL parallel, // parallel or perspective projection
|
|
int shadsize, // size of the buffer (shadsize by shadsize pixels)
|
|
float param, // persp:field-of-view (radians) -- parallel : width in world coords
|
|
float aspect, // aspect ration of the buffer projection
|
|
float clipDist, // don't consider objects farther than this from light
|
|
ObjLightDesc *ltDesc, // descriptor for light that was passed in to CreateShadowGenerator
|
|
Matrix3 worldToLight // world to light transfor for light
|
|
)=0;
|
|
virtual float Furthest()=0; // after render, this gives the farthest Z in the buffer
|
|
virtual float Closest()=0; // after render, this gives the closest Z in the buffer.
|
|
virtual void DeleteThis()=0;
|
|
};
|
|
|
|
CoreExport ShadBufRenderer *NewDefaultShadBufRenderer();
|
|
|
|
#endif __SHADBUF__H
|