Войти
ПрограммированиеФорумГрафика

glBindTexture привязывается к шейдеру? (3 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 4 Следующая »
#30
21:56, 30 июля 2019

oxotnik
> Плохо, что на разных девайсах разное количество слотов

Это что, ещё и шейдера могут не компилиться на разных девайсах


#31
23:37, 30 июля 2019

бинд тектуры в opengl не такой уж и дорогой, куда дороже смена стейтов как таковая по той причине что прерывает батчинг. Если тебе в любом случае делать Draw... то я бы не парился.

#32
(Правка: 23:51) 23:49, 30 июля 2019

Aroch
Ровно с точностью до наоборот.

> бинд тектуры в opengl не такой уж и дорогой
Достаточно дорогой:
Изображение

> по той причине что прерывает батчинг. Если тебе в любом случае делать Draw...
> то я бы не парился.
Если ничего не менять, то Draw спокойно можно звать 100-200К раз на кадр, и при этом иметь 100+ FPS (а то и больше сотни). Так что прерванный батчинг - не такая уж дорогая операция (в отличие от смены текстуры при этом прерванном батчинге.

#33
0:15, 31 июля 2019

MrShoor
> Так что прерванный батчинг - не такая уж дорогая операция (в отличие от смены
> текстуры при этом прерванном батчинге.
ну во первых эта картинка показывает только смены стейтов, во вторых это картинка для nvidia. И 1,5м в секунду это достаточно дешево, 1,5м / 60 = 25000 смен за кадр, так как автор говорит у него смена 4-5% делим на 20, итого 1250 смен текстур за кадр что всё равно достаточно жирно.

З.ы. если ничего не менять то draw можно звать и один раз.

#34
(Правка: 1:33) 1:31, 31 июля 2019

Aroch
> ну во первых эта картинка показывает только смены стейтов
так как это и есть самая дорогая операция

> И 1,5м в секунду это достаточно дешево, 1,5м / 60 = 25000 смен за кадр
Ну как дешево. Вот у тебя подъехала не одна текстура, а скажем:
1. Альбедо
2. Нормал мапа
3. Рогнес/металлик/ао
4. Детайл мапа
5. Нормали к детайл мапе
и вот уже надо менять 5 текстур. Это уже 5000 за кадр, что не так уж много. А ведь еще нужен бюджет на всякие смены шейдеров, смены вертекс буферов, смены юниформов. + В этом же треде тебе нужно апдейтить динамические данные. Короче, разрыв батчей - не дорогой, смена текстур (и всяких стейтов) - дорогая.

> З.ы. если ничего не менять то draw можно звать и один раз.
Нет. Вот например у тебя есть куча объектов в сцене. Ты сложил их все в 1 буфер. Ты не хочешь выводить их все, а хочешь рисовать только то, что попадает во фрустум. Если ты знаешь оффсеты на каждый из объектов - ты можешь покуллить их, и рисовать по этим самым оффсетам. Т.е. ты ничего не меняешь, но у тебя при этом много вызовов draw.

#35
(Правка: 1:43) 1:41, 31 июля 2019

MrShoor
> и вот уже надо менять 5 текстур. Это уже 5000 за кадр, что не так уж много.
как 5 текстур стали вдруг 5к?
> Т.е. ты ничего не меняешь, но у тебя при этом много вызовов draw.
и на все объекты один шейдер, один буфер, одни юниформы? Какой то идеальный мир.
> 1. Альбедо
> 2. Нормал мапа
> 3. Рогнес/металлик/ао
> 4. Детайл мапа
> 5. Нормали к детайл мапе
это явно не про мобилки.

#36
2:31, 31 июля 2019

Aroch
> как 5 текстур стали вдруг 5к?
25000/5 = 5000

> и на все объекты один шейдер, один буфер, одни юниформы? Какой то идеальный мир.
Я такого не писал. Я писал другое. Прочти.

> это явно не про мобилки.
А еще не про Riva TNT2. Но как это меняет тот факт, что бинд текстуры намного дороже прерванного батчинга.

#37
2:34, 31 июля 2019

oxotnik
> нужно в целом много слотов, чтобы уменшить количество glBindTexture

да что же за задача такая?

#38
3:39, 31 июля 2019

oxotnik
> gl старый, еще и под мобилки
> активных нужно не много
> нужно в целом много слотов, чтобы уменшить количество glBindTexture
эх хотел GL_ARB_multi_bind предложить но не прокатит для мобилок

#39
6:08, 31 июля 2019

MrShoor
> 25000/5 = 5000
еще раз на все объекты ты не будешь по 5 текстур перебиндивать каждый раз.
> Я такого не писал. Я писал другое. Прочти.
про сферического коня ты писал, я понял. В реальности стейты менять так или иначе приходится, от того что их вызов не бесплатный не значит что нам теперь достаточно рисовать квадрат Малевича каждый кадр. Можно использовать твою картинку и смотреть что нужно минимизировать в первую очередь, и это как ни странно не бинды текстур.
> А еще не про Riva TNT2. Но как это меняет тот факт, что бинд текстуры намного
> дороже прерванного батчинга.
а тесты на мобилках уже провел? Я бы не был так уверен. Тем более про намного.

#40
6:19, 31 июля 2019

Ranma
> glUniform1i - сообщаем шейдеру в каком слоте лежит текстура
В более свежих версиях GL этот анахронизм уже не нужен, в шейдерах же текстуры ловятся следующим образом:

layout (binding = 0) uniform sampler2D sAlbedoSampler;
#41
10:11, 31 июля 2019

Daniil Petrov
Core since version 4.2
Я знаю, что 4.2 - 2011 год, но для себя пока установил барьер на 3.3, чтобы не увлекаться подтягиванием фич. Потому что можно так и до 4.6 дойти ("а что тут такого - пусть все железо обновляют, нечего на говне мамонта сидеть, нищеброды не нужны, и т.п.), а я считаю, что пока важнее освоить алгоритмы и техники, для которых вполне хватит 3.3, зато мой велосипед и на офисных интелах работает.

#42
(Правка: 10:50) 10:26, 31 июля 2019
что пока важнее освоить алгоритмы и техники, для которых вполне хватит 3.3

Ranma ты не прав.

Если ты хочешь делать игры типа warcraft 3 тогда можешь писать на 3.3

Если ты хочешь писать игры типа Кризис\Скайрим то тебе надо GL 4.5

#43
11:18, 31 июля 2019

Ziltop
Ок, Warcraft 3 вышел в 2002, Crysis вышел в 2007. OpenGL 3.0 - 2008, на момент 2007 разве что часть расширений была доступна, но далеко не везде. Skyrim хоть и позже вышел, в 2011, но имхо он тоже не про что-то особое в стандартах, разработка-то конечно раньше начиналась, где-то после 2008 года Gamebryo форкнули и PBR в него воткнули. Проблем с графонием в таких играх примерно две с половиной: дохрена контента (конечно когда он есть) и дохрена куллинга с инстансингом, причем в случае Скайрима инстансинга в разы больше.

Мой целевой уровень пока что между Deus Ex Human Revolution и GTA5 (спасибо одному хорошему человеку за реверс-инжиниринг). Просто сейчас я не в том положении, чтоб рассчитывать, что кто-то ради моего изделия будет раскошеливаться на апгрейд. Надо как Rovio, в начале выпустить кучу говна, прежде чем Angry Birds получится.

#44
(Правка: 11:23) 11:20, 31 июля 2019

С 3.3 надо "немного" в кубе помучатся, что бы Кризис написать :)

GTA5 только GL 4.5. Слишком много в  GTA5 моделей рисуют за кадр и дальность прорисовки.
Так что без фичей GL 4.5 не написать такой же уровень графике как в GTA 5

В любом случае это твой выбор на каком GL писать.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика