Compositing: ano ito, mga layer at prinsipyo ng paggana

May-akda: IT Sectr Nai-publish: 2026-06-12 Oras ng pagbabasa: 10 min

Compositing — ay ang proseso ng pagsasama-sama ng maraming visual layer sa isang huling imahe. Ayon sa Apple Core Animation Documentation, 2025, sa mobile development ang compositing ay ginagamit para sa pagpapatong ng mga UI layer, pagsasama ng 3D render sa interface at paglikha ng mga animation. Compositing ay namamahala sa pagkakasunud-sunod ng pagguhit, transparency at paghahalo ng mga kulay sa pagitan ng mga layer.

Mga Pangunahing Punto

  • Compositing — pagsasama ng mga indibidwal na visual layer sa huling imahe.
  • Alpha blending — pangunahing algorithm ng paghahalo na isinasaalang-alang ang transparency ng mga layer.
  • GPU compositing — isinasagawa sa GPU sa pamamagitan ng blending operations ng ROP blocks.
  • Core Animation (iOS) at HWUI (Android) — mga sistema ng kompositing sa mobile OS.
  • Optimisasyon ng compositing ay kritikal para sa maayos na UI at animation sa 60 FPS.

Ano ang compositing?

Compositing — ay ang huling yugto ng graphical pipeline, kung saan ang lahat ng hiwalay na na-render na mga layer (3D scene, UI elements, video, system interface) ay pinagsama sa isang imahe para ipakita sa screen. Ang bawat layer ay maaaring magkaroon ng sarili nitong kulay, transparency (alpha), posisyon at pagkakasunud-sunod ng pagpapatong.

Sa konteksto ng mobile development, ang compositing ay mahalaga para sa user interface: mga bintana, buton, teksto, icon — lahat ng elementong ito ay kino-composite sa isang eksena. Ang sistema ng compositing ay namamahala sa pagkakasunud-sunod ng pagguhit (z-order), tamang pagpapatong ng semi-transparent na mga elemento at animation ng paglipat sa pagitan ng mga estado ng UI.

Compositing sa graphical pipeline

Sa graphical pipeline, ang compositing ay nagaganap pagkatapos makumpleto ang lahat ng shader pass at rasterization. Kinukuha ng GPU ang mga handa na layer mula sa framebuffers, nag-aaplay ng blending operations at isinusulat ang resulta sa pangunahing frame buffer (front buffer) para ipadala sa display.

Paano gumagana ang compositing?

Compositing ay gumagamit ng pixel-by-pixel na paghahalo (blending) ng mga kulay mula sa iba't ibang layer. Ang bawat pixel ng output na imahe ay kinukwenta batay sa mga kulay ng mga pixel mula sa mga pinatong na layer na isinasaalang-alang ang transparency (alpha channel) at napiling blending mode.

Alpha channel at transparency

Ang bawat layer ay naglalaman ng alpha channel (ika-apat na bahagi ng RGBA color) na tumutukoy sa opacity nito. Alpha = 1.0 — ganap na opaque, alpha = 0.0 — ganap na transparent. Alpha blending ay kinukwenta ang kulay ng pixel bilang isang weighted sum ng mga kulay ng harap (source) at likod (destination) na layer: result = source * alpha + dest * (1 - alpha).

Pagkakasunud-sunod ng pagguhit (Algorithm ng Pintor)

Ang compositing ay isinasagawa sa pagkakasunud-sunod mula sa pinakamalayong layer hanggang sa pinakamalapit (back-to-front). Una, ang background layer ay nire-render, pagkatapos ang bawat kasunod na layer ay ipinapatong sa nauna na isinasaalang-alang ang transparency nito. Z-order ay tumutukoy kung aling layer ang nasa itaas at tatakpan ang mga layer sa ibaba.

Mga algorithm ng compositing

Compositing ay sumusuporta sa iba't ibang blending mode na tumutukoy kung paano pinagsasama ang mga kulay ng layer. Ang bawat mode ay nagbibigay ng ibang visual effect at may sariling computational cost.

ModeFormulaApplication
Normal (Alpha)src * a + dst * (1 - a)Standard na pagpapatong na may transparency
Additivesrc + dstMga epekto ng liwanag, particle
Multiplysrc * dstPagpapadilim, mga anino
Screen1 - (1 - src) * (1 - dst)Pagpapaliwanag, mga reflection
Premultiplied Alpha(src.rgb * a) + dst * (1 - a)Mahusay (walang multiplication on-the-fly)

Premultiplied Alpha

Sa premultiplied alpha mode, ang mga color channel ay naka-imbak na na-multiply sa alpha channel (RGB × A). Tinatanggal nito ang pangangailangan para sa multiplication sa bawat blending operation, pinapabilis ang compositing. Premultiplied alpha — standard na format para sa GPU-compositing sa iOS Core Animation at Android HWUI.

Compositing sa mobile OS

Ang bawat mobile operating system ay may sariling compositing system, na na-optimize para sa hardware platform nito. Compositing sa mobile OS ay responsable para sa pag-render ng buong user interface.

iOS: Core Animation + Metal

Sa iOS, ang compositing ay pinamamahalaan ng Core Animation — isang high-level system na gumagana sa ibabaw ng Metal o OpenGL ES. Gumagawa ang Core Animation ng layer tree (puno ng mga layer) na pagkatapos ay kino-composite sa huling imahe. Core Animation ay awtomatikong nakakakita kung aling mga layer ang nagbago at iginuguhit lamang ang mga ito (incremental compositing), na nagpapaliit ng karga sa GPU.

Android: SurfaceFlinger + HWUI

