リーフレットレーダースキャンシェーダ

0効果:

1.vertexShader

        属性VEC2のaCRSCoords。        
        属性VEC2のaExtrudeCoords。
        均一なMAT4のuTransformMatrix。     / 
        uPixelSize VEC2均一。
        均一なフロートuNow。
        
        属性フロートadm0cap。

        VEC2のvExtrudeCoordsを変えます。
        
        様々なフロートvTimeNow。

        VEC2のvCRSCoordsを変えます。

        ボイドメイン(ボイド){ 
            vExtrudeCoords = aExtrudeCoords。
            vTimeNow = uNow。

            gl_Position = uTransformMatrix * vec4(aCRSCoords、1.01.0 ); 
    
            // ない場合は、単に小さな子猫を置きます。
            gl_Position + = vec4(aExtrudeCoords * uPixelSize * 100.00.00.0 )。
            
        }

2.fragmentShader

        均一sampler2D uTexture0。\ n 

        精度highpのフロート
        
        様々なフロートvTimeNow。

        VEC2のvExtrudeCoordsを変えます。

        CONST  フロート PI = 3.1415926535898 ; \ N 

        CONST  フロート PI_2 = PI / 2.0 



        フロート上記Arctan2(フロート Y、フロートX){
             場合(X> 0.0 戻り ATAN(Y / X)。
            他の 場合(X < 0.0 && Y> = 0.0 戻り ATAN(Y / X)+ PI。
            他の 場合(X < 0.0 && Y < 0.0 戻り ATAN(Y / X) - PI。
            そう であれば(X == 0.0 && Y> 0.0 戻りPI_2。
            そう であれば(X == 0.0 && Y < 0.0 リターン - PI_2。
            他の リターン 0.0 
        } 

        ボイドメイン(ボイド){
             //私たちの押し出し座標から行く[-1、-1]に[1,1]は、
             // しかし、テクスチャルックアップは、[0,0]でCOORDSを必要とする- [1,1]
             // レンジ。

            VEC2のtexelCoords。
            texelCoords.x =(vExtrudeCoords.x + 1.0)/ 2.0 
            texelCoords.y =(1.0 - vExtrudeCoords.y)/ 2.0 
            
            // テクスチャのルックアップを実行し 
            vec4 texelColour = にTexture2D(uTexture0、texelCoordsを)。

            フロート角= 上記Arctan2(vExtrudeCoords.y、vExtrudeCoords.x)。\ n個の = MOD(-vTimeNow / 500.0+角度、PI * 2.0 )。
            フロートアルファ= 0.0 もし(角度< PI)
                角度 = 0.0 他の
                アルファ =(角度- PI)/ PI * 1.0 ; \ n
             場合(MOD(gl_FragCoord.s、3.0)< 1.0 || MOD(gl_FragCoord.t、3.0)< 1.0 
                、α = 0.0 
                

            // このピクセルの色とテクスチャから色を使用します
            texelColour.a = texelColour.a * アルファ。
            gl_FragColor = texelColour。
        }

 

おすすめ

転載: www.cnblogs.com/airduce/p/12619400.html