From 757096e7df15c14b9b10352fa91663483f9e34f8 Mon Sep 17 00:00:00 2001 From: xolatile Date: Sun, 10 Aug 2025 00:19:46 +0200 Subject: all --- src/engine/renderva.cpp | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) (limited to 'src/engine/renderva.cpp') diff --git a/src/engine/renderva.cpp b/src/engine/renderva.cpp index dada6d3..a98614a 100644 --- a/src/engine/renderva.cpp +++ b/src/engine/renderva.cpp @@ -528,9 +528,7 @@ struct renderstate { VSlot *vslot, *texgenvslot; vec2 texgenscroll; int texgendim; - int visibledynlights; - uint dynlightmask; - 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), visibledynlights(0), dynlightmask(0) { + 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; } }; @@ -580,8 +578,6 @@ struct geombatch { int compare(const geombatch &b) const { if(va->vbuf < b.va->vbuf) return -1; if(va->vbuf > b.va->vbuf) return 1; - if(va->dynlightmask < b.va->dynlightmask) return -1; - if(va->dynlightmask > b.va->dynlightmask) return 1; if(vslot.slot->shader < b.vslot.slot->shader) return -1; if(vslot.slot->shader > b.vslot.slot->shader) return 1; if(vslot.slot->params.length() < b.vslot.slot->params.length()) return -1; @@ -718,10 +714,6 @@ static void changebatchtmus(renderstate &cur, int pass, geombatch &b) { tmu++; } if(changed) glActiveTexture_(GL_TEXTURE0); - if(cur.dynlightmask != b.va->dynlightmask) { - cur.visibledynlights = setdynlights(b.va); - cur.dynlightmask = b.va->dynlightmask; - } } static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot) { @@ -758,16 +750,6 @@ static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot) cur.vslot = &vslot; } -static void changeshader(renderstate &cur, Shader *s, Slot &slot, VSlot &vslot, bool shadowed) { - if(!cur.blending && !cur.alphaing) { - if(shadowed) s->setvariant(cur.visibledynlights, 3, slot, vslot); - else s->setvariant(cur.visibledynlights, 2, slot, vslot); - } - else if(shadowed) s->setvariant(cur.visibledynlights, 1, slot, vslot); - else if(!cur.visibledynlights) s->set(slot, vslot); - else s->setvariant(cur.visibledynlights-1, 0, slot, vslot); -} - static void changetexgen(renderstate &cur, int dim, Slot &slot, VSlot &vslot) { if(cur.texgenslot != &slot || cur.texgenvslot != &vslot) { Texture *curtex = !cur.texgenslot || cur.texgenslot->sts.empty() ? notexture : cur.texgenslot->sts[0].t, @@ -803,7 +785,6 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b) { ushort len = curbatch->es.length[curbatch->va->shadowed ? 0 : 1]; if(len) { if(rendered < 0) { - changeshader(cur, b.vslot.slot->shader, *b.vslot.slot, b.vslot, false); rendered = 0; gbatches++; } @@ -818,7 +799,6 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b) { 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) { - changeshader(cur, b.vslot.slot->shader, *b.vslot.slot, b.vslot, true); rendered = 1; gbatches++; } @@ -912,10 +892,8 @@ void renderva(renderstate &cur, vtxarray *va, int pass = RENDERPASS_LIGHTMAP, bo case RENDERPASS_LIGHTMAP: if(!cur.alphaing) vverts += va->verts; va->shadowed = false; - va->dynlightmask = 0; if(!drawtex && !cur.alphaing) { va->shadowed = isshadowmapreceiver(va); - calcdynlightmask(va); } if(doquery) startvaquery(va, { if(geombatches.length()) renderbatches(cur, pass); }); mergetexs(cur, va); @@ -943,7 +921,7 @@ void cleanupva() { cleanupbb(); } -void setupgeom(renderstate &cur) { +void setupgeom() { GLOBALPARAMF(colorparams, 2, 2, 2, 1); GLOBALPARAM(camera, camera1->o); GLOBALPARAMF(ambient, ambientcolor.x/255.0f, ambientcolor.y/255.0f, ambientcolor.z/255.0f); @@ -970,10 +948,9 @@ void rendergeom(void) { } if(!doZP) { if(shadowmap && mainpass) rendershadowmap(); - setupgeom(cur); + setupgeom(); if(doSM) pushshadowmap(); } - finddynlights(); resetbatches(); int blends = 0; for(vtxarray *va = visibleva; va; va = va->next) { @@ -1015,7 +992,7 @@ void rendergeom(void) { if(doZP) { glFlush(); if(shadowmap && mainpass) rendershadowmap(); - setupgeom(cur); + setupgeom(); if(doSM) pushshadowmap(); if(!multipassing) { multipassing = true; glDepthFunc(GL_LEQUAL); } cur.texgendim = -1; @@ -1087,7 +1064,7 @@ void renderalphageom(void) { glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); if(cur.vattribs) disablevattribs(cur, false); if(cur.vbuf) disablevbuf(cur); - setupgeom(cur); + setupgeom(); glDepthFunc(GL_LEQUAL); glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); -- cgit v1.2.3