cvar_t r_lightningbeam_thickness = {CVAR_SAVE, "r_lightningbeam_thickness", "4"};
cvar_t r_lightningbeam_scroll = {CVAR_SAVE, "r_lightningbeam_scroll", "5"};
-cvar_t r_lightningbeam_repeatdistance = {CVAR_SAVE, "r_lightningbeam_repeatdistance", "1024"};
+cvar_t r_lightningbeam_repeatdistance = {CVAR_SAVE, "r_lightningbeam_repeatdistance", "128"};
cvar_t r_lightningbeam_color_red = {CVAR_SAVE, "r_lightningbeam_color_red", "1"};
cvar_t r_lightningbeam_color_green = {CVAR_SAVE, "r_lightningbeam_color_green", "1"};
cvar_t r_lightningbeam_color_blue = {CVAR_SAVE, "r_lightningbeam_color_blue", "1"};
float ifog;
for (i = 0;i < numverts;i++, v += 3, c += 4)
{
- VectorSubtract(v, r_origin, fogvec);
+ VectorSubtract(v, r_vieworigin, fogvec);
ifog = 1 - exp(fogdensity/DotProduct(fogvec,fogvec));
c[0] = r * ifog;
c[1] = g * ifog;
// calculate up vector such that it points toward viewer, and rotates around the beamdir
// get direction from start of beam to viewer
- VectorSubtract(r_origin, b->start, up);
+ VectorSubtract(r_vieworigin, b->start, up);
// remove the portion of the vector that moves along the beam
// (this leaves only a vector pointing directly away from the beam)
t1 = -DotProduct(up, beamdir);
else
m.tex[0] = R_GetTexture(r_lightningbeamtexture);
m.pointer_texcoord[0] = varray_texcoord2f[0];
- R_Mesh_State_Texture(&m);
+ m.pointer_vertex = varray_vertex3f;
GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
GL_DepthMask(false);
R_CalcLightningBeamPolygonTexCoord2f(varray_texcoord2f[0] + 0, t1, t2);
R_CalcLightningBeamPolygonTexCoord2f(varray_texcoord2f[0] + 8, t1 + 0.33, t2 + 0.33);
R_CalcLightningBeamPolygonTexCoord2f(varray_texcoord2f[0] + 16, t1 + 0.66, t2 + 0.66);
- GL_VertexPointer(varray_vertex3f);
if (fogenabled)
{
// per vertex colors if fog is used
- GL_ColorPointer(varray_color4f);
+ m.pointer_color = varray_color4f;
R_FogLightningBeam_Vertex3f_Color4f(varray_vertex3f, varray_color4f, 12, r_lightningbeam_color_red.value, r_lightningbeam_color_green.value, r_lightningbeam_color_blue.value, 1);
}
else
// solid color if fog is not used
GL_Color(r_lightningbeam_color_red.value, r_lightningbeam_color_green.value, r_lightningbeam_color_blue.value, 1);
}
+ R_Mesh_State(&m);
// draw the 3 polygons as one batch of 6 triangles using the 12 vertices
+ GL_LockArrays(0, 12);
R_Mesh_Draw(12, 6, r_lightningbeamelements);
+ GL_LockArrays(0, 0);
}
void R_DrawLightningBeams(void)