Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [OpenGL]Экспорт RGB16F кубмапы с мипами в dds/ktx

[OpenGL]Экспорт RGB16F кубмапы с мипами в dds/ktx

SaiteiПостоялецwww14 сен. 20180:12#0
собственно, сабж

пишу генератор BRDF/PMREM/IEM текстур (и вполне успешно), но не знаю как их правильно экспортировать

cmftStudio и IBLBaker не предлагать, нужно написать именно кастомный генератор кубмап для IBL

для импорта кубмап вполне успешно использую gli. И, собственно, похоже что он умеет сохранять кубмапы, но я не знаю как смастерить ф-цию, которая по заданному id текстуры автоматически будет её сохранять в dds/ktx

(я не настаиваю на gli, подойдет любой другой подход)

спасибо большое заранее!

SaiteiПостоялецwww14 сен. 20180:13#1
Mr FПостоялецwww14 сен. 20180:26#2
DDS это просто фиксированного размера заголовок (обычно 128 байт), а затем последовательно все картинки (по 6 2D карт на каждый мип). Мой любимый способ - сохранить чем угодно ддску нужного формата, отрезать от неё заголовок, после чего всё сохранение выглядит как:
- запись заголовка
- подмена высоты (int на 12м байте), ширины (сразу за ним) и числа мипов (int на 28м байте) в заголовке
- запись пикселей

Правка: 14 сен. 2018 0:27

Iron ManПостоялецwww14 сен. 20187:37#3
Mr F
> Мой любимый способ - сохранить чем угодно ддску нужного формата, отрезать от неё заголовок, после чего всё сохранение выглядит как:
Я вообще не представляю, чем можно сохранять текстуры со сжатием BC4-BC7, окромя как Compressonator`ом, поэтому всё текстуры подготавливаю в любом разумном формате (для простых RGB предпочитаю TIFF с LZW-сжатием), потом сразу кучкой жму компрессонатором в KTX и уже потом самопальной утилитой собираю их в любой мыслимый массив текстур с указанием соответствующих флагов заголовка. Только для GL_TEXTURE_CUBE_MAP_ARRAY нужно будет сначала собирать по отдельности кубмапы, а потом кубмапы уже в массив кубмап, но в движке они у меня пока не реализованы :) других вариантов для себя я пока не нашёл )))
P.S. Кстати, даже с BC-сжатием текстуры потом неплохо жмутся ещё и в ZIP ))) например 22 Мб текстур (KTX / BC7) в ZIP`е весят 16 с копейками Мб.

Правка: 14 сен. 2018 7:42

Mr FПостоялецwww14 сен. 20188:59#4
Iron Man
>чем можно сохранять текстуры со сжатием BC4-BC7
Сжатие не отменяет то что я написал, только массив пикселей каждого фейса/мипа заменяется на массив сжатых пикселей.
Последний можно много чем получить. Для BC7 юзаю DirectXTex: https://github.com/Microsoft/DirectXTex/wiki/Compress
Но с RGBA16F никакие либы даже не нужны.

Правка: 14 сен. 2018 8:59

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр