Körülbelül a 3D renderelés gondolatával együtt születhetett meg a kérdés, hogy hogyan lehet elfedni/megtalálni (és esetleg kihagyni a számításokból) a nem látható háromszögeket egy adott jelenetből ill. hogyan lehet megtalálni a láthatóakat (hidden surface determination, visibility determination).
Természetesen rengeteg megoldás született ezen kérdés megválaszolására. Legtöbbjük a vertex szintű feldolgozás előtt (VSZFE) eldobja a háromszögeket azonban akad olyan is, amely vertex feldolgozás után (VSZFU) avagy fragment szinten (FSZF) végzi eldobást.
Face culling
Ez a legegyszerűbb esete az eldobásnak. VSZFU típusú vagyis (általában) hardver végzi és csak fillrate-t lehet megtakarítani. A háromszög orientációját alapul véve dobja el azt-hagyományos esetben ez back face cullingot jelent.
Z-buffer és depth test
Ez hardverekben történő megjelenésekor igen nagy újításnak számított. FSZF típusú. Lényege, hogy a fragment generálásakor képződő mélységértéket is figyelembe vesszük rendereléskor. Ehhez szükséges egy mélység buffer, amely minden egyes pixelhez eltárol egy mélységértéket is.
Rendereléskor a bejövő fragment mélysége összehasonlításra kerül a mélység buffer azon értékével, amely a fragmentnek megfelelő helyről származik és csak azon fragmentek kerülnek kirajzolásra (vagyis a szín és mélység tárolására), amelyekre igaz lett az összehasonlítás eredménye. A mélységérték és mélységbuffer precizitásától függően ez az összehasonlítás vezethet z-fightinghoz.
Ezzel az eljárással elérhetjük azt, hogy a közelebbi fragmentek kitakarják a távoliabbakat a háromszögek renderelési sorrendjétől függetlenül.
A most következő megoldások mindegyike VSZFE típusú vagyis ezek az igazán alkalmasak nagy terek valósidejű rendereléséhez. Ezen eljárásokkal kiválogatott háromszögeket már cpu oldalon eldobjuk.
View-frustum culling
Az általános működési elve: a látótérből kieső háromszögeket eldobjuk. Önmagában csak kisebb jelenetekre alkalmazható megoldás. Ennek hierarchizált térfelosztással kombinált esete a
Hierarchical view-frustum culling
Ennek feltétele (vagy legalábbis a hatékonyság miatt igencsak ajánlott) egy olyan térfelosztó hierarchia, amelyben az elemek nem fedik át egymást. Ez biztosítja azt, hogy ha egy elem teljes mértékben látható akkor az összes gyermeke is ill. fordítva. Ha egy elem teljesen kiesik a látótérből akkor az összes gyermeke is.
Occlusion culling
A view-frustum culling ellentétének is tekinthető abból a szempontból, hogy ilyenkor nem a látható, hanem a kitakart háromszögeket keresünk. Feltételezi, hogy ki tudjunk választani olyan háromszögeket/felületeket (occluder), amelyek biztosan kitakarják a mögöttük lévő teret. Minden egyes olyan háromszög, amely biztosan ebben a térben helyezkedik el eldobható. Tetszőlegesen kombinálható mindkét view-frustum culling-gal.
PVS
A rövidítés a potentially visible set-ből származik. Feltételez egy olyan térfelosztó módszert, amely egyértelműen körülhatároló részekre darabolja a teret. Később ezen részek közötti láthatóságot tárolja el egy "tömbben" (innen ered a set elnevezés). Előre is kiszámítható, de futás időbeni megoldások is léteznek.
Portal culling
Az elnevezés (legalább) két dolgot takar.
Elsőként a portált tekinthetjük az occluder (ilyen összefüggésben az occludert nevezhetjük antiportálnak) ellentétének vagyis olyan felület/háromszög ami mögött lévő háromszögek biztosan láthatók.
Másodsorban egy térfelosztó technika része, amelyben a térrészek egymással a portálokon keresztül állnak összeköttetésben. A térrészek láthatóságát a portálok segítségével vizsgáljuk.
Léteznek még olyan technikák, amelyek segítségével z-buffer hiányában a mélységi takarást megoldható. Ezek jobbára VSZFE megoldások.
Bizonyos algoritmusok mélységi sorbarendezés elvén működnek. Ehhez kiváló segítség a BSP-fa, amelyben a háromszögek egyértelműen sorbarendezhetők.
Más algoritmusok a képernyőn megjelenített háromszögekkel végeznek el vágást. Ezekhez már kiegészítő buffer szükséges, melyek némileg hasonlóan működnek, mint a z-buffer azonban nem per-pixel tárolják a szükséges adatokat. Ilyen például a coverage-buffer és a surface-buffer.
Megjegyzendő, hogy ma már gyakorlatilag nem létezik olyan hardveres renderelő, amely nem biztosítana z-buffert.