コード例 #1
0
ファイル: lightning.cpp プロジェクト: Feoggou/DpOmnicide
void R_DrawLightningBeams(void)
{
	int i;
	beam_t *b;

	if (!cl_beams_polygons.integer)
		return;

	beamrepeatscale = 1.0f / r_lightningbeam_repeatdistance.value;
	for (i = 0, b = cl.beams;i < cl.num_beams;i++, b++)
	{
		if (b->model && b->lightning)
		{
			vec3_t org, start, end, dir;
			vec_t dist;
			CL_Beam_CalculatePositions(b, start, end);
			// calculate the nearest point on the line (beam) for depth sorting
			VectorSubtract(end, start, dir);
			dist = (DotProduct(r_refdef.view.origin, dir) - DotProduct(start, dir)) / (DotProduct(end, dir) - DotProduct(start, dir));
			dist = bound(0, dist, 1);
			VectorLerp(start, dist, end, org);
			// now we have the nearest point on the line, so sort with it
			R_MeshQueue_AddTransparent(TRANSPARENTSORT_DISTANCE, org, R_DrawLightningBeam_TransparentCallback, NULL, i, NULL);
		}
	}
}
コード例 #2
0
ファイル: r_sprites.c プロジェクト: CyberSys/darkplaces
void R_Model_Sprite_Draw(entity_render_t *ent)
{
	vec3_t org;
	if (ent->frameblend[0].subframe < 0)
		return;

	Matrix4x4_OriginFromMatrix(&ent->matrix, org);
	R_MeshQueue_AddTransparent((ent->flags & RENDER_WORLDOBJECT) ? TRANSPARENTSORT_SKY : (ent->flags & RENDER_NODEPTHTEST) ? TRANSPARENTSORT_HUD : TRANSPARENTSORT_DISTANCE, org, R_Model_Sprite_Draw_TransparentCallback, ent, 0, rsurface.rtlight);
}
コード例 #3
0
ファイル: r_explosion.c プロジェクト: Hanzo-nex/DarkPlacesRM
void R_DrawExplosions(void)
{
#ifdef MAX_EXPLOSIONS
	int i;

	if (!r_drawexplosions.integer)
		return;

	for (i = 0;i < numexplosions;i++)
	{
		if (explosion[i].alpha)
		{
			R_MoveExplosion(&explosion[i]);
			if (explosion[i].alpha)
				R_MeshQueue_AddTransparent(TRANSPARENTSORT_DISTANCE, explosion[i].origin, R_DrawExplosion_TransparentCallback, NULL, i, NULL);
		}
	}
	while (numexplosions > 0 && explosion[i-1].alpha <= 0)
		numexplosions--;
#endif
}