Definícia a rozsah počítačovej grafiky
Počítačová grafika (CG) predstavuje interdisciplinárny odbor na pomezí informatiky a inžinierstva, ktorý sa zameriava na tvorbu, spracovanie, ukladanie a zobrazovanie vizuálnych dát pomocou výpočtovej techniky. Rozsah tohto odboru zahŕňa 2D i 3D reprezentácie scén, renderingové techniky, interaktívnu vizualizáciu, spracovanie obrazu, užívateľské rozhrania, multimédiá a vedeckú vizualizáciu. Aplikácie počítačovej grafiky sa nachádzajú v širokom spektre priemyselných odvetví, ako je herný priemysel, filmová produkcia, CAD/CAM systémy, geografické informačné systémy (GIS), zdravotníctvo, webové technológie, mobilné aplikácie, simulácie, rozšírená a virtuálna realita (AR/VR) či datová žurnalistika.
Rastrová a vektorová grafika: princípy a rozdiely
Rastrová grafika
Rastrová grafika je založená na matici pixelov, pričom každý pixel obsahuje informácie o farbe a prípadne alfa kanáli (transparencii). Tento typ grafiky je ideálny pre fotografie, digitálne maľby, textúry alebo screencasty. Medzi základné parametre patria rozlíšenie v pixeloch (px), farebná hĺbka (bitov na pixel – bpp), DPI/PPI (body na palec), spôsob kompresie a definičný farebný priestor.
Vektorová grafika
Vektorová grafika je definovaná pomocou geometrických prvkov, ako sú body, krivky a plochy, ktoré sú sprevádzané atribútmi farieb, ťahov a prechodov. Tento formát je ideálny pre tvorbu log, ikonografiu, typografiu a CAD výkresy, pretože je škálovateľný bez straty kvality.
Hybridné prístupy
Moderné grafické pipeline často kombinujú vektorové prvky (napríklad používateľské rozhrania alebo SVG) s rastrovými prvkami (textúry, fotografie). V 3D grafike je geometria definovaná vektorovo, zatiaľ čo výsledný framebuffer používa rastrové zobrazovanie.
Barevné modely a správa farieb v počítačovej grafike
Barevné modely používané v CG
- RGB: základ pre emitívne zariadenia, ako displeje.
- CMYK: primárny model používaný pri tlači založený na subtrakcii farieb.
- HSL/HSV: intuitívne pre užívateľskú editáciu farieb.
- Lab/LCH: založené na vnímaní farieb ľudským okom, ideálne pre farebné porovnania.
- YCbCr/YPbPr: štandard pre video signály.
- XYZ: referenčný farebný priestor definovaný medzinárodným svetelným výborom (CIE).
Farebné priestory a ich využitie
- sRGB: štandard pre webové prostredie.
- Display P3: rozšírený gamut využívaný v moderných zariadeniach.
- Adobe RGB: rozšírený gamut pre tlačové aplikácie.
- Rec.709 a Rec.2020: farebné štandardy používané v televíznych a video produktoch.
- ACES: štandard pre filmovú produkciu a vysokokvalitný farebný manažment.
Správa farieb (CMS) a jej význam
Správa farieb zahŕňa používanie ICC profilov pre zariadenia, kalibráciu a profiláciu monitorov, ako aj aplikáciu 10- a 12-bitových pracovných tokov farebného spracovania. Používajú sa LUT tabuľky a rôzne metódy prevodu farieb s ohľadom na rendering intent, ako sú perceptuálne alebo relatívne kolorimetrické prístupy.
HDR a tone mapping
Technológie HDR používajú PQ a HLG krivky pre správu dynamického rozsahu scény a výstupu na zariadenie. Používajú sa lokálne tone mapping algoritmy spolu s ditheringom na elimináciu pruhovania a zachovanie vizuálnej kvality.
Formáty súborov a kompresia grafických dát
Bezeztrátové formáty
- PNG: kompresia DEFLATE s podporou alfa kanála.
- WebP-Lossless a AVIF-Lossless: moderné formáty s vysokou efektivitou.
- TIFF: vhodný pre viaceré vrstvy a vysokokvalitné obrazy.
- BMP: starší formát, často historicky používaný.
- SVG: vektorový formát s podporou CSS a skriptovania.
Ztrátové kompresné formáty
- JPEG: bežný formát s DCT kompresiou.
- JPEG XL: moderný formát s podporou bezeztrátovej a ztrátovej kompresie.
- WebP a AVIF: formáty založené na blokových transformáciách s vysokou kompresnou účinnosťou.
- HEIF/HEIC: využívajú HEVC intra kódovanie pre efektívnu kompresiu.
Formáty pre 3D objekty a assety
- glTF/GLB: štandard pre webovú 3D grafiku a real-time aplikácie.
- FBX: používaný v DCC softvéri na výmenu dát.
- USD/USDZ: na reprezentáciu komplexných scén s podporou variantov.
- OBJ: jednoduchý formát pre mesh dáta.
- EXR: určený pre HDR obrázky a multipásmové dáta.
- DDS/KTX: komprimované textúry vhodné pre GPU použitie.
Textúrová kompresia
Blokové kompresné formáty ako BC, ASTC a ETC sú štandardom pre efektívne ukladanie a zobrazovanie textúr na GPU. Výber formátu závisí od cieľovej platformy a umožňuje znižovať spotrebu VRAM bez výraznej straty kvality.
3D reprezentácia geometrie a štruktúr
Polygóny a meshe
3D modely predstavujú základné zložky ako vrcholy, normály, UV súradnice, tangenty a bitangenty, pričom topológia (manifold vs. non-manifold) výrazne ovplyvňuje možnosti spracovania. Pre optimalizáciu sa používajú LOD (Level of Detail) hierarchie.
NURBS a krivky
Používajú sa najmä v CAD/CAM pre presné krivky a povrchy, ktoré sa následne tesselujú na trojuholníky vhodné pre rendering.
Implicitné plochy a vzdialenostné polia (SDF)
Popis tvarov pomocou vzdialenostných polí umožňuje efektívne ray marching techniky, vykonávanie boolean operácií a kompaktnú reprezentáciu komplexných tvarov.
Voxelové štruktúry
Voxelové dáta sú volumetrické reprezentácie využívané napríklad v medicínskom zobrazovaní (DICOM), digitálnych simuláciách sveta a open-world deštrukcii. Používajú sa aj hashované mriežky pre optimalizovanú pamäťovú náročnosť.
Grafická pipeline a architektúra GPU
Vývoj pipeline
Tradičná pipeline prechádza pevnými funkciami (fixed-function) k programovateľnej s fázami vertex, tessellation, geometry, rasterizer, fragment a výstup. Moderné API rozširujú možnosti o compute shadery, mesh a amplification shadery, ako aj ray tracing shaderové sady.
Pamäťová hierarchia
GPU disponuje VRAM (GDDR alebo HBM), viacvrstvovou cache L2, lokálnou zdieľanou pamäťou (LDS/Shared memory) a registrami. Kľúčové je minimalizovať prenosy CPU↔GPU, optimalizovať prístupy pomocou coalescing a tilingu.
Paralelizmus a efektivita
GPU spracováva tisíce vlákien súčasne pomocou modelov SIMT/SIMD s warpami alebo wavefrontami. Dôležité sú parametre ako occupancy, skrývanie latencie a minimalizácia divergence pre maximalizáciu výkonu.
API ekosystém: OpenGL, Direct3D, Vulkan, Metal a WebGPU
OpenGL
Tradičné API s okamžitým a udržiavaným režimom, širokou kompatibilitou, vhodné pre vzdelávacie projekty a legacy systémy.
Direct3D 11/12
Platforma pre Windows a Xbox, kde D3D12 poskytuje nízkoúrovňový prístup k správe front, descriptor heapov a explicitnej synchronizácii.
Vulkan
Multiplatformné, nízkoúrovňové API s explicitným riadením zdrojov, umožňuje efektívne multi-thread command recordovanie a engine-level optimalizácie.
Metal
API spoločnosti Apple s prediktabilnými ovládačmi, založené na tile-based rendering modeli, optimalizované pre ich hardware.
WebGL a WebGPU
WebGL poskytuje GPU akceleráciu v prehliadači so shadermi v GLSL ES, kladie dôraz na bezpečnosť a sandboxing. WebGPU je moderné webové API s explicitnou správou zdrojov a podporou compute shaderov pomocou WGSL.
Programovanie shaderov a materiály
Typy shaderov
- Vertex: transformácia vrcholov modelu.
- Tessellation: detailné rozdelenie povrchu.
- Geometry: generovanie a modifikácia primitivov.
- Fragment/pixel: určuje farebné vlastnosti pixelov.
- Compute: všeobecné paralelné výpočty na GPU.
- Mesh/task: nové fázy pipeline pre efektívne spracovanie geometrií.
- Ray tracing shadery: raygen, closest-hit, any-hit a miss shadery na presné osvetlenie.
Programovacie jazyky a optimalizácie
Shaderový kód sa píše v GLSL, HLSL, MSL alebo WGSL a často sa prekladá do medzipodoby (SPIR-V, DXIL) pre efektívnejšie spracovanie a optimalizácie počas kompilácie.
Efektívne využitie shaderov a materiálov predstavuje kľúčový faktor pre realistické a výkonné zobrazovanie v moderných grafických aplikáciách. Optimalizácie na úrovni jazyka, ako aj dobre navrhnuté materiálové systémy, umožňujú flexibilné a škálovateľné renderovacie riešenia.
Vďaka neustálemu vývoju hardvéru a softvérových štandardov sa počítačová grafika stále zdokonaľuje, čím umožňuje tvorbu vizuálnych efektov bližších realite a zároveň zlepšuje využitie zdrojov. Pre profesionálov aj nadšencov predstavuje oblasť bohatú na inovácie a široké možnosti aplikácií v hernom vývoji, vizualizácii, animácii, simuláciách a ďalších oblastiach.