Government-Man писал: То есть сэмплер-стейтов можно забиндить 16, а текстур - всего 8!
в GL я кстати так до конца и не понял насчёт этого ограничения.
Текс-корды я всё равно не использую, но чтобы уложиться в лимиты, стараюсь использовать не более 8 текстурных юнитов. А аттрибутов у вертекса почти всегда не более 16 штук.
Добавлено 13-10-2019 в 10:15:
C++ Source Code:
1
GL_MAX_TEXTURE_SIZE: 16384
2
GL_MAX_TEXTURE_UNITS_ARB: 4
3
GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 16384
4
GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB: 16384
5
GL_MAX_ARRAY_TEXTURE_LAYERS_EXT: 2048
6
GL_MAX_TEXTURE_COORDS_ARB: 8
7
GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 32
8
GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 4096
9
GL_MAX_VERTEX_ATTRIBS_ARB: 16
Это GT640. 32 юнита, 16 аттрибутов. А в DX вроде как можно до 128 штук передавать.
XaeroX писал: Это аппаратное ограничение. У шейдерной модели 2.0 ограничено число varying-блоков для передачи параметров между вершинным и пиксельным шейдерами.
Я понимаю, но разве нельзя использовать один набор текскоордов для того чтобы засемплить более одной текстуры?
Цитата:
XaeroX писал: Нет в шейдерной модели 2.0 неко ких булов и интов. Если ты их заюзаешь в том же Cg, то компилятор их неявно будет трактовать как флоаты.
Документация утверждает что есть, правда они довольно специфические.
Цитата:
XaeroX писал: Какая разница, DX9 или DX11, если мы говорим про аппаратные ограничения?
Если действительно про аппаратные - то никакой. Именно это я и пытаюсь выяснить.