Показать сообщение отдельно
Старый 14.11.2011, 02:25   #26
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Нубошоу по шейдерам.

Последние два значения задают скорость изменения текстурных координат, которая нужна для определения оптимального мип-уровня и которая вычисляется сама для tex2D из заданных текстурных координат.
Собственно, Мр_Ф это и написал.
Помнится мне, что ты используешь динамический бранчинг. Так вот, если в нем есть tex2D, то бранчинг не работает и вычисляет все варианты, что вполне может снижать производительсноть. А не работает он потому, что:
1) ГПУ работает с блоками 2х2 пикселя;
2) для tex2D вот эти вот частные производные, которые передаются последними параметрами в tex2Dgrad, вычисляются автоматически из этого блока 2х2 пикселя;
3) пиксели из одного блока 2х2 могут быть обработаны разными ветками, и в этом случае вычисленные производные окажутся невалидными;
4) поэтому компилер шойдеров исключает такой случай и выбрасывает tex2D за пределы бранчинга.
Соотвественно, если, у тебя было 4 ветки и в каждой свой tex2D, то на самом деле они всегда все вызывались.
tex2Dgrad не требует автоматически вычисленных производных, поэтому может работать в бранчинге. Только производные надо вычислять за пределами бранчинга.

Сообщение от HolyDel Посмотреть сообщение
что порекомендуешь вместо атласов, Ф?
У тебя же ОГЛ какой там по счету? Там нет аналога текстурных массивов из ДХ11? Мне кажется, что они удобнее всего в данной ситуации.
__________________

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
dsd (14.11.2011), HolyDel (14.11.2011), Mr_F_ (14.11.2011)