1 poin oleh GN⁺ 2025-12-19 | Belum ada komentar. | Bagikan ke WhatsApp
  • Mulai OBS Studio 32.0.0 untuk macOS, backend renderer berbasis Apple Metal ditambahkan secara eksperimental, dengan tujuan meningkatkan performa dan efisiensi dibanding OpenGL yang ada saat ini
  • Metal adalah API yang dirancang untuk overhead rendah dan mencerminkan arsitektur GPU modern, dan untuk mendukungnya OBS harus mengubah secara mendasar cara berinteraksi dengan GPU
  • Karena renderer OBS yang ada sebelumnya dibangun dengan struktur berpusat pada Direct3D, backend Metal memerlukan pekerjaan kompatibilitas skala besar pada hal-hal seperti konversi shader dan manajemen resource
  • Secara khusus, implementasinya mencakup hal kompleks seperti mengonversi shader HLSL ke MSL secara real-time dan mensimulasikan perilaku map/unmap milik Direct3D di dalam Metal
  • Backend Metal masih berada pada tahap "eksperimental", tetapi menjadi titik balik penting untuk peningkatan lingkungan pengembangan macOS melalui performa yang lebih cepat daripada OpenGL, struktur kode aman berbasis Swift, dan dukungan pratinjau EDR

Gambaran Umum Penerapan Renderer Metal

  • Sejak OBS Studio 32.0.0, renderer berbasis API grafis Metal tersedia secara eksperimental di macOS
    • Ditujukan sebagai alternatif backend OpenGL yang ada, dengan target peningkatan performa dan efisiensi
    • Metal adalah API modern yang secara mendasar mengubah cara interaksi dengan GPU, dan OBS menyesuaikan struktur internalnya agar selaras dengan hal itu
  • Backend Metal ditandai sebagai "Experimental" dan masih memiliki beberapa masalah serta keterbatasan yang sudah diketahui
    • Renderer OpenGL tetap menjadi default, dan pengguna dapat mencoba versi Metal secara langsung
    • Umpan balik serta partisipasi Pull Request dari developer yang berpengalaman dengan Metal sangat dianjurkan

Latar Belakang Metal dan Filosofi Desainnya

  • Apple pertama kali memperkenalkan Metal untuk iPhone pada 2014, lalu memperluasnya ke Mac pada 2015
    • Saat itu, Metal merupakan salah satu API grafis generasi berikutnya pertama yang mendukung GPU Intel, AMD, dan NVIDIA sekaligus
  • Metal menggabungkan konsep dari Mantle milik AMD serta OpenGL dan Direct3D yang sudah ada, tetapi dirancang ulang dengan membuang elemen legacy
    • Dengan API berbasis Objective-C dan Swift, strukturnya terasa familier bagi developer iOS dan macOS
    • Mendukung integrasi debugging shader dan analisis GPU langsung di dalam Xcode

Perbedaan Desain API dan Adaptasi Renderer OBS

  • OpenGL dan Direct3D sebelumnya menangani manajemen resource dan sinkronisasi secara otomatis di level API,
    sedangkan API modern seperti Metal mengharuskan developer mengelolanya sendiri
  • API baru memperlakukan GPU sebagai perangkat pemrosesan berbasis command queue paralel, dengan state pipeline dikelola sebagai objek immutable
  • Renderer lama OBS dirancang mengikuti pendekatan Direct3D,
    sehingga untuk mendukung Metal diperlukan lapisan kompatibilitas di level backend

Struktur Renderer OBS dan Masalah Kompatibilitas Metal

  • OBS menggunakan backend Direct3D (Windows) dan OpenGL (Linux/macOS) sesuai platform
    • Inti renderer bersifat independen terhadap API, tetapi masih ada beberapa asumsi yang berpusat pada Direct3D
  • Keterbatasan utama
    • Shader ditulis berbasis HLSL, sehingga perlu dikonversi saat dijalankan
    • Ada penggunaan variabel global, asumsi eksekusi berurutan, serta penanganan tekstur ala Direct3D
    • Rendering pratinjau bergantung pada model discard milik DXGI

Konversi Shader (Transpiling Shaders)

  • File efek OBS ditulis dalam HLSL dan dikonversi agar sesuai dengan masing-masing API
    • Untuk dukungan Metal, ditambahkan konverter HLSL → MSL
  • Perbedaan utama
    • MSL mengharuskan struct input dan output dipisahkan, serta tidak mendukung variabel global
    • Semua data uniform harus dikirim melalui buffer GPU dan diteruskan secara eksplisit sebagai argumen fungsi
    • Saat pemanggilan fungsi, kecocokan tipe dan verifikasi signature diterapkan secara ketat
  • Konverter tersebut menulis ulang sebagian kode shader saat runtime agar sesuai dengan aturan MSL
    • Contohnya, variabel uniform pada HLSL diubah menjadi constant buffer pada MSL
    • Logika konversi tipe seperti int3uint2 + uint juga disisipkan secara otomatis

Simulasi Perilaku Direct3D

  • Renderer OBS dirancang dengan asumsi perilaku map/unmap milik Direct3D
    • Karena Metal tidak menyediakan sinkronisasi otomatis seperti itu, implementasinya dilakukan langsung di backend
  • Cara kerja backend Metal
    • Saat menulis, dibuat buffer GPU yang berbagi langsung dengan memori CPU
    • Saat unmap, perintah blit GPU dijadwalkan untuk menyalin ke tekstur
    • Saat membaca, buffer GPU tetap dibagikan, tetapi sinkronisasi eksplisit digunakan untuk mencegah benturan
  • Hasilnya, pelacakan resource dan sinkronisasi ala Direct3D direproduksi di dalam Metal

Masalah Rendering Pratinjau dan Solusi Sementara

  • Metal Layer di macOS, tidak seperti DXGI, tidak memungkinkan aplikasi menampilkan frame secara sembarang
    • Sistem mengontrol frame rate berdasarkan ProMotion dan mode hemat daya
  • Ketidakselarasan antara render loop milik OBS dan siklus tampilan macOS menyebabkan latensi pratinjau
  • Solusi sementara
    • OBS terlebih dahulu merender ke tekstur virtual, lalu thread terpisah menyalinnya ke Surface layar
    • Proses ini memerlukan sinkronisasi GPU, dan tetap ada kemungkinan ketidakcocokan frame
  • Setelah macOS 14, timer independen per jendela diperkirakan akan menambah tantangan baru

Biaya Tersembunyi dari API Grafis Modern

  • Pengembangan backend Metal memerlukan riset selama berbulan-bulan dan desain berulang
    • Ini menunjukkan secara nyata mengapa perpindahan OpenGL→Vulkan atau D3D11→D3D12 bisa menimbulkan penurunan performa
  • Pada API modern, pekerjaan yang dulu dilakukan driver kini harus ditangani langsung oleh aplikasi
    • Dibutuhkan pemahaman mendalam tentang cara kerja GPU dan dependensi antar perintah
  • Backend Metal memang memperkenalkan kembali sebagian overhead, tetapi tetap menawarkan manfaat berikut
    • Performa setara atau lebih baik daripada OpenGL
    • Fitur analisis yang kuat seperti debugging shader dan tekstur
    • Struktur kode aman berbasis Swift
    • Dukungan pratinjau EDR untuk pemrosesan video berkualitas tinggi
  • Melalui fitur analisis terintegrasi di Xcode, efisiensi pemeliharaan OBS di macOS meningkat, dan tim meminta umpan balik developer untuk membantu transisi Metal menjadi renderer default di masa mendatang

Belum ada komentar.

Belum ada komentar.