]> git.xolatile.top Git - xolatile-badassbug.git/commitdiff
No need for lens flare...
authorxolatile <xolatile@proton.me>
Sun, 20 Jul 2025 22:47:24 +0000 (00:47 +0200)
committerxolatile <xolatile@proton.me>
Sun, 20 Jul 2025 22:47:24 +0000 (00:47 +0200)
.gitignore
src/Makefile
src/engine/lensflare.h [deleted file]
src/engine/renderparticles.cpp

index a449597ced64fb858e88ee58dcf2544bf28f1ff5..81006f1ef8a4f369c96ef502f1e82ac1059aa160 100644 (file)
@@ -1,11 +1,11 @@
 src/engine/*.o
 src/fpsgame/*.o
 src/shared/*.o
-src/engine/engine.gch
-src/fpsgame/game.gch
+src/engine/engine.h.gch
+src/fpsgame/game.h.gch
 src/shared/cube.h.gch
 src/sauer_client
 src/sauer_server
-bind_unix/native_client
-bind_unix/native_server
+bin_unix/native_client
+bin_unix/native_server
 packages/base/*.BAK
index 3a45f2e83cd23bb560ca20578b545f12f79dbe81..978de0667129e3fc95d7a099b40bcff1dae295fe 100644 (file)
@@ -368,8 +368,7 @@ engine/renderparticles.o: shared/glexts.h shared/glemu.h shared/iengine.h
 engine/renderparticles.o: shared/igame.h engine/world.h engine/octa.h
 engine/renderparticles.o: engine/lightmap.h engine/bih.h engine/texture.h
 engine/renderparticles.o: engine/model.h engine/rendertarget.h
-engine/renderparticles.o: engine/depthfx.h engine/explosion.h
-engine/renderparticles.o: engine/lensflare.h engine/lightning.h
+engine/renderparticles.o: engine/depthfx.h engine/explosion.h engine/lightning.h
 engine/rendersky.o: engine/engine.h shared/cube.h shared/tools.h
 engine/rendersky.o: shared/geom.h shared/ents.h shared/command.h
 engine/rendersky.o: shared/glexts.h shared/glemu.h shared/iengine.h
diff --git a/src/engine/lensflare.h b/src/engine/lensflare.h
deleted file mode 100644 (file)
index 1618e52..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-static struct flaretype
-{
-    int type;             /* flaretex index, 0..5, -1 for 6+random shine */
-    float loc;            /* postion on axis */
-    float scale;          /* texture scaling */
-    uchar alpha;          /* color alpha */
-} flaretypes[] =
-{
-    {2,  1.30f, 0.04f, 153}, //flares
-    {3,  1.00f, 0.10f, 102},
-    {1,  0.50f, 0.20f, 77},
-    {3,  0.20f, 0.05f, 77},
-    {0,  0.00f, 0.04f, 77},
-    {5, -0.25f, 0.07f, 127},
-    {5, -0.40f, 0.02f, 153},
-    {5, -0.60f, 0.04f, 102},
-    {5, -1.00f, 0.03f, 51},
-    {-1, 1.00f, 0.30f, 255}, //shine - red, green, blue
-    {-2, 1.00f, 0.20f, 255},
-    {-3, 1.00f, 0.25f, 255}
-};
-
-struct flare
-{
-    vec o, center;
-    float size;
-    bvec color;
-    bool sparkle;
-};
-
-VAR(flarelights, 0, 0, 1);
-VARP(flarecutoff, 0, 1000, 10000);
-VARP(flaresize, 20, 100, 500);
-
-struct flarerenderer : partrenderer
-{
-    int maxflares, numflares;
-    unsigned int shinetime;
-    flare *flares;
-
-    flarerenderer(const char *texname, int maxflares)
-        : partrenderer(texname, 3, PT_FLARE|PT_SHADER), maxflares(maxflares), numflares(0), shinetime(0)
-    {
-        flares = new flare[maxflares];
-    }
-    ~flarerenderer()
-    {
-        delete[] flares;
-    }
-
-    void reset()
-    {
-        numflares = 0;
-    }
-
-    void newflare(vec &o,  const vec &center, uchar r, uchar g, uchar b, float mod, float size, bool sun, bool sparkle)
-    {
-        if(numflares >= maxflares) return;
-        vec target; //occlusion check (neccessary as depth testing is turned off)
-        if(!raycubelos(o, camera1->o, target)) return;
-        flare &f = flares[numflares++];
-        f.o = o;
-        f.center = center;
-        f.size = size;
-        f.color = bvec(uchar(r*mod), uchar(g*mod), uchar(b*mod));
-        f.sparkle = sparkle;
-    }
-
-    void addflare(vec &o, uchar r, uchar g, uchar b, bool sun, bool sparkle)
-    {
-        //frustrum + fog check
-        if(isvisiblesphere(0.0f, o) > (sun?VFC_FOGGED:VFC_FULL_VISIBLE)) return;
-        //find closest point between camera line of sight and flare pos
-        vec flaredir = vec(o).sub(camera1->o);
-        vec center = vec(camdir).mul(flaredir.dot(camdir)).add(camera1->o);
-        float mod, size;
-        if(sun) //fixed size
-        {
-            mod = 1.0;
-            size = flaredir.magnitude() * flaresize / 100.0f;
-        }
-        else
-        {
-            mod = (flarecutoff-vec(o).sub(center).squaredlen())/flarecutoff;
-            if(mod < 0.0f) return;
-            size = flaresize / 5.0f;
-        }
-        newflare(o, center, r, g, b, mod, size, sun, sparkle);
-    }
-
-    void makelightflares()
-    {
-        numflares = 0; //regenerate flarelist each frame
-        shinetime = lastmillis/10;
-
-        if(editmode || !flarelights) return;
-
-        const vector<extentity *> &ents = entities::getents();
-        extern const vector<int> &checklightcache(int x, int y);
-        const vector<int> &lights = checklightcache(int(camera1->o.x), int(camera1->o.y));
-        loopv(lights)
-        {
-            entity &e = *ents[lights[i]];
-            if(e.type != ET_LIGHT) continue;
-            bool sun = (e.attr1==0);
-            float radius = float(e.attr1);
-            vec flaredir = vec(e.o).sub(camera1->o);
-            float len = flaredir.magnitude();
-            if(!sun && (len > radius)) continue;
-            if(isvisiblesphere(0.0f, e.o) > (sun?VFC_FOGGED:VFC_FULL_VISIBLE)) continue;
-            vec center = vec(camdir).mul(flaredir.dot(camdir)).add(camera1->o);
-            float mod, size;
-            if(sun) //fixed size
-            {
-                mod = 1.0;
-                size = len * flaresize / 100.0f;
-            }
-            else
-            {
-                mod = (radius-len)/radius;
-                size = flaresize / 5.0f;
-            }
-            newflare(e.o, center, e.attr2, e.attr3, e.attr4, mod, size, sun, sun);
-        }
-    }
-
-    int count()
-    {
-        return numflares;
-    }
-
-    bool haswork()
-    {
-        return (numflares != 0) && !glaring && !reflecting  && !refracting;
-    }
-
-    void render()
-    {
-        textureshader->set();
-        glDisable(GL_DEPTH_TEST);
-        if(!tex) tex = textureload(texname);
-        glBindTexture(GL_TEXTURE_2D, tex->id);
-        gle::defattrib(gle::ATTRIB_VERTEX, 3, GL_FLOAT);
-        gle::defattrib(gle::ATTRIB_TEXCOORD0, 2, GL_FLOAT);
-        gle::defattrib(gle::ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE);
-        gle::begin(GL_QUADS);
-        loopi(numflares)
-        {
-            const flare &f = flares[i];
-            vec center = f.center;
-            vec axis = vec(f.o).sub(center);
-            bvec4 color(f.color, 255);
-            loopj(f.sparkle?12:9)
-            {
-                const flaretype &ft = flaretypes[j];
-                vec o = vec(axis).mul(ft.loc).add(center);
-                float sz = ft.scale * f.size;
-                int tex = ft.type;
-                if(ft.type < 0) //sparkles - always done last
-                {
-                    shinetime = (shinetime + 1) % 10;
-                    tex = 6+shinetime;
-                    color.r = 0;
-                    color.g = 0;
-                    color.b = 0;
-                    color[-ft.type-1] = f.color[-ft.type-1]; //only want a single channel
-                }
-                color.a = ft.alpha;
-                const float tsz = 0.25; //flares are aranged in 4x4 grid
-                float tx = tsz*(tex&0x03), ty = tsz*((tex>>2)&0x03);
-                gle::attribf(o.x+(-camright.x+camup.x)*sz, o.y+(-camright.y+camup.y)*sz, o.z+(-camright.z+camup.z)*sz);
-                    gle::attribf(tx,     ty+tsz);
-                    gle::attrib(color);
-                gle::attribf(o.x+( camright.x+camup.x)*sz, o.y+( camright.y+camup.y)*sz, o.z+( camright.z+camup.z)*sz);
-                    gle::attribf(tx+tsz, ty+tsz);
-                    gle::attrib(color);
-                gle::attribf(o.x+( camright.x-camup.x)*sz, o.y+( camright.y-camup.y)*sz, o.z+( camright.z-camup.z)*sz);
-                    gle::attribf(tx+tsz, ty);
-                    gle::attrib(color);
-                gle::attribf(o.x+(-camright.x-camup.x)*sz, o.y+(-camright.y-camup.y)*sz, o.z+(-camright.z-camup.z)*sz);
-                    gle::attribf(tx,     ty);
-                    gle::attrib(color);
-            }
-        }
-        gle::end();
-        glEnable(GL_DEPTH_TEST);
-    }
-
-    //square per round hole - use addflare(..) instead
-    particle *addpart(const vec &o, const vec &d, int fade, int color, float size, int gravity = 0) { return NULL; }
-};
-static flarerenderer flares("<grey>packages/particles/lensflares.png", 64);
-
index 93034a22a94ad96c7d8d8401efa931ac80484229..8fa2171838f077f7bf64c1eb56b82c8e6dcab4de 100644 (file)
@@ -864,7 +864,6 @@ typedef varenderer<PT_TRAIL> trailrenderer;
 
 #include "depthfx.h"
 #include "explosion.h"
-#include "lensflare.h"
 #include "lightning.h"
 
 struct softquadrenderer : quadrenderer
@@ -925,7 +924,6 @@ static partrenderer *parts[] =
     &texticons,                                                                                    // text icons
     &meters,                                                                                       // meter
     &metervs,                                                                                      // meter vs.
-    &flares                                                                                        // lens flares - must be done last
 };
 
 void finddepthfxranges()
@@ -1440,7 +1438,6 @@ static void makeparticles(entity &e)
         case 33:
         case 34:
         case 35:
-            flares.addflare(e.o, e.attr2, e.attr3, e.attr4, (e.attr1&0x02)!=0, (e.attr1&0x01)!=0);
             break;
         default:
             if(!editmode)
@@ -1500,8 +1497,6 @@ void updateparticles()
     }
     else canemit = false;
 
-    flares.makelightflares();
-
     if(!editmode || showparticles)
     {
         int emitted = 0, replayed = 0;