Шейдеры GLSL [ч.2 - Добавление в игру] [upd: ч.2.5 - логирование ошибок]

Шейдеры GLSL [ч.2 - Добавление в игру] [upd: ч.2.5 - логирование ошибок]

1,976
68
220
AlexSocol добавил новый ресурс:

Шейдеры GLSL [ч.2 - Добавление в игру] - Добавляем рендер с шейдерами!

Доброго времени суток! о/

В этой части я расскажу, как добавить в игру созданный в предыдущей части вершинный шейдер. Если вы не читали её и вообще понятия не имеете, что такое шейдер, вам сюда: Шейдеры GLSL [ч.1 - Fragment Shaders]

Узнать больше об этом ресурсе...
 
Последнее редактирование:

CumingSoon

Местный стендапер
1,634
12
269
Молодец. Но не используй ARB. Есть GL20, он давно вошел в спецификацию. Используй его
 
2,505
81
397
Ты забыл написать, что включать-выключать один и тот же шейдер для каждого объекта - очень плохо.
 
5,018
47
783
Опять же, не стану объяснять, как рендерить блок/предмет/моба/ещё что, ибо раз вы взялись за написание шейдеров, "
Для 1.12 я бы не отказался посмотреть на код, который зарендерить блок
 
1,990
18
105
В статье очень не хватает пункта про логирование ошибок компиляции шейдера.
Ведь случается такое, что у разработчика всё работает, а у конечного пользователя - нет, особенно если не ставить директиву #version (которой, кмк, в прошлой статье не уделили достаточно внимания).
 
Последнее редактирование:

CMTV

Основатель
Администратор
1,304
4
601
Текст из обновления лучше вставить в сам туториал, а на вкладке обновления просто написать, что добавлен раздел с логированием ошибок.
А то люди могут даже не догадаться туда заглянуть.

Ну и иконка, конечно же :)
 
1,976
68
220
Ты забыл написать, что включать-выключать один и тот же шейдер для каждого объекта - очень плохо.
Написал хд
Только объясни, как это вообще можно реализовать? т.е. как включать шейдер ДО рендера всех блоков одного типа и выключать ПОСЛЕ?
 
2,505
81
397
Ну да. Переключение шейдера достаточно дорогая операция.
Хорошие движки умеют сортировать объекты по шейдеру и по стейтам (blend, depth, texture, и т.п.).
 

CumingSoon

Местный стендапер
1,634
12
269
Ну как бы: bind -> for each i in list draw i -> unbind. Лайтмапа у существ биндится по схожему принципу - 1 бинд, много отрисовок
 
1,976
68
220
Ясно, что ничерта непонятно, @CoomingSoon
1. Где этот лист брать?
2. Как отменять ванильный рендер этих блоков?
3. Куда совать свой?
 

CumingSoon

Местный стендапер
1,634
12
269
Перед рендером ВСЕХ блоков( RenderGlobal prepare...) включать. После рендера ВСЕХ блоков (finish) выключать. Как-то так, не пробовал
 
1,990
18
105
Лайтмапа у существ биндится по схожему принципу - 1 бинд, много отрисовок
Лайтмапа биндится на отдельный TEXTURE_UNIT, который только для этого и используется, так что ничего "подобного" там нет.
Если хочется что-то сортировать по стейту - надо переписывать рендер самостоятельно.
 

CumingSoon

Местный стендапер
1,634
12
269
Лайтмапа биндится на отдельный TEXTURE_UNIT, который только для этого и используется, так что ничего "подобного" там нет.
Если хочется что-то сортировать по стейту - надо переписывать рендер самостоятельно.
Однако делается это лишь 1 раз, так что пойдёт как пример для понимания
 
Сверху