]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
removed r_shadow_particletrace code and shader because it was never
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 1 Mar 2011 07:23:37 +0000 (07:23 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 1 Mar 2011 07:23:37 +0000 (07:23 +0000)
usable performance, made obsolete by r_shadow_bouncegrid which looks
much nicer

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10876 d7cf8633-e32d-0410-b094-e92efae38249

gl_rmain.c
r_shadow.c
render.h

index d76503790227fe0da685f8b3f717006843cb7a68..5d6cf2c8762a55ac1beeff9541501b775a5f4388 100644 (file)
@@ -1058,11 +1058,6 @@ static const char *builtinshaderstring =
 "uniform highp vec3 LightPosition;\n"
 "varying highp vec4 ModelViewPosition;\n"
 "#endif\n"
-"#ifdef MODE_DEFERREDBOUNCELIGHT\n"
-"varying highp vec4 ModelViewPosition;\n"
-"varying highp vec4 LightOriginInvRadius;\n"
-"varying mediump vec4 LightColor;\n"
-"#endif\n"
 "\n"
 "#ifdef MODE_LIGHTSOURCE\n"
 "uniform highp vec3 LightPosition;\n"
@@ -1133,9 +1128,6 @@ static const char *builtinshaderstring =
 "uniform sampler2D Texture_ScreenDiffuse;\n"
 "uniform sampler2D Texture_ScreenSpecular;\n"
 "#endif\n"
-"#ifdef MODE_DEFERREDBOUNCELIGHT\n"
-"uniform sampler2D Texture_ScreenDepth;\n"
-"#endif\n"
 "\n"
 "uniform lowp vec3 Color_Pants;\n"
 "uniform lowp vec3 Color_Shirt;\n"
@@ -1498,39 +1490,6 @@ static const char *builtinshaderstring =
 "\n"
 "\n"
 "\n"
-"#ifdef MODE_DEFERREDBOUNCELIGHT\n"
-"#ifdef VERTEX_SHADER\n"
-"uniform highp mat4 ModelViewMatrix;\n"
-"void main(void)\n"
-"{\n"
-"      ModelViewPosition = ModelViewMatrix * Attrib_Position;\n"
-"      LightOriginInvRadius.xyz = (ModelViewMatrix * vec4(Attrib_TexCoord0.xyz, 1.0)).xyz;\n"
-"      LightOriginInvRadius.w = Attrib_TexCoord0.w;\n"
-"      LightColor = Attrib_Color;\n"
-"      gl_Position = ModelViewProjectionMatrix * Attrib_Position;\n"
-"}\n"
-"#endif // VERTEX_SHADER\n"
-"\n"
-"#ifdef FRAGMENT_SHADER\n"
-"// ScreenToDepth = vec2(Far / (Far - Near), Far * Near / (Near - Far));\n"
-"uniform highp vec2 ScreenToDepth;\n"
-"uniform myhalf2 PixelToScreenTexCoord;\n"
-"void main(void)\n"
-"{\n"
-"      // calculate viewspace pixel position\n"
-"      vec2 ScreenTexCoord = gl_FragCoord.xy * PixelToScreenTexCoord;\n"
-"      vec3 position;\n"
-"      position.z = ScreenToDepth.y / (texture2D(Texture_ScreenDepth, ScreenTexCoord).r + ScreenToDepth.x);\n"
-"      position.xy = ModelViewPosition.xy * (position.z / ModelViewPosition.z);\n"
-"      vec3 CubeVector = (position - LightOriginInvRadius.xyz) * LightOriginInvRadius.w;\n"
-"      gl_FragData[0] = vec4(LightColor.rgb * max(0.0, 1.0 - length(CubeVector)), 1.0);\n"
-"}\n"
-"#endif // FRAGMENT_SHADER\n"
-"#else // !MODE_DEFERREDBOUNCELIGHT\n"
-"\n"
-"\n"
-"\n"
-"\n"
 "#ifdef VERTEX_SHADER\n"
 "uniform highp mat4 TexMatrix;\n"
 "#ifdef USEVERTEXTEXTUREBLEND\n"
@@ -1869,7 +1828,6 @@ static const char *builtinshaderstring =
 "}\n"
 "#endif // FRAGMENT_SHADER\n"
 "\n"
-"#endif // !MODE_DEFERREDBOUNCELIGHT\n"
 "#endif // !MODE_DEFERREDLIGHTSOURCE\n"
 "#endif // !MODE_DEFERREDGEOMETRY\n"
 "#endif // !MODE_WATER\n"
@@ -3473,7 +3431,6 @@ shadermodeinfo_t glslshadermodeinfo[SHADERMODE_COUNT] =
        {"glsl/default.glsl", NULL, "glsl/default.glsl", "#define MODE_SHOWDEPTH\n", " showdepth"},
        {"glsl/default.glsl", NULL, "glsl/default.glsl", "#define MODE_DEFERREDGEOMETRY\n", " deferredgeometry"},
        {"glsl/default.glsl", NULL, "glsl/default.glsl", "#define MODE_DEFERREDLIGHTSOURCE\n", " deferredlightsource"},
-       {"glsl/default.glsl", NULL, "glsl/default.glsl", "#define MODE_DEFERREDBOUNCELIGHT\n", " deferredbouncelight"},
 };
 
 shadermodeinfo_t hlslshadermodeinfo[SHADERMODE_COUNT] =
