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 Rn. 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 r0pre = 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 hn=h0*2n 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 inmax Pro každý blok úrovně n: inmax = max. vzdálenost mezi sousedními pixely odhad inmax = 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, rtn = smax*2n 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ě 21/2/2*sz Projekce kruhu vytváří elipsu Úroveň surfelové mipmapy podle hlavní osy elipsy Barva surfelu lineární interpolací pomocí rkpre a rk+1pre
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 rrec je mírně větší než imax
pull-push algoritmus
alternativní způsob
Rekonstrukce obrazu - možnosti a)
Velikost pixelu s0 = velikost pixelu v z-bufferu sz
b)
jednoduchý a rychlý přístup mapování surfelů na středy pixelů interpolace nejbližším sousedem lineární interpolace 2 vzorků surf. mipmap
Supersampling – subpixely v z-bufferu
vysoká kvalita obrazu použití více vzorků (typicky 8) na 1 pixel rrec=max(r’rec,imax), kde r’rec=21/2/2*s0 a imax 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í 5122, výstupní rozlišení 4802 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 - p hong shading, REC - m i age 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