2011-07-07 3 views
3

J'ai lu quelques tutoriels (Catalin Zima, TheCansin) concernant le rendu différé dans XNA. Ils semblent tous utiliser un pipeline de rendu différé pour rendre les modèles. C'est génial, mais ils ne traitent que des cartes normales et spéculaires. Si je pense correctement, si je veux rendre un modèle qui a, par exemple, un effet de lueur et que j'ai un lueur, alors le pipeline de rendu différé ne connaîtra pas ce shader?Rendu différé - Rendu de modèles avec effets individuels

Si ma question ci-dessus est correcte, aurais-je besoin de rendre le modèle avec lueur dans le pipeline de rendu différé, puis de rendre à nouveau avec le shader lueur?

Répondre

3

Il y a vraiment beaucoup d'approches différentes. Mon recomendation serait d'inclure une passe de masque matériel dans votre pipeline. Ex: Rend une cible qui est juste une couleur solide pour chaque type de surface que vous voulez rendre dans votre scène. Utilisez cette cible de masque pour effectuer des opérations de branchement dans votre dernière passe d'éclairage différé et effectuer des calculs de surface pour différents matériaux (par exemple, rouge pur pour un ombrage phong, bleu pur pour des surfaces mates, etc.). Vous continuez à utiliser les passes diffuse, normale et spéculaire gbuffer comme d'habitude. Spécifiquement pour un effet de lueur, vous pouvez également utiliser l'approche de masque et amener cette cible à votre étape de post-traitement, pour effectuer un flou/éclat plein écran, en utilisant le masque pour déterminer quels objets doivent avoir la lueur appliquée .