UFO: Alien Invasion
Loading...
Searching...
No Matches
r_grass.cpp File Reference

Pseudoinstanced grass generation and rendering. More...

#include "r_local.h"
#include "r_grass.h"
Include dependency graph for r_grass.cpp:

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

◆ GRASS_MARK

#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().

◆ MAX_CLUMP_TRIS

#define MAX_CLUMP_TRIS   (TRIS_PER_CLUMP * MAX_CLUMPS)

Definition at line 34 of file r_grass.cpp.

Referenced by R_PlantGrass().

◆ MAX_CLUMPS

#define MAX_CLUMPS   2046

Definition at line 32 of file r_grass.cpp.

Referenced by R_AddClump(), and R_GenerateGrass().

◆ TRIS_PER_CLUMP

#define TRIS_PER_CLUMP   10

Definition at line 31 of file r_grass.cpp.

Referenced by R_PlantGrass().

◆ xt

#define xt   (rot[0])

Referenced by R_PlantGrass().

◆ yt

#define yt   (rot[1])

Referenced by R_PlantGrass().

◆ zt

#define zt   (rot[2])

Referenced by R_PlantGrass().

Function Documentation

◆ ClumpOrder()

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().

◆ R_AddClump()

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

◆ R_ClearGrass()

void R_ClearGrass ( )

Definition at line 56 of file r_grass.cpp.

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

Referenced by R_ModBeginLoading().

◆ R_DrawGrass()

◆ R_GenerateGrass()

◆ R_OrganizeClumps()

void R_OrganizeClumps ( )
static

Definition at line 211 of file r_grass.cpp.

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

Referenced by R_GenerateGrass().

◆ R_PlantGrass()

Variable Documentation

◆ clumpCount

int clumpCount = 0
static

Definition at line 44 of file r_grass.cpp.

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

◆ clumps

Clump clumps[MAX_CLUMPS]
static

Definition at line 45 of file r_grass.cpp.

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

◆ clumpsForLevel

int clumpsForLevel[PATHFINDING_HEIGHT] = {0}
static

Definition at line 47 of file r_grass.cpp.

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

◆ clumpTriangleCount

int clumpTriangleCount = 0
static

Definition at line 50 of file r_grass.cpp.

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

◆ clumpTrianglesForLevel

int clumpTrianglesForLevel[PATHFINDING_HEIGHT] = {0}
static

Definition at line 48 of file r_grass.cpp.

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

◆ gfv_pos

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().

◆ gfv_texcoord

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().