summaryrefslogtreecommitdiff
path: root/src/engine/renderva.cpp
diff options
context:
space:
mode:
authorxolatile2025-08-17 18:28:28 +0200
committerxolatile2025-08-17 18:28:28 +0200
commitbffe8d11bd1dfec49280fb64a17f0ae529ac3f5d (patch)
tree9f4f7b6f5003585e5a170bd55ccaa335b8f26f90 /src/engine/renderva.cpp
parentbec4167d29a68efd0cd2da36143e7f1c78a119a0 (diff)
downloadxolatile-badassbug-master.tar.xz
xolatile-badassbug-master.tar.zst
Compiles, removed a lot of code, do not run it...HEADmaster
Diffstat (limited to 'src/engine/renderva.cpp')
-rw-r--r--src/engine/renderva.cpp78
1 files changed, 7 insertions, 71 deletions
diff --git a/src/engine/renderva.cpp b/src/engine/renderva.cpp
index be57ab3..16ad334 100644
--- a/src/engine/renderva.cpp
+++ b/src/engine/renderva.cpp
@@ -30,11 +30,6 @@ int isvisiblesphere(float rad, const vec &cv) {
return v;
}
-static inline int ishiddencube(const ivec &o, int size) {
- loopi(5) if(o.dist(vfcP[i]) < -vfcDfar[i]*size) return true;
- return false;
-}
-
int isvisiblecube(const ivec &o, int size) {
int v = VFC_FULL_VISIBLE;
float dist;
@@ -477,41 +472,6 @@ void renderoutline() {
gle::disablevertex();
}
-void rendershadowmapreceivers() {
- SETSHADER(shadowmapreceiver);
- gle::enablevertex();
- glCullFace(GL_FRONT);
- glDepthMask(GL_FALSE);
- glDepthFunc(GL_GREATER);
- extern int ati_minmax_bug;
- if(!ati_minmax_bug) glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_FALSE);
- glEnable(GL_BLEND);
- glBlendEquation_(GL_MAX);
- glBlendFunc(GL_ONE, GL_ONE);
- vtxarray *prev = NULL;
- for(vtxarray *va = visibleva; va; va = va->next) {
- if(!va->texs || !isshadowmapreceiver(va)) continue;
- if(!prev || va->vbuf != prev->vbuf) {
- gle::bindvbo(va->vbuf);
- gle::bindebo(va->ebuf);
- const vertex *ptr = 0;
- gle::vertexpointer(sizeof(vertex), ptr->pos.v);
- }
- drawvatris(va, 3*va->tris, va->edata);
- xtravertsva += va->verts;
- prev = va;
- }
- glDisable(GL_BLEND);
- glBlendEquation_(GL_FUNC_ADD);
- glCullFace(GL_BACK);
- glDepthMask(GL_TRUE);
- glDepthFunc(GL_LESS);
- if(!ati_minmax_bug) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- gle::clearvbo();
- gle::clearebo();
- gle::disablevertex();
-}
-
VAR(oqdist, 0, 256, 1024);
VAR(zpass, 0, 1, 1);
VAR(envpass, 0, 1, 1);
@@ -528,7 +488,8 @@ struct renderstate {
VSlot *vslot, *texgenvslot;
vec2 texgenscroll;
int texgendim;
- renderstate() : colormask(true), depthmask(true), blending(false), alphaing(0), vbuf(0), vattribs(false), vquery(false), colorscale(1, 1, 1), alphascale(0), slot(NULL), texgenslot(NULL), vslot(NULL), texgenvslot(NULL), texgenscroll(0, 0), texgendim(-1) {
+ renderstate() : colormask(true), depthmask(true), blending(false), alphaing(0), vbuf(0), vattribs(false), vquery(false), colorscale(1, 1, 1), alphascale(0),
+ slot(NULL), texgenslot(NULL), vslot(NULL), texgenvslot(NULL), texgenscroll(0, 0), texgendim(-1) {
loopk(8) textures[k] = 0;
}
};
@@ -779,33 +740,19 @@ static void changetexgen(renderstate &cur, int dim, Slot &slot, VSlot &vslot) {
}
static void renderbatch(geombatch &b) {
- geombatch *shadowed = NULL;
int rendered = -1;
for(geombatch *curbatch = &b;; curbatch = &geombatches[curbatch->batch]) {
- ushort len = curbatch->es.length[curbatch->va->shadowed ? 0 : 1];
+ ushort len = curbatch->es.length[1];
if(len) {
if(rendered < 0) {
rendered = 0;
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]); }
+ 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;
- if(curbatch->batch < 0) break;
- }
- if(shadowed) for(geombatch *curbatch = shadowed;; curbatch = &geombatches[curbatch->batch]) {
- if(curbatch->va->shadowed && curbatch->es.length[1] > curbatch->es.length[0]) {
- if(rendered < 1) {
- rendered = 1;
- gbatches++;
- }
- ushort len = curbatch->es.length[1] - curbatch->es.length[0];
- drawtris(len, curbatch->edata + curbatch->es.length[0], curbatch->es.minvert[1], curbatch->es.maxvert[1]);
- vtris += len/3;
- }
if(curbatch->batch < 0) break;
}
}
@@ -854,10 +801,9 @@ void renderzpass(renderstate &cur, vtxarray *va) {
if(cur.vbuf!=va->vbuf) changevbuf(cur, RENDERPASS_Z, va);
if(!cur.depthmask) { cur.depthmask = true; glDepthMask(GL_TRUE); }
if(cur.colormask) { cur.colormask = false; glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); }
- int firsttex = 0, numtris = va->tris;
+ int numtris = va->tris;
ushort *edata = va->edata;
if(cur.alphaing) {
- firsttex += va->texs + va->blends;
edata += 3*(va->tris + va->blendtris);
numtris = va->alphatris;
xtravertsva += 3*numtris;
@@ -891,10 +837,6 @@ void renderva(renderstate &cur, vtxarray *va, int pass = RENDERPASS_LIGHTMAP, bo
switch(pass) {
case RENDERPASS_LIGHTMAP:
if(!cur.alphaing) vverts += va->verts;
- va->shadowed = false;
- if(!drawtex && !cur.alphaing) {
- va->shadowed = isshadowmapreceiver(va);
- }
if(doquery) startvaquery(va, { if(geombatches.length()) renderbatches(cur, pass); });
mergetexs(cur, va);
if(doquery) endvaquery(va, { if(geombatches.length()) renderbatches(cur, pass); });
@@ -939,17 +881,14 @@ VAR(oqgeom, 0, 1, 1);
void rendergeom(void) {
bool mainpass = !drawtex,
doOQ = oqfrags && oqgeom && mainpass,
- doZP = doOQ && zpass,
- doSM = shadowmap && !drawtex;
+ doZP = doOQ && zpass;
renderstate cur;
if(mainpass) {
flipqueries();
vtris = vverts = 0;
}
if(!doZP) {
- if(shadowmap && mainpass) rendershadowmap();
setupgeom();
- if(doSM) pushshadowmap();
}
resetbatches();
int blends = 0;
@@ -974,8 +913,7 @@ void rendergeom(void) {
}
continue;
}
- }
- else {
+ } else {
va->query = NULL;
va->occluded = OCCLUDE_NOTHING;
}
@@ -991,9 +929,7 @@ void rendergeom(void) {
bool multipassing = false;
if(doZP) {
glFlush();
- if(shadowmap && mainpass) rendershadowmap();
setupgeom();
- if(doSM) pushshadowmap();
if(!multipassing) { multipassing = true; glDepthFunc(GL_LEQUAL); }
cur.texgendim = -1;
for(vtxarray *va = visibleva; va; va = va->next) {