2010-07-07 22 views
0

J'essaie d'implémenter le rendu Light Prepass dans RenderMonkey. Jusqu'à présent, en Normal + Depth, il semble que le buffer normal obtienne un résultat correct, mais le buffer Depth ne montre qu'une couleur. Comment puis-je vérifier si ma mémoire tampon de profondeur est correcte ou non? Lien de téléchargement de l'espace de travail: http://www.mediafire.com/?jq3jmantyxwLa mémoire tampon de profondeur affiche uniquement la couleur bleue

+1

peut-on voir une image de la mémoire tampon de profondeur résultante? – Goz

+0

C'est tout simplement bleu clair. Rien d'autre. Si vous voulez voir, utilisez ce lien http://www.flickr.com/photos/[email protected]/4772680803/ En fait, vous pouvez simplement télécharger l'espace de travail que j'ai téléchargé ci-dessus et l'essayer pour vous – Ethan

Répondre

0

Le bleu clair correspond aux valeurs RVB 0.0, 1.0, 1.0. Puisque la profondeur est (habituellement) un seul canal représentant Z, lorsqu'il est échantillonné à partir de la texture, il est retourné dans le premier canal, rouge. Les canaux manquants vert, bleu et alpha auront 1,0 remplacé par le matériel.

Votre lien de téléchargement est non-fonctionnel, puisque cela fait 2 ans que je suspecte.

Vous devez vous assurer que votre pixel shader retourne les deux COLOR0 et COLOR1 sémantique (notez que la profondeur est un float4 en dépit de la sortie étant une texture unique canal):

struct PS_OUT { float4 color : COLOR0; float4 depth : COLOR1; }; 

PS_OUT ps_main(PS_INPUT Input) 
{ 
    PS_OUT Output; 
    // your color shader here 
    Output.color = myFinalColor; 
    Output.depth = myFinalDepth; // e.g. Input.posz/Input.posw from your vertex shader 
    return Output; 
} 

En fonction de vos réglages de l'appareil, vous pouvez obtenir quelque chose comme:

enter image description here