doubled brightness of most dlights, and halved brightness of lightmap dlight renderin...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 16 Mar 2004 00:30:49 +0000 (00:30 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 16 Mar 2004 00:30:49 +0000 (00:30 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4028 d7cf8633-e32d-0410-b094-e92efae38249

cl_main.c
cl_parse.c
r_shadow.c
todo

index e98a932..d7d62bc 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -659,44 +659,44 @@ void CL_LinkNetworkEntity(entity_t *e)
                                if (gamemode == GAME_NEXUIZ)
                                {
                                        dlightradius = max(dlightradius, 200);
-                                       dlightcolor[0] += 0.390625f;
-                                       dlightcolor[1] += 0.781250f;
-                                       dlightcolor[2] += 1.562500f;
+                                       dlightcolor[0] += 0.75f;
+                                       dlightcolor[1] += 1.50f;
+                                       dlightcolor[2] += 3.00f;
                                        trailtype = 8;
                                }
                                else
                                        CL_EntityParticles(e);
                        }
                        if (e->render.effects & EF_MUZZLEFLASH)
-                               e->persistent.muzzleflash = 100.0f;
+                               e->persistent.muzzleflash = 1.0f;
                        if (e->render.effects & EF_DIMLIGHT)
                        {
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += 0.781250f;
-                               dlightcolor[1] += 0.781250f;
-                               dlightcolor[2] += 0.781250f;
+                               dlightcolor[0] += 1.50f;
+                               dlightcolor[1] += 1.50f;
+                               dlightcolor[2] += 1.50f;
                        }
                        if (e->render.effects & EF_BRIGHTLIGHT)
                        {
                                dlightradius = max(dlightradius, 400);
-                               dlightcolor[0] += 1.562500f;
-                               dlightcolor[1] += 1.562500f;
-                               dlightcolor[2] += 1.562500f;
+                               dlightcolor[0] += 3.00f;
+                               dlightcolor[1] += 3.00f;
+                               dlightcolor[2] += 3.00f;
                        }
                        // LordHavoc: more effects
                        if (e->render.effects & EF_RED) // red
                        {
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += 0.781250f;
-                               dlightcolor[1] += 0.078125f;
-                               dlightcolor[2] += 0.078125f;
+                               dlightcolor[0] += 1.50f;
+                               dlightcolor[1] += 0.15f;
+                               dlightcolor[2] += 0.15f;
                        }
                        if (e->render.effects & EF_BLUE) // blue
                        {
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += 0.078125f;
-                               dlightcolor[1] += 0.078125f;
-                               dlightcolor[2] += 0.781250f;
+                               dlightcolor[0] += 0.15f;
+                               dlightcolor[1] += 0.15f;
+                               dlightcolor[2] += 1.50f;
                        }
                        if (e->render.effects & EF_FLAME)
                        {
@@ -711,9 +711,9 @@ void CL_LinkNetworkEntity(entity_t *e)
                                CL_FlameCube(mins, maxs, temp);
                                d = lhrandom(0.75f, 1);
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += d * 1.0f;
-                               dlightcolor[1] += d * 0.7f;
-                               dlightcolor[2] += d * 0.3f;
+                               dlightcolor[0] += d * 2.0f;
+                               dlightcolor[1] += d * 1.5f;
+                               dlightcolor[2] += d * 0.5f;
                        }
                        if (e->render.effects & EF_STARDUST)
                        {
@@ -726,11 +726,10 @@ void CL_LinkNetworkEntity(entity_t *e)
                                // how many particles to make
                                temp = (int) (cl.time * 200) - (int) (cl.oldtime * 200);
                                CL_Stardust(mins, maxs, temp);
-                               d = 0.390625f;
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += d * 1.0f;
-                               dlightcolor[1] += d * 0.7f;
-                               dlightcolor[2] += d * 0.3f;
+                               dlightcolor[0] += 1.0f;
+                               dlightcolor[1] += 0.7f;
+                               dlightcolor[2] += 0.3f;
                        }
                }
                // muzzleflash fades over time, and is offset a bit
@@ -742,8 +741,8 @@ void CL_LinkNetworkEntity(entity_t *e)
                        tempmatrix.m[0][3] = v[0];
                        tempmatrix.m[1][3] = v[1];
                        tempmatrix.m[2][3] = v[2];
