不用后处理更改Cesium3dtileset的颜色shader

时间:2024-04-01 17:56:56

   ForEach.shader = function(gltf, handler)
    {
        if (hasExtension(gltf, 'KHR_techniques_webgl'))
        {
            
            if( gltf.extensions.KHR_techniques_webgl.shaders.length == 2 )
            {
                var numberi = gltf.extensions.KHR_techniques_webgl.shaders[1].extras._pipeline.source.lastIndexOf("gl_FragColor");
                var sky1 = gltf.extensions.KHR_techniques_webgl.shaders[1].extras._pipeline.source.substring(0, numberi);
                var sky2 = 'color = vec3(1.0, 0.0, 0.0);\n';
                var sky3 = gltf.extensions.KHR_techniques_webgl.shaders[1].extras._pipeline.source.substring( numberi);
                gltf.extensions.KHR_techniques_webgl.shaders[1].extras._pipeline.source = sky1 + sky2 + sky3;
            }
            else if( gltf.extensions.KHR_techniques_webgl.shaders.length > 2 )
            {
                var numberi = gltf.extensions.KHR_techniques_webgl.shaders[3].extras._pipeline.source.lastIndexOf("gl_FragColor");
                var sky1 = gltf.extensions.KHR_techniques_webgl.shaders[3].extras._pipeline.source.substring(0, numberi);
                var sky2 = 'color = vec3(1.0, 0.0, 0.0);\n';
                var sky3 = gltf.extensions.KHR_techniques_webgl.shaders[3].extras._pipeline.source.substring( numberi);
                gltf.extensions.KHR_techniques_webgl.shaders[3].extras._pipeline.source = sky1 + sky2 + sky3;
            }
            
            return ForEach.object(gltf.extensions.KHR_techniques_webgl.shaders, handler);
        }

        return ForEach.topLevel(gltf, 'shaders', handler);
    };

不用后处理更改Cesium3dtileset的颜色shader