HLFX.Ru Forum Страницы (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)


Отправлено Government-Man 09-10-2019 в 19:56:

D3D11 и D3D_FEATURE_LEVEL_9_1

В новых версиях директа (начиная с 10-го) появилась такая концепция как feature levels, облегчающая поддержку устаревшего и не очень устаревшего железа. То есть теперь поддержка видеокартой определенного FL гарантирует некий минимальный набор фич и можно не страдать параноей, проверяя каждый отдельный параметр на предмет того, что программа в него влезет.

Кто пользовался данной фичей? С какими подводными камнями сталкивались? Правильно ли я понимаю, что поддержка определенного FL допускает, что отдельные параметры могут превышать значения определенные в данном FL? То есть конкретная видеокарта может например поддерживать текстуры больше чем 2к несмотря на заявленный D3D_FEATURE_LEVEL_9_1?

Еще меня смущает отсутствие третьих шейдеров: в 9-х FL поддерживаются только вторые, а в 10-х уже четвертые. Можно ли скормить 11-му директу третий шейдер? Какой таргет при этом использовать?


Отправлено XaeroX 10-10-2019 в 03:50:

Я что-то слышал про feature levels, но никогда не использовал.
Использую D3D9, третьи шейдеры и кое-какие недоки, в принципе для нужд Волатилы хватает. Шейдеры пишу на Cg, в разные таргеты компилирует он сам. Есть и собранные таргеты под DX11, которые можно будет в будущем подключить к DX11-рендеру, если мне будет совсем нечего делать и я начну очередную амелиорацию движка.
Попробуй собрать таргеты vs_3_0 и ps_3_0 и скормить их директу, это точно рабочие профили девятых иксов.

Цитата:
Government-Man писал:
можно не страдать параноей, проверяя каждый отдельный параметр на предмет того, что программа в него влезет.

Это зависит от философии разработки.
Есть философия минимального набора фич, который составляет целостную картину мира, в которой функционирует движок. А есть философия "используем то, что есть, и в любом порядке", когда движок умеет постоянно переключаться между разными подходами (или рендерпатчами, если угодно) в зависимости от подлежащего железа. Во втором случае проверка капсов - это не параноя, а совершенно рабочий механизм.

__________________

xaerox on Vivino


Отправлено Дядя Миша 10-10-2019 в 07:58:

Цитата:
Government-Man писал:
облегчающая поддержку устаревшего и не очень устаревшего железа

Особого смысла всё это не имеет, ведь D3D11 не заведётся на XP, где есть старое железо, а поставить дышатку на такое устаревшее железо едва ли получится.

__________________
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 10-10-2019 в 15:10:

Дядя Миша
А семерку?


Отправлено Дядя Миша 10-10-2019 в 15:13:

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'


Отправлено XaeroX 10-10-2019 в 17:49:

Цитата:
Дядя Миша писал:
мне отчего-то кажется

Отчего тебе так кажется?

__________________

xaerox on Vivino


Отправлено Government-Man 10-10-2019 в 18:06:

Цитата:
XaeroX писал:
Шейдеры пишу на Cg


Прикольно, он еще жив?

Цитата:
XaeroX писал:
Использую D3D9


Как впечатления по сравнению с гл кстати? Если я правильно помню, они положительные?

Цитата:
XaeroX писал:
Попробуй собрать таргеты vs_3_0 и ps_3_0 и скормить их директу


Да, я так и думал сделать. Но пока что я влезаю в vs_4_0_level_9_1 и ps_4_0_level_9_1 (это типа вторые шейдеры но с семантиками из четвертых). Если повезет, то их хватит.


Отправлено XaeroX 10-10-2019 в 18:18:

Цитата:
Government-Man писал:
Прикольно, он еще жив?

