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.
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
Bien sûr, votre cible de rendu doit correspondre à la taille de l'écran. –
Vous pouvez utiliser une partie 377x251 de cette texture 512x512 pour éviter les problèmes de performances et de compatibilité. – Kromster