Глубина буфера только показывает синий цвет - PullRequest
0 голосов
/ 07 июля 2010

Я пытаюсь реализовать рендеринг Light Prepass в RenderMonkey. Пока что при проходе Normal + Depth кажется, что обычный буфер получает правильный результат, но буфер Depth показывает только один цвет. Как я могу проверить, правильный ли мой буфер глубины? Ссылка для скачивания рабочей области: http://www.mediafire.com/?jq3jmantyxw

1 Ответ

0 голосов
/ 10 июля 2012

Голубой цвет - это значения RGB 0.0, 1.0, 1.0.Поскольку глубина (обычно) представляет собой один канал, представляющий Z, при выборке из текстуры он возвращается в первый канал, красный.Пропущенные каналы зеленого, синего и альфа-канала заменят 1.0 на аппаратное обеспечение.

Ваша ссылка для загрузки не работает, так как я подозреваю, что это 2 года.возвращая семантику COLOR0 и COLOR1 (обратите внимание, что глубина равна float4, несмотря на то, что выводом является текстура с одним каналом):

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;
}

В зависимости от настроек камеры вы можете получить что-то вроде

enter image description here

...