Holodepth • Runtime Atlas • Rendering diagnostics
Frame Budget Visualizer
Event Loop zamanı öğretir; Frame Budget bu karede sahnemin hangi katmanının 16,7 ms’i yediğini gösterir. Simülasyon; gerçek Performance trace çekilmez. Aşama sözlüğü Byteomi Render Pipeline’da.
Holodepth köprüsü
Metin byteomi.com · model Holodepth · sahne mimarisi
byteomi.com · Render Pipeline makalesi «bu girdiler ekranda piksele nasıl dönüşür, hangi aşamalar sırayla çalışır?» sorusunu metinsel mimari olarak işler: DOM+CSSOM, render tree, layout, paint, raster, composite, GPU layer. Holodepth bu sayfada aynı sözlüğü tekrar etmez; soruyu çevirir: bir Three.js / WebGL sahnesinde bu karede hangi katman 16,7 ms’i yedi ve canvas’ta ne hissedilir?
Sahne mimarisi açısından frame budget «DevTools satırı» değil,
çizim sözleşmesinin milisaniye hesabıdır.
animate() içindeki mixer / raycast JS şerididir;
HUD getBoundingClientRect veya canvas setSize Layout’tur;
texture.needsUpdate Raster’dır; CSS transform ile kayan orbit wrapper
Compositor’dur main atlanırsa mesh bir kare geride (stale) kalabilir.
Event Loop «hangi şerit / hangi sırada?»; Topology «hangi süreç?»; bu lab
hangi aşama bu kareyi yedi?
Aşağıdaki bölümler paneli, Dominant ≠ Killer ayrımını ve sahne karşılıklarını açıklar; aşama tablosu ve tile / paint-order için Byteomi kaynağına dönün.
Pipeline nasıl okunur?
Göz eğitimi · kare şeritleri · sahne okuması
Panel Chrome Performance’a benzer okunur; amaç profilör olmak değil: sahnenin hangi katmanının bu kareyi yediğini tanımak. Soru «kaç aşama var?» değil: benim mesh’im / HUD’um / texture’ım hangi şeritte?
- Üst şerit = kare toplamı. Renkli dilimler JS → … → Composite. Kesikli çizgi 16,67 / 8,33 ms. Sağı taralı kırmızıysa overflow jank. Pulse (legend altı) son 16 karenin yeşil / kırmızı nabzıdır.
- Dominant ≠ Killer. Bütçe içinde en geniş şerit Dominant (henüz suçlu değil). Taşınca aynı şerit Killer. HUD ve ledger her karede bir sahne cümlesi yazar.
- Ledger + pin. Sağdaki SCOPE son kareyi (veya tıkladığınız kareyi) okur: rol, total / remain, aşama ms, sahne cue. Pulse çubuğu veya timeline karesi pinler; tekrar tık live.
-
Chip = izolasyon.
Aşama chip’ine tıklayınca o şerit net, diğerleri solar. Hover ms + sahne cümlesi
(
animate(),setSize,needsUpdate). - Stale ≠ boş şerit. Compositor-only main lane’leri silmez; taralı stale bırakır. Orbit wrapper akar, mesh bir kare geride Byteomi’nin compositor kazancının sahne bedeli.
Frame Budget ≠ Event Loop ≠ Topology. Event Loop zamanı, Topology süreci, bu lab kare içi aşamayı öğretir. Render tree / tile teorisi Byteomi’de.
- JS
animate()· mixer / raycast / parse - Style HUD class / CSS değişken
- Layout
getBoundingClientRect/setSize - Paint DOM overlay · blur / shadow
- Raster
texture.needsUpdate· GPU tile - Composite layer merge
- Compositor CSS transform HUD · stale canvas
İlk deneme: Sakin kare Dominant var, Killer yok. Layout thrash Layout Killer. Compositor-only ghost şeritler. 120 Hz squeeze aynı iş, 8,33 ms. Sözlük Byteomi Render Pipeline; sahne etkisi bu panel.
Frame Budget Visualizer
Runtime Atlas · FRAME_BUDGET · sahne karesi
Byteomi runtime · CANLI · Render diagnostics
Stage lanes · 16.67 ms budget line · overflow red · killer stage · GPU raster lane · compositor lane.
Runtime note Simülasyon render pipeline maliyet dağılımını taklit eder. Amaç: layout mu pahalı, paint mi, GPU mu; tek bakışta görmek.
PULSE · LAST FRAMES
Çubuğa tık = o kareyi pinle. Yeşil bütçe içi, kırmızı overflow.
Baseline · şeritler kısa, remaining > 3 ms. Dominant var, Killer yok.
Önce bir senaryo seçin. Chip veya ledger aşamasına tıklayınca o şerit izole olur. Kare tık = pin. Elle toggle / Hz CUSTOM yapar.
Bu demo ne işe yarar?
Bu sayfadaki Frame Budget Visualizer, gerçek sitenizin trace’ini okumaz. Küçük bir öğretim modelidir: «Three.js karemde hangi katman 16,7 ms’i yiyor?» sorusuna görsel cevap verir. Production profiler değildir; Byteomi pipeline tablosunu sahne karesine çevirir.
Sahne mimarisi açısından demo şunu sorar:
mixer.update / raycast hangi JS diliminde?
renderer.setSize Layout’u mu şişirir?
texture.needsUpdate Raster’ı mı Killer yapar?
CSS transform HUD Compositor’da akarken canvas neden stale kalır?
Ledger odaktaki kareyi, pulse son 16 karenin nabzını yazar.
Senaryolar sahne stresidir. Sakin kare → Dominant var, Killer yok.
Layout thrash → HUD ölçü / setSize. Paint storm → DOM overlay,
WebGL bekler. Raster / upload → büyük texture. Compositor-only → ghost
main, mesh bir kare geride. 120 Hz squeeze → aynı iş, 8,33 ms.
Nasıl kullanırsınız? Sakin kare baseline; sonra tek senaryo. Chip izolasyonu, kare / pulse tık = pin. Elle toggle CUSTOM. Zamanlama Event Loop; süreç Browser Topology; sözlük Byteomi Render Pipeline.
Kontroller ne yapıyor?
Sahne stresleri · panel altı · kare etkisi
Preset’ler ve toggle’lar Byteomi aşama tablosunu ezberletmez; her anahtar bir sahne stresini taklit eder. Tek tek açın, hangi şeridin Dominant / Killer olduğuna bakın, ürün şikâyetiyle eşleştirin.
- Sakin kare / 120 Hz squeeze
- Baseline: şeritler kısa, Dominant var, Killer yok. 120 Hz aynı işi 8,33 ms’e sıkıştırır 60 Hz’de Dominant olan aşama Killer olabilir. Karşılık VSync budget · yüksek yenileme
- Heavy JS
- JS şeridi uzar. Sahne: tek karede ağır
mixer/ raycast / senkron parse tıklama ve orbit gecikir. Karşılık animate() senkron · JS Dominant / Killer - Layout thrash
- Layout tekrarlanır. Sahne: her frame HUD
getBoundingClientRectveya canvassetSizeWebGL çizimi layout’ta bekler. Karşılık Ölçü / setSize · Layout Killer - Paint storm / Overdraw
- Paint + raster şişer. Sahne: DOM overlay, blur, üst üste HUD; canvas boyaması bekler. Karşılık Overlay paint · paint-bound
- Large layer / Raster upload
- Raster ve composite büyür. Sahne: büyük canvas,
texture.needsUpdate, HDRI / GLTF upload. Karşılık needsUpdate · GPU tile - Compositor-only
- Main şeritler ghost / stale; compositor dolar. Sahne: CSS transform HUD / orbit wrapper akar, mesh bir kare geride. Karşılık Transform path · stale canvas
Okuma ipucu: Önce Dominant / Killer, sonra ledger aşama ms, sonra sahne hipotezi. Elle toggle CUSTOM yapar. Sözlük Byteomi Render Pipeline; sahne etkisi bu panel.
Ne görmelisiniz?
İyi vs kötü · kare imzası · sahne nabzı
Bu kartlar doğru / yanlış cevap değildir; timeline’da aramanız gereken görsel imzalardır. Sağlıklı sahne: canvas her VSync’te güncellenir, Dominant vardır, Killer yoktur. Kötü imza kullanıcıya «takıldı / siyah kare / eski mesh» olarak yansır.
Sağlıklı kare
- Toplam çizginin solunda; remaining > 3 ms
- Dominant var · Killer yok
- Pulse yeşil; stale / hatch yok
Layout / JS bound
- Layout veya JS en geniş; taşınca Killer
- Sahne:
setSize/ ölçü veya ağıranimate() - Preset: Layout thrash veya Heavy JS
Paint / Raster bound
- Paint veya Raster Dominant / Killer
- Overflow hatch; pulse kırmızı
- Sahne: overlay blur veya
needsUpdate
Stale compositor
- Main şeritler ghost; compositor dolar
- Ledger aşamaları STALE
- HUD akar, mesh bir kare geride
Gerçek hayat karşılığı
Ürün · akademi · sahne köprüsü
Byteomi «hangi aşama sırayla çalışır?» diye sorar; Holodepth «sahnemin hangi katmanı bu kareyi üretir?» diye sorar. Önce okuyun, sonra panelde aynı imzayı arayın.
-
HUD her frame ölçülüyor.
Overlay
getBoundingClientRectveya sıksetSizeLayout Killer. Preset: Layout thrash. -
GLTF / texture gelince bir an donma.
needsUpdate+ ilk upload Raster’ı şişirir. Raster / upload + Large layer. - Orbit wrapper akıcı, mesh eski. CSS transform Compositor’da; canvas stale. Compositor-only ghost şeritler.
- 120 Hz monitörde aynı sahne takılıyor. İş değişmedi, bütçe 8,33 ms. 120 Hz squeeze Dominant Killer’a döner.
- DOM + WebGL aynı karede yarışıyor. Blur overlay Paint, draw call Raster. Paint storm + Overdraw.
Özet ve sıra
Ürün · akademi · sahne köprüsü
Referans iskeleti aynı: köprü → okuma → canlı model → kontroller → imzalar → gerçek hayat → özet. Byteomi Render Pipeline aşama sözlüğünü verir; Holodepth aynı sözlüğü sahne mimarisi karesine bağlar mesh / HUD / texture’ın hangi şeritte yediğini, Dominant’ın ne zaman Killer olduğunu ve stale compositor’da canvas’ta ne kaldığını gösterir.
Event Loop zamanı, Frame Budget kareyi, Topology sınırı öğretir. Sıradaki Atlas: Browser Topology, V8 JIT, Layout Thrashing.
Okuma yolu: (1) Byteomi’de sırayı bir kez okuyun, (2) bu sayfada Sakin → Layout thrash → Compositor-only → 120 Hz gezisini yapın, (3) kendi sahnenizde «takıldı / eski kare / siyah flash» şikâyetini aynı şerit dilinde doğrulayın. İlgili Atlas: Event Loop.