@@ -3494,7 +3451,6 @@ shadermodeinfo_t hlslshadermodeinfo[SHADERMODE_COUNT] =
        {"hlsl/default.hlsl", NULL, "hlsl/default.hlsl", "#define MODE_SHOWDEPTH\n", " showdepth"},
        {"hlsl/default.hlsl", NULL, "hlsl/default.hlsl", "#define MODE_DEFERREDGEOMETRY\n", " deferredgeometry"},
        {"hlsl/default.hlsl", NULL, "hlsl/default.hlsl", "#define MODE_DEFERREDLIGHTSOURCE\n", " deferredlightsource"},
-       {"hlsl/default.hlsl", NULL, "hlsl/default.hlsl", "#define MODE_DEFERREDBOUNCELIGHT\n", " deferredbouncelight"},
 };
 
 struct r_glsl_permutation_s;
@@ -5797,50 +5753,6 @@ void R_SetupShader_DeferredLight(const rtlight_t *rtlight)
        }
 }
 
-void R_SetupShader_DeferredBounceLight(void)
-{
-       // array of particle lights that contribute only ambient color
-       unsigned int permutation = 0;
-       unsigned int mode = 0;
-       mode = SHADERMODE_DEFERREDBOUNCELIGHT;
-       switch(vid.renderpath)
-       {
-       case RENDERPATH_D3D9:
-#ifdef SUPPORTD3D
-               R_SetupShader_SetPermutationHLSL(mode, permutation);
-               hlslPSSetParameter2f(D3DPSREGISTER_ScreenToDepth, r_refdef.view.viewport.screentodepth[0], r_refdef.view.viewport.screentodepth[1]);
-               hlslPSSetParameter2f(D3DPSREGISTER_PixelToScreenTexCoord, 1.0f/vid.width, 1.0/vid.height);
-
-               R_Mesh_TexBind(GL20TU_SCREENDEPTH        , r_shadow_prepassgeometrydepthcolortexture           );
-#endif
-               break;
-       case RENDERPATH_D3D10:
-               Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
-               break;
-       case RENDERPATH_D3D11:
-               Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
-               break;
-       case RENDERPATH_GL20:
-       case RENDERPATH_GLES2:
-               R_SetupShader_SetPermutationGLSL(mode, permutation);
-               if (r_glsl_permutation->loc_ScreenToDepth             >= 0) qglUniform2f(       r_glsl_permutation->loc_ScreenToDepth            , r_refdef.view.viewport.screentodepth[0], r_refdef.view.viewport.screentodepth[1]);
-               if (r_glsl_permutation->loc_PixelToScreenTexCoord     >= 0) qglUniform2f(       r_glsl_permutation->loc_PixelToScreenTexCoord    , 1.0f/vid.width, 1.0f/vid.height);
-
-               if (r_glsl_permutation->tex_Texture_ScreenDepth       >= 0) R_Mesh_TexBind(r_glsl_permutation->tex_Texture_ScreenDepth        , r_shadow_prepassgeometrydepthtexture                );
-               break;
-       case RENDERPATH_GL13:
-       case RENDERPATH_GL11:
-               break;
-       case RENDERPATH_SOFT:
-               R_SetupShader_SetPermutationGLSL(mode, permutation);
-               DPSOFTRAST_Uniform2f(       DPSOFTRAST_UNIFORM_ScreenToDepth            , r_refdef.view.viewport.screentodepth[0], r_refdef.view.viewport.screentodepth[1]);
-               DPSOFTRAST_Uniform2f(DPSOFTRAST_UNIFORM_PixelToScreenTexCoord, 1.0f/vid.width, 1.0f/vid.height);
-
-               R_Mesh_TexBind(GL20TU_SCREENDEPTH        , r_shadow_prepassgeometrydepthtexture                );
-               break;
-       }
-}
-
 #define SKINFRAME_HASH 1024
 
 typedef struct
index 0b151fc118d7a521ad61f0bd38b35f5797ea98f5..4dbdb5304fe9eccb2d08f20a03868d873aca721f 100644 (file)
@@ -319,14 +319,6 @@ cvar_t r_shadow_sortsurfaces = {0, "r_shadow_sortsurfaces", "1", "improve perfor
 cvar_t r_shadow_polygonfactor = {0, "r_shadow_polygonfactor", "0", "how much to enlarge shadow volume polygons when rendering (should be 0!)"};
 cvar_t r_shadow_polygonoffset = {0, "r_shadow_polygonoffset", "1", "how much to push shadow volumes into the distance when rendering, to reduce chances of zfighting artifacts (should not be less than 0)"};
 cvar_t r_shadow_texture3d = {0, "r_shadow_texture3d", "1", "use 3D voxel textures for spherical attenuation rather than cylindrical (does not affect OpenGL 2.0 render path)"};
-cvar_t r_shadow_particletrace = {CVAR_SAVE, "r_shadow_particletrace", "0", "perform particle tracing for indirect lighting (Global Illumination / radiosity), requires r_shadow_deferred 1, requires r_shadow_realtime_world 1, EXTREMELY SLOW"};
-cvar_t r_shadow_particletrace_intensity = {CVAR_SAVE, "r_shadow_particletrace_intensity", "128", "overall brightness of particle traced radiosity"};
-cvar_t r_shadow_particletrace_size = {CVAR_SAVE, "r_shadow_particletrace_size", "32", "particles produce bounce lights of this radius"};
-cvar_t r_shadow_particletrace_radiusscale = {CVAR_SAVE, "r_shadow_particletrace_radiusscale", "1", "particles stop at this fraction of light radius"};
-cvar_t r_shadow_particletrace_maxbounce = {CVAR_SAVE, "r_shadow_particletrace_maxbounce", "1", "maximum number of bounces for a particle (minimum is 1)"};
-cvar_t r_shadow_particletrace_bounceintensity = {CVAR_SAVE, "r_shadow_particletrace_bounceintensity", "1", "amount of energy carried over after each bounce"};
-cvar_t r_shadow_particletrace_particlespacing = {CVAR_SAVE, "r_shadow_particletrace_particlespacing", "0.25", "overlap setting in terms of particle size, this affects how many particles are used"};
-cvar_t r_shadow_particletrace_updatepercentage = {CVAR_SAVE, "r_shadow_particletrace_updatepercentage", "0.01", "update this fraction of the particles of a light each frame (0 = best performance)"};
 cvar_t r_shadow_bouncegrid = {CVAR_SAVE, "r_shadow_bouncegrid", "0", "perform particle tracing for indirect lighting (Global Illumination / radiosity) using a 3D texture covering the scene, requires r_shadow_realtime_world 1"};
 cvar_t r_shadow_bouncegrid_bounceanglediffuse = {CVAR_SAVE, "r_shadow_bouncegrid_bounceanglediffuse", "0", "use random bounce direction rather than true reflection, makes some corner areas dark"};
 cvar_t r_shadow_bouncegrid_dlightparticlemultiplier = {CVAR_SAVE, "r_shadow_bouncegrid_dlightparticlemultiplier", "0", "if set to a high value like 16 this can make dlights look great, but 0 is recommended for performance reasons"};
@@ -720,14 +712,6 @@ void R_Shadow_Init(void)
        Cvar_RegisterVariable(&r_shadow_polygonfactor);
        Cvar_RegisterVariable(&r_shadow_polygonoffset);
        Cvar_RegisterVariable(&r_shadow_texture3d);
-       Cvar_RegisterVariable(&r_shadow_particletrace);
-       Cvar_RegisterVariable(&r_shadow_particletrace_intensity);
-       Cvar_RegisterVariable(&r_shadow_particletrace_size);
-       Cvar_RegisterVariable(&r_shadow_particletrace_radiusscale);
-       Cvar_RegisterVariable(&r_shadow_particletrace_maxbounce);
-       Cvar_RegisterVariable(&r_shadow_particletrace_bounceintensity);
-       Cvar_RegisterVariable(&r_shadow_particletrace_particlespacing);
-       Cvar_RegisterVariable(&r_shadow_particletrace_updatepercentage);
        Cvar_RegisterVariable(&r_shadow_bouncegrid);
        Cvar_RegisterVariable(&r_shadow_bouncegrid_bounceanglediffuse);
        Cvar_RegisterVariable(&r_shadow_bouncegrid_dlightparticlemultiplier);
@@ -2559,231 +2543,6 @@ static void R_Shadow_UpdateBounceGridTexture(void)
        r_shadow_bouncegridtime = realtime;
 }
 
