1. 程式人生 > >Cesium blur記錄一下

Cesium blur記錄一下

var fragment='uniform sampler2D colorTexture; \n' +

                'varying vec2 v_textureCoordinates; \n' +

                'const float offset = 1.0 / 300.0; \n' +

                'void main()\n' +

                '{\n' +

                    'vec2 offsets[9] ;\n' +

                    'offsets[0]= vec2(-offset, offset), // 左上\n' +

                    'offsets[1]= vec2( 0.0, offset), // 正上\n' +

                    'offsets[2]= vec2( offset, offset), // 右上\n' +

                    'offsets[3]= vec2(-offset, 0.0), // 左\n' +

                    'offsets[4]= vec2( 0.0, 0.0), // 中\n' +

                    'offsets[5]= vec2( offset, 0.0), // 右\n' +

                    'offsets[6]= vec2(-offset, -offset), // 左下\n' +

                    'offsets[7]= vec2( 0.0, -offset), // 正下\n' +

                    'offsets[8]= vec2( offset, -offset);\n' +

                    'float kernel[9] ;\n' +

                    'kernel[0]=1.0/16.0, kernel[1]=2.0/16.0,kernel[2]= 1.0/16.0,\n' +

                    'kernel[3]= 2.0/16.0, kernel[4]=4.0/16.0, kernel[5]=2.0/16.0,\n' +

                    'kernel[6]= 1.0/16.0, kernel[7]=2.0/16.0, kernel[8]=1.0/16.0;\n' +

                    'vec3 sampleTex[9];\n' +

                    'vec4 cc=texture2D(colorTexture, v_textureCoordinates);\n'+

                    'for(int i = 0; i < 9; i++)\n' +

                    '{\n' +

                        'sampleTex[i] = vec3(texture2D(colorTexture, v_textureCoordinates + offsets[i]));\n' +

                    '}\n' +

                        'vec3 col = vec3(0.0);\n' +

                        'for(int i = 0; i < 9; i++)\n' +

                        'col += sampleTex[i] * kernel[i];\n' +

                        'gl_FragColor = vec4(col, 1.0);\n' +

                        'if(cc.r>60.0/255.0)gl_FragColor = vec4(cc);\n' +

                        '}'

程式碼來自learnOpenGL