doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RenderWorld.h
Go to the documentation of this file.
1 /*
2 ===========================================================================
3 
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
6 
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
8 
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
21 
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
23 
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
25 
26 ===========================================================================
27 */
28 
29 #ifndef __RENDERWORLD_H__
30 #define __RENDERWORLD_H__
31 
32 /*
33 ===============================================================================
34 
35  Render World
36 
37 ===============================================================================
38 */
39 
40 #define PROC_FILE_EXT "proc"
41 #define PROC_FILE_ID "mapProcFile003"
42 
43 // shader parms
44 const int MAX_GLOBAL_SHADER_PARMS = 12;
45 
46 const int SHADERPARM_RED = 0;
47 const int SHADERPARM_GREEN = 1;
48 const int SHADERPARM_BLUE = 2;
49 const int SHADERPARM_ALPHA = 3;
50 const int SHADERPARM_TIMESCALE = 3;
51 const int SHADERPARM_TIMEOFFSET = 4;
52 const int SHADERPARM_DIVERSITY = 5; // random between 0.0 and 1.0 for some effects (muzzle flashes, etc)
53 const int SHADERPARM_MODE = 7; // for selecting which shader passes to enable
54 const int SHADERPARM_TIME_OF_DEATH = 7; // for the monster skin-burn-away effect enable and time offset
55 
56 // model parms
57 const int SHADERPARM_MD5_SKINSCALE = 8; // for scaling vertex offsets on md5 models (jack skellington effect)
58 
59 const int SHADERPARM_MD3_FRAME = 8;
61 const int SHADERPARM_MD3_BACKLERP = 10;
62 
63 const int SHADERPARM_BEAM_END_X = 8; // for _beam models
64 const int SHADERPARM_BEAM_END_Y = 9;
65 const int SHADERPARM_BEAM_END_Z = 10;
66 const int SHADERPARM_BEAM_WIDTH = 11;
67 
70 
71 const int SHADERPARM_PARTICLE_STOPTIME = 8; // don't spawn any more particles after this time
72 
73 // guis
74 const int MAX_RENDERENTITY_GUI = 3;
75 
76 
78 
79 
80 typedef struct renderEntity_s {
81  idRenderModel * hModel; // this can only be null if callback is set
82 
83  int entityNum;
84  int bodyId;
85 
86  // Entities that are expensive to generate, like skeletal models, can be
87  // deferred until their bounds are found to be in view, in the frustum
88  // of a shadowing light that is in view, or contacted by a trace / overlay test.
89  // This is also used to do visual cueing on items in the view
90  // The renderView may be NULL if the callback is being issued for a non-view related
91  // source.
92  // The callback function should clear renderEntity->callback if it doesn't
93  // want to be called again next time the entity is referenced (ie, if the
94  // callback has now made the entity valid until the next updateEntity)
95  idBounds bounds; // only needs to be set for deferred models and md5s
97 
98  void * callbackData; // used for whatever the callback wants
99 
100  // player bodies and possibly player shadows should be suppressed in views from
101  // that player's eyes, but will show up in mirrors and other subviews
102  // security cameras could suppress their model in their subviews if we add a way
103  // of specifying a view number for a remoteRenderMap view
106 
107  // world models for the player and weapons will not cast shadows from view weapon
108  // muzzle flashes
110 
111  // if non-zero, the surface and shadow (if it casts one)
112  // will only show up in the specific view, ie: player weapons
114 
115  // positioning
116  // axis rotation vectors must be unit length for many
117  // R_LocalToGlobal functions to work, so don't scale models!
118  // axis vectors are [0] = forward, [1] = left, [2] = up
121 
122  // texturing
123  const idMaterial * customShader; // if non-0, all surfaces will use this
124  const idMaterial * referenceShader; // used so flares can reference the proper light shader
125  const idDeclSkin * customSkin; // 0 for no remappings
126  class idSoundEmitter * referenceSound; // for shader sound tables, allowing effects to vary with sounds
127  float shaderParms[ MAX_ENTITY_SHADER_PARMS ]; // can be used in any way by shader or model generation
128 
129  // networking: see WriteGUIToSnapshot / ReadGUIFromSnapshot
131 
132  struct renderView_s * remoteRenderView; // any remote camera surfaces will use this
133 
135  idJointMat * joints; // array of joints that will modify vertices.
136  // NULL if non-deformable model. NOT freed by renderer
137 
138  float modelDepthHack; // squash depth range so particle effects don't clip into walls
139 
140  // options to override surface shader flags (replace with material parameters?)
141  bool noSelfShadow; // cast shadows onto other objects,but not self
142  bool noShadow; // no shadow at all
143 
144  bool noDynamicInteractions; // don't create any light / shadow interactions after
145  // the level load is completed. This is a performance hack
146  // for the gigantic outdoor meshes in the monorail map, so
147  // all the lights in the moving monorail don't touch the meshes
148 
149  bool weaponDepthHack; // squash depth range so view weapons don't poke into walls
150  // this automatically implies noShadow
151  int forceUpdate; // force an update (NOTE: not a bool to keep this struct a multiple of 4 bytes)
155 
156 
157 typedef struct renderLight_s {
158  idMat3 axis; // rotation vectors, must be unit length
160 
161  // if non-zero, the light will not show up in the specific view,
162  // which may be used if we want to have slightly different muzzle
163  // flash lights for the player and other views
165 
166  // if non-zero, the light will only show up in the specific view
167  // which can allow player gun gui lights and such to not effect everyone
169 
170  // I am sticking the four bools together so there are no unused gaps in
171  // the padded structure, which could confuse the memcmp that checks for redundant
172  // updates
173  bool noShadows; // (should we replace this with material parameters on the shader?)
174  bool noSpecular; // (should we replace this with material parameters on the shader?)
175 
176  bool pointLight; // otherwise a projection light (should probably invert the sense of this, because points are way more common)
177  bool parallel; // lightCenter gives the direction to the light at infinity
178  idVec3 lightRadius; // xyz radius for point lights
179  idVec3 lightCenter; // offset the lighting direction for shading and
180  // shadows, relative to origin
181 
182  // frustum definition for projected lights, all reletive to origin
183  // FIXME: we should probably have real plane equations here, and offer
184  // a helper function for conversion from this format
190 
191  // Dmap will generate an optimized shadow volume named _prelight_<lightName>
192  // for the light against all the _area* models in the map. The renderer will
193  // ignore this value if the light has been moved after initial creation
195 
196  // muzzle flash lights will not cast shadows from player and weapon world models
197  int lightId;
198 
199 
200  const idMaterial * shader; // NULL = either lights/defaultPointLight or lights/defaultProjectedLight
201  float shaderParms[MAX_ENTITY_SHADER_PARMS]; // can be used in any way by shader
202  idSoundEmitter * referenceSound; // for shader sound tables, allowing effects to vary with sounds
203 } renderLight_t;
204 
205 
206 typedef struct renderView_s {
207  // player views will set this to a non-zero integer for model suppress / allow
208  // subviews (mirrors, cameras, etc) will always clear it to zero
209  int viewID;
210 
211  // sized from 0 to SCREEN_WIDTH / SCREEN_HEIGHT (640/480), not actual resolution
212  int x, y, width, height;
213 
214  float fov_x, fov_y;
216  idMat3 viewaxis; // transformation matrix, view looks down the positive X axis
217 
218  bool cramZNear; // for cinematics, we want to set ZNear much lower
219  bool forceUpdate; // for an update
220 
221  // time in milliseconds for shader effects and other time dependent rendering issues
222  int time;
223  float shaderParms[MAX_GLOBAL_SHADER_PARMS]; // can be used in any way by shader
224  const idMaterial *globalMaterial; // used to override everything draw
225 } renderView_t;
226 
227 
228 // exitPortal_t is returned by idRenderWorld::GetPortal()
229 typedef struct {
230  int areas[2]; // areas connected by this portal
231  const idWinding * w; // winding points have counter clockwise ordering seen from areas[0]
232  int blockingBits; // PS_BLOCK_VIEW, PS_BLOCK_AIR, etc
234 } exitPortal_t;
235 
236 
237 // guiPoint_t is returned by idRenderWorld::GuiTrace()
238 typedef struct {
239  float x, y; // 0.0 to 1.0 range if trace hit a gui, otherwise -1
240  int guiId; // id of gui ( 0, 1, or 2 ) that the trace happened against
241 } guiPoint_t;
242 
243 
244 // modelTrace_t is for tracing vs. visual geometry
245 typedef struct modelTrace_s {
246  float fraction; // fraction of trace completed
247  idVec3 point; // end point of trace in global space
248  idVec3 normal; // hit triangle normal vector in global space
249  const idMaterial * material; // material of hit surface
250  const renderEntity_t * entity; // render entity that was hit
251  int jointNumber; // md5 joint nearest to the hit triangle
252 } modelTrace_t;
253 
254 
255 static const int NUM_PORTAL_ATTRIBUTES = 3;
256 
257 typedef enum {
259 
261  PS_BLOCK_LOCATION = 2, // game map location strings often stop in hallways
262  PS_BLOCK_AIR = 4, // windows between pressurized and unpresurized areas
263 
264  PS_BLOCK_ALL = (1<<NUM_PORTAL_ATTRIBUTES)-1
266 
267 
269 public:
270  virtual ~idRenderWorld() {};
271 
272  // The same render world can be reinitialized as often as desired
273  // a NULL or empty mapName will create an empty, single area world
274  virtual bool InitFromMap( const char *mapName ) = 0;
275 
276  //-------------- Entity and Light Defs -----------------
277 
278  // entityDefs and lightDefs are added to a given world to determine
279  // what will be drawn for a rendered scene. Most update work is defered
280  // until it is determined that it is actually needed for a given view.
281  virtual qhandle_t AddEntityDef( const renderEntity_t *re ) = 0;
282  virtual void UpdateEntityDef( qhandle_t entityHandle, const renderEntity_t *re ) = 0;
283  virtual void FreeEntityDef( qhandle_t entityHandle ) = 0;
284  virtual const renderEntity_t *GetRenderEntity( qhandle_t entityHandle ) const = 0;
285 
286  virtual qhandle_t AddLightDef( const renderLight_t *rlight ) = 0;
287  virtual void UpdateLightDef( qhandle_t lightHandle, const renderLight_t *rlight ) = 0;
288  virtual void FreeLightDef( qhandle_t lightHandle ) = 0;
289  virtual const renderLight_t *GetRenderLight( qhandle_t lightHandle ) const = 0;
290 
291  // Force the generation of all light / surface interactions at the start of a level
292  // If this isn't called, they will all be dynamically generated
293  virtual void GenerateAllInteractions() = 0;
294 
295  // returns true if this area model needs portal sky to draw
296  virtual bool CheckAreaForPortalSky( int areaNum ) = 0;
297 
298  //-------------- Decals and Overlays -----------------
299 
300  // Creates decals on all world surfaces that the winding projects onto.
301  // The projection origin should be infront of the winding plane.
302  // The decals are projected onto world geometry between the winding plane and the projection origin.
303  // The decals are depth faded from the winding plane to a certain distance infront of the
304  // winding plane and the same distance from the projection origin towards the winding.
305  virtual void ProjectDecalOntoWorld( const idFixedWinding &winding, const idVec3 &projectionOrigin, const bool parallel, const float fadeDepth, const idMaterial *material, const int startTime ) = 0;
306 
307  // Creates decals on static models.
308  virtual void ProjectDecal( qhandle_t entityHandle, const idFixedWinding &winding, const idVec3 &projectionOrigin, const bool parallel, const float fadeDepth, const idMaterial *material, const int startTime ) = 0;
309 
310  // Creates overlays on dynamic models.
311  virtual void ProjectOverlay( qhandle_t entityHandle, const idPlane localTextureAxis[2], const idMaterial *material ) = 0;
312 
313  // Removes all decals and overlays from the given entity def.
314  virtual void RemoveDecals( qhandle_t entityHandle ) = 0;
315 
316  //-------------- Scene Rendering -----------------
317 
318  // some calls to material functions use the current renderview time when servicing cinematics. this function
319  // ensures that any parms accessed (such as time) are properly set.
320  virtual void SetRenderView( const renderView_t *renderView ) = 0;
321 
322  // rendering a scene may actually render multiple subviews for mirrors and portals, and
323  // may render composite textures for gui console screens and light projections
324  // It would also be acceptable to render a scene multiple times, for "rear view mirrors", etc
325  virtual void RenderScene( const renderView_t *renderView ) = 0;
326 
327  //-------------- Portal Area Information -----------------
328 
329  // returns the number of portals
330  virtual int NumPortals( void ) const = 0;
331 
332  // returns 0 if no portal contacts the bounds
333  // This is used by the game to identify portals that are contained
334  // inside doors, so the connection between areas can be topologically
335  // terminated when the door shuts.
336  virtual qhandle_t FindPortal( const idBounds &b ) const = 0;
337 
338  // doors explicitly close off portals when shut
339  // multiple bits can be set to block multiple things, ie: ( PS_VIEW | PS_LOCATION | PS_AIR )
340  virtual void SetPortalState( qhandle_t portal, int blockingBits ) = 0;
341  virtual int GetPortalState( qhandle_t portal ) = 0;
342 
343  // returns true only if a chain of portals without the given connection bits set
344  // exists between the two areas (a door doesn't separate them, etc)
345  virtual bool AreasAreConnected( int areaNum1, int areaNum2, portalConnection_t connection ) = 0;
346 
347  // returns the number of portal areas in a map, so game code can build information
348  // tables for the different areas
349  virtual int NumAreas( void ) const = 0;
350 
351  // Will return -1 if the point is not in an area, otherwise
352  // it will return 0 <= value < NumAreas()
353  virtual int PointInArea( const idVec3 &point ) const = 0;
354 
355  // fills the *areas array with the numbers of the areas the bounds cover
356  // returns the total number of areas the bounds cover
357  virtual int BoundsInAreas( const idBounds &bounds, int *areas, int maxAreas ) const = 0;
358 
359  // Used by the sound system to do area flowing
360  virtual int NumPortalsInArea( int areaNum ) = 0;
361 
362  // returns one portal from an area
363  virtual exitPortal_t GetPortal( int areaNum, int portalNum ) = 0;
364 
365  //-------------- Tracing -----------------
366 
367  // Checks a ray trace against any gui surfaces in an entity, returning the
368  // fraction location of the trace on the gui surface, or -1,-1 if no hit.
369  // This doesn't do any occlusion testing, simply ignoring non-gui surfaces.
370  // start / end are in global world coordinates.
371  virtual guiPoint_t GuiTrace( qhandle_t entityHandle, const idVec3 start, const idVec3 end ) const = 0;
372 
373  // Traces vs the render model, possibly instantiating a dynamic version, and returns true if something was hit
374  virtual bool ModelTrace( modelTrace_t &trace, qhandle_t entityHandle, const idVec3 &start, const idVec3 &end, const float radius ) const = 0;
375 
376  // Traces vs the whole rendered world. FIXME: we need some kind of material flags.
377  virtual bool Trace( modelTrace_t &trace, const idVec3 &start, const idVec3 &end, const float radius, bool skipDynamic = true, bool skipPlayer = false ) const = 0;
378 
379  // Traces vs the world model bsp tree.
380  virtual bool FastWorldTrace( modelTrace_t &trace, const idVec3 &start, const idVec3 &end ) const = 0;
381 
382  //-------------- Demo Control -----------------
383 
384  // Writes a loadmap command to the demo, and clears archive counters.
385  virtual void StartWritingDemo( idDemoFile *demo ) = 0;
386  virtual void StopWritingDemo() = 0;
387 
388  // Returns true when demoRenderView has been filled in.
389  // adds/updates/frees entityDefs and lightDefs based on the current demo file
390  // and returns the renderView to be used to render this frame.
391  // a demo file may need to be advanced multiple times if the framerate
392  // is less than 30hz
393  // demoTimeOffset will be set if a new map load command was processed before
394  // the next renderScene
395  virtual bool ProcessDemoCommand( idDemoFile *readDemo, renderView_t *demoRenderView, int *demoTimeOffset ) = 0;
396 
397  // this is used to regenerate all interactions ( which is currently only done during influences ), there may be a less
398  // expensive way to do it
399  virtual void RegenerateWorld() = 0;
400 
401  //-------------- Debug Visualization -----------------
402 
403  // Line drawing for debug visualization
404  virtual void DebugClearLines( int time ) = 0; // a time of 0 will clear all lines and text
405  virtual void DebugLine( const idVec4 &color, const idVec3 &start, const idVec3 &end, const int lifetime = 0, const bool depthTest = false ) = 0;
406  virtual void DebugArrow( const idVec4 &color, const idVec3 &start, const idVec3 &end, int size, const int lifetime = 0 ) = 0;
407  virtual void DebugWinding( const idVec4 &color, const idWinding &w, const idVec3 &origin, const idMat3 &axis, const int lifetime = 0, const bool depthTest = false ) = 0;
408  virtual void DebugCircle( const idVec4 &color, const idVec3 &origin, const idVec3 &dir, const float radius, const int numSteps, const int lifetime = 0, const bool depthTest = false ) = 0;
409  virtual void DebugSphere( const idVec4 &color, const idSphere &sphere, const int lifetime = 0, bool depthTest = false ) = 0;
410  virtual void DebugBounds( const idVec4 &color, const idBounds &bounds, const idVec3 &org = vec3_origin, const int lifetime = 0 ) = 0;
411  virtual void DebugBox( const idVec4 &color, const idBox &box, const int lifetime = 0 ) = 0;
412  virtual void DebugFrustum( const idVec4 &color, const idFrustum &frustum, const bool showFromOrigin = false, const int lifetime = 0 ) = 0;
413  virtual void DebugCone( const idVec4 &color, const idVec3 &apex, const idVec3 &dir, float radius1, float radius2, const int lifetime = 0 ) = 0;
414  virtual void DebugAxis( const idVec3 &origin, const idMat3 &axis ) = 0;
415 
416  // Polygon drawing for debug visualization.
417  virtual void DebugClearPolygons( int time ) = 0; // a time of 0 will clear all polygons
418  virtual void DebugPolygon( const idVec4 &color, const idWinding &winding, const int lifeTime = 0, const bool depthTest = false ) = 0;
419 
420  // Text drawing for debug visualization.
421  virtual void DrawText( const char *text, const idVec3 &origin, float scale, const idVec4 &color, const idMat3 &viewAxis, const int align = 1, const int lifetime = 0, bool depthTest = false ) = 0;
422 };
423 
424 #endif /* !__RENDERWORLD_H__ */
byte color[4]
Definition: MegaTexture.cpp:54
virtual bool Trace(modelTrace_t &trace, const idVec3 &start, const idVec3 &end, const float radius, bool skipDynamic=true, bool skipPlayer=false) const =0
int qhandle_t
Definition: Lib.h:81
idVec3 lightCenter
Definition: RenderWorld.h:179
int allowSurfaceInViewID
Definition: RenderWorld.h:113
virtual guiPoint_t GuiTrace(qhandle_t entityHandle, const idVec3 start, const idVec3 end) const =0
const int SHADERPARM_MD3_BACKLERP
Definition: RenderWorld.h:61
const int SHADERPARM_DIVERSITY
Definition: RenderWorld.h:52
virtual void FreeLightDef(qhandle_t lightHandle)=0
const int MAX_GLOBAL_SHADER_PARMS
Definition: RenderWorld.h:44
virtual void DebugArrow(const idVec4 &color, const idVec3 &start, const idVec3 &end, int size, const int lifetime=0)=0
virtual void DebugAxis(const idVec3 &origin, const idMat3 &axis)=0
const int SHADERPARM_BEAM_END_Z
Definition: RenderWorld.h:65
portalConnection_t
Definition: RenderWorld.h:257
bool(* deferredEntityCallback_t)(renderEntity_s *, const renderView_s *)
Definition: RenderWorld.h:77
const idWinding * w
Definition: RenderWorld.h:231
virtual qhandle_t AddEntityDef(const renderEntity_t *re)=0
struct renderView_s renderView_t
virtual bool ProcessDemoCommand(idDemoFile *readDemo, renderView_t *demoRenderView, int *demoTimeOffset)=0
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:4804
virtual void SetRenderView(const renderView_t *renderView)=0
struct renderEntity_s renderEntity_t
const idMaterial * referenceShader
Definition: RenderWorld.h:124
const idMaterial * material
Definition: RenderWorld.h:249
qhandle_t portalHandle
Definition: RenderWorld.h:233
virtual void DebugBox(const idVec4 &color, const idBox &box, const int lifetime=0)=0
const int SHADERPARM_SPRITE_WIDTH
Definition: RenderWorld.h:68
int suppressShadowInViewID
Definition: RenderWorld.h:105
Definition: Vector.h:316
const int SHADERPARM_BEAM_END_Y
Definition: RenderWorld.h:64
virtual int NumPortalsInArea(int areaNum)=0
struct modelTrace_s modelTrace_t
bool forceUpdate
Definition: RenderWorld.h:219
const int SHADERPARM_GREEN
Definition: RenderWorld.h:47
virtual void ProjectDecal(qhandle_t entityHandle, const idFixedWinding &winding, const idVec3 &projectionOrigin, const bool parallel, const float fadeDepth, const idMaterial *material, const int startTime)=0
virtual qhandle_t AddLightDef(const renderLight_t *rlight)=0
const int SHADERPARM_BEAM_END_X
Definition: RenderWorld.h:63
const int SHADERPARM_BEAM_WIDTH
Definition: RenderWorld.h:66
GLenum GLint x
Definition: glext.h:2849
deferredEntityCallback_t callback
Definition: RenderWorld.h:96
virtual bool CheckAreaForPortalSky(int areaNum)=0
const int SHADERPARM_MD5_SKINSCALE
Definition: RenderWorld.h:57
virtual void StartWritingDemo(idDemoFile *demo)=0
const idMaterial * customShader
Definition: RenderWorld.h:123
virtual int NumPortals(void) const =0
const int SHADERPARM_ALPHA
Definition: RenderWorld.h:49
const int MAX_ENTITY_SHADER_PARMS
Definition: Material.h:258
int suppressLightInViewID
Definition: RenderWorld.h:164
float shaderParms[MAX_ENTITY_SHADER_PARMS]
Definition: RenderWorld.h:201
virtual bool FastWorldTrace(modelTrace_t &trace, const idVec3 &start, const idVec3 &end) const =0
const int SHADERPARM_TIMESCALE
Definition: RenderWorld.h:50
virtual void ProjectDecalOntoWorld(const idFixedWinding &winding, const idVec3 &projectionOrigin, const bool parallel, const float fadeDepth, const idMaterial *material, const int startTime)=0
int suppressShadowInLightID
Definition: RenderWorld.h:109
const int SHADERPARM_BLUE
Definition: RenderWorld.h:48
virtual void DebugWinding(const idVec4 &color, const idWinding &w, const idVec3 &origin, const idMat3 &axis, const int lifetime=0, const bool depthTest=false)=0
virtual void SetPortalState(qhandle_t portal, int blockingBits)=0
bool noDynamicInteractions
Definition: RenderWorld.h:144
virtual void FreeEntityDef(qhandle_t entityHandle)=0
virtual void DebugCone(const idVec4 &color, const idVec3 &apex, const idVec3 &dir, float radius1, float radius2, const int lifetime=0)=0
virtual void DebugLine(const idVec4 &color, const idVec3 &start, const idVec3 &end, const int lifetime=0, const bool depthTest=false)=0
const int SHADERPARM_MODE
Definition: RenderWorld.h:53
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:3454
Definition: Vector.h:808
idVec3 lightRadius
Definition: RenderWorld.h:178
idVec3 vec3_origin(0.0f, 0.0f, 0.0f)
GLuint GLuint end
Definition: glext.h:2845
virtual exitPortal_t GetPortal(int areaNum, int portalNum)=0
idJointMat * joints
Definition: RenderWorld.h:135
bool weaponDepthHack
Definition: RenderWorld.h:149
const idDeclSkin * customSkin
Definition: RenderWorld.h:125
const idMaterial * globalMaterial
Definition: RenderWorld.h:224
const int SHADERPARM_TIME_OF_DEATH
Definition: RenderWorld.h:54
const int MAX_RENDERENTITY_GUI
Definition: RenderWorld.h:74
void * callbackData
Definition: RenderWorld.h:98
float modelDepthHack
Definition: RenderWorld.h:138
virtual void DebugFrustum(const idVec4 &color, const idFrustum &frustum, const bool showFromOrigin=false, const int lifetime=0)=0
Definition: Plane.h:71
virtual void DebugClearLines(int time)=0
int allowLightInViewID
Definition: RenderWorld.h:168
float shaderParms[MAX_GLOBAL_SHADER_PARMS]
Definition: RenderWorld.h:223
virtual bool InitFromMap(const char *mapName)=0
virtual void UpdateEntityDef(qhandle_t entityHandle, const renderEntity_t *re)=0
virtual void DrawText(const char *text, const idVec3 &origin, float scale, const idVec4 &color, const idMat3 &viewAxis, const int align=1, const int lifetime=0, bool depthTest=false)=0
virtual void DebugSphere(const idVec4 &color, const idSphere &sphere, const int lifetime=0, bool depthTest=false)=0
const int SHADERPARM_TIMEOFFSET
Definition: RenderWorld.h:51
idRenderModel * hModel
Definition: RenderWorld.h:81
virtual void UpdateLightDef(qhandle_t lightHandle, const renderLight_t *rlight)=0
virtual const renderLight_t * GetRenderLight(qhandle_t lightHandle) const =0
const int SHADERPARM_MD3_FRAME
Definition: RenderWorld.h:59
struct renderLight_s renderLight_t
GLubyte GLubyte b
Definition: glext.h:4662
const int SHADERPARM_MD3_LASTFRAME
Definition: RenderWorld.h:60
virtual void GenerateAllInteractions()=0
virtual qhandle_t FindPortal(const idBounds &b) const =0
idVec3 vieworg
Definition: RenderWorld.h:215
idVec3 normal
Definition: RenderWorld.h:248
idRenderModel * prelightModel
Definition: RenderWorld.h:194
Definition: Matrix.h:333
const int SHADERPARM_RED
Definition: RenderWorld.h:46
idVec3 point
Definition: RenderWorld.h:247
virtual void RemoveDecals(qhandle_t entityHandle)=0
const int SHADERPARM_SPRITE_HEIGHT
Definition: RenderWorld.h:69
virtual ~idRenderWorld()
Definition: RenderWorld.h:270
virtual int NumAreas(void) const =0
GLsizeiptr size
Definition: glext.h:3112
idBounds bounds
Definition: RenderWorld.h:95
virtual void StopWritingDemo()=0
virtual bool AreasAreConnected(int areaNum1, int areaNum2, portalConnection_t connection)=0
class idSoundEmitter * referenceSound
Definition: RenderWorld.h:126
virtual void DebugCircle(const idVec4 &color, const idVec3 &origin, const idVec3 &dir, const float radius, const int numSteps, const int lifetime=0, const bool depthTest=false)=0
int suppressSurfaceInViewID
Definition: RenderWorld.h:104
class idUserInterface * gui[MAX_RENDERENTITY_GUI]
Definition: RenderWorld.h:130
virtual void RenderScene(const renderView_t *renderView)=0
virtual void DebugPolygon(const idVec4 &color, const idWinding &winding, const int lifeTime=0, const bool depthTest=false)=0
virtual void DebugClearPolygons(int time)=0
virtual int GetPortalState(qhandle_t portal)=0
const renderEntity_t * entity
Definition: RenderWorld.h:250
unsigned char bool
Definition: setup.h:74
virtual void ProjectOverlay(qhandle_t entityHandle, const idPlane localTextureAxis[2], const idMaterial *material)=0
float fraction
Definition: RenderWorld.h:246
virtual void RegenerateWorld()=0
virtual void DebugBounds(const idVec4 &color, const idBounds &bounds, const idVec3 &org=vec3_origin, const int lifetime=0)=0
virtual bool ModelTrace(modelTrace_t &trace, qhandle_t entityHandle, const idVec3 &start, const idVec3 &end, const float radius) const =0
virtual int PointInArea(const idVec3 &point) const =0
idSoundEmitter * referenceSound
Definition: RenderWorld.h:202
const idMaterial * shader
Definition: RenderWorld.h:200
idMat3 viewaxis
Definition: RenderWorld.h:216
float shaderParms[MAX_ENTITY_SHADER_PARMS]
Definition: RenderWorld.h:127
virtual int BoundsInAreas(const idBounds &bounds, int *areas, int maxAreas) const =0
Definition: Box.h:40
struct renderView_s * remoteRenderView
Definition: RenderWorld.h:132
virtual const renderEntity_t * GetRenderEntity(qhandle_t entityHandle) const =0
GLuint start
Definition: glext.h:2845
const int SHADERPARM_PARTICLE_STOPTIME
Definition: RenderWorld.h:71