-#define MAXPARTICLESPERLIGHT 262144
-#define MAXLIGHTSPERDRAW 1024
-
-static void R_Shadow_RenderParticlesForLight(rtlight_t *rtlight)
-{
-       int batchcount;
-       int i;
-       int j;
-       int bouncecount;
-       int hitsupercontentsmask;
-       int n;
-       int shotparticles;
-       int shootparticles = 0;
-       int bouncelimit;
-       int maxbounce;
-       unsigned int seed = 0;
-       static unsigned short bouncelight_elements[MAXLIGHTSPERDRAW*36];
-       static float vertex3f[MAXLIGHTSPERDRAW*24];
-       static float lightorigin4f[MAXLIGHTSPERDRAW*32];
-       static float color4f[MAXLIGHTSPERDRAW*32];
-       float scaledpoints[8][3];
-       float *v3f;
-       float *lo4f;
-       float *c4f;
-       rtlight_particle_t *p;
-       vec_t wantparticles = 0;
-       vec_t s;
-       vec_t radius;
-       vec_t particlesize;
-       vec_t iparticlesize;
-//     vec3_t offset;
-//     vec3_t right;
-//     vec3_t up;
-       vec4_t org;
-       vec4_t color;
-       vec3_t currentcolor;
-       vec3_t clipstart;
-       vec3_t clipend;
-       vec3_t shotcolor;
-       trace_t cliptrace;
-       if (!rtlight->draw || !rtlight->isstatic || !r_shadow_usingdeferredprepass)
-               return;
-       if (r_shadow_particletrace.integer)
-       {
-               radius = rtlight->radius * bound(0.0001f, r_shadow_particletrace_radiusscale.value, 1.0f) - r_shadow_particletrace_size.value;
-               s = rtlight->radius / bound(1.0f, r_shadow_particletrace_particlespacing.value * r_shadow_particletrace_size.value, 1048576.0f);
-               wantparticles = s*s;
-               n = (int)bound(0, wantparticles, MAXPARTICLESPERLIGHT);
-       }
-       else
-               n = 0;
-       shootparticles = (int)(n * r_shadow_particletrace_updatepercentage.value);
-       if ((n && !rtlight->particlecache_particles) || rtlight->particlecache_maxparticles != n)
-       {
-               if (rtlight->particlecache_particles)
-                       Mem_Free(rtlight->particlecache_particles);
-               rtlight->particlecache_particles = NULL;
-               rtlight->particlecache_numparticles = 0;
-               rtlight->particlecache_maxparticles = n;
-               rtlight->particlecache_updateparticle = 0;
-               if (rtlight->particlecache_maxparticles)
-                       rtlight->particlecache_particles = (rtlight_particle_t *)Mem_Alloc(r_main_mempool, rtlight->particlecache_maxparticles * sizeof(*rtlight->particlecache_particles));
-               shootparticles = n * 16;
-       }
-
-       if (!rtlight->particlecache_maxparticles)
-               return;
-
-//     if (rtlight->particlecache_numparticles < rtlight->particlecache_maxparticles)
-//             shootparticles = rtlight->particlecache_maxparticles;
-
-//     if (rtlight->particlecache_numparticles >= rtlight->particlecache_maxparticles)
-//             shootparticles = 0;
-
-       maxbounce = bound(1, r_shadow_particletrace_maxbounce.integer, 16);
-       //r_refdef.stats.lights_bouncelightsupdated += shootparticles;
-       for (shotparticles = 0;shotparticles < shootparticles;shotparticles++)
-       {
-               seed = rtlight->particlecache_updateparticle;
-               VectorSet(shotcolor, 1.0f, 1.0f, 1.0f);
-               VectorCopy(rtlight->shadoworigin, clipstart);
-               VectorRandom(clipend);
-               VectorMA(clipstart, radius, clipend, clipend);
-               hitsupercontentsmask = SUPERCONTENTS_SOLID | SUPERCONTENTS_LIQUIDSMASK;
-               bouncelimit = 1 + (rtlight->particlecache_updateparticle % maxbounce);
-               for (bouncecount = 0;;bouncecount++)
-               {
-                       cliptrace = CL_TraceLine(clipstart, clipend, MOVE_NOMONSTERS, NULL, hitsupercontentsmask, true, false, NULL, true);
-                       //Collision_ClipLineToWorld(&cliptrace, cl.worldmodel, clipstart, clipend, hitsupercontentsmask);
-                       if (cliptrace.fraction >= 1.0f)
-                               break;
-                       if (VectorLength2(shotcolor) < (1.0f / 262144.0f))
-                               break;
-                       if (bouncecount >= bouncelimit)
-                       {
-                               VectorCopy(cliptrace.endpos, rtlight->particlecache_particles[rtlight->particlecache_updateparticle].origin);
-                               VectorCopy(shotcolor, rtlight->particlecache_particles[rtlight->particlecache_updateparticle].color);
-                               rtlight->particlecache_updateparticle++;
-                               if (rtlight->particlecache_numparticles < rtlight->particlecache_updateparticle)
-                                       rtlight->particlecache_numparticles = rtlight->particlecache_updateparticle;
-                               if (rtlight->particlecache_updateparticle >= rtlight->particlecache_maxparticles)
-                               {
-                                       rtlight->particlecache_updateparticle = 0;
-                                       shotparticles = shootparticles;
-                               }
-                               break;
-                       }
-                       // scale down shot color by bounce intensity and texture color
-                       VectorScale(shotcolor, r_shadow_particletrace_bounceintensity.value, shotcolor);
-                       if (cliptrace.hittexture && cliptrace.hittexture->currentskinframe)
-                               VectorMultiply(shotcolor, rsurface.texture->currentskinframe->avgcolor, shotcolor);
-                       // reflect the remaining portion of the line across plane normal
-                       //VectorSubtract(clipend, cliptrace.endpos, clipdiff);
-                       //VectorReflect(clipdiff, 1.0, cliptrace.plane.normal, clipend);
-                       // random direction, primarily along plane normal
-                       s = VectorDistance(cliptrace.endpos, clipend);
-                       VectorRandom(clipend);
-                       VectorMA(cliptrace.plane.normal, 0.95f, clipend, clipend);
-                       VectorNormalize(clipend);
-                       VectorScale(clipend, s, clipend);
-                       // calculate the new line start and end
-                       VectorCopy(cliptrace.endpos, clipstart);
-                       VectorAdd(clipstart, clipend, clipend);
-               }
-       }
-
-       if (!rtlight->particlecache_numparticles)
-               return;
-
-       // render the particles as deferred lights
-// do global setup needed for the chosen lighting mode
-       R_Shadow_RenderMode_Reset();
-       r_shadow_rendermode = r_shadow_lightingrendermode;
-       r_shadow_usingshadowmap2d = false;
-       R_EntityMatrix(&identitymatrix);
-       GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
-       // only draw light where this geometry was already rendered AND the
-       // stencil is 128 (values other than this mean shadow)
-       R_SetStencil(false, 255, GL_KEEP, GL_KEEP, GL_KEEP, GL_EQUAL, 128, 255);
-       R_Mesh_SetRenderTargets(r_shadow_prepasslightingdiffusefbo, r_shadow_prepassgeometrydepthtexture, r_shadow_prepasslightingdiffusetexture, NULL, NULL, NULL);
-       R_SetupShader_DeferredBounceLight();
-       GL_ColorMask(1,1,1,1);
-       GL_DepthMask(false);
-       GL_DepthRange(0, 1);
-       GL_PolygonOffset(0, 0);
-       GL_DepthTest(true);
-       GL_DepthFunc(GL_GREATER);
-       GL_CullFace(r_refdef.view.cullface_back);
-       s = r_shadow_particletrace_intensity.value / (float)rtlight->particlecache_numparticles;
-       VectorScale(rtlight->currentcolor, s, currentcolor);
-       particlesize = bound(0.0001f, r_shadow_particletrace_size.value, 1024.0f);
-       iparticlesize = 1.0f / particlesize;
-//     VectorScale(r_refdef.view.forward, particlesize, offset);
-//     VectorScale(r_refdef.view.left, -particlesize, right);
-//     VectorScale(r_refdef.view.up, particlesize, up);
-       org[3] = iparticlesize;
-       color[3] = 1.0f;
-       v3f = vertex3f;
-       lo4f = lightorigin4f;
-       c4f = color4f;
-       batchcount = 0;
-       if (!bouncelight_elements[1])
-               for (i = 0;i < MAXLIGHTSPERDRAW;i++)
-                       for (j = 0;j < 36;j++)
-                               bouncelight_elements[i*36+j] = i*8+bboxelements[j];
-       for (j = 0;j < 8;j++)
-               VectorScale(bboxpoints[j], particlesize, scaledpoints[j]);
-       //r_refdef.stats.lights_bouncelightscounted += rtlight->particlecache_numparticles;
-       for (j = 0, p = rtlight->particlecache_particles, n = rtlight->particlecache_numparticles;j < n;j++, p++)
-       {
-               VectorCopy(p->origin, org);
-               // org[3] is set above
-               VectorMultiply(p->color, currentcolor, color);
-               // color[3] is set above
-               VectorAdd(scaledpoints[0], org, v3f +  0);
-               VectorAdd(scaledpoints[1], org, v3f +  3);
-               VectorAdd(scaledpoints[2], org, v3f +  6);
-               VectorAdd(scaledpoints[3], org, v3f +  9);
-               VectorAdd(scaledpoints[4], org, v3f + 12);
-               VectorAdd(scaledpoints[5], org, v3f + 15);
-               VectorAdd(scaledpoints[6], org, v3f + 18);
-               VectorAdd(scaledpoints[7], org, v3f + 21);
-               Vector4Copy(org, lo4f +  0);
-               Vector4Copy(org, lo4f +  4);
-               Vector4Copy(org, lo4f +  8);
-               Vector4Copy(org, lo4f + 12);
-               Vector4Copy(org, lo4f + 16);
-               Vector4Copy(org, lo4f + 20);
-               Vector4Copy(org, lo4f + 24);
-               Vector4Copy(org, lo4f + 28);
-               Vector4Copy(color, c4f + 0);
-               Vector4Copy(color, c4f + 4);
-               Vector4Copy(color, c4f + 8);
-               Vector4Copy(color, c4f + 12);
-               Vector4Copy(color, c4f + 16);
-               Vector4Copy(color, c4f + 20);
-               Vector4Copy(color, c4f + 24);
-               Vector4Copy(color, c4f + 28);
-               v3f += 24;
-               lo4f += 32;
-               c4f += 32;
-               batchcount++;
-               if (batchcount >= MAXLIGHTSPERDRAW)
-               {
-                       //r_refdef.stats.lights_bouncelightsdrawn += batchcount;
-                       R_Mesh_PrepareVertices_BounceLight_Arrays(batchcount*8, vertex3f, color4f, lightorigin4f);
-                       R_Mesh_Draw(0, batchcount*8, 0, batchcount*12, NULL, NULL, 0, bouncelight_elements, NULL, 0);
-                       v3f = vertex3f;
-                       lo4f = lightorigin4f;
-                       c4f = color4f;
-                       batchcount = 0;
-               }
-       }
-       if (batchcount)
-       {
-               //r_refdef.stats.lights_bouncelightsdrawn += batchcount;
-               R_Mesh_PrepareVertices_BounceLight_Arrays(batchcount*8, vertex3f, color4f, lightorigin4f);
-               R_Mesh_Draw(0, batchcount*8, 0, batchcount*12, NULL, NULL, 0, bouncelight_elements, NULL, 0);
-               v3f = vertex3f;
-               lo4f = lightorigin4f;
-               c4f = color4f;
-               batchcount = 0;
-       }
-}
-
 void R_Shadow_RenderMode_VisibleShadowVolumes(void)
 {
        R_Shadow_RenderMode_Reset();
@@ -4299,9 +4058,6 @@ void R_Shadow_DrawLight(rtlight_t *rtlight)
                else
                        R_Shadow_RenderMode_DrawDeferredLight(false, false);
        }
-
-       if (r_shadow_particletrace.integer)
-               R_Shadow_RenderParticlesForLight(rtlight);
 }
 
 static void R_Shadow_FreeDeferred(void)
index 161e1c6a4409e1ba7944847d004e04235bf4da7c..c1911e08573040854bddf5380bebed56770813da 100644 (file)
--- a/render.h
+++ b/render.h
@@ -449,7 +449,6 @@ void R_SetupShader_DepthOrShadow(void);
 void R_SetupShader_ShowDepth(void);
 void R_SetupShader_Surface(const vec3_t lightcolorbase, qboolean modellighting, float ambientscale, float diffusescale, float specularscale, rsurfacepass_t rsurfacepass, int texturenumsurfaces, const msurface_t **texturesurfacelist, void *waterplane);
 void R_SetupShader_DeferredLight(const rtlight_t *rtlight);
-void R_SetupShader_DeferredBounceLight(void);
 
 typedef struct r_waterstate_waterplane_s
 {