summaryrefslogtreecommitdiff
path: root/src/engine/renderva.cpp
diff options
context:
space:
mode:
authorxolatile2025-07-17 23:28:55 +0200
committerxolatile2025-07-17 23:28:55 +0200
commitc79dda69d6e603500a5681430172b5152041af0a (patch)
treec1669442318e77a9ae76009edd5eefcaa69064ce /src/engine/renderva.cpp
parent5b88d873f42b1cad5c5fd03888cfe45b82da06d6 (diff)
downloadxolatile-badassbug-c79dda69d6e603500a5681430172b5152041af0a.tar.xz
xolatile-badassbug-c79dda69d6e603500a5681430172b5152041af0a.tar.zst
Big changed mentioned in IRC channel...
Diffstat (limited to 'src/engine/renderva.cpp')
-rw-r--r--src/engine/renderva.cpp83
1 files changed, 41 insertions, 42 deletions
diff --git a/src/engine/renderva.cpp b/src/engine/renderva.cpp
index cf9d376..6194659 100644
--- a/src/engine/renderva.cpp
+++ b/src/engine/renderva.cpp
@@ -108,7 +108,7 @@ void addvisibleva(vtxarray *va)
void sortvisiblevas()
{
- visibleva = NULL;
+ visibleva = NULL;
vtxarray **last = &visibleva;
loopi(VASORTSIZE) if(vasort[i])
{
@@ -126,7 +126,7 @@ void findvisiblevas(vector<vtxarray *> &vas, bool resetocclude = false)
vtxarray &v = *vas[i];
int prevvfc = resetocclude ? VFC_NOT_VISIBLE : v.curvfc;
v.curvfc = isvisiblecube(v.o, v.size);
- if(v.curvfc!=VFC_NOT_VISIBLE)
+ if(v.curvfc!=VFC_NOT_VISIBLE)
{
if(pvsoccluded(v.o, v.size))
{
@@ -153,7 +153,7 @@ void calcvfcD()
loopk(3) if(p[k] > 0) vfcDfar[i] += p[k];
else vfcDnear[i] += p[k];
}
-}
+}
void setvfcP(float z, const vec &bbmin, const vec &bbmax)
{
@@ -215,7 +215,7 @@ void visiblecubes(bool cull)
static inline bool insideva(const vtxarray *va, const vec &v, int margin = 2)
{
int size = va->size + margin;
- return v.x>=va->o.x-margin && v.y>=va->o.y-margin && v.z>=va->o.z-margin &&
+ return v.x>=va->o.x-margin && v.y>=va->o.y-margin && v.z>=va->o.z-margin &&
v.x<=va->o.x+size && v.y<=va->o.y+size && v.z<=va->o.z+size;
}
@@ -461,7 +461,6 @@ VAR(oqmm, 0, 4, 8);
void rendermapmodel(extentity &e)
{
int anim = ANIM_MAPMODEL|ANIM_LOOP, basetime = 0;
- if(e.flags&EF_ANIM) entities::animatemapmodel(e, anim, basetime);
mapmodelinfo *mmi = getmminfo(e.attr2);
if(mmi) rendermodel(&e.light, mmi->name, anim, e.o, e.attr1, 0, MDL_CULL_VFC | MDL_CULL_DIST | MDL_DYNLIGHT, NULL, NULL, basetime);
}
@@ -479,7 +478,7 @@ void renderreflectedmapmodels()
for(vtxarray *va = reflectedva; va; va = va->rnext)
{
if(va->mapmodels.empty() || va->distance > reflectdist) continue;
- loopv(va->mapmodels)
+ loopv(va->mapmodels)
{
octaentities *oe = va->mapmodels[i];
*lastmms = oe;
@@ -536,7 +535,7 @@ void rendermapmodels()
rendered = true;
oe->query = doquery && oe->distance>0 && !(++skipoq%oqmm) ? newquery(oe) : NULL;
if(oe->query) startmodelquery(oe->query);
- }
+ }
rendermapmodel(e);
e.flags &= ~EF_RENDER;
}
@@ -567,7 +566,7 @@ void rendermapmodels()
static inline bool bbinsideva(const ivec &bo, const ivec &br, vtxarray *va)
{
return bo.x >= va->bbmin.x && bo.y >= va->bbmin.y && bo.z >= va->bbmin.z &&
- br.x <= va->bbmax.x && br.y <= va->bbmax.y && br.z <= va->bbmax.z;
+ br.x <= va->bbmax.x && br.y <= va->bbmax.y && br.z <= va->bbmax.z;
}
static inline bool bboccluded(const ivec &bo, const ivec &br, cube *c, const ivec &o, int size)
@@ -654,7 +653,7 @@ void renderoutline()
drawvatris(va, 3*va->alphatris, &va->edata[3*(va->tris + va->blendtris)]);
xtravertsva += 3*va->alphatris;
}
-
+
prev = va;
}
@@ -716,7 +715,7 @@ void renderblendbrush(GLuint tex, float x, float y, float w, float h)
gle::clearebo();
gle::disablevertex();
}
-
+
void rendershadowmapreceivers()
{
SETSHADER(shadowmapreceiver);
@@ -733,7 +732,7 @@ void rendershadowmapreceivers()
glEnable(GL_BLEND);
glBlendEquation_(GL_MAX);
glBlendFunc(GL_ONE, GL_ONE);
-
+
vtxarray *prev = NULL;
for(vtxarray *va = visibleva; va; va = va->next)
{
@@ -759,7 +758,7 @@ void rendershadowmapreceivers()
glCullFace(GL_BACK);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LESS);
-
+
if(!ati_minmax_bug) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
gle::clearvbo();
@@ -785,7 +784,7 @@ void renderdepthobstacles(const vec &bbmin, const vec &bbmax, float scale, float
SETSHADER(depthfxworld);
if(!numranges) loopi(4) scales[i] = 1.0f/scale;
- else loopi(numranges)
+ else loopi(numranges)
{
scales[i] = 1.0f/scale;
offsets[i] = -ranges[i]/scale;
@@ -799,7 +798,7 @@ void renderdepthobstacles(const vec &bbmin, const vec &bbmax, float scale, float
vtxarray *prev = NULL;
for(vtxarray *va = visibleva; va; va = va->next)
{
- if(!va->texs || va->occluded >= OCCLUDE_GEOM ||
+ if(!va->texs || va->occluded >= OCCLUDE_GEOM ||
va->o.x > bbmax.x || va->o.y > bbmax.y || va->o.z > bbmax.z ||
va->o.x + va->size < bbmin.x || va->o.y + va->size < bbmin.y || va->o.z + va->size < bbmin.z)
continue;
@@ -936,10 +935,10 @@ static int firstbatch = -1, numbatches = 0;
static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, int numtexs = 0, ushort *edata = NULL)
{
- if(!texs)
- {
- texs = va->eslist;
- numtexs = va->texs;
+ if(!texs)
+ {
+ texs = va->eslist;
+ numtexs = va->texs;
edata = va->edata;
if(cur.alphaing)
{
@@ -954,7 +953,7 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i
{
firstbatch = geombatches.length();
numbatches = numtexs;
- loopi(numtexs-1)
+ loopi(numtexs-1)
{
geombatches.add(geombatch(texs[i], edata, va)).next = i+1;
edata += texs[i].length[1];
@@ -962,7 +961,7 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i
geombatches.add(geombatch(texs[numtexs-1], edata, va));
return;
}
-
+
int prevbatch = -1, curbatch = firstbatch, curtex = 0;
do
{
@@ -997,9 +996,9 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i
{
b.batch = next;
geombatches[last].batch = geombatches.length()-1;
- }
+ }
}
- else
+ else
{
numbatches++;
b.next = curbatch;
@@ -1060,7 +1059,7 @@ static void changebatchtmus(renderstate &cur, int pass, geombatch &b)
bool changed = false;
extern bool brightengeom;
extern int fullbright;
- int lmid = brightengeom && (b.es.lmid < LMID_RESERVED || (fullbright && editmode)) ? LMID_BRIGHT : b.es.lmid;
+ int lmid = brightengeom && (b.es.lmid < LMID_RESERVED || (fullbright && editmode)) ? LMID_BRIGHT : b.es.lmid;
if(cur.textures[1]!=lightmaptexs[lmid].id)
{
glActiveTexture_(GL_TEXTURE1);
@@ -1109,7 +1108,7 @@ static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot)
if(cur.alphaing)
{
float alpha = cur.alphaing > 1 ? vslot.alphafront : vslot.alphaback;
- if(cur.colorscale != vslot.colorscale || cur.alphascale != alpha)
+ if(cur.colorscale != vslot.colorscale || cur.alphascale != alpha)
{
cur.colorscale = vslot.colorscale;
cur.alphascale = alpha;
@@ -1137,7 +1136,7 @@ static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot)
glBindTexture(GL_TEXTURE_CUBE_MAP, cur.textures[envmaptmu] = t.t->id);
}
}
- else
+ else
{
if(cur.textures[tmu]!=t.t->id)
{
@@ -1215,7 +1214,7 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b)
for(geombatch *curbatch = &b;; curbatch = &geombatches[curbatch->batch])
{
ushort len = curbatch->es.length[curbatch->va->shadowed ? 0 : 1];
- if(len)
+ if(len)
{
if(rendered < 0)
{
@@ -1224,8 +1223,8 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b)
gbatches++;
}
ushort minvert = curbatch->es.minvert[0], maxvert = curbatch->es.maxvert[0];
- if(!curbatch->va->shadowed) { minvert = min(minvert, curbatch->es.minvert[1]); maxvert = max(maxvert, curbatch->es.maxvert[1]); }
- drawtris(len, curbatch->edata, minvert, maxvert);
+ if(!curbatch->va->shadowed) { minvert = min(minvert, curbatch->es.minvert[1]); maxvert = max(maxvert, curbatch->es.maxvert[1]); }
+ drawtris(len, curbatch->edata, minvert, maxvert);
vtris += len/3;
}
if(curbatch->es.length[1] > len && !shadowed) shadowed = curbatch;
@@ -1274,14 +1273,14 @@ static void renderbatches(renderstate &cur, int pass)
if(cur.vquery) disablevquery(cur);
enablevattribs(cur);
}
- }
+ }
while(curbatch >= 0)
{
geombatch &b = geombatches[curbatch];
curbatch = b.next;
if(cur.vbuf != b.va->vbuf) changevbuf(cur, pass, b.va);
- if(cur.vslot != &b.vslot)
+ if(cur.vslot != &b.vslot)
{
changeslottmus(cur, pass, *b.vslot.slot, b.vslot);
if(cur.texgendim != b.es.dim || (cur.texgendim <= 2 && cur.texgenvslot != &b.vslot)) changetexgen(cur, b.es.dim, *b.vslot.slot, b.vslot);
@@ -1298,7 +1297,7 @@ static void renderbatches(renderstate &cur, int pass)
void renderzpass(renderstate &cur, vtxarray *va)
{
if(!cur.vattribs)
- {
+ {
if(cur.vquery) disablevquery(cur);
enablevattribs(cur, false);
}
@@ -1409,7 +1408,7 @@ void renderva(renderstate &cur, vtxarray *va, int pass = RENDERPASS_LIGHTMAP, bo
drawvatris(va, 3*va->tris, va->edata);
xtravertsva += va->verts;
break;
-
+
case RENDERPASS_Z:
if(doquery) startvaquery(va, );
renderzpass(cur, va);
@@ -1498,7 +1497,7 @@ static void rendergeommultipass(renderstate &cur, int pass, bool fogpass)
{
if(!va->texs) continue;
if(refracting)
- {
+ {
if((refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) || va->occluded >= OCCLUDE_GEOM) continue;
if(ishiddencube(va->o, va->size)) continue;
}
@@ -1529,7 +1528,7 @@ void rendergeom(float causticspass, bool fogpass)
flipqueries();
vtris = vverts = 0;
}
- if(!doZP)
+ if(!doZP)
{
if(shadowmap && mainpass) rendershadowmap();
setupgeom(cur);
@@ -1567,7 +1566,7 @@ void rendergeom(float causticspass, bool fogpass)
va->occluded = pvsoccluded(va->geommin, va->geommax) ? OCCLUDE_GEOM : OCCLUDE_NOTHING;
if(va->occluded >= OCCLUDE_GEOM)
{
- if(va->query)
+ if(va->query)
{
if(!zpass && geombatches.length()) renderbatches(cur, RENDERPASS_LIGHTMAP);
if(cur.vattribs) disablevattribs(cur, !doZP);
@@ -1596,7 +1595,7 @@ void rendergeom(float causticspass, bool fogpass)
if(!cur.colormask) { cur.colormask = true; glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); }
if(!cur.depthmask) { cur.depthmask = true; glDepthMask(GL_TRUE); }
-
+
bool multipassing = false;
if(doZP)
@@ -1720,7 +1719,7 @@ void renderalphageom(bool fogpass)
{
if(va->geommax.z <= reflectz) continue;
}
- else
+ else
{
if(va->occluded >= OCCLUDE_BB) continue;
if(va->occluded >= OCCLUDE_GEOM && pvsoccluded(va->geommin, va->geommax)) continue;
@@ -1746,7 +1745,7 @@ void renderalphageom(bool fogpass)
if(cur.depthmask) { cur.depthmask = false; glDepthMask(GL_FALSE); }
cur.colormask = true;
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
-
+
if(cur.vattribs) disablevattribs(cur, false);
if(cur.vbuf) disablevbuf(cur);
@@ -1773,7 +1772,7 @@ void renderalphageom(bool fogpass)
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, fading ? GL_FALSE : GL_TRUE);
}
-
+
void findreflectedvas(vector<vtxarray *> &vas, int prevvfc = VFC_PART_VISIBLE)
{
loopv(vas)
@@ -1813,7 +1812,7 @@ void renderreflectedgeom(bool causticspass, bool fogpass)
rendergeom(causticspass ? 1 : 0, fogpass);
}
else rendergeom(causticspass ? 1 : 0, fogpass);
-}
+}
static vtxarray *prevskyva = NULL;
@@ -1855,7 +1854,7 @@ void renderreflectedskyvas(vector<vtxarray *> &vas, int prevvfc = VFC_PART_VISIB
if(prevvfc >= VFC_NOT_VISIBLE) va->curvfc = prevvfc;
if((va->curvfc == VFC_FULL_VISIBLE && va->occluded >= OCCLUDE_BB) || va->curvfc==PVS_FULL_VISIBLE) continue;
if(va->o.z+va->size <= reflectz || ishiddencube(va->o, va->size)) continue;
- if(va->sky+va->explicitsky)
+ if(va->sky+va->explicitsky)
{
updateskystats(va);
renderskyva(va);
@@ -1886,7 +1885,7 @@ bool rendersky(bool explicitonly)
if(prevskyva)
{
- gle::disablevertex();
+ gle::disablevertex();
gle::clearvbo();
gle::clearebo();
}