Saya telah ditugaskan untuk membangun demo "layar penuh" waktu nyata untuk dijalankan pada array 5x2 TV LED 60+ inci: atau, dengan kata lain, layar 20 megapiksel.
Kami memiliki mesin yang dibangun yang dapat menjalankan penyebaran desktop Win7 tunggal di seluruh layar dengan resolusi penuh, dan beberapa kartu video yang cukup bagus.
Pertanyaan saya adalah: selain dari jumlah pekerjaan konyol yang akan dilakukan oleh pixel shaders saya, apakah ada batasan lain dari DX10. * Yang akan berperan di sini yang tidak akan pada viewport berukuran lebih waras? Saya tidak akan memiliki akses ke perangkat keras sampai minggu depan tetapi saya ingin memiliki sesuatu yang ditulis pada saat itu yang dapat saya gunakan untuk benchmark sistem.
Memperbarui
Sementara saya berhasil mendapatkan ini bekerja pada satu mesin dengan sekelompok AMD EyeFinity (6 output) kartu - untuk menjaga hal-hal bekerja dengan lancar, cara "termudah" ternyata adalah membuat jendela DX per tampilan sebagai memiliki tampilan rentang jendela menyebabkan beberapa masalah kinerja - Saya juga membuatnya bekerja cukup baik dengan mendistribusikan tugas di sekelompok mesin, yang masing-masing menggerakkan dua layar.
Ternyata sangat mudah. Untuk aplikasi pengujian XNA saya, saya menambahkan GameComponent yang menangkap beberapa kondisi permainan (posisi / orientasi kamera, dll.) Dan UDP-mem-spam-nya ke subnet per frame lokal.
Komponen itu memiliki Mode
sakelar (kirim atau terima). Jika dalam Receive
mode, ia menangkap datagram UDP dan memperbarui status game dengan informasi dari pengirim. Send
mode hanya mengirim paket state, dan, melalui service / daemon, menyebabkan node memulai atau menghentikan aplikasi klien. Setiap klien dapat bertindak sebagai "master", dan mengalihkan klien ke Send
mode meminta semua node lain untuk beralih ke Receive
. Sangat menghibur melihat apa yang terjadi ketika orang-orang memperebutkan kontrol.
Manfaat lain yang rapi: Saya membuat aplikasi konsol yang memproses serangkaian definisi keadaan keyframe - lokasi, waktu, dll - menginterpolasi sesuai kebutuhan, dan mengirimkannya menggunakan kode yang sama seperti yang digunakan dalam mesin game. Ini memungkinkan saya dengan mudah menyalin gerakan, mengirim transformasi dari browser web, dll.
Secara keseluruhan, butuh sekitar 50 baris kode untuk menjaga banyak salinan aplikasi berjalan dalam sinkronisasi. Beberapa kompleksitas tambahan datang dari pengaturan posisi kamera untuk setiap mesin dan mengoreksi beberapa gangguan perspektif / proyeksi, tetapi sebagian besar berasal dari file konfigurasi per-simpul.
sumber
Jawaban:
Saya akan khawatir sama banyak tentang konfigurasi perangkat keras sebagai perangkat lunak. Anda tidak harus menjalankan setiap TV pada resolusi aslinya, dan ukuran layar berbeda dari resolusi. Saya akan menganggap 60 "TV masing-masing 1920x1080, jadi resolusi asli di semua itu adalah 9600x2160 jika Anda berarti 5 baris x 2 kolom TV, atau 3840x5400 jika Anda berarti 5 kolom x 2 baris.
Kartu AMD Radeon terbaru, 7970 mendukung resolusi hingga 4096x2160 per layar, maksimum dua layar, jika Anda menggunakan DisplayPort 1.2 untuk mentransfer video. Jadi itu mungkin membuat Anda mendekati resolusi asli, namun itu tidak akan berfungsi hingga 5 TV dengan cara itu.
AMD Radeon 6870 Eyefinity 6 mendukung hingga 6 output sekaligus, tetapi hanya lebih dari resolusi maksimal 5760x2160. Ini juga mendukung konfigurasi Crossfire yang akan membantu kinerja Anda sedikit. Ingatlah bahwa GPU tambahan tidak akan menghasilkan resolusi maksimal yang lebih besar.
Pendek dari pengaturan tampilan sepenuhnya khusus, atau sesuatu untuk membagi sinyal video Anda ke lebih banyak monitor / TV, saya tidak yakin bagaimana Anda akan dapat berjalan di 10 layar sekaligus. Tetapi jika Anda memiliki kemampuan itu, maka yang Anda cari adalah pengaturan grafis tercepat yang mendukung resolusi yang paling dekat dengan resolusi asli Anda. Setelah Anda yakin bahwa taruhan terbaik Anda adalah menjaga pixel shader semurah mungkin, dan menghindari penarikan berlebih, yang berarti menghitung piksel tunggal lebih dari sekali. Pemusnahan frustum dan oklusi, dan penyortiran kedalaman akan sangat membantu dalam mengurangi penarikan berlebih. Sejauh batas dalam DX10, saya tidak yakin satu yang membatasi resolusi, saya yakin ada satu, tapi mungkin lebih besar daripada kartu DX10 yang ada.
sumber
Anda dapat dengan mudah membuat target render dengan ukuran yang setara untuk menguji kinerja. Anda harus menurunkan skala atau memperbesar saat menyalinnya ke buffer belakang sampai Anda mendapatkan perangkat keras yang sebenarnya.
sumber