Paranoia2/cl_dll/render/gl_studiodecal.h

60 lines
1.5 KiB
C

/*
gl_studiodecal.h - studio decal rendering
Copyright (C) 2018 Uncle Mike
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#ifndef GL_STUDIODECAL_H
#define GL_STUDIODECAL_H
enum
{
DECAL_CLIP_MINUSU = 0x1,
DECAL_CLIP_MINUSV = 0x2,
DECAL_CLIP_PLUSU = 0x4,
DECAL_CLIP_PLUSV = 0x8,
};
typedef struct
{
Vector2D m_UV;
word m_VertexIndex; // index into the DecalVertex_t list
bool m_FrontFacing;
bool m_InValidArea;
} DecalVertexInfo_t;
// decal entry
typedef struct studiodecal_s
{
// this part is goes to savelist
byte flags;
Vector normal;
Vector position;
word modelpose; // m_pModelInstance->pose_stamps[modelpose]
const DecalGroupEntry *texinfo; // pointer to decal material
// history
int depth; // equal for all the decal fragments (used to remove all frgaments)
// VBO cache
vbomesh_t mesh; // decal private mesh
// shader cache
vbomesh_t* modelmesh; // pointer to studio mesh who owned decal
shader_t forwardScene;
shader_t forwardLightSpot;
shader_t forwardLightOmni;
shader_t forwardLightProj;
} studiodecal_t;
#endif//GL_STUDIODECAL_H