Глубина буфера только показывает синий цвет
Я пытаюсь реализовать рендеринг Light Prepass в RenderMonkey. Пока что при проходе Normal+Depth кажется, что обычный буфер получает правильный результат, но буфер Depth показывает только один цвет. Как я могу проверить, правильный ли мой буфер глубины? Ссылка для скачивания рабочей области: http://www.mediafire.com/?jq3jmantyxw
1 ответ
Светло-синий на самом деле значения 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;
}
В зависимости от настроек вашей камеры, вы можете получить что-то вроде: