Rasterizatsiya — bu uch o'lchamli primitivlarning (uchburchaklar, chiziqlar, nuqtalar) vektor tavsifini ekranda ko'rsatish uchun piksellar (fragmentlar) to'plamiga aylantirish jarayonidir. Khronos Group, 2025 ma'lumotlariga ko'ra, rasterizatsiya Vertex Shader va Fragment Shader o'rtasida joylashgan grafik konveyerining avtomatik (dasturlashtirilmaydigan) bosqichidir. Rasterizatsiya ekranning qaysi piksellari qaysi uchburchakka tegishli ekanligini aniqlaydi va har bir fragment uchun interpolyatsiya qilingan atributlarni hisoblaydi.
Asosiy ma'lumotlar
Rasterizatsiya — bu grafik konveyerining geometrik primitivlarni (uchburchaklar, chiziqlar) Fragment Shader tomonidan keyingi qayta ishlash uchun fragmentlar to'plamiga aylantiruvchi bosqichidir. Kirish ma'lumotlari — uchburchakning ekran koordinatalaridagi uchlari va ularning atributlari (rang, normallar, UV). Chiqish — interpolyatsiya qilingan atributlarga ega fragmentlar to'plami.
Dasturlashtiriladigan shaderlardan (Vertex va Fragment Shader) farqli o'laroq, rasterizatsiya qat'iy (dasturlashtirilmaydigan) bosqichdir. Dasturchi rasterizatsiya algoritmini o'zgartira olmaydi, lekin uning parametrlarini boshqarishi mumkin: kesish rejimi (culling), chiziq kengligi, chuqurlik siljishi (polygon offset) va multisampling.
Deyarli barcha zamonaviy real-time grafika — o'yinlar, UI, AR/VR — rasterizatsiyadan foydalanadi. Bu 60 FPS da kadr boshiga millionlab uchburchaklarni qayta ishlashga qodir eng samarali renderlash usulidir. GPU rasterizatorlari ixtisoslashgan ROP (Render Output Units) bloklari orqali bir vaqtning o'zida minglab uchburchaklarni parallel qayta ishlash uchun optimallashtirilgan.
Uchburchakning rasterizatsiyasi Vertex Shader uchlarini ekran koordinatalariga o'zgartirgandan so'ng boshlanadi. GPU uchburchakning uchta uchini oladi va ekranning qaysi piksellari ushbu uchburchak ichida ekanligini aniqlaydi.
Jarayon uchta ketma-ket qadamni o'z ichiga oladi: uchburchakning piksellarda bounding boxini aniqlash — bounding box ichidagi har bir pikselning uchburchakka tegishliligini tekshirish (edge function) — har bir qoplangan piksel uchun interpolyatsiya qilingan atributlarni (barysentrik koordinatalar) hisoblash. Edge function — nuqta uchburchak chetining qaysi tomonida ekanligini aniqlaydigan chiziqli tenglama.
| Bosqich | Tavsif | Natija |
|---|---|---|
| Clipping | Viewport chegaralaridan tashqaridagi uchburchaklarni kesish | Ko'rinadigan primitivlar |
| Viewport transform | Ekran koordinatalariga o'zgartirish | Piksel koordinatalari |
| Triangle setup | Edge-funksiyalar va bounding boxni hisoblash | Rasterizatsiya parametrlari |
| Fragment generation | Qoplashni tekshirish va interpolyatsiya | Fragmentlar + atributlar |
Rasterizatsiya turli xil algoritmlar bilan amalga oshirilishi mumkin, ularning har biri unumdorlik va sifat o'rtasida o'z murosasiga ega. Zamonaviy GPUlar bir nechta yondashuvlarning kombinatsiyasidan foydalanadi.
Dastlabki GPUlar uchun ishlab chiqilgan klassik rasterizatsiya algoritmi. Uchburchak satrma-satr (scanline) qayta ishlanadi: ekranning har bir satri uchun uchburchakning kirish va chiqish nuqtalari aniqlanadi va ular orasidagi barcha piksellar to'ldiriladi. Scanline conversion katta uchburchaklar uchun samarali, ammo ixtiyoriy shakldagi uchburchaklar uchun murakkab mantiqni talab qiladi.
Zamonaviy GPUlar half-space rasterizatsiya usulidan foydalanadi: uchburchakning har bir tomoni uchun edge function — bir tomondan musbat, ikkinchi tomondan manfiy bo'lgan chiziqli tenglama hisoblanadi. Piksel uchburchakka tegishli, agar uchala edge functions musbat bo'lsa. Half-space rasterizatsiyasi oson parallellashadi va GPUning SIMD arxitekturalariga yaxshi mos keladi.
Mobil GPUlar (Qualcomm Adreno, ARM Mali) Tile-Based Rendering (TBR) dan foydalanadi. Ekran kichik tayllarga (16×16 yoki 32×32 piksel) bo'linadi va rasterizatsiya har bir tayl uchun alohida bajariladi. Bu kadr buferini tez lokal xotirada (tile memory) saqlash hisobiga video xotiraga murojaatlar sonini kamaytiradi. TBR energiya sarfini pasaytiradi, bu mobil qurilmalar uchun juda muhimdir.
Rasterizatsiya va ray tracing — 3D grafikani renderlashning ikkita tubdan farqli yondashuvidir. Rasterizatsiya real-time ilovalarda ustunlik qiladi, ray tracing — oflayn renderlashda va asta-sekin real-timega (RTX mos GPUlarda) kirib bormoqda.
| Parametr | Rasterizatsiya | Ray Tracing |
|---|---|---|
| Prinsip | Uchburchak → fragmentlar | Nur → sahna bilan kesishish |
| Tezlik | Juda tez (millionlab uchburchaklar/kadr) | Sekin (minglab nurlar/kadr) |
| Sifat | Qo'shimcha texnikalarni talab qiladi (soyalar, akslar) | Fizik jihatdan to'g'ri soyalar va akslar |
| Mobil GPUlar | Standart usul | Cheklangan qo'llab-quvvatlash (A17 Pro, Snapdragon Gen 3) |
| Energiya sarfi | Past | Yuqori |
Rasterizatsiyada aliasing muammosi yuzaga keladi — uchburchaklar chegaralarida pog'onali qirralar (jaggies). Bu piksel diskretligi va uchburchak tomonidan qisman qoplana olmasligi sababli sodir bo'ladi. Aliasing bilan kurashish uchun multisampling (MSAA) qo'llaniladi.
MSAA (Multisample Anti-Aliasing) rasterizatsiyani oshirilgan tanlab olish chastotasi bilan (2x, 4x, 8x) bajaradi. Piksel boshiga bitta namuna o'rniga bir nechta sub-namunalar ishlatiladi, ularning har biri uchburchak bilan qoplanishi tekshiriladi. MSAA 4x piksel boshiga 4 sub-namunani qayta ishlaydi, bu renderlash ruxsatini to'liq oshirmasdan qirralarning sezilarli darajada tekislanishini ta'minlaydi.
MSAA dan farqli o'laroq, post-protsess tekislash usullari (FXAA, SMAA, TAA) rasterizatsiyadan keyin ishlaydi, yakuniy tasvirni tahlil qiladi. FXAA (Fast Approximate Anti-Aliasing) tasvirning qirralarini aniqlaydi va tekislash uchun xiralashtirishni qo'llaydi, MSAA dan ancha tez ishlaydi, ammo kamroq sifatli natija bilan.
Zamonaviy GPUlarda rasterizatsiya ixtisoslashgan apparat bloklari — ROP (Render Output Units) tomonidan bajariladi. ROPlar soni to'g'ridan-to'g'ri to'ldirish tezligiga (fill rate) — GPU sekundiga qancha pikselni qayta ishlashi mumkinligiga ta'sir qiladi.
Mobil GPUlar (Tile-Based Rendering) uchun juda muhim: erta rad etish (early-Z) orqali overdraw ni kamaytirish, ko'rinmaydigan uchburchaklarni olib tashlash uchun back-face culling dan foydalanish va boshqa ob'ektlar bilan to'liq qoplangan uchburchaklarni rad etish uchun yashirin sirtlarni olib tashlash (occlusion culling).
Ko'p beriladigan savollar
Rasterizatsiya — uchburchaklarni ekranda piksellarga aylantirish jarayoni. GPU uch o'lchamli uchburchakni oladi, ekranning qaysi piksellarini qoplashini aniqlaydi va ularni bo'yash uchun Fragment Shaderga uzatadi.
Rasterizatsiya uchburchaklarni ekranga proyeksiyalaydi va piksel qoplanishini aniqlaydi (juda tez). Ray tracing kameradan nurlarni yuboradi va geometriya bilan kesishishni tekshiradi (fizik jihatdan aniqroq, ammo sezilarli darajada sekin).
Rasterizatsiyada piksel yo to'liq uchburchakka tegishli yoki yo'q — shuning uchun pog'onali qirralar (aliasing) paydo bo'ladi. MSAA qirralarni piksel boshiga ko'plab sub-namunalar orqali tekislaydi, FXAA esa tayyor tasvirga filtr qo'llaydi.
Yo'q, rasterizatsiya grafik konveyerining qat'iy bosqichidir. Dasturchi algoritmni o'zgartira olmaydi, ammo sozlamalarni boshqarishi mumkin: culling, polygon offset, rasterizatsiya rejimi (nuqtalar, chiziqlar, uchburchaklar) va MSAA parametrlari.
Tile-Based Rendering (TBR) ekranni tayllarga bo'lib, ularni global VRAMda emas, balki tez lokal xotirada qayta ishlaydi. Bu energiya sarfini va tarmoqli kengligini keskin kamaytiradi, bu batareya bilan ishlaydigan mobil qurilmalar uchun juda muhimdir.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.