JurassicParkTrespasser/jp2_pc/Source/Lib/Renderer/Primitives/ColLookupT.hpp

307 lines
6.5 KiB
C++
Raw Permalink Normal View History

2018-01-01 22:07:24 +00:00
/**********************************************************************************************
*
* Copyright <EFBFBD> DreamWorks Interactive. 1996
*
* Contents:
* Classes for using, or not using, colour lookup tables in raster primitives.
*
* Notes:
*
* To Do:
*
**********************************************************************************************
*
* $Log:: /JP2_PC/Source/Lib/Renderer/Primitives/ColLookupT.hpp $
*
* 6 98.09.19 12:39a Mmouni
* Added "forceinline" to many small inline functions.
* Inlined some functions for speed.
*
* 5 98.07.17 6:36p Mmouni
* Added new alpha texture primitive.
*
* 4 97/11/10 11:27a Pkeet
* Added 'CColLookupAlphaWater.'
*
* 3 97/11/03 5:51p Pkeet
* Added the 'CColLookupTerrain' class.
*
* 2 10/11/96 10:31a Pkeet
* Added 'pvClutConversion' as a global variable instead of a member of 'CDrawTriangle.' No
* clut pointer is therefore passed to the 'DrawLoop' functions.
*
* 1 10/09/96 7:18p Pkeet
* Initial implementation.
*
*********************************************************************************************/
#ifndef HEADER_LIB_RENDERER_PRIMITIVES_COLLOOKUPT_HPP
#define HEADER_LIB_RENDERER_PRIMITIVES_COLLOOKUPT_HPP
//
// Includes.
//
#include "Lib/Renderer/LightBlend.hpp"
//
// Externally defined global variables.
//
// Pointer to a clut location for source to destination pixel conversions.
extern void* pvClutConversion;
//
// Class definitions.
//
//*********************************************************************************************
//
class CColLookup
//
// Defines a base class for using cluts.
//
//**************************************
{
public:
//*****************************************************************************************
//
// CColLookup member functions.
//
//*****************************************************************************************
//
static forceinline bool bUseClut
(
)
//
// Returns 'false.'
//
//**************************************
{
return false;
}
//*****************************************************************************************
//
static forceinline bool bUseAlphaClut
(
)
//
// Returns 'false.'
//
//**************************************
{
return false;
}
//*****************************************************************************************
//
static forceinline void AssertClut
(
void* pv_clut
)
//
// Does nothing in the base class.
//
//**************************************
{
}
//*****************************************************************************************
//
static forceinline uint16* SetAlphaClutPointer
(
int i_fogband = 0
)
//
// Returns a pointer to the alpha clut.
//
//**************************************
{
return 0;
}
};
//*********************************************************************************************
//
class CColLookupOn : public CColLookup
//
// Defines a class for rasterizing primitives with a clut.
//
//**************************************
{
public:
//*****************************************************************************************
//
static forceinline bool bUseClut
(
)
//
// Returns 'true.'
//
//**************************************
{
return true;
}
//*****************************************************************************************
//
static void AssertClut
(
void* pv_clut
)
//
// Causes an assert to fail if a clut is not present.
//
//**************************************
{
Assert(pv_clut);
}
};
//*********************************************************************************************
//
class CColLookupOff : public CColLookup
//
// Defines a class for rasterizing primitives without using a clut.
//
//**************************************
{
};
//*********************************************************************************************
//
class CColLookupTerrain : public CColLookup
//
// Defines a class for rasterizing primitives with a special alpha (for fog) terrain clut.
//
//**************************************
{
public:
//*****************************************************************************************
//
static forceinline bool bUseAlphaClut
(
)
//
// Returns 'false.'
//
//**************************************
{
return false;
}
//*****************************************************************************************
//
static forceinline uint16* SetAlphaClutPointer
(
int i_fogband = 0
)
//
// Returns a pointer to the alpha clut.
//
//**************************************
{
// Get the index into the alpha table.
uint32 u4_bits_index = uint32(lbAlphaTerrain.u2GetAlphaReference(i_fogband));
// Get a pointer to the alpha table position.
uint16* pu2 = lbAlphaTerrain.au2Colour + u4_bits_index;
// Return the assembled pointer.
return pu2;
}
};
//*********************************************************************************************
//
class CColLookupAlphaWater : public CColLookup
//
// Defines a class for rasterizing primitives with a special alhpa water clut.
//
//**************************************
{
public:
//*****************************************************************************************
//
static forceinline bool bUseAlphaClut
(
)
//
// Returns 'false.'
//
//**************************************
{
return false;
}
//*****************************************************************************************
//
static forceinline uint16* SetAlphaClutPointer
(
)
//
// Returns a pointer to the alpha clut.
//
//**************************************
{
// Return the assembled pointer.
return lbAlphaTerrain.au2Colour;
}
};
//*********************************************************************************************
//
class CColLookupAlphaTexture : public CColLookup
//
// Defines a class for rasterizing primitives with a special alhpa texture clut.
//
//**************************************
{
public:
//*****************************************************************************************
//
static forceinline bool bUseAlphaClut
(
)
//
// Returns 'false.'
//
//**************************************
{
return false;
}
//*****************************************************************************************
//
static forceinline uint16* SetAlphaClutPointer
(
)
//
// Returns a pointer to the alpha clut.
//
//**************************************
{
// Return the assembled pointer.
return abAlphaTexture.u2ColorToAlpha;
}
};
#endif