Реализация менеджера постпроцессинга - PullRequest
1 голос
/ 09 августа 2010

Я думал о том, как внедрить менеджер PostProcessing в мой движок ( Vanquish ).

Я изо всех сил пытаюсь понять, как работает техника постобработки. Я прочитал и просмотрел образец постобработки на веб-сайте creators.xna.com , но это, похоже, приводит к повторной визуализации модели с применением эффекта постобработки.

Я могу добавить эту функциональность для статических моделей, но когда дело доходит до перерисовки скиннированных моделей, я запутываюсь, поскольку у них уже есть свои собственные приемы воздействия.

Может ли кто-нибудь помочь мне исправить мои мысли, указав мне правильное направление?

1 Ответ

1 голос
/ 09 августа 2010

Обычно постобработка работает по всему экрану.На самом деле это довольно просто.

Что вы делаете, это устанавливаете цель рендеринга на устройстве (я полагаю, вы можете выяснить, как создать цель рендеринга из образца):

GraphicsDevice.SetRenderTarget(renderTarget);

С этого момента все, что вы рендерите, будет отображаться для этой цели рендеринга.Когда вы закончите, вы можете вернуть устройство обратно в буфер:

GraphicsDevice.SetRenderTarget(null);

И, наконец, вы можете рисовать, используя вашу цель рендеринга, как если бы это была текстура ( это новое вXNA 4.0 , в XNA 3.1 вам нужно было вызвать GetTexture на нем).

Итак, чтобы создать эффект постобработки:

  • Визуализация вашей сцены в рендереtarget
  • Переключение обратно в задний буфер
  • Визуализация цели рендеринга в полноэкранном режиме (с помощью SpriteBatch) с помощью пиксельного шейдера, который будет применять ваш эффект постобработки.

Похоже, вы хотите сделать это для каждой модели?Что кажется странным, но определенно возможным.Просто убедитесь, что ваша цель рендеринга имеет прозрачный альфа-канал для начала, а затем нарисуйте его с альфа-смешиванием.

Или вы вообще не имеете в виду постобработку?Вы действительно хотите изменить пиксельный шейдер, с которым рисуется модель, сохраняя вершинный шейдер скиновой модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...