diff options
Diffstat (limited to 'src/engine/renderva.cpp')
| -rw-r--r-- | src/engine/renderva.cpp | 83 |
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(); } |
