Шейдеры решают всё: Почему без GLSL ваш движок не выживет в WebGL
А вы что думали? Это так!😱
Всем привет! Как указано в заголовке, без этих маленьких программ (шейдеров) вы ничего не нарисуете в браузере! Оказалось, что в новых версиях и DirectX, и OpenGL тоже без них никуда. Я удивлён! Движки настолько скрыли от нас тонкости работы, что даже не подозреваешь, как это устроено. Да и многим этого не нужно.
Поэтому, если захотите писать свой движок/рендер, вам нужно обязательно изучать:
- Язык, на котором хотите разрабатывать движок.
- Язык GLSL для шейдеров.
И это не просто создание простых шейдеров. Через них в WebGL, например, принято отрисовывать спрайты: позиция, вращение, размер, текстура — всё это задаётся в шейдерах. Вы лишь передаёте значения, а все вычисления трансформаций происходят там же.
А теперь представьте: вы хотите применить эффект к спрайту через шейдер. Но за один раз к текстуре можно применить только одну шейдерную программу. Что делать?
- Вариант 1: Расширить базовый шейдер, чтобы помимо стандартных операций он применял и нужный эффект.
- Вариант 2: Сначала отрисовать все спрайты в текстуру, а затем применить эффект отдельной программой (здесь пригодится Framebuffer).
И всё это нужно учитывать!
Тут, конечно, снова восхищаешься большими движками — как они маскируют такую рутину от пользователя. Но зато становится понятно, почему их легко «сломать» или замедлить.
- 30 марта 2025, 10:53
28 комментариев