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

在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;
    }
    
     
     
      
      

      在这里插入图片描述

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

      顶点着色器

      猜你喜欢

      转载自blog.csdn.net/moneyxjj/article/details/125301439