ฉันจะสร้าง Bloom Shader ที่มีประสิทธิภาพด้วย GLSL ได้อย่างไร


12

ฉันค้นหาสุทธิเพื่อหาแหล่งข้อมูลที่เกี่ยวข้องกับการแสดงผลบลูมโดยใช้ GLSL แต่ไม่พบอะไรเลย แม้ว่าบทช่วยสอนที่เว็บไซต์ของ Philip Rideoutนั้นดี แต่มันก็ทำงานได้ไม่ดีกับ Nvidia GPU ของฉัน

ทุกคนสามารถแนะนำฉันเกี่ยวกับวิธีที่ฉันควรแก้ไขปัญหานี้และสร้างการใช้งานเอฟเฟกต์บานที่มีประสิทธิภาพอย่างเป็นธรรมหรือไม่?


1
Ardor3d ซึ่งเป็นเอ็นจิ้น opensource java 3d ได้มีการใช้ Bloom Shader เนื่องจากเป็น opensource คุณสามารถตรวจสอบได้อย่างง่ายดาย (www.ardor3d.com) แต่โดยทั่วไปมันแค่คัดลอก framebuffer, downscale, blur, additive blending ..
Pjotterke

1
คุณมี GPU ประเภทไหน?

1
สำคัญมากที่จะแจ้งให้เราทราบว่าคุณมี GPU / การ์ดแสดงผล +! @JoshPetrie
Patrick Hughes

ฉันมีการ์ดกราฟิก Nvidia GeForce GT 230M บนแล็ปท็อปของฉัน
snape

6
@snape: คุณใช้เคอร์เนลเกาส์ขนาดใหญ่ขนาดไหนและความละเอียดของ FBO เบลอที่ใหญ่ที่สุดของคุณคืออะไร? วิธีที่ง่ายที่สุดในการปรับปรุงประสิทธิภาพคือการใช้เคอร์เนลที่เล็กลงและ FBO ที่เล็กลง (ในสิ่งที่ฉันทำฉันเบลอในความละเอียด 512x512 ไม่ว่าจะเป็นความละเอียดการแสดงผล)
Trevor Powell

คำตอบ:


3

ดังที่เทรเวอร์กล่าวไว้ในความคิดเห็นของเขาตัวเลือกเดียวของคุณอาจลดขนาดเคอร์เนลของคุณหรือทำการสุ่มตัวอย่างต่อไป

แต่คุณอ่านบทช่วยสอนที่คุณเชื่อมโยงอย่างละเอียดหรือไม่ มีเคล็ดลับเกี่ยวกับการใช้ประโยชน์จากการกรองฮาร์ดแวร์ที่ผู้เขียนเรียกว่า "ลับ ๆ ล่อใจ" รุ่น มันอาจเป็นกลอุบายที่ดีที่สุดที่คุณสามารถใช้เพื่อทำให้เอฟเฟ็กต์เบลอของคุณโดยไม่ส่งผลกระทบต่อคุณภาพของมัน


ใช่ฉันอ่านบทช่วยสอนอย่างละเอียด ในที่สุดฉันก็ปรับปรุงประสิทธิภาพโดยใช้การแสดงผลแบบออฟไลน์และฉันไม่ได้เปิดใช้งานการสนับสนุนฮาร์ดแวร์สำหรับแอปพลิเคชันกราฟิกก่อนหน้านี้
เนป

0

ฉันแก้ไขปัญหาที่คล้ายกันมาก (การทำให้พร่ามัว แต่ฟิลเตอร์บลูมกำลังเบลอ) โดยผ่านสองครั้ง

ในรอบแรกที่ฉันเบลอในทิศทาง X และในรอบที่สองที่ฉันเบลอในทิศทาง Y

ฉันทำไม่ได้จากที่ฉันมีเคล็ดลับนี้ แต่มันช่วยลดความซับซ้อนของเวลาจากn²เป็น 2n

ใช้งานได้กับเมล็ดที่ไม่มีทิศทางใด ๆ เท่านั้น (ดังนั้นคุณจึงไม่สามารถปรับเคอร์เนล bokeh ได้ด้วยวิธีนี้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.