Фрагмент шейдера OpenGles для достижения эффекта - PullRequest
1 голос
/ 14 марта 2012

Я хочу добиться эффекта плавного слияния изображения по центру.Срез по центру я достиг с помощью приведенного ниже кода.

varying highp vec2 textureCoordinate;
uniform sampler2D videoFrame;

void main(){
    vec4 CurrentColor = vec4(0.0);

    if(textureCoordinate.y < 0.5){
         CurrentColor = texture2D(videoFrame,vec2(textureCoordinate.x,(textureCoordinate.y-0.125)));     
    } else{
         CurrentColor = texture2D(videoFrame,vec2(textureCoordinate.x,(textureCoordinate.y+0.125))); 
    }

    gl_fragColor = CurrentColor;    
}

Приведенный выше код дает эффект на изображении ниже.

Факт:

Actual

Срез по центру:

Centre cut

Требуемый выход:

Desired output

То, что я хочу, это то, что резкого среза быть не должно,должно быть плавное слияние градиента обеих половинок.

1 Ответ

2 голосов
/ 14 марта 2012

Хотите ли вы получить настоящее размытие или просто линейное смешивание?Поскольку размытие включает размытие ядра, тогда как смешивание будет простой интерполяцией между этими двумя, в зависимости от координаты y.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...