leaflet 雷达探测的shader

0.效果:

1.定点着色器:

复制代码
attribute vec2 aCRSCoords;        
        attribute vec2 aExtrudeCoords;
        uniform mat4 uTransformMatrix;     
        uniform vec2 uPixelSize;
        uniform float uNow;
        
        attribute float adm0cap;

        varying vec2 vExtrudeCoords;
        
        varying float vTimeNow ;

        varying vec2 vCRSCoords;

        void main(void) {
            vExtrudeCoords = aExtrudeCoords;
            vTimeNow = uNow;

            gl_Position = uTransformMatrix * vec4(aCRSCoords, 1.0, 1.0);
    
            // If not, just place a smaller kitten.
            gl_Position += vec4(aExtrudeCoords * uPixelSize * 100.0, 0.0, 0.0);   //这里设置像素大小。
            
        }
复制代码

2.片元着色器

复制代码
uniform sampler2D uTexture0;
        precision highp float;
        varying float vTimeNow ;
        varying vec2 vExtrudeCoords;

        void main(void) {
            // Our extrude coordinates go from [-1,-1] to [1,1],
            // but the texture lookup needs coords in the [0,0]-[1,1]
            // range.
            vec2 texelCoords;
            texelCoords.x = (vExtrudeCoords.x + 1.0) / 2.0;
            texelCoords.y = (1.0 - vExtrudeCoords.y) / 2.0;
            
            // Perform a texture lookup
            vec4 texelColour = texture2D(uTexture0, texelCoords);
            texelColour.a = texelColour.a * abs( 
                    sin(
                        -vTimeNow/500.0 + length(texelCoords.xy)*10.0
                        ) 
                    );
            
            // Use the colour from the texture as the colour for this pixel
            gl_FragColor = texelColour;
        }
复制代码

 3.片元着色器也可以这么写(来自我们领导的, 大牛~)

复制代码
uniform sampler2D uTexture0;
        precision highp float;
        varying float vTimeNow ;
        varying vec2 vExtrudeCoords;

        void main(void) {
            // Our extrude coordinates go from [-1,-1] to [1,1],
            // but the texture lookup needs coords in the [0,0]-[1,1]
            // range.
            vec2 texelCoords;
            texelCoords.x = (vExtrudeCoords.x + 1.0) / 2.0;
            texelCoords.y = (1.0 - vExtrudeCoords.y) / 2.0;
            
                                
            if( length(texelCoords.xy) > 1.0 ){
                discard;
                return;
            }

            vec4 texelColour;
            texelColour.rgb = vec3(0.0,1.0,1.0);
            texelColour.a = abs( 
                    sin(
                        length(texelCoords.xy) * 10.0 -vTimeNow/500.0
                        ) 
                    );
            
            // Use the colour from the texture as the colour for this pixel
            gl_FragColor = texelColour;
        }
复制代码

效果如下:

这样,加载的纹理只是个框架(傀儡),我们可以随意更改他的颜色。

爬坑不易,一分也是爱。

posted @   一梦、  阅读(900)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2018-04-02 c语言实现strcp函数
点击右上角即可分享
微信分享提示