6. 10. 2009

Matrix v matrixe

Obzvlášť pri hraní akejkoľvek sandbox hry vám iste zrak "nechtiac" padne na okno niektorej z početných budov. Vidíte vkusnú záclonku, ako súčasť nejakej textúry v nízkom rozlíšení, ktorá až od vzdialenosti cca sto metrov budí dojem hmatateľného priestoru za sklenenou tabuľou. Chcem vám teraz predstaviť jednu techniku, ktorá v hre, teda vo virtuálnom priestore vytvorí nekonečne množstvo ešte nerealnejších "3D" izieb .. za tými sklami.

Interior mapping. Vzniklo to celé rovnako náhodne, ako svojho času penicilín. Konkrétne išlo o chybu-bug pri texturovaní objektu so zaujímavým výsledkom. Zrazu je za všetkými oknami vidieť samostatne .. strop najvyššieho poschodia. Po ďalšom rozpracovaní, sa objavili aj steny a podlahy. Bez navýšenia reálnej geometrie !! Ide o pixel shader SM 2.0+, aj keď dosť komplexný. Po vyriešení menších problémov zo Z bufferom, cullingom, alfa objektami, riadením jasu v jednotlivých bunkách /zapnuté svetlo, zasvietené, šero/ vnútri neexistujúcej izby je finálny výsledky skutočne fascinujúci.




strop, steny, obsah, finále

Stiahnite si teraz túto skvelú "hrateľnú" ukážku /ďalšie budovy pridáte napr. stlačením klávesy B, skrze vaše mesto sa potom pohybujte ako v doomovke/. Zvyšovanie počtu takto vylepšených izieb vám nezvyšuje spotrebu pamäte ani neznižuje celkový výkon. Prvý pokles zbádate až pri nejakých 800-1000 budovách. Exe súbor obsahuje aj benchmark, kde si ľahko overíte, ako by dopadlo vytvorenie skutočnej geometrie, a jej okamžité porovnanie s interior mappingom. Je možné meniť aj veľkosť izieb, teda ich plochu a z atlasu textúr aj randomizovať ich vnútornú výzdobu. Dokonca je možné dovnútra neexistujúcej izby pridať objekty ako nábytok a postavy. V 2D forme pre väčšiu vzdialenosť /aj animované/, v 3D pre blízky náhľad. Enviromentálne odrazy okolia na skle. Zdrojový kód tento skvelej finty je voľne ku dispozícii aj pre použitie v GTA5. Na DX10.1 systémoch je možné použiť tento ešte rýchlejší a efektívnejší kód od iného autora, ktorý rozpracoval jeho prácu s týmto výsledkom /download/.