2016-05-18 1 views
1

J'ai une carte d'ombre avec un filtrage matériel en pourcentage plus proche. Mais j'ai également besoin d'obtenir la valeur de profondeur stockée dans la carte d'ombre afin de l'utiliser pour implémenter d'autres techniques dans le pixel shader. Le problème est que toutes les fonctions d'échantillonnage (tex2D, tex2Dproj) renvoient le résultat final de la comparaison de profondeur. Cela fonctionne bien mais je ne peux pas obtenir la valeur de profondeur elle-même.Profondeur d'échantillonnage de la carte d'ombrage sans désactivation matérielle PCF

Est-il possible de préserver PCF matériel pour l'ombre et la cartographieéchantillon, la valeur de profondeur se?

Il y a cependant une limite, je n'arrive pas à gérer la façon dont la carte ombrée est créée par l'application, je ne peux modifier que les shaders.

Répondre

0

Si vous pouvez trouver un emplacement de liaison utilisé SamplerState/sampler2D, vous devriez être en mesure de déclarer un là-bas et l'utiliser avec l'opération Sample/tex2D générique. Étant donné que l'emplacement de l'échantillonneur n'est pas lié par l'application, le pilote doit utiliser les paramètres d'échantillon ponctuel par défaut. Si le tampon de profondeur prend en charge ce type d'accès, il doit renvoyer la valeur pré-PCF.

+0

J'ai essayé cette idée moi aussi mais, malheureusement, cela ne semblait pas fonctionner. Je ne suis pas sûr à 100% parce que je ne trouve pas une bonne documentation, mais il semble que le matériel PCF soit compliqué et qu'il commence à fonctionner automatiquement lorsque certaines conditions sont remplies. Il semble aussi fonctionner avec d'autres échantillonneurs parce que la texture elle-même a été déclarée correctement. Il semble que j'ai tout essayé. Quoi que je fasse, j'obtiens les résultats des tests de profondeur. – Homer