diff options
| author | xolatile | 2025-08-05 15:27:57 +0200 |
|---|---|---|
| committer | xolatile | 2025-08-05 15:27:57 +0200 |
| commit | 9234eeb1d2954a3dae6c84ffa8ed8643953272c5 (patch) | |
| tree | f2253bac389d743ba8582139901c782f7afde4cc /src/engine/octarender.cpp | |
| parent | a2a16b85572b1d28b0cd4901ea7348750732a740 (diff) | |
| download | xolatile-badassbug-9234eeb1d2954a3dae6c84ffa8ed8643953272c5.tar.xz xolatile-badassbug-9234eeb1d2954a3dae6c84ffa8ed8643953272c5.tar.zst | |
Experimental MD3 to OBJ to IQM converter and code removal, shit compiles...
Diffstat (limited to 'src/engine/octarender.cpp')
| -rw-r--r-- | src/engine/octarender.cpp | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/src/engine/octarender.cpp b/src/engine/octarender.cpp index d577193..9253379 100644 --- a/src/engine/octarender.cpp +++ b/src/engine/octarender.cpp @@ -169,15 +169,15 @@ enum struct sortkey { - ushort tex, lmid, envmap; + ushort tex, lmid; uchar dim, layer, alpha; sortkey() {} - sortkey(ushort tex, ushort lmid, uchar dim, uchar layer = LAYER_TOP, ushort envmap = EMID_NONE, uchar alpha = NO_ALPHA) - : tex(tex), lmid(lmid), envmap(envmap), dim(dim), layer(layer), alpha(alpha) + sortkey(ushort tex, ushort lmid, uchar dim, uchar layer = LAYER_TOP, uchar alpha = NO_ALPHA) + : tex(tex), lmid(lmid), dim(dim), layer(layer), alpha(alpha) {} - bool operator==(const sortkey &o) const { return tex==o.tex && lmid==o.lmid && envmap==o.envmap && dim==o.dim && layer==o.layer && alpha==o.alpha; } + bool operator==(const sortkey &o) const { return tex==o.tex && lmid==o.lmid && dim==o.dim && layer==o.layer && alpha==o.alpha; } }; struct sortval @@ -301,7 +301,7 @@ struct vacollect : verthash t.tris[l][j] = addvert(vtx2); } } - sortval *dst = indices.access(sortkey(k.tex, t.unlit, k.dim, k.layer, k.envmap, k.alpha)); + sortval *dst = indices.access(sortkey(k.tex, t.unlit, k.dim, k.layer, k.alpha)); if(dst) loopl(2) loopvj(t.tris[l]) dst->tris[l].add(t.tris[l][j]); } } @@ -314,7 +314,7 @@ struct vacollect : verthash { if(k.lmid>=LMID_RESERVED && lightmaptexs[k.lmid].unlitx>=0) { - sortkey ukey(k.tex, LMID_AMBIENT, k.dim, k.layer, k.envmap, k.alpha); + sortkey ukey(k.tex, LMID_AMBIENT, k.dim, k.layer, k.alpha); sortval *uval = indices.access(ukey); if(uval && uval->unlit<=0) { @@ -349,8 +349,6 @@ struct vacollect : verthash { if(x.lmid < y.lmid) return true; if(x.lmid > y.lmid) return false; - if(x.envmap < y.envmap) return true; - if(x.envmap > y.envmap) return false; if(x.dim < y.dim) return true; if(x.dim > y.dim) return false; return false; @@ -435,7 +433,6 @@ struct vacollect : verthash e.lmid = t.unlit>0 ? t.unlit : k.lmid; e.dim = k.dim; e.layer = k.layer; - e.envmap = k.envmap; ushort *startbuf = curbuf; loopl(2) { @@ -463,7 +460,6 @@ struct vacollect : verthash Slot &slot = *lookupvslot(k.tex, false).slot; loopvj(slot.sts) va->texmask |= 1<<slot.sts[j].type; - if(slot.shader->type&SHADER_ENVMAP) va->texmask |= 1<<TEX_ENVMAP; } } @@ -712,7 +708,7 @@ void guessnormals(const vec *pos, int numverts, vec *normals) normals[3] = n2; } -void addcubeverts(VSlot &vslot, int orient, int size, vec *pos, int convex, ushort texture, ushort lmid, vertinfo *vinfo, int numverts, int tj = -1, ushort envmap = EMID_NONE, int grassy = 0, bool alpha = false, int layer = LAYER_TOP) +void addcubeverts(VSlot &vslot, int orient, int size, vec *pos, int convex, ushort texture, ushort lmid, vertinfo *vinfo, int numverts, int tj = -1, int grassy = 0, bool alpha = false, int layer = LAYER_TOP) { (void) grassy; int dim = dimension(orient); @@ -755,7 +751,7 @@ void addcubeverts(VSlot &vslot, int orient, int size, vec *pos, int convex, usho } else { - v.norm = vinfo && vinfo[k].norm && envmap != EMID_NONE ? bvec(decodenormal(vinfo[k].norm)) : bvec(128, 128, 255); + v.norm = bvec(128, 128, 255); v.tangent = bvec4(255, 128, 128, 255); } index[k] = vc.addvert(v); @@ -764,7 +760,7 @@ void addcubeverts(VSlot &vslot, int orient, int size, vec *pos, int convex, usho if(lmid >= LMID_RESERVED) lmid = lm ? lm->tex : LMID_AMBIENT; - sortkey key(texture, lmid, !vslot.scroll.iszero() ? dim : 3, layer == LAYER_BLEND ? LAYER_BLEND : LAYER_TOP, envmap, alpha ? (vslot.alphaback ? ALPHA_BACK : (vslot.alphafront ? ALPHA_FRONT : NO_ALPHA)) : NO_ALPHA); + sortkey key(texture, lmid, !vslot.scroll.iszero() ? dim : 3, layer == LAYER_BLEND ? LAYER_BLEND : LAYER_TOP, alpha ? (vslot.alphaback ? ALPHA_BACK : (vslot.alphafront ? ALPHA_FRONT : NO_ALPHA)) : NO_ALPHA); addtris(key, orient, verts, index, numverts, convex, shadowmask, tj); } @@ -954,19 +950,17 @@ void gencubeverts(cube &c, const ivec &co, int size, int csi) VSlot &vslot = lookupvslot(c.texture[i], true), *layer = vslot.layer && !(c.material&MAT_ALPHA) ? &lookupvslot(vslot.layer, true) : NULL; - ushort envmap = vslot.slot->shader->type&SHADER_ENVMAP ? (int) (vslot.slot->texmask&(1<<TEX_ENVMAP) ? (int) EMID_CUSTOM : (int) closestenvmap(i, co, size)) : (int) EMID_NONE, - envmap2 = layer && layer->slot->shader->type&SHADER_ENVMAP ? (int) (layer->slot->texmask&(1<<TEX_ENVMAP) ? (int) EMID_CUSTOM : (int) closestenvmap(i, co, size)) : (int) EMID_NONE; while(tj >= 0 && tjoints[tj].edge < i*(MAXFACEVERTS+1)) tj = tjoints[tj].next; int hastj = tj >= 0 && tjoints[tj].edge < (i+1)*(MAXFACEVERTS+1) ? tj : -1; if(!c.ext) - addcubeverts(vslot, i, size, pos, convex, c.texture[i], LMID_AMBIENT, NULL, numverts, hastj, envmap, 0, (c.material&MAT_ALPHA)!=0); + addcubeverts(vslot, i, size, pos, convex, c.texture[i], LMID_AMBIENT, NULL, numverts, hastj, 0, (c.material&MAT_ALPHA)!=0); else { const surfaceinfo &surf = c.ext->surfaces[i]; if(!surf.numverts || surf.numverts&LAYER_TOP) - addcubeverts(vslot, i, size, pos, convex, c.texture[i], surf.lmid[0], verts, numverts, hastj, envmap, 0, (c.material&MAT_ALPHA)!=0, LAYER_TOP|(surf.numverts&LAYER_BLEND)); + addcubeverts(vslot, i, size, pos, convex, c.texture[i], surf.lmid[0], verts, numverts, hastj, 0, (c.material&MAT_ALPHA)!=0, LAYER_TOP|(surf.numverts&LAYER_BLEND)); if(surf.numverts&LAYER_BOTTOM) - addcubeverts(layer ? *layer : vslot, i, size, pos, convex, vslot.layer, surf.lmid[1], surf.numverts&LAYER_DUP ? verts + numverts : verts, numverts, hastj, envmap2); + addcubeverts(layer ? *layer : vslot, i, size, pos, convex, vslot.layer, surf.lmid[1], surf.numverts&LAYER_DUP ? verts + numverts : verts, numverts, hastj); } } } @@ -1074,7 +1068,7 @@ void updatevabbs(bool force) struct mergedface { uchar orient, lmid, numverts; - ushort mat, tex, envmap; + ushort mat, tex; vertinfo *verts; int tjoints; }; @@ -1100,7 +1094,6 @@ int genmergedfaces(cube &c, const ivec &co, int size, int minlevel = -1) mf.orient = i; mf.mat = c.material; mf.tex = c.texture[i]; - mf.envmap = EMID_NONE; mf.lmid = surf.lmid[0]; mf.numverts = surf.numverts; mf.verts = c.ext->verts() + surf.verts; @@ -1115,15 +1108,11 @@ int genmergedfaces(cube &c, const ivec &co, int size, int minlevel = -1) VSlot &vslot = lookupvslot(mf.tex, true), *layer = vslot.layer && !(c.material&MAT_ALPHA) ? &lookupvslot(vslot.layer, true) : NULL; - if(vslot.slot->shader->type&SHADER_ENVMAP) - mf.envmap = vslot.slot->texmask&(1<<TEX_ENVMAP) ? (int) EMID_CUSTOM : (int) closestenvmap(i, co, size); - ushort envmap2 = layer && layer->slot->shader->type&SHADER_ENVMAP ? (int) (layer->slot->texmask&(1<<TEX_ENVMAP) ? (int) EMID_CUSTOM : (int) closestenvmap(i, co, size)) : (int) EMID_NONE; if(surf.numverts&LAYER_TOP) vamerges[level].add(mf); if(surf.numverts&LAYER_BOTTOM) { mf.tex = vslot.layer; - mf.envmap = envmap2; mf.lmid = surf.lmid[1]; mf.numverts &= ~LAYER_TOP; if(surf.numverts&LAYER_DUP) mf.verts += numverts; @@ -1173,7 +1162,7 @@ void addmergedverts(int level, const ivec &o) pos[i] = vec(v.x, v.y, v.z).mul(1.0f/8).add(vo); } VSlot &vslot = lookupvslot(mf.tex, true); - addcubeverts(vslot, mf.orient, 1<<level, pos, 0, mf.tex, mf.lmid, mf.verts, numverts, mf.tjoints, mf.envmap, 0, (mf.mat&MAT_ALPHA)!=0, mf.numverts&LAYER_BLEND); + addcubeverts(vslot, mf.orient, 1<<level, pos, 0, mf.tex, mf.lmid, mf.verts, numverts, mf.tjoints, 0, (mf.mat&MAT_ALPHA)!=0, mf.numverts&LAYER_BLEND); vahasmerges |= MERGE_USE; } mfl.setsize(0); |
