UFO: Alien Invasion
Loading...
Searching...
No Matches
r_sphere.h File Reference

Functions to generate and render spheres. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  sphere_t

Functions

void R_SphereGenerate (sphere_t *sphere, const int tris, const float radius)
 Initialize the globe chain arrays.
void R_SphereRender (const sphere_t *sphere, const vec3_t pos, const vec3_t rotate, const float scale, const vec4_t lightPos)
 Draw the sphere.
void R_SphereInit (void)
 Creates the spheres we need for rendering the 3d globe.

Variables

sphere_t r_globeEarth
sphere_t r_globeMoon
sphere_t r_globeEarthAtmosphere

Detailed Description

Functions to generate and render spheres.

Definition in file r_sphere.h.

Function Documentation

◆ R_SphereGenerate()

void R_SphereGenerate ( sphere_t * sphere,
const int tris,
const float radius )

Initialize the globe chain arrays.

Parameters
[out]sphereThe sphere you want to create
[in]trisThe amount of tris the globe should have - the higher the number the higher the details. tris*tris triangles are obtained.
[in]radiusThe radius of the sphere
See also
R_Draw3DGlobe

< angle from the pole (z-axis)

< angle around the equator, from y-axis

Definition at line 51 of file r_sphere.cpp.

References sphere_t::glslProgram, i, M_PI, Mem_PoolAllocTypeN, sphere_t::normals, sphere_t::num_tris, rhoSpiral(), sphere_t::texes, Vector2Set, VectorNormalize2(), VectorSet, sphere_t::verts, and vid_genericPool.

Referenced by R_SphereInit().

◆ R_SphereInit()

void R_SphereInit ( void )

Creates the spheres we need for rendering the 3d globe.

Note
The moon sphere has less detail because it's smaller in the scene
The sizes are arbitrary, becasue we use orthographic projection. The real sizes are: lunarRadius = 0.273 * earthRadius, solarRadius = 110.0 * earthRadius
See also
R_Init

Definition at line 119 of file r_sphere.cpp.

References CVAR_ARCHIVE, Cvar_Get(), Cvar_SetValue(), EARTH_RADIUS, MOON_RADIUS, r_globeEarth, r_globeEarthAtmosphere, r_globeMoon, r_sphereDetails, and R_SphereGenerate().

Referenced by R_Init().

◆ R_SphereRender()

void R_SphereRender ( const sphere_t * sphere,
const vec3_t pos,
const vec3_t rotate,
const float scale,
const vec4_t lightPos )

Draw the sphere.

Parameters
[in]sphereThe sphere that should be rendered
[in]posThe position (translation) of the matrix
[in]rotateThe rotation of the matrix
[in]scaleThe scale of the matrix
[in]lightPosSet this to nullptr if you don't want to change the light position

Definition at line 247 of file r_sphere.cpp.

References sphere_t::num_tris, sphere_t::overlay, PITCH, R_BindDefaultArray(), R_CheckError, R_SphereCheckGLSL(), R_SphereShade(), R_SphereShadeGLSL(), refdef, ROLL, scale, VectorNotEmpty, viddef, and YAW.

Referenced by R_Draw3DGlobe().

Variable Documentation

◆ r_globeEarth

sphere_t r_globeEarth
extern

Definition at line 33 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe(), and R_SphereInit().

◆ r_globeEarthAtmosphere

sphere_t r_globeEarthAtmosphere
extern

Definition at line 35 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe(), and R_SphereInit().

◆ r_globeMoon

sphere_t r_globeMoon
extern

Definition at line 34 of file r_sphere.cpp.

Referenced by R_Draw3DGlobe(), and R_SphereInit().