Pull to refresh

Comments 6

Как приятно видеть «хотела» и «шейдер» в одном предложении.
Помню сразу же после курса аналитической геометрии засели с другом писать первые простейшие шейдеры, тот же bump mapping. Сколько было удовольствия!

Подкину ка я мотивационное видео заняться шейдерами. На видео minecraft с очень простым вертексным шейдером.
www.youtube.com/watch?v=79IhZnXSWbw
Сколько было удовольствия!

Завидую.
На чем учились, если не секрет?
Курс аналитической геометрии Беклемишева, имеется в свободном доступе на просторах интернетов. После того, как определения и связи в голове уложились (и экзамен был спихнут =D ) Я взял какой-то туториал, который показывал, как с нуля запилить на opengl сценку с вращающимся радужным кубиком, потом туториал накладывающий на кубик текстуру. Этого было достаточно, чтобы рискнуть попробовать сделать плоскость с фотографией, картой нормалей и попробовать написать бампмеппинг. Ну а дальше Остапа понесло.
Результат симпатичный получился.
А вот это определяется непосредственно тем, кто пишет шейдер.
«Небольшое отличие, которое вносит непосредственно Cocos2d, — это передача координат вершинных шейдеров в экранных размерах, а не в диапазоне [-1.0, 1.0]. Это весьма удобно. „
Например я для простого GUI тоже выставляю ортогональную проекцию по размерам окна.
Добротная статейка!

Разумеется использование функции discard (а также функции if и непоследовательного доступа к текстурам) в пиксельном шейдере – это зло и низкий fps.

Ничего страшного в discard нет, if у Вас всё равно сильно не меняет ход событий, а непоследовательного доступа к текстурам я в этом шейдере не вижу. Проблема плохого FPS скорее всего просто в том, что Вы рисуете весь экран лишний раз.

делаю один фреймбуфер c маленькой текстурой газа, строю VBO трафарета, в который складирую координаты текстур трубопровода, координаты текстур газа, и координаты экрана и рендерю на экран

Это зачёт :)
Спасибо:)
Под непоследовательным доступом к текстуре я имела ввиду ситуацию, когда для вычисления значения пикселя в получаемой текстуре (в пиксельном шейдере), используется один или несколько пикселей во входящей текстуре. Возможно более привычно звучит «dependent texture read». Например:
noisevec = texture2D(uTextNoise, Position.xy);
noisevec = texture2D(uTextNoise, vec2 (Position.x+noisevec[1]+Offset, Position.y-noisevec[2]+Offset));
Такое часто используется для блюров и размытий.
Sign up to leave a comment.

Articles