diff options
Diffstat (limited to 'src/engine/decal.cpp')
| -rw-r--r-- | src/engine/decal.cpp | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/engine/decal.cpp b/src/engine/decal.cpp index 98787dd..fb70ebf 100644 --- a/src/engine/decal.cpp +++ b/src/engine/decal.cpp @@ -73,7 +73,7 @@ struct decalrenderer maxdecals = tris; tex = textureload(texname, 3); maxverts = tris*3 + 3; - availverts = maxverts - 3; + availverts = maxverts - 3; verts = new decalvert[maxverts]; } @@ -102,7 +102,7 @@ struct decalrenderer decalinfo &d = decals[startdecal]; startdecal++; if(startdecal >= maxdecals) startdecal = 0; - + int removed = d.endvert < d.startvert ? maxverts - (d.startvert - d.endvert) : d.endvert - d.startvert; startvert = d.endvert; if(startvert==endvert) startvert = endvert = lastvert = 0; @@ -123,7 +123,7 @@ struct decalrenderer bvec4 color(rgb, alpha); decalvert *vert = &verts[d.startvert], - *end = &verts[d.endvert < d.startvert ? maxverts : d.endvert]; + *end = &verts[d.endvert < d.startvert ? maxverts : d.endvert]; while(vert < end) { vert->color = color; @@ -162,7 +162,7 @@ struct decalrenderer availverts = endvert < startvert ? startvert - endvert - 3 : maxverts - 3 - (endvert - startvert); dirty = true; } - + void fadeindecals() { if(!fadeintime) return; @@ -214,7 +214,7 @@ struct decalrenderer } } } - + static void setuprenderstate() { enablepolygonoffset(GL_POLYGON_OFFSET_FILL); @@ -245,12 +245,12 @@ struct decalrenderer { if(startvert==endvert) return; - if(flags&DF_OVERBRIGHT) + if(flags&DF_OVERBRIGHT) { - glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); + glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); SETSHADER(overbrightdecal); } - else + else { if(flags&DF_INVMOD) { glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); zerofogcolor(); } else if(flags&DF_ADD) { glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR); zerofogcolor(); } @@ -264,7 +264,7 @@ struct decalrenderer if(!vbo) { glGenBuffers_(1, &vbo); dirty = true; } gle::bindvbo(vbo); - + int count = endvert < startvert ? maxverts - startvert : endvert - startvert; if(dirty) { @@ -388,9 +388,9 @@ struct decalrenderer void gentris(cube &cu, int orient, const ivec &o, int size, materialsurface *mat = NULL, int vismask = 0) { - vec pos[MAXFACEVERTS+4]; + vec pos[MAXFACEVERTS+4] = { vec(0, 0, 0) }; int numverts = 0, numplanes = 1; - vec planes[2]; + vec planes[2] = { vec(0, 0, 0) }; if(mat) { planes[0] = vec(0, 0, 0); @@ -405,7 +405,7 @@ struct decalrenderer pos[numverts++] = vec(x xv, y yv, z zv); GENFACEVERTS(o.x, o.x, o.y, o.y, o.z, o.z, , + mat->csize, , + mat->rsize, + 0.1f, - 0.1f); #undef GENFACEORIENT - #undef GENFACEVERT + #undef GENFACEVERT } } else if(cu.texture[orient] == DEFAULT_SKY) return; @@ -434,7 +434,7 @@ struct decalrenderer if(vis&2) pos[numverts++] = vec(v[(order+3)&3]).mul(size/8.0f).add(vo); planes[0].cross(pos[0], pos[1], pos[2]).normalize(); if(convex) { planes[1].cross(pos[0], pos[2], pos[3]).normalize(); numplanes++; } - } + } else return; loopl(numplanes) @@ -467,7 +467,7 @@ struct decalrenderer int numv; if(numplanes >= 2) { - if(l) { pos[1] = pos[2]; pos[2] = pos[3]; } + if(l) { pos[1] = pos[2]; pos[2] = pos[3]; } numv = clip(pos, 3, pt, ptc - decalradius, ptc + decalradius, v1); if(numv<3) continue; } @@ -521,13 +521,13 @@ struct decalrenderer m.o[r] + m.rsize >= bbmin[r] && m.o[r] <= bbmax[r]) { static cube dummy; - gentris(dummy, m.orient, m.o, max(m.csize, m.rsize), &m); + gentris(dummy, m.orient, m.o, max(m.csize, m.rsize), &m); } if(i+1 >= matsurfs) break; materialsurface &n = matbuf[i+1]; if(n.material != m.material || n.orient != m.orient) break; i++; - } + } } } @@ -535,8 +535,8 @@ struct decalrenderer { loopi(8) { - if(escaped&(1<<i)) - { + if(escaped&(1<<i)) + { ivec co(i, o, size); if(cu[i].children) findescaped(cu[i].children, co, size>>1, cu[i].escaped); else @@ -544,14 +544,14 @@ struct decalrenderer int vismask = cu[i].merged; if(vismask) loopj(6) if(vismask&(1<<j)) gentris(cu[i], j, co, size); } - } + } } } void gentris(cube *cu, const ivec &o, int size, int escaped = 0) { int overlap = octaboxoverlap(o, size, bbmin, bbmax); - loopi(8) + loopi(8) { if(overlap&(1<<i)) { @@ -559,7 +559,7 @@ struct decalrenderer if(cu[i].ext && cu[i].ext->va && cu[i].ext->va->matsurfs) findmaterials(cu[i].ext->va); if(cu[i].children) gentris(cu[i].children, co, size>>1, cu[i].escaped); - else + else { int vismask = cu[i].visible; if(vismask&0xC0) @@ -578,7 +578,7 @@ struct decalrenderer int vismask = cu[i].merged; if(vismask) loopj(6) if(vismask&(1<<j)) gentris(cu[i], j, co, size); } - } + } } } }; @@ -639,4 +639,4 @@ void adddecal(int type, const vec ¢er, const vec &surface, float radius, con decalrenderer &d = decals[type]; d.adddecal(center, surface, radius, color, info); } - + |
