提交 169382e1 编写于 作者: M Mr.doob

WebGLBackground: Push to renderList so it renders correctly in VR. Fixes #11828

上级 bc50e497
......@@ -1097,7 +1097,7 @@ function WebGLRenderer( parameters ) {
//
background.render( scene, camera, forceClear );
background.render( currentRenderList, scene, camera, forceClear );
// render scene
......
......@@ -21,7 +21,7 @@ function WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {
var planeCamera, planeMesh;
var boxMesh;
function render( scene, camera, forceClear ) {
function render( renderList, scene, camera, forceClear ) {
var background = scene.background;
......@@ -47,7 +47,7 @@ function WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {
if ( boxMesh === undefined ) {
boxMesh = new Mesh(
new BoxBufferGeometry( 5, 5, 5 ),
new BoxBufferGeometry( 1, 1, 1 ),
new ShaderMaterial( {
uniforms: ShaderLib.cube.uniforms,
vertexShader: ShaderLib.cube.vertexShader,
......@@ -59,15 +59,18 @@ function WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {
} )
);
geometries.update( boxMesh.geometry );
}
boxMesh.material.uniforms[ "tCube" ].value = background;
boxMesh.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, boxMesh.matrixWorld );
boxMesh.normalMatrix.getNormalMatrix( boxMesh.modelViewMatrix );
boxMesh.material.uniforms.tCube.value = background;
renderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );
geometries.update( boxMesh.geometry );
// TOFIX Hack to make sure background gets rendered first
// TOFIX Ideally background should be rendered last
renderer.renderBufferDirect( camera, null, boxMesh.geometry, boxMesh.material, boxMesh, null );
renderList.opaque.unshift( renderList.opaque.pop() );
} else if ( background && background.isTexture ) {
......@@ -80,11 +83,13 @@ function WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {
new MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )
);
geometries.update( planeMesh.geometry );
}
planeMesh.material.map = background;
geometries.update( planeMesh.geometry );
// TODO Push this to renderList
renderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册