2009-05-21 5 views
1

Dans mon moteur, je charge des shaders Cg à partir de paires de fichiers vertex/pixel shader. J'aimerais pouvoir empiler des shaders pour les combiner (éclairage + matériel, etc.). A part de briser les shaders en fonctions séparées et ensuite en créant une seule chaîne de script shader, connaissez-vous de bonnes manières d'empiler différents shaders dans Cg?Empilage des shaders Cg

Répondre

2

Cela ressemble un peu à ce que vous voulez est similaire à la fonctionnalité de liaison de shader dynamique dans DirectX 11? La fonction d'interface de Cg vous permet d'accomplir des choses simples. Il vous permet de reconfigurer les shaders afin de pouvoir facilement et proprement faire des choses comme changer la façon dont l'éclairage est calculé ou changer le type de matériau. Par exemple, supposons que vous souhaitiez écrire un shader, mais que vous deviez pouvoir modifier la façon dont l'éclairage est calculé. Vous pouvez définir une interface Light qui a une fonction qui calcule la lumière d'une manière ou d'une autre. Ailleurs, vous implémentez l'interface Light comme, par exemple, CoolLight et UberLight. Lors de l'exécution, vous pouvez spécifier quelle implémentation de l'interface Light doit être utilisée, à peu près de la même manière que vous spécifiez d'autres paramètres.

Pour voir si c'est ce que vous voulez, je vous recommande de consulter le manuel utilisateur Cg (http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf). Si vous recherchez "Shared Parameters and Interfaces", il y a un petit exemple.

Questions connexes