You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.7 KiB
73 lines
1.7 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef DECAL_CLIP_H |
|
#define DECAL_CLIP_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "mathlib/vector.h" |
|
#include "mathlib/vector2d.h" |
|
#include "mathlib/compressed_vector.h" |
|
#include "materialsystem/imaterialsystem.h" |
|
#include "materialsystem/imaterial.h" |
|
#include "filesystem.h" |
|
#include "decal_private.h" |
|
#include "gl_model_private.h" |
|
|
|
|
|
#define MAX_DECALCLIPVERT 48 |
|
|
|
|
|
class CDecalVert |
|
{ |
|
public: |
|
Vector m_vPos; |
|
int m_decalIndex; // used by the cache code |
|
|
|
// These are the texcoords for the decal itself |
|
Vector2D m_ctCoords; |
|
// Lightmap texcoords for the decal. |
|
Vector2D m_cLMCoords; |
|
}; |
|
|
|
|
|
// Clip pOutVerts/nStartVerts into the decal's texture space. |
|
CDecalVert* R_DoDecalSHClip( |
|
CDecalVert *pInVerts, |
|
CDecalVert *pOutVerts, |
|
decal_t *pDecal, |
|
int nStartVerts, |
|
const Vector &vecNormal ); |
|
|
|
// Generate clipped vertex list for decal pdecal projected onto polygon psurf |
|
CDecalVert* R_DecalVertsClip( |
|
CDecalVert *pOutVerts, |
|
decal_t *pDecal, |
|
SurfaceHandle_t surfID, |
|
IMaterial *pMaterial ); |
|
|
|
// Compute the unscaled basis for the decal. |
|
void R_DecalComputeBasis( |
|
Vector const& surfaceNormal, |
|
Vector const* pSAxis, |
|
Vector* textureSpaceBasis ); |
|
|
|
// Compute the basis for the decal and scale the axes so the whole decal fits |
|
// into the (0,0) - (1,1) range. |
|
void R_SetupDecalTextureSpaceBasis( |
|
decal_t *pDecal, |
|
Vector &vSurfNormal, |
|
IMaterial *pMaterial, |
|
Vector textureSpaceBasis[3], |
|
float decalWorldScale[2] ); |
|
|
|
extern ALIGN16 CDecalVert g_DecalClipVerts[MAX_DECALCLIPVERT] ALIGN16_POST; |
|
|
|
#endif // DECAL_CLIP_H
|
|
|