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

效果:
Kanzi中级3:写Shader特效,如何画一个圆弧形的光点,类似于太阳系的星球_第1张图片
参数值:
Kanzi中级3:写Shader特效,如何画一个圆弧形的光点,类似于太阳系的星球_第2张图片

你可能感兴趣的:(Kanzi)