-                       CL_AllocDlight(NULL, &tempmatrix, e->persistent.muzzleflash, 1, 1, 1, 0, 0, 0, 0, true, 0);
-                       e->persistent.muzzleflash -= cl.frametime * 1000;
+                       CL_AllocDlight(NULL, &tempmatrix, 100, e->persistent.muzzleflash, e->persistent.muzzleflash, e->persistent.muzzleflash, 0, 0, 0, 0, true, 0);
+                       e->persistent.muzzleflash -= cl.frametime * 10;
                }
                // LordHavoc: if the model has no flags, don't check each
                if (e->render.model && e->render.model->flags && (!e->state_current.tagentity && !(e->render.flags & RENDER_VIEWMODEL)))
@@ -756,25 +755,25 @@ void CL_LinkNetworkEntity(entity_t *e)
                        {
                                trailtype = 3;
                                dlightradius = max(dlightradius, 100);
-                               dlightcolor[0] += 0.060000f;
-                               dlightcolor[1] += 0.250000f;
-                               dlightcolor[2] += 0.062500f;
+                               dlightcolor[0] += 0.12f;
+                               dlightcolor[1] += 0.50f;
+                               dlightcolor[2] += 0.12f;
                        }
                        else if (e->render.model->flags & EF_TRACER2)
                        {
                                trailtype = 5;
                                dlightradius = max(dlightradius, 100);
-                               dlightcolor[0] += 0.312500f;
-                               dlightcolor[1] += 0.187500f;
-                               dlightcolor[2] += 0.062500f;
+                               dlightcolor[0] += 0.50f;
+                               dlightcolor[1] += 0.30f;
+                               dlightcolor[2] += 0.10f;
                        }
                        else if (e->render.model->flags & EF_ROCKET)
                        {
                                trailtype = 0;
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += 0.781250f;
-                               dlightcolor[1] += 0.625000f;
-                               dlightcolor[2] += 0.312500f;
+                               dlightcolor[0] += 1.50f;
+                               dlightcolor[1] += 1.20f;
+                               dlightcolor[2] += 0.60f;
                        }
                        else if (e->render.model->flags & EF_GRENADE)
                        {
@@ -785,9 +784,9 @@ void CL_LinkNetworkEntity(entity_t *e)
                        {
                                trailtype = 6;
                                dlightradius = max(dlightradius, 200);
-                               dlightcolor[0] += 0.312500f;
-                               dlightcolor[1] += 0.125000f;
-                               dlightcolor[2] += 0.250000f;
+                               dlightcolor[0] += 0.60f;
+                               dlightcolor[1] += 0.25f;
+                               dlightcolor[2] += 0.50f;
                        }
                }
                // LordHavoc: customizable glow
@@ -814,8 +813,8 @@ void CL_LinkNetworkEntity(entity_t *e)
                {
                        dlightmatrix = e->render.matrix;
                        // hack to make glowing player light shine on their gun
-                       if ((e - cl_entities) == cl.viewentity/* && !chase_active.integer*/)
-                               dlightmatrix.m[2][3] += 30;
+                       //if ((e - cl_entities) == cl.viewentity/* && !chase_active.integer*/)
+                       //      dlightmatrix.m[2][3] += 30;
                        CL_AllocDlight(&e->render, &dlightmatrix, dlightradius, dlightcolor[0], dlightcolor[1], dlightcolor[2], 0, 0, e->state_current.skin >= 16 ? e->state_current.skin : 0, e->state_current.lightstyle, !(e->state_current.lightpflags & PFLAGS_NOSHADOW), (e->state_current.lightpflags & PFLAGS_FULLDYNAMIC) ? ((e->state_current.lightpflags & PFLAGS_CORONA) != 0) : 1);
                }
                // trails need the previous frame
index 46065b1..8804284 100644 (file)
@@ -1037,7 +1037,7 @@ void CL_ParseTempEntity(void)
                MSG_ReadVector(pos);
                CL_FindNonSolidLocation(pos, pos, 4);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 150, 0.25f, 1.00f, 0.25f, 250, 0.2, 0, 0, false, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 100, 0.12f, 0.50f, 0.12f, 500, 0.2, 0, 0, false, 1);
                CL_RunParticleEffect(pos, vec3_origin, 20, 30);
                S_StartSound(-1, 0, cl_sfx_wizhit, pos, 1, 1);
                break;
@@ -1047,7 +1047,7 @@ void CL_ParseTempEntity(void)
                MSG_ReadVector(pos);
                CL_FindNonSolidLocation(pos, pos, 4);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 150, 1.0f, 0.60f, 0.20f, 250, 0.2, 0, 0, false, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 100, 0.50f, 0.30f, 0.10f, 500, 0.2, 0, 0, false, 1);
                CL_RunParticleEffect(pos, vec3_origin, 226, 20);
                S_StartSound(-1, 0, cl_sfx_knighthit, pos, 1, 1);
                break;
