Surfels: Surface Elements as Rendering Primitives Výzkum v počítačové grafice Martin Herodes
Nevýhody plošných primitiv Reprezentace složitých objektů pomocí plošných primitiv (trojúhelníků, čtyřúhelníků aj.) je obtížná. Problém zobrazení kouře, ohně, vody aj. Zobrazení realistických modelů je pomalé. Zpracování mnoha malých trojúhelníků vede k ucpání datové sběrnice. Realita je 80 miliónů polygonů. Ukládání informací, které nejsou nutné k zobrazení - spojení a přilehlost vrcholů.
Definice surfelu Surfel je zkratkou slov SURFace Element nebo SURFace voxel. V literatuře se surfel definuje jako orientovaný (n-1)-dimenzionální objekt v R n. My budeme používat následující definici: Surfel je nula-dimenzionální n-tice s tvarovými a stínovými atributy, které jsou lokálně aproximovány povrchem objektu. Alternativní termín bodový vzorek je příliš obecný, protože voxely a pixely jsou také bodové vzorky.
Surfel jako zobrazovací primitivum Surfely jsou bodová primitiva bez explicitní souvislosti. Obsahují pouze informace potřebné pro zobrazení. Atributy surfelu jsou hloubka, barva textury, normála a jiné. Surfely jsou vhodné pro objekty se složitou geometrií. Naopak u plochých povrchů (zdí, pozadí apod.) jsou výhodnější plošná primitiva.
Inspirace Animatek Caviar player komerční produkt poskytuje interaktivní zobrazení pomocí voxelů používá zjednodušení zobrazení a osvětlovacích metod LDI strom hierarchická datová struktura uvedl Chang a kolektiv
Rysy prezentované metody Kompletní bodový vzorkovací a zobrazovací systém Výkonná hierarchická reprezentace Vysoká kvalita texturového filtrování Přesné výpočty viditelnosti Flexibilní rychlost a kvalita výsledného obrazu
Hlavní kroky metody Vzorkování fáze předzpracování Zobrazení
Vzorkování Nalezení optimální surfelové reprezentace objektu Vzorkování podle rozlišení výsledného obrazu Použití dalších i pohledově závislých metod před vzorkováním nebo během vzorkování pomocí procedurálních shaderů. odchylka povrchové normály geometrie bump textury posunutí mapování
Vzorkování - postup Vytvoření LDC (Layered Depth Cube) ze tří ortogonálních LDI (Layered Depth Images) metodou sledování paprsku Obrázek ukazuje LDC se dvěma LDI (2D kreslení)
Předfiltrování textur 1 Předfiltrování a mapování textur na objekt ve fázi předzpracování Pohledově nezávislé Postup: Posun filtrované oblasti (stopy) podle tečné roviny Mapování stopy do prostoru textury Aplikace EWA filtru Uložení výsledné barvy do surfelu
Předfiltrování textur 2 Podmínka rekonstrukce textury: překrytí eliptických oblastí surfelů Poloměr stopy r 0 pre = maximální vzdálenost mezi sousedními surfely v prostoru objektu Surfelová mipmapa více vzorků textury v surfelu (obvykle 3 nebo 4) poloměry stop se zdvojnásobují
LDC strom Oktantový strom uzly jsou LDC Konstrukce stromu odspodu nahoru n=0 pro LDC v nejvyšším rozlišení Vyšší úroveň stromu = nižší rozlišení Mezery mezi pixely h n =h 0 *2 n Výška stromu nastavena uživatelem Dimenze bloků (LDC) b nastavena uživatelem. Na obrázku b=4.
3-to-1 redukce Redukce LDC stromu na LDI strom - 3x rychlejší 1 fáze: převzorkování do pravidelné mřížky 2 fáze: interpolace pomocí nejbližšího souseda Ztráta kvality surfelové reprezentace tvarů i stínů Možný vznik artefaktů
Hlavní kroky metody - připomenutí Vzorkování fáze předzpracování Zobrazení
Zobrazení Zobrazení LDC stromu Odhad počtu surfelů na pixel Změna rychlosti a kvality výstupu výkon surfel na pixel a z-buffer stejné rozlišení kvalita více surfelů na pixel a z-buffer větší rozlišení
Odstraňování bloků Procházení LDC stromu od nejvyšší úrovně k nejnižší V každém bloku provádíme view-frustum culling pomocí bounding boxu bloku pomocí visibility cones ořezání zadních ploch bloků test viditelnosti
Warping bloků Procházení LDC stromu od nejvyšší úrovně k nejnižší Výběr zobrazené úrovně podle počtu surfelů na pixel Odhad počtu surfelů na pixel i n max Pro každý blok úrovně n: i n max = max. vzdálenost mezi sousedními pixely odhad i n max = max. délka diagonály bounding boxu / b Inkrementální warping bloků do prostoru obrazu -6x sčítání, 3x násobení, 1x inverze na vzorek LDI v bloku warpovány nezávisle
Testování viditelnosti Visibility splatting Díra pixel v z-bufferu, neobsahuje viditelný surfel nebo pixel pozadí Pixel v z-bufferu obsahuje ukazatel na nejbližší surfel minimální hloubku Projekce stop do z-bufferu, r tn = smax*2 n Aproximace axis-aligned bounding boxem Problém extrémně nakloněného povrchu
Filtrování textur Pohledově závislé filtrování odstraňuje texture aliasing Poloměr kruhu nejméně 2 1/2 /2*s z Projekce kruhu vytváří elipsu Úroveň surfelové mipmapy podle hlavní osy elipsy Barva surfelu lineární interpolací pomocí r k pre a r k+1 pre
Stínování Osvětlovací model obvykle před testováním viditelnosti Deffered shading (odložené stínování) vyhýbá se zbytečné práci Phongův osvětlovací model cube reflectance environment maps Transformace normál do prostoru kamery již během visibility splattingu
Rekonstrukce obrazu Rekonstrukce povrchu ze surfelů Pixely s dírami nejsou použity Antialiasing Odstranění děr: Gaussův filtr k interpolaci děr poloměr filtru r rec je mírně větší než i max pull-push algoritmus alternativní způsob
Rekonstrukce obrazu - možnosti a) Velikost pixelu s 0 = velikost pixelu v z-bufferu s z jednoduchý a rychlý přístup mapování surfelů na středy pixelů interpolace nejbližším sousedem lineární interpolace 2 vzorků surf. mipmap b) Supersampling subpixely v z-bufferu vysoká kvalita obrazu použití více vzorků (typicky 8) na 1 pixel r rec =max(r rec,i max ), kde r rec =2 1/2 /2*s 0 a i max indikuje nižší hustotu surfelů
Rekonstrukce obrazu - ukázky Detekce děr Rekonstrukční filtry a) Nejbližší soused b) Gaussův filtr c) Supersampling
Implementace Blue Moon Rendering Tool (BMRT) ray tracer Vzorkovací rozlišení 512 2, výstupní rozlišení 480 2 Při vzorkování použití dalších pohledově záv. metod filtrování textur, displacement mapping, bump mapping aj. Předzpracování typického objektu se 6 LOD surfelovými mipmapami zabírá okolo jedné hodiny.
Implementace analýza výkonu 3 úrovně mipmapy 3 LODy Pentium III 700 MHz 256 MB SDRAM WRP- warping, VIS- visibility splatting, SHD- phong shading, REC- image reconstruction, CLR- frame- buffer clear
Budoucí rozšíření Rozšíření vzorkování na objemová data, shluky bodů aj. Komprese LDC stromu použitím RLE (Run Length Encoding) Použití Pentium III SSE instrukcí Použití okluzního traverzování LDC stromu Hlavní cíl: Návrh hardwarové architektury pro surfely
Závěr Možnost integrace s polygonovou grafikou Vhodné pro modely s velkou složitostí tvarů a stínů Dramatické snížení zobrazovací ceny díky předzpracování Zobrazovací fáze využívají vektorizaci, paralelismus a proudového zpracování Změny rychlosti a kvality výstupu Vysoká kvalita obrazu při rychlém snímkování Rostoucí výkon procesorů a možná hardwarová podpora přinesou real-time výkon