2011-04-02 5 views
3

J'ai une question sur les effets de post-traitement du rendu en temps réel.effets de post-traitement de rendu en temps réel

Comment fonctionnent-ils en général? c'est-à-dire comment accéder à l'image finale pour pouvoir y apporter des modifications? Est-ce que vous le rendez à une texture?

Si oui, comment vous assurez-vous que la texture correspond à la taille de votre écran?

merci!

Répondre

6

flux de travail de base:

  • rendu de la scène pour un rendu cible/texture (taille de l'écran, le plus souvent même format)
  • Réinitialiser rendu cible - soit à un autre render cible/texture ou la backbuffer réelle
  • Réglez le pixel shader pour le post-traitement, la texture de lier scène à un sampler
  • Dessinez un quad plein écran sur la scène en utilisant un vertex shader factice

Dans le pixel shader de post-traitement, l'accès à des pixels de scène individuels est simple si vous connaissez la position x, y normalisée du texel courant (donnée par les coordonnées de texture du quadriple plein interpolé au pixel shader).

De nombreux effets de post-traitement nécessitent plusieurs passes pour les cibles de rendu temporaires. Un exemple est l'infâme effet «bloom»: vous prenez la texture de la scène, soustrayez les parties sombres, flouez et redimensionnez l'image restante (généralement en plusieurs passes en utilisant une logique de ping-pong pour réutiliser les cibles de rendu). L'étape de composition finale ajoute simplement la texture de la fleur et la scène originale.

+0

merci, mais avec cette technique, le résultat ne contiendra pas certaines erreurs d'arrondi si ma fenêtre de rendu est par exemple 377x251 et la texture rendertarget que j'utilise est 512x512? – clamp

+0

Bien sûr, votre cible de rendu doit correspondre à la taille de l'écran. –

+0

Vous pouvez utiliser une partie 377x251 de cette texture 512x512 pour éviter les problèmes de performances et de compatibilité. – Kromster