Kanzi中級3:寫Shader特效,如何畫一個圓弧形的光點,類似於太陽系的星球

此shader畫的是一個圓形,顯示半圓的光亮點,圓弧可以旋轉。

頂點着色器:

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

片元着色器:

precision mediump float;
uniform float time;
uniform vec2 resolution;

void main(void){   
    vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y);
    vec3 color = vec3(0.0, 0.3, 0.5);
    
    float f = 0.0;
    float PI = 3.141592;
    for(float i = 0.0; i < 20.0; i++)
    {        
        float s = sin(time*1.1 + i * PI / 10.0) * 0.80 ;
        float c = cos(time*1.1 + i * PI / 10.0) * 0.80;
        f += 0.001 / pow( pow(abs(p.x + c),2.) + pow(abs(p.y + s),2.),.534+0.5*sin(-time*3.321+i/3.14159265+s*c*0.1));
    }    
    gl_FragColor = vec4(vec3(  f*color), 0.0);
}

效果:
在這裏插入圖片描述
參數值:
在這裏插入圖片描述

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