Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果相机靠近网格,则FPS较低_Javascript_Three.js_Webgl - Fatal编程技术网

Javascript 如果相机靠近网格,则FPS较低

Javascript 如果相机靠近网格,则FPS较低,javascript,three.js,webgl,Javascript,Three.js,Webgl,我有一个有8棵树的小场景(每棵树由3k三个树组成)。当“网格比例”为0.5且树非常小时,也可以: 但使用默认比例时,它看起来是这样的(FPS减少了一半): 我还为风效果使用着色器。我曾尝试使用默认着色器,但没有帮助。所以,如果相机离网格足够近,就会导致延迟 着色器代码: twigDefault.onBeforeCompile = function ( shader ) { shader.uniforms.time = { value: 0 }; shader.vertexShad

我有一个有8棵树的小场景(每棵树由3k三个树组成)。当“网格比例”为0.5且树非常小时,也可以: 但使用默认比例时,它看起来是这样的(FPS减少了一半): 我还为风效果使用着色器。我曾尝试使用默认着色器,但没有帮助。所以,如果相机离网格足够近,就会导致延迟

着色器代码:

twigDefault.onBeforeCompile = function ( shader ) {
    shader.uniforms.time = { value: 0 };
    shader.vertexShader = 'uniform float time;\n' + shader.vertexShader;
    shader.vertexShader = shader.vertexShader.replace(
        '#include <begin_vertex>',
        [
            'float theta = sin( time + position.y ) / 300.0;', //300
            'float c = cos( theta );',
            'float s = sin( theta );',
            'mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );',
            'vec3 transformed = vec3( position ) * m;',
            'vNormal = vNormal * m;'
        ].join( '\n' )
    );
    meshes.tree.shader = shader;
};

看起来你的应用程序是像素受限的,你使用哪种材质/片段着色器来绘制树?风是在顶点过程还是碎片过程中应用的?@neeh我已经在帖子中添加了着色器代码。这不仅仅是你的注入,它在做某种透明度,很多透支?@pailhead如果玩家在树下不可见,我会更改树枝材质。但是我已经尝试删除这个函数,它不会影响FPS。我只是尝试用你的树模型构建一个森林,并且能够重现这个问题,即使使用最基本的着色器,禁用照明,禁用阴影贴图,没有各向异性。。。我认为主要的问题是,当你放大树叶时,屏幕上有1k张~200x200像素的脸,而detph测试似乎没有多大帮助。我建议使用较低的多边形模型(对于这个树干来说,2k面似乎很多),或者保留小树。。。如果你打算种很多树,你也可以看看
if (meshes.tree.shader) {
    meshes.tree.shader.uniforms.time.value = performance.now() / 1000;
}