Комментарии 6
Как приятно видеть «хотела» и «шейдер» в одном предложении.
Помню сразу же после курса аналитической геометрии засели с другом писать первые простейшие шейдеры, тот же bump mapping. Сколько было удовольствия!
Подкину ка я мотивационное видео заняться шейдерами. На видео minecraft с очень простым вертексным шейдером.
www.youtube.com/watch?v=79IhZnXSWbw
Помню сразу же после курса аналитической геометрии засели с другом писать первые простейшие шейдеры, тот же bump mapping. Сколько было удовольствия!
Подкину ка я мотивационное видео заняться шейдерами. На видео minecraft с очень простым вертексным шейдером.
www.youtube.com/watch?v=79IhZnXSWbw
Сколько было удовольствия!
Завидую.
На чем учились, если не секрет?
Курс аналитической геометрии Беклемишева, имеется в свободном доступе на просторах интернетов. После того, как определения и связи в голове уложились (и экзамен был спихнут =D ) Я взял какой-то туториал, который показывал, как с нуля запилить на opengl сценку с вращающимся радужным кубиком, потом туториал накладывающий на кубик текстуру. Этого было достаточно, чтобы рискнуть попробовать сделать плоскость с фотографией, картой нормалей и попробовать написать бампмеппинг. Ну а дальше Остапа понесло.
Результат симпатичный получился.
А вот это определяется непосредственно тем, кто пишет шейдер.
«Небольшое отличие, которое вносит непосредственно Cocos2d, — это передача координат вершинных шейдеров в экранных размерах, а не в диапазоне [-1.0, 1.0]. Это весьма удобно. „
Например я для простого GUI тоже выставляю ортогональную проекцию по размерам окна.
А вот это определяется непосредственно тем, кто пишет шейдер.
«Небольшое отличие, которое вносит непосредственно 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));
Такое часто используется для блюров и размытий.
Под непоследовательным доступом к текстуре я имела ввиду ситуацию, когда для вычисления значения пикселя в получаемой текстуре (в пиксельном шейдере), используется один или несколько пикселей во входящей текстуре. Возможно более привычно звучит «dependent texture read». Например:
noisevec = texture2D(uTextNoise, Position.xy);
noisevec = texture2D(uTextNoise, vec2 (Position.x+noisevec[1]+Offset, Position.y-noisevec[2]+Offset));
Такое часто используется для блюров и размытий.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Газовый шейдер в Cocos2d