Bagaimana saya bisa membuat bloom shader yang efisien dengan GLSL?

12

Saya telah mencari di internet untuk sumber daya yang terkait dengan rendering efek mekar menggunakan GLSL, tetapi belum menemukan apa pun. Meskipun tutorial di situs web Philip Rideout bagus, namun berkinerja sangat buruk pada GPU Nvidia saya.

Adakah yang bisa membimbing saya bagaimana saya harus mendekati masalah ini dan membangun implementasi yang efektif dari efek mekar?

Snape
sumber
1
Ardor3d, sebuah engine java 3d opensource, memiliki bloom shader yang diimplementasikan. Karena ini adalah opensource, Anda dapat dengan mudah memeriksanya (www.ardor3d.com). Tapi pada dasarnya, itu hanya menyalin framebuffer, downscale, blur, campuran aditif ..
Pjotterke
1
GPU seperti apa yang Anda miliki?
1
Sangat penting untuk memberi tahu kami kartu GPU / video apa yang Anda miliki. +! @JoshPetrie
Patrick Hughes
Saya memiliki kartu grafis Nvidia GeForce GT 230M di laptop saya
snape
6
@snape: Seberapa besar kernel gaussian yang Anda gunakan, dan berapa resolusi FBO kabur terbesar Anda? Cara termudah untuk meningkatkan kinerja adalah dengan menggunakan kernel yang lebih kecil dan FBO yang lebih kecil. (Dalam barang-barang saya, saya melakukan kabur saya di dalam FBO resolusi 512x512, tidak peduli resolusi layar)
Trevor Powell

Jawaban:

3

Seperti yang disebutkan Trevor dalam komentarnya, satu-satunya pilihan Anda mungkin untuk mengurangi ukuran kernel Anda atau untuk melakukan downsampling lebih lanjut.

Tetapi apakah Anda benar-benar membaca tutorial yang telah Anda tautkan? Ada tip tentang mengeksploitasi penyaringan perangkat keras, yang oleh penulis disebut versi "licik". Ini mungkin trik terbaik yang dapat Anda gunakan untuk mengoptimalkan efek mekar Anda tanpa mempengaruhi kualitasnya.

Laurent Couvidou
sumber
Ya, saya membaca tutorial dengan seksama. Saya akhirnya meningkatkan kinerjanya dengan menggunakan render offline dan juga saya belum mengaktifkan dukungan perangkat keras untuk aplikasi grafis sebelumnya.
Snape
0

Saya memecahkan masalah yang sangat mirip (kabur, tetapi filter mekar kabur) dengan dua lintasan.

Di pass pertama saya kabur di arah X dan di pass kedua saya kabur di arah Y.

Saya tidak tahu dari mana saya punya trik ini tetapi menurunkan kompleksitas waktu dari n² menjadi 2n.

Ini hanya berfungsi untuk kernel yang tidak memiliki arah (sehingga Anda tidak dapat mengoptimalkan kernel bokeh dengan cara ini).

Quonux
sumber