示例#1
0
/*
=====================
RE_AddRefLightToScene
=====================
*/
void RE_AddRefLightToScene(const refLight_t *l)
{
    trRefLight_t *light;

    if (!tr.registered)
    {
        return;
    }

    if (r_numLights >= MAX_REF_LIGHTS)
    {
        Ren_Print("WARNING RE_AddRefLightToScene: Dropping light, reached MAX_REF_LIGHTS\n");
        return;
    }

    if (l->radius[0] <= 0 && !VectorLength(l->radius) && !VectorLength(l->projTarget))
    {
        return;
    }

    if ((unsigned)l->rlType >= RL_MAX_REF_LIGHT_TYPE)
    {
        Ren_Drop("RE_AddRefLightToScene: bad rlType %i", l->rlType);
    }

    light = &backEndData->lights[r_numLights++];
    Com_Memcpy(&light->l, l, sizeof(light->l));

    light->isStatic = qfalse;
    light->additive = qtrue;

    if (light->l.scale <= 0)
    {
        light->l.scale = r_lightScale->value;
    }

    if (!HDR_ENABLED())
    {
        if (light->l.scale >= r_lightScale->value)
        {
            light->l.scale = r_lightScale->value;
        }
    }

    if (!r_dynamicLightCastShadows->integer && !light->l.inverseShadows)
    {
        light->l.noShadows = qtrue;
    }
}
示例#2
0
/*
=====================
RE_AddRefLightToScene
=====================
*/
void RE_AddRefLightToScene(const refLight_t * l)
{
	trRefLight_t   *light;

	if(!tr.registered)
	{
		return;
	}

	if(r_numLights >= MAX_REF_LIGHTS)
	{
		return;
	}

	if(l->radius[0] <= 0 && !VectorLength(l->radius) && !VectorLength(l->projTarget))
	{
		return;
	}

	if(l->rlType < 0 || l->rlType >= RL_MAX_REF_LIGHT_TYPE)
	{
		ri.Error(ERR_DROP, "RE_AddRefLightToScene: bad rlType %i", l->rlType);
	}

	light = &backEndData[tr.smpFrame]->lights[r_numLights++];
	Com_Memcpy(&light->l, l, sizeof(light->l));

	light->isStatic = qfalse;
	light->additive = qtrue;

	if(light->l.scale <= 0)
	{
		light->l.scale = r_lightScale->value;
	}

	if(!HDR_ENABLED())
	{
		if(light->l.scale >= r_lightScale->value)
		{
			light->l.scale = r_lightScale->value;
		}
	}

	if(!r_dynamicLightShadows->integer && !light->l.inverseShadows)
	{
		light->l.noShadows = qtrue;
	}
}