Kanzi中級2:寫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;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章