Странное. Смешение DXT текстур.
Все мы знаем про замечательный формат DXT1. Напомню, что формат этот кодирует блоки 4×4 пикселя, кодирует весьма простым образом. Cначала хранятся два опорных цвета в формате rgb565. Потом хранится масочка из 16 двухбитных lerp-значений. Формат простецкий, занимает всего 4 бита на пиксель, чем чертовски привлекателен.
Часто хочется смешивать несколько текстур. К примеру, по менее детальной маске, к примеру, аддитивно. Ландшафт так часто делается. Возникает дурацкая мысль…
… смешивать DXT блоки с весами, получая DXT блоки же на выходе. Референсная процедура смешения ( на little endian машинах ) может выглядеть примерно таким образом:
http://www.everfall.com/paste/id.php?tp8zhbb306f1
За код не ругать, сам знаю, что так нельзя писать.
Захотелось посмотреть, как такое смешение выглядит для текстур ландшафта. Хохма в том, что единственное железо в доме, на котором можно попробовать – это черная прелесть с линуксом. Кроме нее дома нет ничего приспособленного под 3D программирование.
Закодил, запустил – выглядит красиво. По крайней мере неожиданно. Можно сообразить очень симпатичный террейн, если на лету смешивать текстуры. A’la мегатекстура, только процедурная. Саму процедуру смешения можно сделать чертовски быстрой, ежели на SPU писать.
Скринов нету – потому что лениво дампить фреймбуфер.