float add;
float dist;
float addDeluxe = 0.0f, addDeluxeBounceScale = 0.25f;
- qboolean angledDeluxe = qfalse;
+ qboolean angledDeluxe = qtrue;
float colorBrightness;
+ qboolean doAddDeluxe = qtrue;
/* get light */
light = trace->light;
/* twosided lighting */
if( trace->twoSided )
- angle = fabs( angle );
+ {
+ angle = -angle;
+
+ /* no deluxemap contribution from "other side" light */
+ doAddDeluxe = qfalse;
+ }
/* attenuate */
angle *= -DotProduct( light->normal, trace->direction );
dist = SetupTrace( trace );
if( dist >= light->envelope )
return 0;
+
+ /* no deluxemap contribution from "other side" light */
+ doAddDeluxe = qfalse;
}
else
return 0;
float dot = DotProduct( trace->normal, trace->direction );
/* twosided lighting */
- if( trace->twoSided )
- dot = fabs( dot );
+ if( trace->twoSided && dot < 0 )
+ {
+ dot = -dot;
+
+ /* no deluxemap contribution from "other side" light */
+ doAddDeluxe = qfalse;
+ }
/* jal: optional half Lambert attenuation (http://developer.valvesoftware.com/wiki/Half_Lambert) */
if( lightAngleHL )
float dot = DotProduct( trace->normal, trace->direction );
/* twosided lighting */
- if( trace->twoSided )
- dot = fabs( dot );
+ if( trace->twoSided && dot < 0 )
+ {
+ dot = -dot;
+
+ /* no deluxemap contribution from "other side" light */
+ doAddDeluxe = qfalse;
+ }
/* jal: optional half Lambert attenuation (http://developer.valvesoftware.com/wiki/Half_Lambert) */
if( lightAngleHL )
if( bouncing )
{
addDeluxe *= addDeluxeBounceScale;
+ /* better NOT increase it beyond the original value
if( addDeluxe < 0.00390625f )
addDeluxe = 0.00390625f;
+ */
}
- VectorScale( trace->direction, addDeluxe, trace->directionContribution );
+ if(doAddDeluxe)
+ {
+ VectorScale( trace->direction, addDeluxe, trace->directionContribution );
+ }
/* setup trace */
trace->testAll = qfalse;