Сохранить карту нормалей как 16-битную текстуру с WIC - PullRequest
0 голосов
/ 26 ноября 2011

У меня есть художественный конвейер, который включает в себя следующие шаги:

Создается карта нормалей.Я хочу сохранить только компоненты X и Y как байты без знака.Z опущен, поскольку он восстанавливается в пиксельном шейдере.

Карта нормалей сохраняется в промежуточный файл изображения, который затем подается в nvtt для сжатия в BC5.

Для сохранения карты нормалей Iнеобходимо использовать Windows Imaging Component.Какой формат следует использовать для хранения промежуточного изображения?

.png с любым из доступных форматов 16bpp не работает (GUID_WICPixelFormat16bppBGR565, 555, 5551, Gray, GrayFixedPoint, GrayHalf).

.bmp успешнонапример, GUID_WICPixelFormat16bppBGR565, но затем nvtt не может его загрузить.

Нормальные карты, которые я видел до сих пор, обычно синие с оттенками красного.Это изображения 24bpp или 16bpp?Тогда какой компонент удаляется (G?) И в каком формате они передаются в nvtt?

Потому что почему-то не имеет смысла писать изображение только с 2 цветными каналами таким образом, как если бы оно имело 3 цветовых канала.как BGR565 (или только серый, если используется 16bppGray).BC5 без потерь и не должен испортить изображение, но промежуточный файл будет бесполезен для дальнейшего редактирования вручную.

1 Ответ

0 голосов
/ 26 ноября 2011

Хорошо, друг предложил решение. BC5 ожидает формат BGRA, 8 бит на цвет.

B и A должны быть установлены на 0. X компонента нормали переходит в R, Z переходит в G, а Y (высота) опускается.

Пиксельный шейдер получает X в [0] и z в [1] компонентах результата вызова Sample.

...