2016-06-19 3 views
-2

Я использую GameMaker: Studio, чтобы создать файтинг. Я хочу реализовать алгоритм scale2x с использованием шейдера GLSL ES (по умолчанию). Я новичок в шейдерах, и я не могу найти какие-либо решения в Интернете. По существу я хочу шейдер, который идет от этого:scale2x в GameMaker: Studio

Original sprite

Для этого:

Sprite enhanced using scale2x algorithm

Не могли бы вы научить меня, как сделать такой шейдер? Любая помощь будет принята с благодарностью. Вот веб-сайт scale2x: http://www.scale2x.it/

ответ

1

Я не могу научить вас, как сделать шейдеры над stackoverflow, но я скажу вам, что операция, которую вы ищете, называется аффинным преобразованием. «Аффинный» означает, что прямые линии остаются прямыми. Большинство программных сред, включая все варианты трансформаций, использующих opengl, используют только те типы манипуляций, о которых вы говорите. Поскольку существует множество способов использования матрицы для преобразования чего-либо, просто начните с простейшего случая. Для того, чтобы масштабировать что-то в 2D, как ваши просим, ​​использует масштабную матрицу, которая выглядит примерно так:

[ xScale 0  0 ] 
[  0  yScale 0 ] 
[  0  0  1 ] 

// where scale is a percentage. 
// 100% = 1.0 

Если вы можете создать такую ​​матрицу и использовать код, который вы должны выполнить «аффинное преобразование «использование этой матрицы должно сделать трюк.

Имейте в виду, что это увеличит каждую точку/пиксель на изображении. Это не обязательно добавляет информацию к изображению. Поэтому, если у вас есть изображение с низким разрешением, это будет очень плохо, когда вы его масштабируете.

Проблема создания информации в пространстве изображений является интерполяцией и экстраполяцией. Обычно это называется «Повторная выборка», которая также относится к «Свертка».