GPU Rendering (aparat renderi) — ixtisaslaşmış hesablama blokları vasitəsilə rasterləşdirmə, teksturlama və post-emal əməliyyatlarını yerinə yetirən qrafik prosessordan istifadə edərək təsvirin formalaşdırılması prosesidir. CPU Rendering-dən fərqli olaraq, aparat renderi piksellərin paralel emalı üçün minlərlə şeyder nüvəsindən istifadə edir. NVIDIA Developer Blog (2025) məlumatına görə, GPU Rendering mobil SoC-lərdə 2400 GFLOPS-a qədər performans təmin edir ki, bu da mürəkkəb 3D səhnələrin renderində CPU imkanlarından 10–15 dəfə çoxdur.
Əsas məqamlar
GPU Rendering — qrafik konveyerin bütün mərhələlərinin qrafik prosessorda yerinə yetirildiyi təsvir formalaşdırma üsuludur. CPU-da məntiq və hesablamalar qarışıq olduğu halda, GPU-nun hər mərhələ üçün ayrılmış blokları var: təpə prosessoru, rasterləşdirici, teksturator və output merger bloku.
GPU Rendering tarixi ilk 3D sürətləndiricilərin — 3dfx Voodoo (1996) və NVIDIA RIVA 128 (1997) meydana çıxması ilə başladı. Bu cihazlar rasterləşdirməni öz üzərinə götürərək transformasiyanı CPU-ya buraxırdı. 2001-ci ildən (NVIDIA GeForce 3) etibarən GPU proqramlaşdırıla bilən şeyderlər — təpə nöqtələri və piksellərin emalı üçün istifadəçi proqramları daxil olmaqla bütün konveyeri tamamilə öz üzərinə götürdü.
Jon Peddie Research (2025) məlumatına görə, bütün mobil cihazların 92%-i oyunlar və 3D tətbiqləri üçün əsas rejim kimi GPU Rendering-dən istifadə edir. UI çərçivələrində GPU Rendering qatların kompozitinqi — bir neçə teksturadan yekun kadrın yığılması üçün istifadə olunur.
Müasir GPU Rendering iki yanaşmaya bölünür: forward rendering (birbaşa) və deferred rendering (təxirə salınmış). Forward rendering-də hər bir obyekt bütün işıq mənbələri nəzərə alınmaqla bir keçiddə render edilir. Deferred rendering-də həndəsə aralıq buferlərə (G-buffer) render edilir, işıqlandırma isə ayrıca hesablanır — bu çoxsaylı işıq mənbələri olduqda daha səmərəlidir.
GPU Rendering CPU-dan prinsipial olaraq fərqlənir: GPU SIMT (Single Instruction, Multiple Threads) rejimində işləyir. Bir təlimat müxtəlif verilənlər üzərində yüzlərlə axın tərəfindən yerinə yetirilir. CPU MIMD (Multiple Instructions, Multiple Data) istifadə edir — hər bir axın müxtəlif təlimatları yerinə yetirə bilər. Bu, GPU-nu rasterləşdirmə kimi homogen tapşırıqlar üçün səmərəli, lakin budaqlanan məntiq üçün zəif edir.
Praktikada GPU Rendering minlərlə poliqonlu 3D səhnələrin çəkilməsində CPU-nu 10–30 dəfə üstələyir. Lakin sadə 2D qrafika üçün fərq GPU drayverinin əlavə yükü səbəbindən CPU-nun xeyrinə ola bilər. Google Android Performance Guide (2025) məlumatına görə, optimal hədd 500+ draw çağırışıdır, bundan sonra GPU Rendering CPU-dan daha səmərəli olur.
Qrafik konveyer — GPU Rendering zamanı hər kadrın keçdiyi mərhələlər ardıcıllığıdır. Konveyer proqramlaşdırıla bilən və sabit mərhələlərə bölünür, hər biri GPU-nun ixtisaslaşmış bloklarında emal olunur.
Birinci mərhələ — Input Assembler, buferlərdən (VBO, IBO) təpə məlumatlarını oxuyan və primitivləri (nöqtələr, xətlər, üçbucaqlar) yığan GPU-nun sabit blokudur. GPU bu mərhələdə birbaşa video yaddaşdan məlumatları oxuyaraq saniyədə 100 milyon üçbucağı emal edə bilər.
Vertex Shader — hər təpə nöqtəsini emal edən proqramlaşdırıla bilən mərhələdir. Şeyder koordinatları dünya məkanından ekran məkanına matrislər vasitəsilə transformasiya edir, Phong işıqlandırmasını hesablayır və məlumatları ötürür. Vertex Shader hər təpə nöqtəsi üçün yerinə yetirilir — 100 000 üçbucaqda bu, kadr başına 300 000 çağırış deməkdir.
#version 300 es
layout(location = 0) in vec4 position;
uniform mat4 u_mvpMatrix;
void main() {
gl_Position = u_mvpMatrix * position;
}
Sadə təpə şeyderi təpə nöqtəsinin mövqeyini MVP (Model-View-Projection) matrisinə vurur. Mobil GPU-larda bu əməliyyat daxili matris vurma bloku sayəsində təpə başına 1–2 dövrədə yerinə yetirilir.
Rasterləşdirici — primitivləri piksellərə çevirən GPU-nun sabit blokudur. Hər üçbucaq üçün barysentrik interpolyasiya vasitəsilə əhatə olunan piksellər (fraqmentlər) dəsti müəyyən edilir. Mobil GPU-larda rasterləşdirmə qlobal DRAM vasitəsilə deyil, çip üzərindəki sürətli SRAM yaddaş olan Tile Memory-də aparılır.
Fragment Shader — hər fraqmenti (piksel namizədi) emal edən proqramlaşdırıla bilən mərhələdir. Burada rəng, tekstura, işıqlandırma və şəffaflıq hesablanır. Fragment Shader ən resurs tutumlu mərhələdir və kadr render vaxtının 60–80%-ni təşkil edir.
Fragment Shader optimallaşdırması GPU Rendering-də əsas vəzifədir. Hesablamaların dəqiqliyi üçün lowp/mediump istifadə edin, dinamik budaqlanmalardan qaçın və tekstur nümunələrini minimuma endirin. Qualcomm Adreno SDK (2025) məlumatına görə, mediump dəqiqliyi highp ilə müqayisədə 25–40% performans artımı verir.
GPU Rendering üç əsas üstünlük verir: performans, enerji səmərəliliyi və təsvir keyfiyyəti. Hər birini mobil inkişaf kontekstində nəzərdən keçirək.
GPU paralelliyi kadr başına milyonlarla fraqmenti emal etməyə imkan verir. Qualcomm Adreno 750 mobil GPU-su 1.5 TFLOPS — saniyədə 1500 milyard üzən nöqtə əməliyyatı yerinə yetirir. Snapdragon 8 Gen 3 CPU-su təxminən 200 GFLOPS təmin edir. 7.5 dəfə fərq 8 CPU nüvəsinə qarşı 1024 şeyder nüvəsi sayəsində əldə edilir.
Real tətbiqlərdə GPU Rendering oyunlarda və 3D səhnələrdə 60 FPS təmin edir, CPU Rendering isə 5–15 FPS verir. Göz başına 2K təsvir ölçüsü və 90 FPS tələb edən VR tətbiqləri üçün GPU yeganə mümkün render üsuludur.
GPU Rendering eyni hesablama yükündə CPU-dan daha enerji səmərəlidir. GPU 0.5–1 Vt enerji sərfiyyatı ilə 1 milyon fraqmenti emal edir. CPU eyni tapşırıqda daha mürəkkəb idarəetmə məntiqi və az ixtisaslaşma səbəbindən 3–5 Vt enerji sərf edir. ARM (2025) məlumatına görə, GPU emal edilən fraqment başına vattda CPU-dan 4–6 dəfə səmərəlidir.
| Parametr | GPU Rendering | CPU Rendering |
|---|---|---|
| FLOPS | 1500 GFLOPS | 200 GFLOPS |
| Axınlar | 1024 | 8 |
| Kadr/san (3D) | 60 | 5–15 |
| Fraqment/Vt | 1 mln/0.5 Vt | 1 mln/3 Vt |
| Gecikmə | 2–5 ms | 15–30 ms |
Tile-Based Rendering (TBR) — kadrın 16x16 və ya 32x32 piksel ölçüsündə kiçik bloklara (tayllara) bölündüyü mobil GPU arxitekturasıdır. Hər bir tayl tamamilə çip üzərindəki sürətli SRAM yaddaşda render edilir, sonra nəticə xarici DRAM-a yazılır.
TBR yaddaş bant genişliyi problemini həll edir. Immediate rejimdə (masaüstü GPU-lar) hər fraqment kadr başına dəfələrlə DRAM-dan oxuyur və yazır. TBR bütün oxuma/yazma əməliyyatlarını Tile Memory-də (20–50 giriş dövrəsi) yerinə yetirir və yalnız yekun nəticəni DRAM-a (2–4 dövrə) kopyalayır. Imagination Technologies (2025) məlumatına görə, TBR yaddaş trafikini 70–80% azaldır.
Bütün müasir mobil GPU-lar TBR-dən istifadə edir: Qualcomm Adreno (FlexRender — immediate və tile hibridi), ARM Mali (Bifrost/Valhall — təmiz TBR), Apple GPU (TBDR — Tile-Based Deferred Rendering) və Imagination PowerVR (ən qədimi TBDR, 1998-ci ildən).
TBDR (Tile-Based Deferred Rendering) — GPU-nun şeyderləmədən əvvəl gizli səth silmə həyata keçirdiyi TBR genişləndirməsidir. Hər tayl üçün GPU həndəsə ilə örtülmüş fraqmentləri ataraq görünən fraqmentlərin siyahısını qurur. Bu, Fragment Shader çağırışlarının sayını 30–70% azaldır.
Apple (2025) məlumatına görə, onların GPU-sunda TBDR yarımşəffaf obyektləri olan mürəkkəb səhnələri lazımsız hesablamalar olmadan render etməyə imkan verir. Tərtibatçı optimallaşdırma zamanı TBDR xüsusiyyətlərini nəzərə almalıdır: render sırası və early-z testi immediate rejimdən fərqli işləyir.
Müasir GPU Rendering keyfiyyət və performansı yaxşılaşdırmaq üçün qabaqcıl texnikalardan istifadə edir. Mobil inkişafda tətbiq olunan əsas üsulları nəzərdən keçirək.
Deferred Shading — həndəsənin G-buffer-ə (mövqe, normal, rəng, material) render edildiyi, işıqlandırmanın isə tam ekran quad-da ayrıca hesablandığı texnikadır. Bu, obyektlərin sayını işıq mənbələrinin sayından ayırır. Epic Games (2025) məlumatına görə, mobil GPU-larda deferred shading FPS düşməsi olmadan səhnədə 64 işıq mənbəyinə qədər istifadə etməyə imkan verir.
Variable Rate Shading (VRS) — kadrın müxtəlif sahələrinin müxtəlif təsvir ölçüsündə şeyderləndiyi texnikadır. Periferik sahələr və kölgələr aşağı təsvir ölçüsündə (2x2 bloklar), fokus mərkəzi isə tam təsvir ölçüsündə emal edilə bilər. Microsoft DirectX Team (2025) məlumatına görə, VRS keyfiyyətdə nəzərə çarpan azalma olmadan 20–40% performans artımı verir.
Müasir GPU-lar asinxron əmr növbələrini (async compute) dəstəkləyir. Müxtəlif tapşırıqlar — qrafika, hesablama, kopyalama — GPU-nun müxtəlif bloklarında paralel yerinə yetirilir. Vulkan və Metal asinxron render üçün mexanizmlər təmin edir ki, bu da fizika və post-emal ilə mobil oyunlar üçün vacibdir.
// Vulkan vasitəsilə Android-də GPU renderini konfiqurasiya edin
val device = physicalDevice.createDevice(
deviceCreateInfo {
queueCreateInfos += listOf(
deviceQueueCreateInfo {
queueFamilyIndex = graphicsQueueIndex
queuePriorities += 1.0f
},
deviceQueueCreateInfo {
queueFamilyIndex = computeQueueIndex
queuePriorities += 1.0f
}
)
}
)
Kod iki növbə yaradır: biri qrafika, digəri hesablama əməliyyatları üçün. Asinxron icra GPU-ya post-effektləri növbəti kadrın renderi ilə paralel emal etməyə imkan verir, ümumi performansı 15–25% artırır.
GPU Rendering tətbiqi mobil tətbiqlərdə dörd əsas sahəni əhatə edir: UI kompozitinqi, oyunlar, AR/VR və təsvir emalı. Hər birinin praktik aspektlərini nəzərdən keçirək.
Android HWUI (Hardware UI) bütün UI qatlarını GPU-da render edir. Hər View teksturaya (DisplayList) render edilir, HWUI isə onları yekun kadrda kompozit edir. GPU Rendering burada CPU-nu yükləmədən hamar animasiya və kölgələr təmin edir. Google (2025) məlumatına görə, GPU-da HWUI 60 FPS animasiyada proqram renderindən 3 dəfə sürətlidir.
Oyunlar — GPU Rendering-in əsas istehlakçısıdır. Unity və Unreal Engine bütün qrafika üçün GPU-dan istifadə edir: relyefdən post-effektlərə qədər. Optimallaşdırmaya LOD (Level of Detail), occlusion culling və texture atlasing daxildir. Unity Technologies (2025) məlumatına görə, düzgün optimallaşdırılmış GPU Rendering oyunu orta seqment cihazlarında 30 FPS işləyir.
GPU Compute Shaders vasitəsilə filtrləri, çevirmələri və obyekt aşkarlamanı sürətləndirir. iOS-da Metal Performance Shaders və Android-də RenderScript GPU sürətləndirməli emal üçün kitabxanalar təmin edir. Apple (2025) məlumatına görə, GPU filtrləri eyni verilənlərdə CPU analoqlarından 5–10 dəfə sürətli işləyir.
Tez-tez verilən suallar
GPU Rendering piksellərin kütləvi emalı üçün minlərlə paralel nüvədən istifadə edir, CPU Rendering isə 4–12 universal nüvədən. GPU 3D qrafikada 10–30 dəfə sürətlidir, lakin verilənlərin şin vasitəsilə ötürülməsi üçün əlavə resurs tələb edir.
TBR — kadrın 16x16 piksel tayllara bölündüyü arxitekturadır. Hər tayl sürətli SRAM yaddaşda render edilir ki, bu da DRAM-a müraciətləri 70–80% azaldır və enerji istehlakını aşağı salır. TBR bütün müasir mobil GPU-larda istifadə olunur.
Vulkan — aşağı əlavə yük və GPU yaddaşı üzərində nəzarət sayəsində Android üçün ən yaxşı seçimdir. Metal — minimal drayver gecikməsi ilə iOS üçün məcburidir. OpenGL ES — köhnə cihazlarla geriyə uyğunluq üçün.
Əsas səbəblər: həddindən artıq istidə trottlinq, həddindən artıq draw çağırışları, budaqlanmalarla optimallaşdırılmamış şeyderlər və yüksək təsvir ölçülü teksturalar. Diaqnostika üçün Android-də Profile GPU Rendering və ya Xcode GPU Report istifadə edin.
Deferred rendering — həndəsənin G-buffer-ə render edildiyi, işıqlandırmanın isə ayrıca hesablandığı texnikadır. Səhnədə 8+ işıq mənbəyi olduqda istifadə edin. Sadə səhnələr üçün forward rendering daha səmərəlidir, çünki az yaddaş sərf edir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun