美文网首页
shader模糊

shader模糊

作者: 园Flora | 来源:发表于2020-05-11 17:35 被阅读0次

local vertSource = "\n"..

    "attribute vec4 a_position; \n" ..

    "attribute vec2 a_texCoord; \n" ..

    "attribute vec4 a_color; \n" ..

    "#ifdef GL_ES \n" ..

    "varying lowp vec4 v_fragmentColor;\n" ..

    "varying mediump vec2 v_texCoord;\n" ..

    "#else \n" ..

    "varying vec4 v_fragmentColor;\n" ..

    "varying vec2 v_texCoord;\n" ..

    "#endif\n" ..

    "void main()\n" ..

    "{\n" ..

    " gl_Position = CC_PMatrix * a_position;\n"..

    " v_fragmentColor = a_color;\n"..

    " v_texCoord = a_texCoord;\n" ..

"}\n"

local fragSource =  "\n" ..

"#ifdef GL_ES \n" ..

"precision mediump float; \n" ..

"#endif \n" ..

"varying vec4 v_fragmentColor; \n" ..

"varying vec2 v_texCoord; \n" ..

"uniform vec2 resolution; \n" ..

"uniform float blurRadius;\n" ..

"uniform float sampleNum; \n" ..

"vec4 blur(vec2);\n" ..

"\n" ..

"void main(void)\n" ..

"{\n" ..

"    vec4 col = blur(v_texCoord); //* v_fragmentColor.rgb;\n" ..

"    gl_FragColor = vec4(col) * v_fragmentColor;\n" ..

"}\n" ..

"\n" ..

"vec4 blur(vec2 p)\n" ..

"{\n" ..

"    if (blurRadius > 0.0 && sampleNum > 1.0)\n" ..

"    {\n" ..

"        vec4 col = vec4(0);\n" ..

"        vec2 unit = 1.0 / resolution.xy;\n" ..

" \n" ..

"        float r = blurRadius;\n" ..

"        float sampleStep = r / sampleNum;\n" ..

"\n" ..

"        float count = 0.0;\n" ..

"\n" ..

"        for(float x = -r; x < r; x += sampleStep)\n" ..

"        {\n" ..

"            for(float y = -r; y < r; y += sampleStep)\n" ..

"            {\n" ..

"                float weight = (r - abs(x)) * (r - abs(y));\n" ..

"                col += texture2D(CC_Texture0, p + vec2(x * unit.x, y * unit.y)) * weight;\n" ..

"                count += weight;\n" ..

"            }\n" ..

"        }\n" ..

"\n" ..

"        return col / count;\n" ..

"    }\n" ..

"\n" ..

"    return texture2D(CC_Texture0, p);\n" ..

"}\n"

--图片模糊效果 spr图片 Radius虚化等级

function UICommon:setShader(spr,Radius)

    local maskOpacity = 0.1

    local pProgram = cc.GLProgram:createWithByteArrays(vertSource,fragSource)

    local glprogramstate = cc.GLProgramState:getOrCreateWithGLProgram(pProgram)

    local size = spr:getTexture():getContentSizeInPixels()

    spr:setGLProgramState(glprogramstate)

    glprogramstate:setUniformVec2("resolution", cc.p(size.width, size.height));

    glprogramstate:setUniformFloat("blurRadius", Radius);

    glprogramstate:setUniformFloat("sampleNum", 1.5)

    glprogramstate:setUniformVec2("pix_size", cc.p(0,0));

end

相关文章

  • shader模糊

    local vertSource = "\n".. "attribute vec4 a_position; \...

  • 高斯模糊 Shader

    前言 咳咳,上篇文章《为什么选择 TypeScript ?》得到了许多朋友的认可,让我动力满满,以后要加油写出更多...

  • 模糊shader总结(均值模糊,高斯模糊)

    效果排序 高斯+降采样>高斯>均值 CommandBuff的实现效果好,效率可控,但缺点是无法用在UI上 U...

  • [Unity/shader]高斯模糊

    前言 很久没有学习新知识了,前端时间偶然翻了一下《shader入门精要》看了一下bloom效果,然后发现自己...

  • Shader笔记3 - 模糊(Blur)

    模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果。模糊是sha...

  • shader实现屏幕高斯模糊

    实现屏幕模糊的方法有很多种,有均值模糊,中值模糊和高斯模糊。相信了解 过图像处理的对这些都会有一定的了解。这篇...

  • 【Simple Shader】UGUI背景模糊

    写在前面 好久没有写shader了,最近项目中需要实现一个弹窗背景是模糊的游戏场景。大致效果如下: 看起来好像比较...

  • Unity Shader之运动模糊

    参考自《Unity Shader入门简要》 原理梳理 存储上一帧渲染效果的成像矩阵和当前帧成像逆矩阵 通过深度值获...

  • Shader Weaver使用教程9 - 使用模糊

    我们将在本教程中做什么 准备节点 在项目视图中,打开“ShaderWeaver / Textures”文件夹并将 ...

  • Unity shader forge和自带的shader gra

    shader forge/shader graph 是Unity的Shader图形化编程工具。Shader for...

网友评论

      本文标题:shader模糊

      本文链接:https://www.haomeiwen.com/subject/plqpnhtx.html