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

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

Сообщения
1,952
Лучшие ответы
65
Реакции
186
AlexSocol добавил новый ресурс:

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

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

В этой части я расскажу, как добавить в игру созданный в предыдущей части вершинный шейдер. Если вы не читали её и вообще понятия не имеете, что такое шейдер, вам сюда: Шейдеры GLSL [ч.1 - Fragment Shaders]
Узнать больше об этом ресурсе...
 
Последнее редактирование:
Сообщения
1,453
Лучшие ответы
12
Реакции
174
Молодец. Но не используй ARB. Есть GL20, он давно вошел в спецификацию. Используй его
 
Сообщения
2,455
Лучшие ответы
75
Реакции
344
Ты забыл написать, что включать-выключать один и тот же шейдер для каждого объекта - очень плохо.
 
Сообщения
4,760
Лучшие ответы
45
Реакции
637
Опять же, не стану объяснять, как рендерить блок/предмет/моба/ещё что, ибо раз вы взялись за написание шейдеров, "
Для 1.12 я бы не отказался посмотреть на код, который зарендерить блок
 
Сообщения
1,983
Лучшие ответы
18
Реакции
91
В статье очень не хватает пункта про логирование ошибок компиляции шейдера.
Ведь случается такое, что у разработчика всё работает, а у конечного пользователя - нет, особенно если не ставить директиву #version (которой, кмк, в прошлой статье не уделили достаточно внимания).
 
Последнее редактирование:
Сообщения
1,952
Лучшие ответы
65
Реакции
186
@Oldestkon, обновил; добавил информацию про #version
 
Последнее редактирование:

CMTV

Администратор
Сообщения
1,179
Лучшие ответы
4
Реакции
406
Текст из обновления лучше вставить в сам туториал, а на вкладке обновления просто написать, что добавлен раздел с логированием ошибок.
А то люди могут даже не догадаться туда заглянуть.

Ну и иконка, конечно же :)
 
Сообщения
1,952
Лучшие ответы
65
Реакции
186
  • Like
Реакции: CMTV
Сообщения
1,952
Лучшие ответы
65
Реакции
186
Ты забыл написать, что включать-выключать один и тот же шейдер для каждого объекта - очень плохо.
Написал хд
Только объясни, как это вообще можно реализовать? т.е. как включать шейдер ДО рендера всех блоков одного типа и выключать ПОСЛЕ?
 
Сообщения
2,455
Лучшие ответы
75
Реакции
344
Ну да. Переключение шейдера достаточно дорогая операция.
Хорошие движки умеют сортировать объекты по шейдеру и по стейтам (blend, depth, texture, и т.п.).
 
Сообщения
2,455
Лучшие ответы
75
Реакции
344
А, догнал. Дак хуком.
 
Сообщения
1,952
Лучшие ответы
65
Реакции
186
:unsure::unsure::unsure:
Непоняль.
Пример такого класса рендера можно?
 
Сообщения
1,453
Лучшие ответы
12
Реакции
174
Ну как бы: bind -> for each i in list draw i -> unbind. Лайтмапа у существ биндится по схожему принципу - 1 бинд, много отрисовок
 
Сообщения
1,952
Лучшие ответы
65
Реакции
186
Ясно, что ничерта непонятно, @CoomingSoon
1. Где этот лист брать?
2. Как отменять ванильный рендер этих блоков?
3. Куда совать свой?
 
Сообщения
1,453
Лучшие ответы
12
Реакции
174
Перед рендером ВСЕХ блоков( RenderGlobal prepare...) включать. После рендера ВСЕХ блоков (finish) выключать. Как-то так, не пробовал
 
Сообщения
1,983
Лучшие ответы
18
Реакции
91
Лайтмапа у существ биндится по схожему принципу - 1 бинд, много отрисовок
Лайтмапа биндится на отдельный TEXTURE_UNIT, который только для этого и используется, так что ничего "подобного" там нет.
Если хочется что-то сортировать по стейту - надо переписывать рендер самостоятельно.
 
Сообщения
1,952
Лучшие ответы
65
Реакции
186
Жуть какая... @Oldestkon это где-нибудь уже реализовано, чтобы велосипеды не крутить?
 
Сообщения
1,453
Лучшие ответы
12
Реакции
174
Лайтмапа биндится на отдельный TEXTURE_UNIT, который только для этого и используется, так что ничего "подобного" там нет.
Если хочется что-то сортировать по стейту - надо переписывать рендер самостоятельно.
Однако делается это лишь 1 раз, так что пойдёт как пример для понимания
 
Сверху