精华内容
下载资源
问答
  • 编程之家收集整理的这篇文章主要介绍了cocos2dx-js Shader的使用(高斯模糊),编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。可以参考http://blog.csdn.net/afei198409/article/details/50594665了解...

    编程之家收集整理的这篇文章主要介绍了cocos2dx-js Shader的使用(高斯模糊),编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

    可以参考http://blog.csdn.net/afei198409/article/details/50594665了解必须的shader使用知识。

    首先.vsh文件(这里有两个,一个test_noMVP.vsh用于本地,一个test.vsh用于浏览器)

    test_noMVP.vsh描述如下:

    attribute vec4 a_position;

    attribute vec2 a_texCoord;

    attribute vec4 a_color;

    #ifdef GL_ES

    varying lowp vec4 v_fragmentColor;

    varying mediump vec2 v_texCoord;

    #else

    varying vec4 v_fragmentColor;

    varying vec2 v_texCoord;

    #endif

    void main()

    {

    gl_Position = CC_PMatrix * a_position;

    v_fragmentColor = a_color;

    v_texCoord = a_texCoord;

    }

    test.vsh文件描述如下:

    attribute vec4 a_position;

    attribute vec2 a_texCoord;

    attribute vec4 a_color;

    #ifdef GL_ES

    varying lowp vec4 v_fragmentColor;

    varying mediump vec2 v_texCoord;

    #else

    varying vec4 v_fragmentColor;

    varying vec2 v_texCoord;

    #endif

    void main()

    {

    gl_Position = CC_PMatrix * CC_MVMatrix * a_position;

    v_fragmentColor = a_color;

    v_texCoord = a_texCoord;

    }

    然后是.fsh文件

    test.fsh文件描述如下:

    #ifdef GL_ES

    precision mediump float;

    #endif

    varying vec4 v_fragmentColor;

    varying vec2 v_texCoord;

    uniform vec2 blurSize;

    void main() {

    vec4 sum = vec4(0.0);

    sum += texture2D(CC_Texture0,v_texCoord - 0.0004 * blurSize) * 0.05;

    sum += texture2D(CC_Texture0,v_texCoord - 0.0003 * blurSize) * 0.09;

    sum += texture2D(CC_Texture0,v_texCoord - 0.0002 * blurSize) * 0.12;

    sum += texture2D(CC_Texture0,v_texCoord - 0.0001 * blurSize) * 0.15;

    sum += texture2D(CC_Texture0,v_texCoord) * 0.16;

    sum += texture2D(CC_Texture0,v_texCoord + 0.0001 * blurSize) * 0.15;

    sum += texture2D(CC_Texture0,v_texCoord + 0.0002 * blurSize) * 0.12;

    sum += texture2D(CC_Texture0,v_texCoord + 0.0003 * blurSize) * 0.09;

    sum += texture2D(CC_Texture0,v_texCoord + 0.0004 * blurSize) * 0.05;

    gl_FragColor = sum * v_fragmentColor;

    }

    使用如下:

    首先创建一个cocos2dx-js的hello world项目,打开app.js进行修改

    var HelloWorldLayer = cc.Layer.extend({

    ctor:function () {

    this._super();

    var size = cc.winSize;

    var png = new cc.Sprite("res/HelloWorld.png");

    png.setPosition(size.width * 0.5,size.height * 0.5);

    this.addChild(png,10);

    this.blurSprite(png);

    return true;

    },

    blurSprite:function(sprite)

    {

    var blurSize = cc.size(40,40);

    if( 'opengl' in cc.sys.capabilities ) {

    cc.log("support opengl shader");

    //the renderers of webgl and opengl is quite different now,so we have to use different shader and different js code

    if (cc.sys.isNative) {

    var shader = new cc.GLProgram("res/test_noMVP.vsh","res/test.fsh");

    shader.link();

    shader.updateUniforms();

    var glProgram_state = cc.GLProgramState.getOrCreateWithGLProgram(shader);

    //设置参数值(blurSize对应test.fsh里面的blurSize)

    glProgram_state.setUniformVec2("blurSize",blurSize);

    //添加shader

    sprite.setGLProgramState(glProgram_state);

    } else {

    var shader = new cc.GLProgram("res/test.vsh","res/test.fsh");

    shader.retain();

    shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION,cc.VERTEX_ATTRIB_POSITION);

    shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR,cc.VERTEX_ATTRIB_COLOR);

    shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD,cc.VERTEX_ATTRIB_TEX_COORDS);

    shader.link();

    shader.updateUniforms();

    shader.use();

    //设置参数值

    shader.setUniformLocationWith2f(shader.getUniformLocationForName('blurSize'),blurSize.width,blurSize.height);

    //添加shader

    sprite.shaderProgram = shader;

    }

    } else {

    cc.log("no support opengl shader");

    }

    }

    });

    ......

    运行效果图如下:

    总结

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478

    展开全文
  • 可以叠两层背景图.content设置同样的背景图,通过background-position定位使之与底部的背景图重叠.html样式html,body{height: 100%;margin: 0;}body{background-image: url("./10.jpg");background-size: 900px 383px...

    可以叠两层背景图.

    content设置同样的背景图,通过background-position定位使之与底部的背景图重叠.

    3adba336355f2e86002d011743a841f6.png

    html

    样式html,body{

    height: 100%;

    margin: 0;

    }

    body{

    background-image: url("./10.jpg");

    background-size: 900px 383px;

    }

    .center-box{

    display: flex;

    align-items: center;

    justify-content: center;

    }

    .content{

    width: 280px;

    height:280px;

    overflow: hidden;

    border-radius: 8px;

    box-shadow: 0 2px 10px rgba(0,0,0,.08);

    }

    .box{

    transform: translate(-10px, -10px);

    background-image: url("./10.jpg");

    background-color: rgba(155, 144, 144, 0.8);;

    background-size: 900px 383px;

    background-position: calc(calc(300px - 900px) / 2) calc(calc(300px - 383px) / 2);

    width: 300px;

    height: 300px;

    filter: blur(5px);

    }

    展开全文
  • 案例:如下图所示,左表(A列和B列)为...方法一:VLOOKUP实现模糊数据查找函数公式为=VLOOKUP("*"&D4&"*",A:B,2,FALSE)语法=Vlookup(参数一,参数二,参数三,参数四)解释① 参数一:"*"&D4&"*"* ...

    67c62e9d83fc889e7264579b626a1c98.png

    案例:如下图所示,左表(A列和B列)为海底捞火锅的店名和地址的基础数据。“西直门”为火锅店店名的关键字。

    要求:通过关键字匹配,在E列中能够返回数据(火锅店地址)。

    eac4bd5390f8d313807359cd61afe989.png

    方法一:VLOOKUP实现模糊数据查找

    函数公式为=VLOOKUP("*"&D4&"*",A:B,2,FALSE)

    51c470635b6bcc96e7284fdeb32ed5b8.png

    语法

    =Vlookup(参数一,参数二,参数三,参数四)

    解释

    ① 参数一:"*"&D4&"*"
    * 表示通配符,"*"&D4&"*" 则表示,数据中含有D4单元格的数据
    ② 参数二:A:B
    表示参数一在参数二的范围内进行查找
    ③ 参数三:2
    表示返回数据表 A:B 中的第二列数据,即B列数据
    ④ 参数四:FALSE
    表示精确查找。注意,参数四如果不写,默认也是精确查找。

    方法二:LOOKUP+FIND函数

    公式为 =LOOKUP(1,0/FIND(D4,A:A),B:B)

    效果如下图所示。

    a0877696d2f75a97a746d13d38c5fbf4.png

    解释一:FIND语法

    =Find(要查找的文本,文本所在的单元格,从第几个字符开始查找[可选,省略默认为1,从第一个开始查找])

    Find返回字符所在单元格文本中的起始位置

    因此,=FIND(D4,A6) 返回的数值为7

    解释二:0/FIND(D4,A:A)

    该公式是数组公式,包含的数据有

    0/FIND(D4,A1),0/FIND(D4,A2),0/FIND(D4,A3),0/FIND(D4,A4),0/FIND(D4,A5)....

    对应的数值为

    #VALUE!,#VALUE!,0,#VALUE!.......

    解释三: =LOOKUP(1,数组,B:B)

    该公式是LOOKUP的模糊查找公式,该函数表示返回数组中最接近1的,B列数据,即返回B3单元格数据

    注意:使用数组公式时,输入完成公式后,需要同时按下【Shift+Ctrl+Enter】键,才可以返回正确的数值。

    总结

    本文中分享了2种模糊查找的方法,各位小伙伴,你学会了吗?

    展开全文
  • 模糊效果在游戏中经常会用到,有的为了突出前景会把背景模糊化,有的是因为一些技能需要模糊效果。模糊是shader中较为简单的一种应用。cocos2dx 3.x给的demo中,就有sprite的模糊的效果。先说下这个模糊算法的大致...

    模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果。模糊是shader中较为简单的一种应用。cocos2dx 3.x给的demo中,就有sprite的模糊的效果。

    先说下这个模糊算法的大致思路,我们在片段着色器中可以得到当前像素点的颜色值,要想让这个颜色变得模糊,就要让它与它周围的像素点的颜色稍微接近一点,那么我们就需要拿到这个像素点周围的像素点的颜色值,我们把这些个像素点的值加起来取平均值,就得到了一个区域内的平均颜色。

    如果直接使用这个颜色的话,最终的效果会变得很模糊,如果我们只是想稍微模糊一点的话,就要让这个平均值更接近于当前像素点原本的颜色,为此,我们取均值的时候对每个像素点增加了一个权重的定义,当前像素点的权重最高,依次向周围减弱,使得最后得到的均值的颜色更接近于当前像素点原始的颜色。

    看代码:

    #ifdef GL_ES

    precision mediump float;

    #endif

    varying vec4 v_fragmentColor;

    varying vec2 v_texCoord;

    uniform vec2 resolution;//模糊对象的实际分辨率

    uniform float blurRadius;//半径

    uniform float sampleNum;//间隔的段数

    vec4 blur(vec2);

    void main(void)

    {

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

    gl_FragColor = vec4(col) * v_fragmentColor;

    }

    vec4 blur(vec2 p)

    {

    if (blurRadius > 0.0 && sampleNum > 1.0)

    {

    vec4 col = vec4(0);

    vec2 unit = 1.0 / resolution.xy;//单位坐标

    float r = blurRadius;

    float sampleStep = r / sampleNum;

    float count = 0.0;

    //遍历一个矩形,当前的坐标为中心点,遍历矩形中每个像素点的颜色

    for(float x = -r; x < r; x += sampleStep)

    {

    for(float y = -r; y < r; y += sampleStep)

    {

    float weight = (r - abs(x)) * (r - abs(y));//权重,p点的权重最高,向四周依次减少

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

    count += weight;

    }

    }

    //得到实际模糊颜色的值

    return col / count;

    }

    return texture2D(CC_Texture0, p);

    }

    精度限定符和varying变量等的一些基础的知识在前面的博客中遇到的已经说过。

    uniform变量是顶点着色器和片段着色器共享使用的变量,uniform的值不能被改变。

    uniform变量是由宿主程序设置的,代码如下:

    void EffectBlur::setTarget(EffectSprite *sprite)

    {

    Size size = sprite->getTexture()->getContentSizeInPixels();

    _glprogramstate->setUniformVec2("resolution", size);

    #if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)

    _glprogramstate->setUniformFloat("blurRadius", _blurRadius);

    _glprogramstate->setUniformFloat("sampleNum", _blurSampleNum);

    #endif

    }

    这里宿主程序设置了resolution,blurRadius和sampleNum三个uniform变量。渲染的时候,顶点着色器和片段着色器都可以用到这三个变量的值。

    resolution是当前渲染node的实际分辨率。

    blurRadius是像素点模糊处理的参考矩形的半径

    sampleNum选择像素点的间隔的数量,相邻像素点的间距等于blurRadius / sampleNum

    blur函数就是计算该像素点的最终颜色,参数p是当前像素点的坐标,我们以p点为中点以2r为边长得到一个矩形,这个矩形中每隔sampleStep长度的像素点是当前像素点的颜色参考像素。每个像素点会乘以一个weight权重,这个weight越靠近p点值越高,目的是为了让最终的值更接近于p点的像素颜色,然后各个像素点乘以权重后的颜色加起来,得到col,把各个权重也加起来得到count。最终的颜色值就是col/count。

    效果图如下:

    模糊前:

    模糊后:

    展开全文
  • 本章为大家带来高斯模糊的实现2d-sprite-gaussian-blur-v1首先,来点简单的,比如:高斯模糊的英文名叫 Gaussian Blur。关于高斯模糊的原理,在我学习过程中,下面两篇文章是我觉得最能通俗易懂的介绍其工作原理的...
  • 最近做cocos2dx ,由于在window平台上运行的游戏,故出很多问题,图片模糊就是其中一个。下面给出我的解决方案,(由于用的cocostudio 加载的图片文件,故只能改源码解决了)(个人建议还是最好不要改源码)cocostudio...
  • 来源:作者yuanyi首先打开素材,我们发现背景比较...这里建黑色背景图是为了接下来大家很直观地看到自己所选区域。、W快速选择工具,将人物选中,主要是人物的身体选取出来,头发先不用管。点击右下角建立一个新的...
  • 编程之家收集整理的这篇文章主要介绍了cocos2dx-js Shader的使用(高斯模糊),编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。可以参考http://blog.csdn.net/afei198409/article/details/50594665了解...
  • 》 《DNA分子的结构》模型制作线上分享会 《“空中课堂”如何让科学实验落地之彩虹瓶》 《在线教学:更要关注公平与质量》 《在线伙伴合作,助力隔空学习——三年级在线伙伴合作学习案例分享》 《“站、室、坊”的...
  • 如题。 如果直接设置容器(Grid,Border)的Opaticy属性,那么整个容器里的控件的Opaticy也会跟着改变, 现在我只想容器 ...的背景模糊或半透明, 子控件保持不变, 是修改容器的样式????高人下指点迷津好吗?
  • 背景模糊一下,有时,效果会令人非常惊艳,但是,你真的懂,如何模糊背景吗?在今天的教程中,我们将告诉大家,如何使背景模糊,而又不会使我们的主体周围出现光晕。在这个过程中,我们首先需要先把主体抠出来,...
  • 第三类是模糊性模型,即模型的背景及关系具有模糊性。模糊是指客观事物差异的中间过渡中的“不分明性”或“亦此亦彼性”。如高个子与矮个子、年轻人与老年人、热水与凉水、环境污染严重与不严重等。在决策中,也有...
  • 背景模糊一下,有时,效果会令人非常惊艳,但是,你真的懂,如何模糊背景吗?在今天的教程中,我们将告诉大家,如何使背景模糊,而又不会使我们的主体周围出现光晕。在这个过程中,我们首先需要先把主体抠出来,...
  • 今天写个效果,想让背景透明,直接设置 opacity:0.4; 导致文字也模糊了,该属性因该是应用在整个盒子上的。 只需给背景单独添加透明度即可 background:rgba(204,204,204,0.2); 颜色十六位的可以在换成RGB,最后一位...
  • 无论是手机党还是相机党,喜欢背景虚化的同学大有人在,这种充满文艺范儿的“画风”最大的特点就是——层次分明,...景深和虚化的关系如下:景深越浅,背景就越“虚(模糊)”;景深越深,背景就越“实(清晰)”…那么光...
  • Photoshop CS版自带的Lens Blur(镜头模糊)滤镜,能模仿出浅景深的效果。消费级DC拍出的照片模拟虚化背景,全部过程只需三个步骤:  Step1: 打开照片,利用套索工具勾选出需要保留的清晰主体(笔者习惯使用磁性套索...
  • 【昊鼎王五】win10电脑如何设置让背景色变成保护眼睛的绿豆色? 背景:视觉症候群 先讲一下经常使用电脑的人可能出现的症状=>长时间使用电脑可能造成视觉问题,美国视光学协会(AOA)将其定义为计算机视觉征候群...
  • 那手机拍照该如何实现背景虚化的拍摄呢?手机拍照时需要点击画面主体对焦,我们的主体足够清晰,此时主体之外的画面呈现渐变模糊,再按下拍摄按键进行拍摄。所以手机想要获得背景虚化的效果,主要有两种方式。1、...
  • 同样的,如果背景虚化模糊,会照片效果更加简洁精炼,拍摄主体更加突出。那么,该如何拍摄出前景虚化、背景虚化的效果呢?前景虚化、背景虚化效果本质上是对于景深范围的运用,通过大光圈、近距离或长焦距来获得...
  • 这一篇讲的是如何将一张普通手机拍摄的照片,通过PS做成一张背景虚化人物突出的照片。以讲解快速虚化背景和优化细节为主,顺便可以练习一下PS中通道的运用。在没有特殊镜头的情况下,照片更有范。对比图:效果图:...
  • 那么,接下来就三景文化企业宣传片拍摄制作来教教大家如何使用手动聚焦?1、所拍摄的物体端离摄像机很近,另一端离得很远。摄像镜头有一定景深,对于超出其景深范围的被拍摄物,摄像机不能聚焦于一个同时位于前景...
  • 不知道大家有没有发现照片拍好隔了一段时间就会变得模糊,像素就会变低,是不是你感到很苦恼,别着急,今天本汪帮你搞定,走一起去见证一下吧!原理:把图像反相后,降低不透明度可以得到灰色图片;然后用表面模糊...
  • 从这三方面,我来讲一下怎么才能让背景虚化。光圈在拍摄中除了控制进光量,还可以控制景深。光圈的数值越小,光圈就越大。一般价位镜头的最大光圈,会在F1.8到F4.0左右。拍摄的时候你会发现,越大的光圈,背景虚化...
  • 模糊图片如果不清晰,那就干脆模糊吧。现在很多人都喜欢高斯模糊,手机壁纸、电脑壁纸等等,相信大家都有用过,方法很简单,点击背景图,选择图片格式,然后选艺术效果,再选择虚化,这样图片就模糊了,不仅看不...
  • 今天我们就带着大家如何使用PS新功能来解决很多人头痛的半透明全透明物体怎么抠吧,推荐给朋友来学习,希望朋友可以喜欢。那么按照惯例,今天咱们就先来讲一讲第一个案例吧,首先我们要有一张婚纱照的图片:像这种...
  • 大家好呀,我是selena~...当你的文字因背景图片看不清时,可以在图片和文字中间加一层图层蒙版其实还有一种方法,可以直接将图片裁剪后设置柔化边缘为了效果更好,可以柔化后把图片放大一点,边缘过于模糊的置...
  • 要不就是毛玻璃错位了,要不就是毛玻璃周围一圈模糊度不好...仔细看下面这个强迫症犯病的效果图,毛玻璃上侧和下侧比中间会清晰点。(背景也有点错位了..) 然后研究了下哔哩哔哩的源码..发现还是蛮简单的..是的,...
  • 当你注意到清晰度问题时,恭喜你已经是个老鸟了。 本篇就来讲讲清晰度相关的进阶教程 清晰度通常有以下几种情况导致看...挑了一个清晰的视频做换脸,结果换上去的脸比周围背景明显模糊一大截。 然后许多人...
  • 本人为原创作品:e良师益友 ,转载是并且注明  e良师益友网导读:怎么样用ps制作网站导航按钮,小编分享给大家,教你利用... 1、打开下图所示的背景素材,选择菜单:滤镜 > 模糊 > 高斯模糊,数值稍微大一点,效

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

如何让背景模糊