UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
r_grass.cpp File Reference

Pseudoinstanced grass generation and rendering. More...

#include "r_local.h"
#include "r_grass.h"

Go to the source code of this file.

Data Structures

struct  Clump
 

Macros

#define GRASS_MARK   -956 /* arbitrary number from top of my head -- Sandro */
 
#define TRIS_PER_CLUMP   10
 
#define MAX_CLUMPS   2046
 
#define MAX_CLUMP_TRIS   (TRIS_PER_CLUMP * MAX_CLUMPS)
 
#define xt   (rot[0])
 
#define yt   (rot[1])
 
#define zt   (rot[2])
 

Functions

void R_ClearGrass ()
 
static void R_PlantGrass (Clump &clump)
 
static void R_AddClump (const vec3_t pos, const vec3_t normal, int level)
 
static int ClumpOrder (const void *a, const void *b)
 
static void R_OrganizeClumps ()
 
void R_GenerateGrass ()
 
void R_DrawGrass ()
 

Variables

static int clumpCount = 0
 
static Clump clumps [MAX_CLUMPS]
 
static int clumpsForLevel [PATHFINDING_HEIGHT] = {0}
 
static int clumpTrianglesForLevel [PATHFINDING_HEIGHT] = {0}
 
static int clumpTriangleCount = 0
 
static vec3_t gfv_pos [MAX_CLUMP_TRIS *3]
 
static vec2_t gfv_texcoord [MAX_CLUMP_TRIS *3]
 

Detailed Description

Pseudoinstanced grass generation and rendering.

Definition in file r_grass.cpp.

Macro Definition Documentation

#define GRASS_MARK   -956 /* arbitrary number from top of my head -- Sandro */

Definition at line 29 of file r_grass.cpp.

Referenced by R_GenerateGrass().

#define MAX_CLUMP_TRIS   (TRIS_PER_CLUMP * MAX_CLUMPS)

Definition at line 34 of file r_grass.cpp.

Referenced by R_PlantGrass().

#define MAX_CLUMPS   2046

Definition at line 32 of file r_grass.cpp.

Referenced by R_AddClump(), and R_GenerateGrass().

#define TRIS_PER_CLUMP   10

Definition at line 31 of file r_grass.cpp.

Referenced by R_PlantGrass().

#define xt   (rot[0])

Referenced by R_PlantGrass().

#define yt   (rot[1])

Referenced by R_PlantGrass().

#define zt   (rot[2])

Referenced by R_PlantGrass().

Function Documentation

static int ClumpOrder ( const void a,
const void b 
)
static
Todo:
Morton order comparison to improve clusterization after sorting (beware the black magic)

Definition at line 199 of file r_grass.cpp.

References Clump::level.

Referenced by R_OrganizeClumps().

static void R_AddClump ( const vec3_t  pos,
const vec3_t  normal,
int  level 
)
static
void R_ClearGrass ( )

Definition at line 56 of file r_grass.cpp.

References clumpCount, clumpsForLevel, clumpTriangleCount, clumpTrianglesForLevel, and OBJZERO.

Referenced by R_ModBeginLoading().

static void R_OrganizeClumps ( )
static

Definition at line 211 of file r_grass.cpp.

References clumpCount, ClumpOrder(), clumpsForLevel, i, level, and PATHFINDING_HEIGHT.

Referenced by R_GenerateGrass().

Variable Documentation

int clumpCount = 0
static

Definition at line 44 of file r_grass.cpp.

Referenced by R_AddClump(), R_ClearGrass(), R_GenerateGrass(), and R_OrganizeClumps().

Clump clumps[MAX_CLUMPS]
static

Definition at line 45 of file r_grass.cpp.

int clumpsForLevel[PATHFINDING_HEIGHT] = {0}
static

Definition at line 47 of file r_grass.cpp.

Referenced by R_ClearGrass(), R_GenerateGrass(), and R_OrganizeClumps().

int clumpTriangleCount = 0
static

Definition at line 50 of file r_grass.cpp.

Referenced by R_ClearGrass(), R_DrawGrass(), R_GenerateGrass(), and R_PlantGrass().

int clumpTrianglesForLevel[PATHFINDING_HEIGHT] = {0}
static

Definition at line 48 of file r_grass.cpp.

Referenced by R_ClearGrass(), R_DrawGrass(), and R_GenerateGrass().

vec3_t gfv_pos[MAX_CLUMP_TRIS *3]
static

Definition at line 53 of file r_grass.cpp.

Referenced by R_DrawGrass(), and R_PlantGrass().

vec2_t gfv_texcoord[MAX_CLUMP_TRIS *3]
static

Definition at line 54 of file r_grass.cpp.

Referenced by R_DrawGrass(), and R_PlantGrass().