Bosh sahifa Wiki Rendering

Rendering

Rendering — sahna, model yoki tavsiflangan grafik ma’lumotdan yakuniy tasvir yoki video kadrini hisoblab chiqarish jarayonidir. Kompyuter grafikasi tizimi obyekt geometriyasi, material, tekstura, yorug‘lik va kamera ma’lumotlarini qayta ishlab, ekrandagi piksellarning rangini aniqlaydi. Rendering real vaqtda, masalan o‘yin davomida, yoki oldindan, masalan animatsion film uchun bajarilishi mumkin.

Grafik pipeline

Real vaqt grafikasi ko‘pincha rasterization pipelinega tayanadi. Vertex shader model nuqtalarini lokal koordinatadan ekran koordinatasiga o‘tkazadi. Primitive assembly nuqtalardan uchburchaklar hosil qiladi, rasterizer esa ularning qaysi piksellarni qoplashini aniqlaydi. Fragment yoki pixel shader material, tekstura va yorug‘lik asosida yakuniy rangni hisoblaydi.

Depth buffer kamera uchun yaqin sirtni uzoq sirtdan ajratadi. Blend bosqichi yarim shaffof fragmentlarni mavjud rang bilan birlashtiradi. Culling ko‘rinmaydigan orqa yuzalar yoki kamera tashqarisidagi obyektlarni hisoblashdan chiqarib, ish hajmini kamaytiradi.

Ray tracing

Ray tracing kamera nuqtasidan sahnaga nurlar yuborib, ularning obyektlar bilan kesishishini hisoblaydi. Qaytgan, singan va soya nurlari yorug‘likning fizik xatti-harakatiga yaqin natija beradi. Path tracing ko‘plab tasodifiy yo‘llarni namunalab, global illuminationni hisoblaydi. Namuna soni kam bo‘lsa shovqin paydo bo‘ladi; denoising algoritmi uni kamaytirishi mumkin.

Ray tracing ko‘p hisoblash talab qiladi. Zamonaviy GPUlar kesishuv hisobini tezlashtiruvchi maxsus bloklarga ega bo‘lishi mumkin. Real vaqt tizimlari ko‘pincha rasterization va ray tracingni birlashtiradi: asosiy geometriya rasterlanadi, aks yoki soyalar nurlar bilan aniqlanadi.

Material va yorug‘lik

Material sirtning yorug‘lik bilan munosabatini ifodalaydi. Physically Based Rendering modelida base color, roughness, metallic va normal kabi parametrlar ishlatiladi. BRDF kiruvchi yorug‘likning qaysi qismi kuzatuvchi tomonga qaytishini matematik tavsiflaydi. HDR yoritish keng yorqinlik diapazonini saqlaydi, tone mapping esa uni ekran ko‘rsata oladigan diapazonga o‘tkazadi.

Tekstura faqat rang bo‘lishi shart emas. Normal map mayda sirt yo‘nalishini, displacement map geometriya siljishini, environment map esa atrof yoritishini ifodalaydi. Mipmap uzoqdagi teksturalarni barqaror filtrlashga yordam beradi.

Real vaqt va offline rendering

Real vaqt rendering har kadr uchun qat’iy vaqt chegarasiga ega. 60 FPS maqsadida bir kadr taxminan 16,7 millisekundda tayyorlanishi kerak. Offline renderer esa bitta kadrga soniya yoki soat sarflab, ko‘proq nur va murakkab effektlardan foydalanishi mumkin. O‘yinlarda level of detail, occlusion culling va dinamik resolution tezlikni saqlashga xizmat qiladi.

Yakuniy chiqish

Hisoblangan ranglar framebufferda saqlanadi. Post-processing bosqichida anti-aliasing, bloom, color grading, motion blur yoki depth of field qo‘llanishi mumkin. Natija ekranga chiqariladi yoki tasvir fayliga kodlanadi. Rang fazosi, gamma va bit chuqurligi noto‘g‘ri boshqarilsa, turli ekran yoki dasturda tasvirning yorqinligi va rangi o‘zgaradi.

Anti-aliasing va aniqlik

Uchburchak chegarasi pixel gridga to‘liq mos tushmaganda zinapoya ko‘rinishidagi aliasing paydo bo‘ladi. Multisample anti-aliasing bir pixel ichida bir nechta coverage namunasini tekshiradi. Temporal anti-aliasing esa oldingi kadrlar ma’lumotini joriy kadr bilan birlashtiradi; kamera yoki obyekt harakatida noto‘g‘ri tarix ghosting keltirishi mumkin. Supersampling sahnani yuqori resolutionda hisoblab keyin kichraytiradi, sifati yuqori, hisoblash narxi esa katta. Zamonaviy upscaler past resolutiondagi kadr, motion vector va tarixdan foydalanib yuqori aniqlikdagi tasvirni tiklaydi. Render resolution bilan ekran resolutioni shuning uchun har doim teng bo‘lavermaydi.

Bog‘liq tushunchalar

GPU, rasterization, ray tracing, shader, texture, framebuffer, Physically Based Rendering