用kanzi的shader着色器:完成在图片中挖一个圆形

2 篇文章 0 订阅
1 篇文章 0 订阅

在kanzi中写材质是我们在实现比较炫酷的效果的一种做法,基本在opengl中的大部分简单效果都能在kanzi中实现,以下是一张图片中,只显示一部分图片的效果,相当于在图片中挖了一个洞

顶点着色器

attribute vec3 kzPosition;
attribute vec2 kzTextureCoordinate0;
uniform highp mat4 kzProjectionCameraWorldMatrix;
varying mediump vec2 vTexCoord;
void main()
{
    precision mediump float;
    vTexCoord = kzTextureCoordinate0;
    gl_Position = kzProjectionCameraWorldMatrix * vec4(kzPosition.xyz, 1.0);
}

 
 

    片元着色器:

    uniform sampler2D Texture;
    varying mediump vec2 vTexCoord;
    uniform lowp float BlendIntensity;
    uniform lowp float Radius;
    uniform lowp float RadiusWidth;
    
    void main()
    {
        precision mediump float;
        vec4  color = vec4(0.0); 
        vec4  outcolor = vec4(0.0); 
        vec4  colorTT = texture2D(Texture, vTexCoord);
        
        vec2 pos = vTexCoord *2.0-1.0;  //圆心
        float dis = length(pos);  //半径
        if(dis < Radius)
        {
    //小于Radius-0.1返回0,大于Radiu返回1,Radius-0.1到Radius取平滑算法差值
            float offset  = smoothstep(Radius-0.1,Radius,dis);
    //offset=0取colorTT,offset=1取color
    //colorTT*(1-offset) + color*offset
            outcolor = mix(colorTT,color,offset);  
        }
        else
        {
            outcolor = vec4(0.0);   
        }       
        gl_FragColor.rgba = outcolor.rgba * BlendIntensity;
    }
    
     
     

      在这里插入图片描述

      • 0
        点赞
      • 1
        收藏
        觉得还不错? 一键收藏
      • 1
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论 1
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值