Существуют различные ограничения на размеры шейдеров. Это до драйвера / GPU, но это также зависит от машины и WebGL. Некоторые реализации WebGL (chrome) запускают внутренний таймер. Если одна команда GL займет слишком много времени, они убьют WebGL («Крысы, WebGL попала в тупик»). Это может случиться, когда шейдер компилируется слишком долго.
Вот пример глупого 100k шейдера, где я провел модель через скрипт для генерации меша в самом шейдере. Он работает для меня на MacOS на моем MacBook Pro. Он также работает на моем iPhone6 +. Но когда я пробую это в Windows, драйвер DirectX слишком долго пытается оптимизировать его, и Chrome убивает его.
Забавно развлекать и помещать геометрию в свой шейдер, и забавно развлекаться со знакомыми полями расстояния и типом лучей, но эти техники больше похожи на головоломку / игрушку. Они никоим образом не являются исполнителями . В качестве типичного примера этот шейдер на основе SDF работает на моем ноутбуке со скоростью примерно 1 кадр в секунду, и все же мой ноутбук способен отображать весь Los Santos из GTV5 с разумной частотой кадров ,
Если вам нужна производительность, вам действительно следует использовать более стандартные приемы, помещая свою геометрию в буферы и выполняя рендеринг с отложенным или отложенным отображением.