@@ -1078,7 +1078,7 @@ void CL_ParseTempEntity(void)
                // LordHavoc: changed to spark shower
                CL_SparkShower(pos, vec3_origin, 15);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 200, 0.1f, 0.1f, 1.0f, 1000, 0.2, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 100, 0.15f, 0.15f, 1.5f, 500, 0.2, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                if (rand() % 5)
                        S_StartSound(-1, 0, cl_sfx_tink1, pos, 1, 1);
@@ -1119,7 +1119,7 @@ void CL_ParseTempEntity(void)
                // LordHavoc: changed to dust shower
                CL_SparkShower(pos, vec3_origin, 30);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 200, 0.1f, 0.1f, 1.0f, 1000, 0.2, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 100, 0.15f, 0.15f, 1.5f, 500, 0.2, 0, 0, true, 1);
                if (rand() % 5)
                        S_StartSound(-1, 0, cl_sfx_tink1, pos, 1, 1);
                else
@@ -1216,7 +1216,7 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 4);
                CL_SparkShower(pos, vec3_origin, 15);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 200, 0.1f, 0.1f, 1.0f, 1000, 0.2, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 100, 0.15f, 0.15f, 1.5f, 500, 0.2, 0, 0, true, 1);
                break;
 
        case TE_EXPLOSION:
@@ -1226,7 +1226,7 @@ void CL_ParseTempEntity(void)
                CL_ParticleExplosion(pos);
                // LordHavoc: boosted color from 1.0, 0.8, 0.4 to 1.25, 1.0, 0.5
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 350, 1.25f, 1.0f, 0.5f, 700, 0.5, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 350, 2.5f, 2.0f, 1.0f, 700, 0.5, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                break;
 
@@ -1236,7 +1236,7 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 10);
                CL_ParticleExplosion(pos);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 600, 0.5f, 0.4f, 1.0f, 1200, 0.5, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 350, 2.5f, 2.0f, 4.0f, 700, 0.5, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                break;
 
@@ -1246,7 +1246,10 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 10);
                CL_ParticleExplosion(pos);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 350, MSG_ReadCoord(), MSG_ReadCoord(), MSG_ReadCoord(), 700, 0.5, 0, 0, true, 1);
+               color[0] = MSG_ReadCoord() * (2.0f / 1.0f);
+               color[1] = MSG_ReadCoord() * (2.0f / 1.0f);
+               color[2] = MSG_ReadCoord() * (2.0f / 1.0f);
+               CL_AllocDlight(NULL, &tempmatrix, 350, color[0], color[1], color[2], 700, 0.5, 0, 0, true, 1);  
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                break;
 
@@ -1255,9 +1258,9 @@ void CL_ParseTempEntity(void)
                MSG_ReadVector(pos);
                CL_FindNonSolidLocation(pos, pos, 10);
                CL_ParticleExplosion(pos);
-               color[0] = MSG_ReadByte() * (1.0 / 255.0);
-               color[1] = MSG_ReadByte() * (1.0 / 255.0);
-               color[2] = MSG_ReadByte() * (1.0 / 255.0);
+               color[0] = MSG_ReadByte() * (2.0f / 255.0f);
+               color[1] = MSG_ReadByte() * (2.0f / 255.0f);
+               color[2] = MSG_ReadByte() * (2.0f / 255.0f);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
                CL_AllocDlight(NULL, &tempmatrix, 350, color[0], color[1], color[2], 700, 0.5, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
@@ -1272,14 +1275,14 @@ void CL_ParseTempEntity(void)
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 600, 0.8f, 0.4f, 1.0f, 1200, 0.5, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 600, 1.6f, 0.8f, 2.0f, 1200, 0.5, 0, 0, true, 1);
                break;
 
        case TE_SMALLFLASH:
                MSG_ReadVector(pos);
                CL_FindNonSolidLocation(pos, pos, 10);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 200, 1, 1, 1, 1000, 0.2, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 200, 2, 2, 2, 1000, 0.2, 0, 0, true, 1);
                break;
 
        case TE_CUSTOMFLASH:
@@ -1287,9 +1290,9 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 4);
                radius = MSG_ReadByte() * 8;
                velspeed = (MSG_ReadByte() + 1) * (1.0 / 256.0);
-               color[0] = MSG_ReadByte() * (1.0 / 255.0);
-               color[1] = MSG_ReadByte() * (1.0 / 255.0);
-               color[2] = MSG_ReadByte() * (1.0 / 255.0);
+               color[0] = MSG_ReadByte() * (2.0f / 255.0f);
+               color[1] = MSG_ReadByte() * (2.0f / 255.0f);
+               color[2] = MSG_ReadByte() * (2.0f / 255.0f);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
                CL_AllocDlight(NULL, &tempmatrix, radius, color[0], color[1], color[2], radius / velspeed, velspeed, 0, 0, true, 1);
                break;
@@ -1356,8 +1359,11 @@ void CL_ParseTempEntity(void)
                colorLength = MSG_ReadByte();
                CL_ParticleExplosion2(pos, colorStart, colorLength);
                tempcolor = (qbyte *)&palette_complete[(rand()%colorLength) + colorStart];
+               color[0] = tempcolor[0] * (2.0f / 255.0f);
+               color[1] = tempcolor[1] * (2.0f / 255.0f);
+               color[2] = tempcolor[2] * (2.0f / 255.0f);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 350, tempcolor[0] * (1.0f / 255.0f), tempcolor[1] * (1.0f / 255.0f), tempcolor[2] * (1.0f / 255.0f), 700, 0.5, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 350, color[0], color[1], color[2], 700, 0.5, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                break;
 
@@ -1382,7 +1388,7 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 10);
                CL_ParticleExplosion(pos);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 500, 1.25f, 1.0f, 0.5f, 500, 9999, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 500, 2.5f, 2.0f, 1.0f, 500, 9999, 0, 0, true, 1);
                S_StartSound(-1, 0, cl_sfx_r_exp3, pos, 1, 1);
                break;
 
@@ -1393,7 +1399,7 @@ void CL_ParseTempEntity(void)
                CL_FindNonSolidLocation(pos, pos, 5);
                CL_Tei_PlasmaHit(pos, dir, count);
                Matrix4x4_CreateTranslate(&tempmatrix, pos[0], pos[1], pos[2]);
-               CL_AllocDlight(NULL, &tempmatrix, 500, 0.3, 0.6, 1.0f, 2000, 9999, 0, 0, true, 1);
+               CL_AllocDlight(NULL, &tempmatrix, 500, 0.6, 1.2, 2.0f, 2000, 9999, 0, 0, true, 1);
                break;
 
        default:
index f81399d..2ca6d59 100644 (file)
@@ -1910,7 +1910,7 @@ void R_RTLight_UpdateFromDLight(rtlight_t *rtlight, const dlight_t *light, int i
 
        rtlight->lightmap_cullradius = bound(0, rtlight->radius, 2048.0f);
        rtlight->lightmap_cullradius2 = rtlight->lightmap_cullradius * rtlight->lightmap_cullradius;
-       VectorScale(rtlight->color, rtlight->radius * d_lightstylevalue[rtlight->style] * 0.25f, rtlight->lightmap_light);
+       VectorScale(rtlight->color, rtlight->radius * d_lightstylevalue[rtlight->style] * 0.125f, rtlight->lightmap_light);
        rtlight->lightmap_subtract = 1.0f / rtlight->lightmap_cullradius2;
 }
 
@@ -2158,6 +2158,9 @@ void R_DrawRTLight(rtlight_t *rtlight, int visiblevolumes)
                                if (!(ent->flags & RENDER_SHADOW) || !ent->model || !ent->model->DrawShadowVolume)
                                        continue;
                                Matrix4x4_Transform(&ent->inversematrix, rtlight->shadoworigin, relativelightorigin);
+                               // light emitting entities should not cast their own shadow
+                               if (VectorLength2(relativelightorigin) < 0.1)
+                                       continue;
                                ent->model->DrawShadowVolume(ent, relativelightorigin, rtlight->radius, ent->model->numsurfaces, ent->model->surfacelist);
                        }
                }
diff --git a/todo b/todo
index ec0b924..2c074b7 100644 (file)
--- a/todo
+++ b/todo
@@ -46,6 +46,8 @@ d darkplaces: typing ip in join game menu should show 'trying' and 'no response'
 -n dpmod: make grapple off-hand (joe hill)
 -n darkplaces: add DP_SV_ROTATINGBMODEL extension to explain that MOVETYPE_PUSH/SOLID_BSP support rotation in darkplaces and a demonstration of how to use it without qc modifications (Uffe, Supajoe)
 d darkplaces: fix 2D attenuation texturing which is all black
+3 darkplaces: add clientside entity prediction similar to qw based on ping, and add cl_prediction and cl_prediction_lockping
+3 darkplaces: make server send player ping times to client for scoreboard
 2 dpmod: write a readme for the menu progs code to get people started with it, and know what is and is not possible, what builtins do, etc (Urre)
 0 darkplaces: allow typing characters > 128 into console to allow Latin1 fonts to be used properly, already works in text messages (Urre)
 0 darkplaces: make sure the engine uses only the first 32 special chars, so the high set can be replaced, this means player messages should not be shifted up, and the 'shift down' printing in dedicated server consoles should be removed, etc (Urre)