Lines Matching refs:va

11 static inline void drawvatris(vtxarray *va, GLsizei numindices, const GLvoid *indices)  in drawvatris()  argument
13 drawtris(numindices, indices, va->minvert, va->maxvert); in drawvatris()
82 float vadist(vtxarray *va, const vec &p) in vadist() argument
84 return p.dist_to_bb(va->bbmin, va->bbmax); in vadist()
91 void addvisibleva(vtxarray *va) in addvisibleva() argument
93 float dist = vadist(va, camera1->o); in addvisibleva()
94 va->distance = int(dist); /*cv.dist(camera1->o) - va->size*SQRT3/2*/ in addvisibleva()
99 while(cur && va->distance >= cur->distance) in addvisibleva()
105 va->next = *prev; in addvisibleva()
106 *prev = va; in addvisibleva()
115 vtxarray *va = vasort[i]; in sortvisiblevas() local
116 *last = va; in sortvisiblevas()
117 while(va->next) va = va->next; in sortvisiblevas()
118 last = &va->next; in sortvisiblevas()
204 vtxarray *va = valist[i]; in visiblecubes() local
205 va->distance = 0; in visiblecubes()
206 va->curvfc = VFC_FULL_VISIBLE; in visiblecubes()
207 va->occluded = !va->texs ? OCCLUDE_GEOM : OCCLUDE_NOTHING; in visiblecubes()
208 va->query = NULL; in visiblecubes()
209 va->next = visibleva; in visiblecubes()
210 visibleva = va; in visiblecubes()
215 static inline bool insideva(const vtxarray *va, const vec &v, int margin = 2) in insideva() argument
217 int size = va->size + margin; in insideva()
218 return v.x>=va->o.x-margin && v.y>=va->o.y-margin && v.z>=va->o.z-margin && in insideva()
219 v.x<=va->o.x+size && v.y<=va->o.y+size && v.z<=va->o.z+size; in insideva()
413 for(vtxarray *va = visibleva; va; va = va->next) in findvisiblemms() local
415 … if(va->mapmodels.empty() || va->curvfc >= VFC_FOGGED || va->occluded >= OCCLUDE_BB) continue; in findvisiblemms()
416 loopv(va->mapmodels) in findvisiblemms()
418 octaentities *oe = va->mapmodels[i]; in findvisiblemms()
507 for(vtxarray *va = reflectedva; va; va = va->rnext) in renderreflectedmapmodels() local
509 if(va->mapmodels.empty() || va->distance > reflectdist) continue; in renderreflectedmapmodels()
510 loopv(va->mapmodels) in renderreflectedmapmodels()
512 octaentities *oe = va->mapmodels[i]; in renderreflectedmapmodels()
595 static inline bool bbinsideva(const ivec &bo, const ivec &br, vtxarray *va) in bbinsideva() argument
597 return bo.x >= va->bbmin.x && bo.y >= va->bbmin.y && bo.z >= va->bbmin.z && in bbinsideva()
598 br.x <= va->bbmax.x && br.y <= va->bbmax.y && br.z <= va->bbmax.z; in bbinsideva()
606 if(c[i].ext && c[i].ext->va) in bboccluded()
608 vtxarray *va = c[i].ext->va; in bboccluded() local
609 … if(va->curvfc >= VFC_FOGGED || (va->occluded >= OCCLUDE_BB && bbinsideva(bo, br, va))) continue; in bboccluded()
624 if(c->ext && c->ext->va) in bboccluded()
626 vtxarray *va = c->ext->va; in bboccluded() local
627 …if(va->curvfc >= VFC_FOGGED || (va->occluded >= OCCLUDE_BB && bbinsideva(bo, br, va))) return true; in bboccluded()
633 if(c->ext && c->ext->va) in bboccluded()
635 vtxarray *va = c->ext->va; in bboccluded() local
636 …if(va->curvfc >= VFC_FOGGED || (va->occluded >= OCCLUDE_BB && bbinsideva(bo, br, va))) return true; in bboccluded()
662 for(vtxarray *va = visibleva; va; va = va->next) in renderoutline() local
664 if(va->occluded >= OCCLUDE_BB) continue; in renderoutline()
665 … if(!va->alphaback && !va->alphafront && (!va->texs || va->occluded >= OCCLUDE_GEOM)) continue; in renderoutline()
667 if(!prev || va->vbuf != prev->vbuf) in renderoutline()
669 gle::bindvbo(va->vbuf); in renderoutline()
670 gle::bindebo(va->ebuf); in renderoutline()
675 if(va->texs && va->occluded < OCCLUDE_GEOM) in renderoutline()
677 drawvatris(va, 3*va->tris, va->edata); in renderoutline()
678 xtravertsva += va->verts; in renderoutline()
680 if(va->alphaback || va->alphafront) in renderoutline()
682 …drawvatris(va, 3*(va->alphabacktris + va->alphafronttris), &va->edata[3*(va->tris + va->blendtris)… in renderoutline()
683 xtravertsva += 3*(va->alphabacktris + va->alphafronttris); in renderoutline()
686 prev = va; in renderoutline()
720 for(vtxarray *va = visibleva; va; va = va->next) in renderblendbrush() local
722 if(!va->texs || va->occluded >= OCCLUDE_GEOM) continue; in renderblendbrush()
723 …if(va->o.x + va->size <= x || va->o.y + va->size <= y || va->o.x >= x + w || va->o.y >= y + h) con… in renderblendbrush()
725 if(!prev || va->vbuf != prev->vbuf) in renderblendbrush()
727 gle::bindvbo(va->vbuf); in renderblendbrush()
728 gle::bindebo(va->ebuf); in renderblendbrush()
733 drawvatris(va, 3*va->tris, va->edata); in renderblendbrush()
734 xtravertsva += va->verts; in renderblendbrush()
736 prev = va; in renderblendbrush()
766 for(vtxarray *va = visibleva; va; va = va->next) in rendershadowmapreceivers() local
768 if(!va->texs || va->curvfc >= VFC_FOGGED || !isshadowmapreceiver(va)) continue; in rendershadowmapreceivers()
770 if(!prev || va->vbuf != prev->vbuf) in rendershadowmapreceivers()
772 gle::bindvbo(va->vbuf); in rendershadowmapreceivers()
773 gle::bindebo(va->ebuf); in rendershadowmapreceivers()
778 drawvatris(va, 3*va->tris, va->edata); in rendershadowmapreceivers()
779 xtravertsva += va->verts; in rendershadowmapreceivers()
781 prev = va; in rendershadowmapreceivers()
828 for(vtxarray *va = visibleva; va; va = va->next) in renderdepthobstacles() local
830 if(!va->texs || va->occluded >= OCCLUDE_GEOM || in renderdepthobstacles()
831 va->o.x > bbmax.x || va->o.y > bbmax.y || va->o.z > bbmax.z || in renderdepthobstacles()
832va->o.x + va->size < bbmin.x || va->o.y + va->size < bbmin.y || va->o.z + va->size < bbmin.z) in renderdepthobstacles()
835 if(!prev || va->vbuf != prev->vbuf) in renderdepthobstacles()
837 gle::bindvbo(va->vbuf); in renderdepthobstacles()
838 gle::bindebo(va->ebuf); in renderdepthobstacles()
843 drawvatris(va, 3*va->tris, va->edata); in renderdepthobstacles()
844 xtravertsva += va->verts; in renderdepthobstacles()
845 if(va->alphabacktris + va->alphafronttris > 0) in renderdepthobstacles()
847 …drawvatris(va, 3*(va->alphabacktris + va->alphafronttris), va->edata + 3*(va->tris + va->blendtris… in renderdepthobstacles()
848 xtravertsva += 3*(va->alphabacktris + va->alphafronttris); in renderdepthobstacles()
851 prev = va; in renderdepthobstacles()
906 static void renderquery(renderstate &cur, occludequery *query, vtxarray *va, bool full = true) in renderquery() argument
912 if(full) drawbb(ivec(va->bbmin).sub(1), ivec(va->bbmax).sub(va->bbmin).add(2)); in renderquery()
913 else drawbb(va->geommin, ivec(va->geommax).sub(va->geommin)); in renderquery()
932 vtxarray *va; member
935 geombatch(const elementset &es, ushort *edata, vtxarray *va) in geombatch()
936 : es(es), vslot(lookupvslot(es.texture)), edata(edata), va(va), in geombatch()
942 if(va->vbuf < b.va->vbuf) return -1; in compare()
943 if(va->vbuf > b.va->vbuf) return 1; in compare()
944 if(va->dynlightmask < b.va->dynlightmask) return -1; in compare()
945 if(va->dynlightmask > b.va->dynlightmask) return 1; in compare()
965 static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, int numtexs = 0, ush… in mergetexs() argument
969 texs = va->eslist; in mergetexs()
970 numtexs = va->texs; in mergetexs()
971 edata = va->edata; in mergetexs()
974 texs += va->texs + va->blends; in mergetexs()
975 edata += 3*(va->tris + va->blendtris); in mergetexs()
976 numtexs = va->alphaback; in mergetexs()
977 if(cur.alphaing > 1) numtexs += va->alphafront; in mergetexs()
987 geombatches.add(geombatch(texs[i], edata, va)).next = i+1; in mergetexs()
990 geombatches.add(geombatch(texs[numtexs-1], edata, va)); in mergetexs()
997 geombatch &b = geombatches.add(geombatch(texs[curtex], edata, va)); in mergetexs()
1068 static void changevbuf(renderstate &cur, int pass, vtxarray *va) in changevbuf() argument
1070 gle::bindvbo(va->vbuf); in changevbuf()
1071 gle::bindebo(va->ebuf); in changevbuf()
1072 cur.vbuf = va->vbuf; in changevbuf()
1120 if(cur.dynlightmask != b.va->dynlightmask) in changebatchtmus()
1122 cur.visibledynlights = setdynlights(b.va); in changebatchtmus()
1123 cur.dynlightmask = b.va->dynlightmask; in changebatchtmus()
1251 ushort len = curbatch->es.length[curbatch->va->shadowed ? 0 : 1]; in renderbatch()
1261 …if(!curbatch->va->shadowed) { minvert = min(minvert, curbatch->es.minvert[1]); maxvert = max(maxve… in renderbatch()
1270 if(curbatch->va->shadowed && curbatch->es.length[1] > curbatch->es.length[0]) in renderbatch()
1317 if(cur.vbuf != b.va->vbuf) changevbuf(cur, pass, b.va); in renderbatches()
1332 void renderzpass(renderstate &cur, vtxarray *va) in renderzpass() argument
1339 if(cur.vbuf!=va->vbuf) changevbuf(cur, RENDERPASS_Z, va); in renderzpass()
1342 int firsttex = 0, numtris = va->tris; in renderzpass()
1343 ushort *edata = va->edata; in renderzpass()
1346 firsttex += va->texs + va->blends; in renderzpass()
1347 edata += 3*(va->tris + va->blendtris); in renderzpass()
1348 numtris = va->alphabacktris + va->alphafronttris; in renderzpass()
1351 else xtravertsva += va->verts; in renderzpass()
1353 drawvatris(va, 3*numtris, edata); in renderzpass()
1358 #define startvaquery(va, flush) \ argument
1360 if(va->query) \
1363 startquery(va->query); \
1368 #define endvaquery(va, flush) \ argument
1370 if(va->query) \
1373 endquery(va->query); \
1388 vtxarray *va = foggedvas[i]; in renderfoggedvas() local
1389 if(cur.vbuf!=va->vbuf) changevbuf(cur, RENDERPASS_FOG, va); in renderfoggedvas()
1391 if(doquery) startvaquery(va, ); in renderfoggedvas()
1392 drawvatris(va, 3*va->tris, va->edata); in renderfoggedvas()
1393 vtris += va->tris; in renderfoggedvas()
1394 if(doquery) endvaquery(va, ); in renderfoggedvas()
1402 void renderva(renderstate &cur, vtxarray *va, int pass = RENDERPASS_LIGHTMAP, bool fogpass = false,… in renderva() argument
1407 if(!cur.alphaing) vverts += va->verts; in renderva()
1408 va->shadowed = false; in renderva()
1409 va->dynlightmask = 0; in renderva()
1410 if(fogpass ? va->geommax.z<=reflectz-refractfog || !refractfog : va->curvfc==VFC_FOGGED) in renderva()
1412 if(!cur.alphaing && !cur.blending) foggedvas.add(va); in renderva()
1417 va->shadowed = isshadowmapreceiver(va); in renderva()
1418 calcdynlightmask(va); in renderva()
1420 if(doquery) startvaquery(va, { if(geombatches.length()) renderbatches(cur, pass); }); in renderva()
1421 mergetexs(cur, va); in renderva()
1422 if(doquery) endvaquery(va, { if(geombatches.length()) renderbatches(cur, pass); }); in renderva()
1428 …if(doquery) startvaquery(va, { if(geombatches.length()) renderbatches(cur, RENDERPASS_LIGHTMAP); }… in renderva()
1429 mergetexs(cur, va, &va->eslist[va->texs], va->blends, va->edata + 3*va->tris); in renderva()
1430 … if(doquery) endvaquery(va, { if(geombatches.length()) renderbatches(cur, RENDERPASS_LIGHTMAP); }); in renderva()
1436 if(cur.vbuf!=va->vbuf) changevbuf(cur, pass, va); in renderva()
1437 drawvatris(va, 3*va->tris, va->edata); in renderva()
1438 xtravertsva += va->verts; in renderva()
1442 if(cur.vbuf!=va->vbuf) changevbuf(cur, pass, va); in renderva()
1443 drawvatris(va, 3*va->tris, va->edata); in renderva()
1444 xtravertsva += va->verts; in renderva()
1448 if(doquery) startvaquery(va, ); in renderva()
1449 renderzpass(cur, va); in renderva()
1450 if(doquery) endvaquery(va, ); in renderva()
1524 #define NEXTVA (reflecting ? va->rnext : va->next)
1531 for(vtxarray *va = FIRSTVA; va; va = NEXTVA) in rendergeommultipass() local
1533 if(!va->texs) continue; in rendergeommultipass()
1536 …if((refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) || va->occluded >= OCCL… in rendergeommultipass()
1537 if(ishiddencube(va->o, va->size)) continue; in rendergeommultipass()
1541 if(va->geommax.z <= reflectz) continue; in rendergeommultipass()
1543 else if(va->occluded >= OCCLUDE_GEOM) continue; in rendergeommultipass()
1544 …if(fogpass ? va->geommax.z <= reflectz-refractfog || !refractfog : va->curvfc==VFC_FOGGED) continu… in rendergeommultipass()
1545 renderva(cur, va, pass, fogpass); in rendergeommultipass()
1578 for(vtxarray *va = FIRSTVA; va; va = NEXTVA) in rendergeom() local
1580 if(!va->texs) continue; in rendergeom()
1583 …if((refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) || va->occluded >= OCCL… in rendergeom()
1584 if(ishiddencube(va->o, va->size)) continue; in rendergeom()
1588 if(va->geommax.z <= reflectz) continue; in rendergeom()
1590 else if(doOQ && (zpass || va->distance > oqdist) && !insideva(va, camera1->o)) in rendergeom()
1592 if(va->parent && va->parent->occluded >= OCCLUDE_BB) in rendergeom()
1594 va->query = NULL; in rendergeom()
1595 va->occluded = OCCLUDE_PARENT; in rendergeom()
1598va->occluded = va->query && va->query->owner == va && checkquery(va->query) ? min(va->occluded+1, … in rendergeom()
1599 va->query = newquery(va); in rendergeom()
1600 if((!va->query && zpass) || !va->occluded) in rendergeom()
1601va->occluded = pvsoccluded(va->geommin, va->geommax) ? OCCLUDE_GEOM : OCCLUDE_NOTHING; in rendergeom()
1602 if(va->occluded >= OCCLUDE_GEOM) in rendergeom()
1604 if(va->query) in rendergeom()
1609 renderquery(cur, va->query, va); in rendergeom()
1616 va->query = NULL; in rendergeom()
1617 va->occluded = pvsoccluded(va->geommin, va->geommax) ? OCCLUDE_GEOM : OCCLUDE_NOTHING; in rendergeom()
1618 if(va->occluded >= OCCLUDE_GEOM) continue; in rendergeom()
1621 if(!doZP) blends += va->blends; in rendergeom()
1622 renderva(cur, va, doZP ? RENDERPASS_Z : RENDERPASS_LIGHTMAP, fogpass, doOQ); in rendergeom()
1647 for(vtxarray *va = visibleva; va; va = va->next) in rendergeom() local
1649 if(!va->texs || va->occluded >= OCCLUDE_GEOM) continue; in rendergeom()
1650 blends += va->blends; in rendergeom()
1651 renderva(cur, va, RENDERPASS_LIGHTMAP, fogpass); in rendergeom()
1654 for(vtxarray *va = visibleva; va; va = va->next) in rendergeom() local
1656 if(!va->texs || va->occluded < OCCLUDE_GEOM) continue; in rendergeom()
1657 else if((va->parent && va->parent->occluded >= OCCLUDE_BB) || in rendergeom()
1658 (va->query && checkquery(va->query))) in rendergeom()
1660 va->occluded = OCCLUDE_BB; in rendergeom()
1665va->occluded = pvsoccluded(va->geommin, va->geommax) ? OCCLUDE_GEOM : OCCLUDE_NOTHING; in rendergeom()
1666 if(va->occluded >= OCCLUDE_GEOM) continue; in rendergeom()
1669 blends += va->blends; in rendergeom()
1670 renderva(cur, va, RENDERPASS_LIGHTMAP, fogpass); in rendergeom()
1687 for(vtxarray *va = FIRSTVA; va; va = NEXTVA) in rendergeom() local
1689 if(!va->blends) continue; in rendergeom()
1692 if(refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) continue; in rendergeom()
1693 if(ishiddencube(va->o, va->size)) continue; in rendergeom()
1694 if(va->occluded >= OCCLUDE_GEOM) continue; in rendergeom()
1698 if(va->geommax.z <= reflectz) continue; in rendergeom()
1700 else if(va->occluded >= OCCLUDE_GEOM) continue; in rendergeom()
1701 …if(fogpass ? va->geommax.z <= reflectz-refractfog || !refractfog : va->curvfc==VFC_FOGGED) continu… in rendergeom()
1702 renderva(cur, va, RENDERPASS_LIGHTMAP_BLEND, fogpass); in rendergeom()
1744 for(vtxarray *va = FIRSTVA; va; va = NEXTVA) in renderalphageom() local
1746 if(!va->alphabacktris && !va->alphafronttris) continue; in renderalphageom()
1749 …if((refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) || va->occluded >= OCCL… in renderalphageom()
1750 if(ishiddencube(va->o, va->size)) continue; in renderalphageom()
1751 if(va->occluded >= OCCLUDE_GEOM && pvsoccluded(va->geommin, va->geommax)) continue; in renderalphageom()
1755 if(va->geommax.z <= reflectz) continue; in renderalphageom()
1759 if(va->occluded >= OCCLUDE_BB) continue; in renderalphageom()
1760 if(va->occluded >= OCCLUDE_GEOM && pvsoccluded(va->geommin, va->geommax)) continue; in renderalphageom()
1762 …if(fogpass ? va->geommax.z <= reflectz-refractfog || !refractfog : va->curvfc==VFC_FOGGED) continu… in renderalphageom()
1763 alphavas.add(va); in renderalphageom()
1764 if(va->alphabacktris) hasback = true; in renderalphageom()
1815 vtxarray *va = vas[i]; in findreflectedvas() local
1816 if(prevvfc >= VFC_NOT_VISIBLE) va->curvfc = prevvfc; in findreflectedvas()
1817 …if(va->curvfc == VFC_FOGGED || va->curvfc == PVS_FOGGED || va->o.z+va->size <= reflectz || isfogge… in findreflectedvas()
1819 if(va->curvfc == VFC_FULL_VISIBLE) in findreflectedvas()
1821 if(va->occluded >= OCCLUDE_BB) continue; in findreflectedvas()
1822 if(va->occluded >= OCCLUDE_GEOM) render = false; in findreflectedvas()
1824 else if(va->curvfc == PVS_FULL_VISIBLE) continue; in findreflectedvas()
1827 if(va->curvfc >= VFC_NOT_VISIBLE) va->distance = (int)vadist(va, camera1->o); in findreflectedvas()
1829 while(vcur && va->distance > vcur->distance) in findreflectedvas()
1834 va->rnext = *vprev; in findreflectedvas()
1835 *vprev = va; in findreflectedvas()
1837 if(va->children.length()) findreflectedvas(va->children, va->curvfc); in findreflectedvas()
1854 void renderskyva(vtxarray *va, bool explicitonly = false) in renderskyva() argument
1856 if(!prevskyva || va->vbuf != prevskyva->vbuf) in renderskyva()
1858 gle::bindvbo(va->vbuf); in renderskyva()
1859 gle::bindebo(va->skybuf); in renderskyva()
1865 …drawvatris(va, explicitonly ? va->explicitsky : va->sky+va->explicitsky, explicitonly ? va->skydat… in renderskyva()
1867 if(!explicitonly) xtraverts += va->sky/3; in renderskyva()
1868 xtraverts += va->explicitsky/3; in renderskyva()
1870 prevskyva = va; in renderskyva()
1875 static inline void updateskystats(vtxarray *va) in updateskystats() argument
1877 renderedsky += va->sky; in updateskystats()
1878 renderedexplicitsky += va->explicitsky; in updateskystats()
1879 renderedskyfaces |= va->skyfaces&0x3F; in updateskystats()
1880 …if(!(va->skyfaces&0x1F) || camera1->o.z < va->skyclip) renderedskyclip = min(renderedskyclip, va->… in updateskystats()
1888 vtxarray *va = vas[i]; in renderreflectedskyvas() local
1889 if(prevvfc >= VFC_NOT_VISIBLE) va->curvfc = prevvfc; in renderreflectedskyvas()
1890 …if((va->curvfc == VFC_FULL_VISIBLE && va->occluded >= OCCLUDE_BB) || va->curvfc==PVS_FULL_VISIBLE)… in renderreflectedskyvas()
1891 if(va->o.z+va->size <= reflectz || ishiddencube(va->o, va->size)) continue; in renderreflectedskyvas()
1892 if(va->sky+va->explicitsky) in renderreflectedskyvas()
1894 updateskystats(va); in renderreflectedskyvas()
1895 renderskyva(va); in renderreflectedskyvas()
1897 if(va->children.length()) renderreflectedskyvas(va->children, va->curvfc); in renderreflectedskyvas()
1911 else for(vtxarray *va = visibleva; va; va = va->next) in rendersky() local
1913 … if((va->occluded >= OCCLUDE_BB && va->skyfaces&0x80) || !(va->sky+va->explicitsky)) continue; in rendersky()
1916 updateskystats(va); in rendersky()
1917 if(explicitonly && !va->explicitsky) continue; in rendersky()
1918 renderskyva(va, explicitonly); in rendersky()