9. 12. 2008

Iba pero a čistý list


"Render target /RT/ je priestor-buffer, typicky vram, kde grafická karta seká pixely, tie prechádzajú spracovaním - renderingom, skôr než sa dostanú na obrazovku, môžte mať ľubovoľný počet funkciou špecifických RT, káždý si však odhryzne časť voľnej pamäte, historicky najstarším je back buffer, kde sa finálny frame skladá, podpora pre MRT /multiple RT/ je dnes už štandardnou výbavou DX API. Celé to zviažete depth bufferom, aby ste medzi nimi udržali koherenciu. Je však desivou skutočnosťou, že jednotlivé buffery sú si nerovnocenné, čo prináša obrovské problémy." - vlastná šmejd definícia

Revolúcia v hernej grafike v rokoch 1996-8 s 3Dfx čipsetom, kríza o desať rokov neskôr. A nikto ani len netuší, kde budem o ďalších desať. Dnes najrozšírenejšie DirectX API vychádza z 25 rokov starého štandardu OpenGL /Graphics Library/ legendárnej firmy SGi. To zas odrážalo možnosti /z dnešného aj vtedajšieho pohľadu/ veľmi obmedzeného a primitívneho hárdvéru. Táto filozofia a fundamentálne reštrikcie bez ohľadu na nové a nové DX knižnice - stále prežívajú. Starý model a spôsob akým sa špecifikuje scéna, generovanie trianglov, klasické raster operácie, definícia framebuffera a render pipelajnu je dávno zastaralý, a prekonaný. Vhodný iba pre prvé generácie "fixed-function" Geforce hračiek a kartám im podobným. Dnes je to krutá brzda. V roku 2008 je grafický hárdver stále zviazaný prekonanou DX normou.


hromada kravín

Pre vašu informáciu, ako XGPU v XBOX jednotke, tak aj dnešná RSX, alebo staručká S3ka /propriétne Metal API !!/ mali a majú množštvo natívnych features, ktoré DX limity z časti obchádzajú. Ide však o škrabanie ľavého ucha, pravou rukou. Relatívne revolučný skok nastal pri uvedení DX9 s jeho plne programovateľnými shader funkciami /zvyšok je stále "fixed-function"/, neobmedzenej dĺžky a s fp podporu. Ďalším krokom je plne programovateľný rendering a deštrukcia pojmu GPU. Prechod na absolútnu voľnosť, koniec separátneho DX jazyk, stačí C++, priamy zápis farebej hodnoty pixlu na obrazovku. Ako za čias Zx spectra, alebo v softvér móde Unreal jednotky. Nejaký háčik by sa však našiel.
  • zánik DirectX štandardu je neodvratný, je však otázne čo ho nahradí .. OpenCL /Open Computing Language/ vyvinutý skupinou Khronos Group pre programovanie multiparalených CPU-GPU systémov, alebo GPGPU hybridov, CUDA /Nvidia, nepozná to však rekurzie a kopu ďalšieho, nezrelý bastard/, Compute Shaders - spôsob ako vyradiť kľúčové časti DX renderingu a nahradenie ich vlastnými. Išlo by teda o 100% využitie všetkých "nedokumentovaných" funkcií karty. Ako budú na túto situáciu reagovať výrobcovia grafického hárdveru, ktorým dnešná stagnácia z obchodného hľadiska úžasne vyhovuje. Intel Larabee je nová platforma, ktorá ich v horizonte piatich rokov bytostne ohrozuje. Je verejným tajomstvom, že Nvidia pracuje na takmer rovnakom projekte. Okrem iného ma umožniť návrh plne custom grafického rozhrania. Problém, ktorý iste vidíte aj vy - je, koľko dobrých programátorov nájdete čo sú toho na ADEKVÁTNEJ úrovni schopní.
  • aby som vám ešte viac zamotal palice. Je žiadúce aby isté funkcie ostali naďalej fixed s vlastnou logikou na čipe - samotná rasterizácia, dekompresia dát, filtrovanie texelov atď. Aj intel pripúšťa: "rasterizácia je bezpochyby ďaleko efektívnejšia na dedikovanom hárdveri, než pri softvérom riešení, zatiaľ." Tento pohrobok s nami teda ostane ešte po mnoho rokov. Ak vám to ešte nedošlo, sama staručká PS2 je prototyp BUDÚCEHO štandardu. Teda extrémne výkonný a úplne blbý rasterizér /GS/ plus plne programovateľné pole výpočetných univerzálnych jadier /Emotion engine/. A veľký návrat TBDR - tile based deferred renderer. Bingo - "čírou náhodou" hárdverovo vpálený do GPU pre PSP 2 a veľmi bolestivo napasovaný do PS3 /SPE/. Mimochodom v tejto podobe absolútne nerealizovateľný na Xcrape, ktorý je od A po Z vyladený na klasickú školu. Je okolo nej doslova oblepený.
  • bezradné sa motkanie nových DX10 /prilepené geometry shaders/ a DX11 /neohrabaná teselácia, možno compute shaders/ ukazuje, že príde čas vojny titanov a postavia sa základy nového štandardu, tak ako to svojho času urobilo SGi s OpenGL. Možno návrat ku holistickému A-bufferu, alebo modifikovaný Reyes renderer, ktovie. Koniec bojov s 8 bitovým stencil buffer/stencil testom, hlúpe problémy s alpha blendingom/sortingom/alpha-to-coverage - všetko operácie, ktoré vám dvihnú žalúdok napríklad pri riešení zobrazenia listov stromov, alebo trávy na zemi. Deferred rendering /Killzone 2/ musí na tieto operácie použiť subforward engine. Šialené. Iba snom je aby išlo len o ďalší render target, ktorý sa proste spracuje v hlavnom fragment shaderi. Aby som to napísal jednoduchšie. Dnes ste asi v takejto situácii - sedíte za monitorom, máte nahodený CAD a modelujete barák. Ako v skutočnosti, tak aj vo virtuálnej realite ste však NUTENÝ začať od základov, a natiahnuť múry inak vám strecha spadne na hlavu. Absurdné.
Ako teda bude vyzerať budúdnosť ? Čistá obrazovka, žiadne DX okovy, jednotný C kompilér, generické shader algoritmi schopné spracovať umelo vytvorené nezmysly ako z-color-stencil buffer v podobe MRT /multiple render target/- paralelne a bez obmedzení v masívnom viacjadrovom výpočetnom poli ? Je to skutočne otázka dňa, lebo aj Unreal 4 engine, ktorý je dnes v nesmelom vývoji sa musí o nejaké tie parametre oprieť. Nechcem trúfalo povedať, že ich rovno sám vytvorí !! Dnes vám možem povedať, že aj pre PS3 sa zvažovala možnosť VYPUSTENIE klasického GPU a jeho nahradenie šokujúco vykonným a jednoduchým rasterizérom GS+++/PS2 triedy. Opäť made by Toshiba. Je však na rane, že dnešní zaprdení nekompetentní progiši zvyknutí na "ono sa to nejak urobi v DX samo" by to nepredýchali.