Sa Android, ang compositing ay isinasagawa ng SurfaceFlinger — isang system service na pinagsasama ang mga surface mula sa iba't ibang application at system interface. SurfaceFlinger ay gumagamit ng HWC (Hardware Composer) para ilipat ang bahagi ng compositing work sa dedicated hardware ng display controller.

Pagganap ng compositing

Pagganap ng compositing — madalas na bottleneck sa mobile applications, lalo na sa mga kumplikadong animation at pagpapatong ng maraming semi-transparent na layer. Ang bawat karagdagang layer ay nangangailangan ng pagbasa, paghahalo at pagsulat ng mga pixel sa memorya.

Mga salik na nakakaapekto sa pagganap

  • Bilang ng mga layer — bawat layer ay nangangailangan ng hiwalay na blending pass. Ang pagbawas ng bilang ng mga layer ay pabilis ng compositing nang linear.
  • Resolusyon ng mga layer — ang mga layer na may mataas na resolution ay nagpapataas ng bilang ng mga pixel na pinoproseso. Gamitin ang pinakamababang posibleng sukat ng offscreen buffers.
  • Transparency at overdraw — ang mga semi-transparent na layer ay nangangailangan ng pagbasa ng mga pixel sa ilalim, na nagpapataas ng bandwidth.
  • CPU compositing — kung ang compositing ay isinasagawa sa CPU (software rendering), ang pagganap ay bumaba nang husto. Ang GPU-compositing ay palaging mas gusto.

GPU Compositing vs CPU Compositing

Ang mga modernong mobile device ay nagsasagawa ng compositing sa GPU sa pamamagitan ng mga specialized blending blocks. GPU-compositing ay gumagamit ng parallel ROP blocks at texture filters para sa mabilis na paghahalo ng pixel. Ang CPU-compositing ay ginagamit lamang sa mga bihirang kaso (lumang device, pagsubok).

Optimisasyon ng compositing

Optimisasyon ng compositing — isa sa mga pangunahing gawain sa pag-develop ng mobile interfaces. Ang kinis ng UI (60 FPS) ay direktang nakadepende sa kahusayan ng pagsasama ng mga layer.

Mga pangunahing paraan ng optimisasyon

  • Minimisasyon ng mga layer — pagsasama ng mga static na layer sa isa (layer flattening) sa pamamagitan ng pre-rendering.
  • Opaque layers — ang mga opaque na layer ay hindi nangangailangan ng alpha blending, na makabuluhang pabilis ng compositing.
  • Incremental compositing — pagguhit muli lamang ng mga nagbago na layer, hindi ang buong eksena (ginagamit ng Core Animation).
  • Hardware Composer — paggamit ng HWC para sa hardware compositing nang walang GPU.

Mga tool sa profiling

Para sa pagsusuri ng pagganap ng compositing gamitin ang: Core Animation Profiler (Xcode Instruments) — nagpapakita ng bilang ng mga layer at dalas ng compositing; GPU Debugger (Android Studio) — nagpapakita ng GPU load at overdraw; Overdraw Visualisation — debug tool na nagpapakita ng mga lugar ng maraming pagguhit muli ng pixel.

Mga Madalas Itanong

Ano ang compositing sa simpleng salita?

Ang compositing ay parang pagdikit ng ilang transparent na film na may mga guhit sa isang larawan. Ang bawat film ay isang layer (buton, background, text), at ang transparency ay tumutukoy kung paano nagkikita ang mga layer sa isa't isa.

Ano ang pagkakaiba ng rendering at compositing?

Rendering — paglikha ng nilalaman ng bawat layer (pagguhit ng buton, pag-texture ng 3D model). Compositing — pagsasama ng mga handa na layer sa huling imahe na isinasaalang-alang ang transparency at pagkakasunud-sunod ng pagpapatong.

Paano nakakaapekto ang compositing sa pagganap ng iOS?

Ang Core Animation ay kino-composite ang mga layer sa GPU sa pamamagitan ng Metal. Nagsisimula ang mga problema sa maraming semi-transparent na layer (overdraw) o sa CPU-compositing (off-screen rendering). Gamitin ang Core Animation Profiler para sa diagnosis.

Ano ang Hardware Composer sa Android?

Hardware Composer (HWC) — hardware module ng display controller na nagsasagawa ng compositing nang hindi naglo-load ng GPU. Ang HWC ay maaaring pagsamahin ang hanggang 4-8 layer sa hardware, na nagbabawas ng konsumo ng kuryente at nagpapalaya sa GPU para sa iba pang mga gawain.

Paano bawasan ang karga ng compositing?

Pagsamahin ang mga static na layer (layer flattening), gumamit ng opaque na kulay kung posible, bawasan ang laki ng offscreen buffers at iwasan ang mga hindi kinakailangang animation na nagdudulot ng recompositing ng buong eksena.

Buod

  • Compositing — huling yugto ng pagsasama ng lahat ng visual layer sa huling imahe ng screen.
  • Alpha blending — pangunahing algorithm ng paghahalo ng kulay na isinasaalang-alang ang transparency (RGBA).
  • Premultiplied alpha — standard na format ng GPU-compositing na nag-aalis ng mga hindi kinakailangang multiplication.
  • Core Animation (iOS) at SurfaceFlinger (Android) — mga compositing system ng mobile OS.
  • Bilang ng semi-transparent na layer — pangunahing salik na nakakaapekto sa pagganap ng compositing.
  • Hardware Composer — hardware block ng Android para sa compositing nang walang GPU.
  • Optimisasyon ay kinabibilangan ng layer flattening, paggamit ng opaque layer at incremental compositing.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din