Як я можу створити ефективний шейдер для цвітіння за допомогою GLSL?


12

Я шукав у мережі ресурси, пов’язані з наданням ефекту цвітіння за допомогою GLSL, але нічого не знайшов. Хоча підручник на веб-сайті Philip Rideout є хорошим, він працює дуже добре на моєму графічному процесорі Nvidia.

Хтось може мене керувати, як мені підійти до цієї проблеми та побудувати досить ефективну реалізацію ефекту цвітіння?


1
У Ardor3d, 3D-двигуні з відкритим кодом, реалізований шейдер розквіту. Оскільки це відкритий ресурс, ви можете легко це перевірити (www.ardor3d.com). Але в основному це лише копіювання фреймбуфера, зменшення масштабу, розмиття, додавання добавок ..
Pjotterke

1
Який у вас GPU?

1
Дуже важливо повідомити нам, що у вас є GPU / відеокарта. +! @JoshPetrie
Patrick Hughes

У мене на ноутбуці є графічна карта Nvidia GeForce GT 230M
snape

6
@snape: Яке велике гауссове ядро ​​ви використовуєте, і яка роздільна здатність вашого найбільшого розмитого FBO? Найпростіший спосіб поліпшити продуктивність - це використовувати менше ядро ​​та менший FBO. (У своїх речах я роблю розмиття всередині FBO з роздільною здатністю 512x512, незалежно від роздільної здатності дисплея)
Тревор Пауелл

Відповіді:


3

Як згадував Тревор у своєму коментарі, вашим єдиним варіантом може бути зменшення розміру ядра або проведення подальшого зменшення розміру.

Але ви ретельно прочитали підручник, з яким ви пов’язані? Є порада щодо використання апаратної фільтрації, яку автор називає "підлий" версією. Це, мабуть, найкращий трюк, який можна використовувати для оптимізації ефекту цвітіння, не впливаючи на його якість.


Так, я ретельно читав підручник. Нарешті я покращив свою ефективність за допомогою офлайн-рендерінгу, а також раніше не ввімкнув апаратну підтримку графічного додатку.
snape

0

Я вирішив дуже подібну проблему (розмиття, але фільтр розпускання розмивається) з двома проходами.

У першому проході я розмиваюсь у напрямку X, а у другому проході я розмиваюсь у напрямку Y.

Я не знаю, звідки у мене цей фокус, але це знижує складність у часі з n² до 2n.

Це працює лише для ядер, які не мають жодного напрямку (тому ви не можете оптимізувати ядро ​​bokeh таким чином).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.