Godot - Shader - 模糊

徑向模糊

對x方向周圍像素進行權(quán)重混合

shader_type canvas_item;

uniform int SAMPLES = 6;
uniform float WIDTH = 4.0;
uniform vec4 OUTLINE_COLOR = vec4(0.,0.,0.,1.);

uniform vec2 TEXTURE_SCALE = vec2(0.94);

float scurve(float x){
    x = x*2. - 1.;
    return -x*abs(x)*.5+x+.5;
}

vec4 gaussian_blur_h(sampler2D src, vec2 size, vec2 uv, float radius){
    if(radius>=1.0){
        vec4 c = vec4(0.);
//      float width = 1./size.x;
        float divsor = 0.;
        float weight = 0.;
        float radius_multiplier = 1./radius;
        
        for(float x=-10.; x<=10.;x++){
            weight = smoothstep(-1.,1.,1.-abs(x)*radius_multiplier);
            c+=texture(src, uv+vec2(x*size.x,0.))*weight;
            divsor+=weight;
        }
        return vec4(c.r/divsor, c.g/divsor, c.b/divsor, 1.0);
    }
    return texture(src,uv);
}

void fragment(){
    COLOR = gaussian_blur_h(TEXTURE ,TEXTURE_PIXEL_SIZE ,UV , 5.);
}

源碼:
https://www.shadertoy.com/view/Mtl3Rj

高斯模糊

shader_type canvas_item;

float normpdf(in float x, in float sigma){
    return 0.39894*exp(-.5*x*x/(sigma*sigma))/sigma;
}

vec4 gaussian_blur(sampler2D src, vec2 size, vec2 uv, int m_size){
    vec4 cc = texture(src, uv);
    vec3 c = cc.rgb;
    int k_size = (m_size-1)/2;
    float sigma = 7.;
    vec3 final_color = vec3(0.);
    float z = 0.;
    for(int i=-k_size;i<=k_size;i++){
        float n = normpdf(float(i), sigma);
        z+=n;
        for(int j=-k_size;j<=k_size;j++){
            final_color+=n*n*texture(src,uv+size*vec2(float(i),float(j))).rgb;
        }
    }
    return vec4(final_color/z/z,1.);
}

void fragment(){
    COLOR = gaussian_blur(TEXTURE ,TEXTURE_PIXEL_SIZE ,UV , 10);
}

https://www.shadertoy.com/view/XdfGDH

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準。 注意:講述HT...
    kismetajun閱讀 28,817評論 1 45
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,658評論 1 32
  • 小弟: 昨天夜里,我第一次聽到蟬鳴,今年夏天的蟬鳴。 我想起年少時候,每年暑假,我們天天在外面找知了猴兒,中午就出...
    捕蛇者閱讀 456評論 0 1
  • 這篇文章主要會涵蓋市場背景、產(chǎn)品經(jīng)理分類、產(chǎn)品經(jīng)理成長路徑、產(chǎn)品經(jīng)理職業(yè)發(fā)展四大塊。 市場背景 中國市面上直接以“...
    Arthurwu24閱讀 425評論 0 0
  • 上午接到電話,榮村那點活飛抓緊干,因為上邊要檢查,今天必須完工,原計劃端午期間上午去,涼快而且不用請假,可今天,工...
    吳利蘋閱讀 291評論 0 0

友情鏈接更多精彩內(nèi)容