天天看點

用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的shader着色器:完成在圖檔中挖一個圓形

在kanzi中寫材質是我們在實作比較炫酷的效果的一種做法,基本在opengl中的大部分簡單效果都能在kanzi中實作,以下是一張圖檔中,隻顯示一部分圖檔的效果,相當于在圖檔中挖了一個洞

頂點着色器:

繼續閱讀