Zeux
> Вообще-то поддерживает, любая DX10 карточка (DX9/10/11 API).
и какой DXGI_ нужно выбрать чтобы задействовать ATI2N на DX10 GeForce ?
innuendo
Если тебя интересует DX10/11 API, то DXGI_FORMAT_BC5
Если тебя интересует DX9 API, то MAKEFOURCC('A', 'T', 'I', '2')
Zeux
> Если тебя интересует DX10/11 API, то DXGI_FORMAT_BC5
DXGI_FORMAT_BC5_UNORM
http://www.opengl.org/registry/specs/ARB/texture_compression_rgtc.txt
спасибо, не обратил внимания
Zeux
Согласен, насчет увеличения точности я протупил :)) Но если постараться, можно в R и B запихнуть полезную инфу, например ошибку кодирования * (2^x), потом в шейдере откорректировать...
но если можно в DX10 Geforce под DX9 API юзать 3DC, думаю не стоит мне мучатся с DXT5nm....
BUG
> но если можно в DX10 Geforce под DX9 API юзать 3DC
про MAKEFOURCC('A', 'T', 'I', '2') меня сомнения терзают смутные - или склероз, вроде как не работало на 8600GTS
innuendo
У меня работало на 8800 GTX и на 8800 GTS - причем в случае GTS если я правильно помню была XP.
Возможно, на старых драйверах не работает.
BUG
Да, засчет R/B можно чуть повысить точность. Но - идея примерно вот в чем: потеря точности появляется из двух факторов:
- опорные точки 6-битные, а не 8-битные (в ATI2 такого нет)
- все значения в блоке 4х4 представляются несколькими точками на отрезке (причем точек меньше чем в ATI2).
Вот первый фактор - можно пытаться забороть двумя доп. каналами. Боюсь, с кастомным компрессором правда :) непонятно, что будет с дефолтным. А второй все равно не забороть.
Я бы в общем не делал это. DXT5nm поддержать несложно, но серьезные усилия прилагать к качеству в нем - не оправдано на PC, наверное.
Zeux
> Возможно, на старых драйверах не работает.
возможно
BUG
> Но если постараться, можно в R и B запихнуть полезную инфу, например ошибку кодирования
это увеличит энтропию и, соответственно, ухудшит качество кодирования G канала
шило на мыло, в общем случае
arabesc
> это увеличит энтропию и, соответственно, ухудшит качество кодирования G канала
Это как раз не обязательно - скажем, некоторым компрессорам можно задавать веса на каналы, веса 0 спасут мир - грубо говоря, можно после кодирования цвета (0 G 0) в R/B опорные вписать что-нибудь, чтобы всем стало лучше. Впрочем, сильно лучше точно не станет.
Zeux
Согласен, лучше не тратить время на подобные эксперименты с DXT5nm, тем более что не во всех случаях будет видна разница...даже по отношению оригинала...
arabesc
> это увеличит энтропию и, соответственно, ухудшит качество кодирования G канала
можно будет этого избежать, если написать кастомный компрессор, но наверно игра не стоит свеч...:)
Спасибо за статью! В работе - полезна.
Кому интересна эта тема - рекомендую ознакомится также вот с этим PDF-документом (на англ. естестественно):
http://advances.realtimerendering.com/s2010/Kaplanyan-CryEngine3%… Course%29.pdf (ссылка взята отсюда: http://advances.realtimerendering.com/s2010/ )
Там описаны телодвижения Crytek на тему выжимания большего качества нормалей для ATI3Dc формата и диффуза для DXT1/5.
Также кому-то может пригодится мое сравнение качества сжатия диффуза(RGB) в DXT1 разными компрессорами: http://rghost.ru/2609837
DX9 карточки от NV могут эмулировать ATI2 через драйвер, перепаковывая внутри в A8L8, что больше по памяти в 2 раза. Кто считает память, будте бдительны :).
Lex4art
> Также кому-то может пригодится мое сравнение качества сжатия диффуза(RGB) в
> DXT1 разными компрессорами: http://rghost.ru/2609837
К сожалению файл не доступен.
Сравнил nvcompress, vtfedit и vpktool - лучшие результаты дал vtfedit, а вовсе не nvcompress!
Тема в архиве.