我在使用Three.js的智能手机上编写着色器材质,因此保存GPU性能对我来说至关重要。
许多平面在我的应用程序中被设计为UI界面,并且将在开始时或在许多用户交互活动中播放动画(着色器动画)。在动画之后,那些用户界面处于"静态"状态(a"静态"由着色器组合的图像),无需一次又一次地在着色器中进行组合(是的,它渲染,"渲染"这里意味着"着色器多重纹理,或程序组合")。如果不能停止那些无意义的渲染,它将消耗大部分的GPU性能。
众所周知,当着色器材质的任何输入值发生变化时,是否需要更新"是"假"或不,webGLRender将更新输出材料。
但是,如果没有更改Uniforms的输入值,webGLRender会再次渲染它,还是只是放弃渲染?这是问题1.
我已经阅读了" webGLRender.js"代码,理解不好,仍然不太确定如何渲染着色器材质。(从代码中,我相信它一直在渲染,但不是很确定。)
问题2: 如果webGLRender继续渲染着色器材质,即使没有更改输入值,是否有办法阻止webGLRender呈现"未更改"着色器材质,以节省GPU性能?
这是我的简单测试:
fragmentShader:
WP_Query
vertexShader:
uniform float col;
void main() {
gl_FragColor = vec4(col, 0.58, 0.06, 1.0);
}
Javascript代码:
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x+5.0, position.y, position.z+25.0, 1.0);
}
感谢。
答案 0 :(得分:0)