Javascript 如果相机靠近网格,则FPS较低
我有一个有8棵树的小场景(每棵树由3k三个树组成)。当“网格比例”为0.5且树非常小时,也可以: 但使用默认比例时,它看起来是这样的(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
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;
}