Kvalitnější vykreslování odlesků texturovaných
povrchů
V rámci klasického vykreslovacího řetězce je
v případě texturovaných povrchů nejdříve vypočítána barva
fragmentů včetně své odleskové složky (specularity = zrcadlivost)
a poté je tato barva patřičným způsobem zkombinována s barvou
získanou pro tento fragment mapováním textury. Tato technika vede
k značnému potlačení odlesků od texturovaných povrchů,
vlastní textura tak někdy příliš dominuje. Světlé části pak
vypadají leskleji než tmavé. Řešením je oddělení informace
odleskové složky barvy materiálu a její použití až nakonec po
vyřešení barvy fragmentu včetně textury. V systému
Control Web lze toto nastavit parametr
světla:

Separátní řešení odleskové složky povrchů se nastavuje
u světelných zdrojů ve scéně
Je-li třeba odlesk vytvořit na tmavém místě textury, je přínos
výše popsané techniky pro kvalitu obrazu značný:
Vodní hladina s odrazem i lomem světla a animací
vlnění
V systému Control Web již je jeden
virtuální přístroj pro zobrazování vodní hladiny. Základním
požadavkem pro tento přístroj byla schopnost provozu i na
starých a málo výkonných grafických kartách. Proto animuje vodní
hladinu jako čtvercovou síť vertexů, jejichž pozice počítá
prostřednictvím CPU (byť v rámci prováděcího toku
vykreslovacího serveru) a odlesky vytváří jen pomocí sféricky
mapované fixní textury.
Pro kvalitnější simulaci vodní hladiny se již
neobejdeme bez programovatelného grafického procesoru.
V našem případě chceme simulovat několik optických
jevů:
zrcadlení okolí na vlnící se vodní hladině
lom světla při zobrazování povrchů pod vodní
hladinou
barvu vody, která respektuje její hloubku v daném
místě (včetně pohledu zešikma)
animaci vlnění na hladině
odlesk světla na vlnící se hladině
... a to vše s přesností na úrovni fragmentů
obrazu
Vstupními daty pro náš fragmentový shader je kromě řady
číselných parametrů šest textur, z nichž čtyři jsou dynamicky
generovány s plným rozlišení viewportu daného vykreslovacího
kontextu. Výsledkem je docela působivý a především velice snadno
použitelný efekt.

Po vytažení přístroje z palety okamžitě vidíme
výsledek
Vlastnosti vody si můžeme prostřednictvím několika parametrů
široce přizpůsobit své představě. Můžeme zvolit barvu vody,
základní poměr mezi intenzitou reflexivního a refraktivního obrazu
a míru intenzity odleskové složky barvy povrchu.
Reflexivní i refraktivní obraz je svou kvalitou zcela
ekvivalentní kompletnímu vykreslení scény včetně veškerých
víceprůchodových efektů. Tyto pomocné obrazy se dočasně uchovávají
do textur s plným rozlišením scény a mohou v nich být
např. i prostorové stíny, jsou zde vizualizovány zdroje
světla, běží zde veškeré shadery, funguje zde occlusion query
atd.

Barva vody ovlivňuje refraktivní obraz s rostoucí
hloubkou
Shader má pro každý fragment informaci o vzdálenosti bodu
na vodní hladině od bodu na příslušném povrchu pod hladinou. Proto
může zvětšovat sytost barvy vody s rostoucí hloubkou.
Zrcadlo s povrchovými nerovnostmi
Tento efekt je o hodně jednodušší než vodní hladina, ale
i tak je velice působivý. Pracuje pouze s jedním
reflexním obrazem a veškerou informaci o zvlnění povrchu
zrcadla čerpá z jediné normálové mapy.

Zrcadlo se zvlněným povrchem v editoru
scény
Tuto normálovou mapu si můžeme zadat podle své volby a tak
vytvoříme zrcadla s různou strukturou povrchu.
Paralelní rendering pro tisk a WWW server přes pixel
buffery
Na první pohled zcela samozřejmý požadavek viditelnosti
3D scény v internetovém klientu ve stejné kvalitě jako
na obrazovce s kvalitním 3D akcelerátorem přináší několik
nečekaných úskalí. Nejlépe použitelnou metodou systému
Control Web verze 5 bylo kopírování obrazu
z bufferů existujícího obrazovkového kontextu, ale i ta
občas přinášela několik obtíží. Ta největší spočívala v tom,
že vinou podivné "optimalizace" řady grafických ovladačů nebyly
buffery v částech odpovídajících oblastem na obrazovce
překrytým jinými okny správně inicializovány. Vykreslování sice
i v těchto částech probíhalo normálně, ale výsledný
obraz zde byl samozřejmě zmatený. Další problém spočívá
v nutnosti vykreslit obraz na základě požadavku např. HTTP
serveru. Vykreslování pak probíhalo mimo prováděcí tok
renderovacího serveru a to se neobešlo bez synchronizací značně
narušujících plynulost animací.

Obraz vytvořený pro webového klienta má plnou kvalitu
akcelerovaného obrazu v obrazovkovém kontextu
V některých případech tak může být velmi přínosné použít
spolu se základním obrazovkovým kontextem paralelní tzv. pixel
buffer, který slouží pouze k vykreslování pro potřeby tisky
nebo HTTP serveru. Tento buffer se nachází v rychlé paměti
grafické karty (zde pochopitelně zabírá místo, kterého nikdy není
dost) a GPU s ním dokáže pracovat stejně akcelerovaně jako
s obrazovkovým kontextem (včetně veškerých shaderů atd.).
Vykreslování do tohoto bufferu pak probíhá v jiném prováděcím
toku paralelně s vykreslováním na obrazovku a ušetří se
ztráty času při synchronizacích.
Pro současné grafické karty je schopnost vytvářet pixel buffery
s plně akcelerovaným vykreslováním samozřejmostí.
To je několik nových možností vizualizace pro připravovanou verzi
systému. Nové vlastnosti sledují současné technologie počítačové
grafiky. V systému Control Web získáváte vždy
"plně vybavené" prostředí pro realizaci svých představ.
rc@mii.cz
|