Ну он депрекейтед и дисконтинуед, но то что есть, вполне работает. Но таргеты DX11 - это максимум. DX12 уже не поддерживается, как и вулкан.
А што, Cg уже убрали из Юнити?
Цитата:
Government-Man писал:
Как впечатления по сравнению с гл кстати? Если я правильно помню, они положительные?

В целом - те же яйца, только в профиль.
Но легче дебажить и лучше документация, как мне показалось.

__________________

xaerox on Vivino


Отправлено Government-Man 10-10-2019 в 18:41:

Цитата:
XaeroX писал:
Ну он депрекейтед и дисконтинуед


Так это ж хорошо - если обновлений не выходит, значит у тебя всегда последняя версия, а все ее баги гордо именуются особенностями.

Цитата:
XaeroX писал:
А што, Cg уже убрали из Юнити?


Вроде бы нет.

Цитата:
XaeroX писал:
DX12 уже не поддерживается, как и вулкан.


А ты вулкан с дх12 еще не ковырял?


Отправлено Дядя Миша 10-10-2019 в 20:15:

Цитата:
XaeroX писал:
Отчего тебе так кажется?

ну чёб не плодить сущности.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 11-10-2019 в 06:31:

Цитата:
Government-Man писал:
Так это ж хорошо - если обновлений не выходит, значит у тебя всегда последняя версия, а все ее баги гордо именуются особенностями.

Да, это важный плюс. Но с другой стороны, есть страх однажды напороться на фатальный баг, который уже некому фиксить.
Цитата:
Government-Man писал:
А ты вулкан с дх12 еще не ковырял?

Ещё нет. У меня руки до DX11 и GLES2+-рендеров пока не дошли. Я в последние три года вообще очень мало графикой занимаюсь, много других задач.
Цитата:
Дядя Миша писал:
ну чёб не плодить сущности.

Если ты делаешь проект для программистов - то да, чем меньше сущностей в движке, тем проще и понятнее код. А вот игрокам плевать, какая там гремучая смесь условий и веток, лишь бы на их компах игра работала. Нужно искать золотую середину, кмк.

__________________

xaerox on Vivino


Отправлено Дядя Миша 11-10-2019 в 07:16:

Цитата:
XaeroX писал:
Если ты делаешь проект для программистов

Любая программа делается для программистов, как минимум одного - самого себя. Тебе жы потом и разбираться с этим дерьмом.

__________________
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 13-10-2019 в 00:49:

Заметил еще одну странность...

В шейдерах как известно есть ограничение на количество сэмплеров - обычно их 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 13-10-2019 в 04:34:

Цитата:
Government-Man писал:
То есть сэмплер-стейтов можно забиндить 16, а текстур - всего 8!

Можно забиндить 16 текстур, но текстурных координат передать не более 8.
Вернее, если я правильно понимаю, в ps_3_0 можно передать не более 10 input registers, которые включают вообще всё. Ну обычно это по семантике POSITION, COLOR и 8 TEXCOORD-регистров. Т.к. шейдер может делать dependent texture reads, то вполне можно засэмплить в нём 16 текстур.

__________________

xaerox on Vivino


Отправлено Government-Man 13-10-2019 в 05:14:

XaeroX
Ну тогда получается, что это какое-то дурацкое искусственное ограничение для вторых шейдеров на 11-м директе. Ведь никто вроде не запрещает использовать одни и те же текстурные координаты для разных текстур?

Еще из ограничений - написано что общее число констант для VS и PS не должно превышать 256 и 32 соответственно. Если это правда, то получается, что на SM2.0 в дх-11 можно использовать только флоат-константы, а булы и инты - нельзя...

Разумеется для моих текущих целей этого всего пока хватает за глаза и я вряд ли упрусь в эти ограничения. Но в целом у меня пока создается впечатление, что максимум из DX9-железа при помощи DX11 не выжать, так что тем кто к этому стремится, логичнее использовать девятый директ.


Временная зона GMT. Текущее время 01:11. Страницы (2): [1] 2 »
Показать все 19 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024