Страницы (2): [1] 2 » Показать все 19 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- D3D11 и D3D_FEATURE_LEVEL_9_1 (https://hlfx.ru/forum/showthread.php?threadid=5369)
D3D11 и D3D_FEATURE_LEVEL_9_1
В новых версиях директа (начиная с 10-го) появилась такая концепция как feature levels, облегчающая поддержку устаревшего и не очень устаревшего железа. То есть теперь поддержка видеокартой определенного FL гарантирует некий минимальный набор фич и можно не страдать параноей, проверяя каждый отдельный параметр на предмет того, что программа в него влезет.
Кто пользовался данной фичей? С какими подводными камнями сталкивались? Правильно ли я понимаю, что поддержка определенного FL допускает, что отдельные параметры могут превышать значения определенные в данном FL? То есть конкретная видеокарта может например поддерживать текстуры больше чем 2к несмотря на заявленный D3D_FEATURE_LEVEL_9_1?
Еще меня смущает отсутствие третьих шейдеров: в 9-х FL поддерживаются только вторые, а в 10-х уже четвертые. Можно ли скормить 11-му директу третий шейдер? Какой таргет при этом использовать?
Я что-то слышал про feature levels, но никогда не использовал.
Использую D3D9, третьи шейдеры и кое-какие недоки, в принципе для нужд Волатилы хватает. Шейдеры пишу на Cg, в разные таргеты компилирует он сам. Есть и собранные таргеты под DX11, которые можно будет в будущем подключить к DX11-рендеру, если мне будет совсем нечего делать и я начну очередную амелиорацию движка.
Попробуй собрать таргеты vs_3_0 и ps_3_0 и скормить их директу, это точно рабочие профили девятых иксов.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
А семерку?
Government-Man мне отчего-то кажется, что надо абстрагироваться версией API на нормальном уровне, а не искать в новых API пути совместимости. Совместимость она или есть, или её нет. А это полумеры.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Заметил еще одну странность...
В шейдерах как известно есть ограничение на количество сэмплеров - обычно их 16. В версиях шейдров до 4-й текстуры биндились непосредственно к сэмплерам, а вот начиная с 4-й версии сэмплер и текстура это разные сущности - сэмплеров (правильнее теперь - сэмплер-стейтов) так и осталось 16, а вот текстур стало можно пихать дофигища.
В ps_4_0_level_9_1, насколько я понял, новое поведение эмулируется: в коде шейдера текстура и сэмплер - разные сущности, однако в реале для каждой пары сэмплер-текстура используется отдельный регистр.
И вот тут есть странность. Раз в SM2.0 есть 16 сэмплеров, то логично предположить, что на них можно забиндить 16 текстур. Однако таблица с описанием совместимости апи дает следующие ограничения:
Для ID3D11DeviceContext::PSSetSamplers: No more than 16 samplers can be bound
Для ID3D11DeviceContext::PSSetShaderResources: No more than 8 simultaneously bound shader resources
То есть сэмплер-стейтов можно забиндить 16, а текстур - всего 8!
А теперь внимание вопрос: уважаемые знатоки старого железа, с чем может быть связано такое ограничение? Связано ли оно с тем, что существовало большое количество железа, на котором количество уникальных текстур было ограничено 8-ю, несмотря на наличие 16-ти сэмплеров?.. Минута на обсуждение...
__________________
XaeroX
Ну тогда получается, что это какое-то дурацкое искусственное ограничение для вторых шейдеров на 11-м директе. Ведь никто вроде не запрещает использовать одни и те же текстурные координаты для разных текстур?
Еще из ограничений - написано что общее число констант для VS и PS не должно превышать 256 и 32 соответственно. Если это правда, то получается, что на SM2.0 в дх-11 можно использовать только флоат-константы, а булы и инты - нельзя...
Разумеется для моих текущих целей этого всего пока хватает за глаза и я вряд ли упрусь в эти ограничения. Но в целом у меня пока создается впечатление, что максимум из DX9-железа при помощи DX11 не выжать, так что тем кто к этому стремится, логичнее использовать девятый директ.
Временная зона GMT. Текущее время 09:13. | Страницы (2): [1] 2 » Показать все 19 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024