185185
186186 } );
187187
188- var REVISION = '100 ';
188+ var REVISION = '101dev ';
189189 var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };
190190 var CullFaceNone = 0;
191191 var CullFaceBack = 1;
1469514695 }
1469614696
1469714697 // push to the pre-sorted opaque render list
14698- renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );
14698+ renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );
1469914699
1470014700 } else if ( background && background.isTexture ) {
1470114701
1475414754
1475514755
1475614756 // push to the pre-sorted opaque render list
14757- renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, null );
14757+ renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );
1475814758
1475914759 }
1476014760
1774417744
1774517745 function painterSortStable( a, b ) {
1774617746
17747- if ( a.renderOrder !== b.renderOrder ) {
17747+ if ( a.groupOrder !== b.groupOrder ) {
17748+
17749+ return a.groupOrder - b.groupOrder;
17750+
17751+ } else if ( a.renderOrder !== b.renderOrder ) {
1774817752
1774917753 return a.renderOrder - b.renderOrder;
1775017754
1777017774
1777117775 function reversePainterSortStable( a, b ) {
1777217776
17773- if ( a.renderOrder !== b.renderOrder ) {
17777+ if ( a.groupOrder !== b.groupOrder ) {
17778+
17779+ return a.groupOrder - b.groupOrder;
17780+
17781+ } else if ( a.renderOrder !== b.renderOrder ) {
1777417782
1777517783 return a.renderOrder - b.renderOrder;
1777617784
1780417812
1780517813 }
1780617814
17807- function getNextRenderItem( object, geometry, material, z, group ) {
17815+ function getNextRenderItem( object, geometry, material, groupOrder, z, group ) {
1780817816
1780917817 var renderItem = renderItems[ renderItemsIndex ];
1781017818
1781617824 geometry: geometry,
1781717825 material: material,
1781817826 program: material.program,
17827+ groupOrder: groupOrder,
1781917828 renderOrder: object.renderOrder,
1782017829 z: z,
1782117830 group: group
1783017839 renderItem.geometry = geometry;
1783117840 renderItem.material = material;
1783217841 renderItem.program = material.program;
17842+ renderItem.groupOrder = groupOrder;
1783317843 renderItem.renderOrder = object.renderOrder;
1783417844 renderItem.z = z;
1783517845 renderItem.group = group;
@@ -17842,17 +17852,17 @@
1784217852
1784317853 }
1784417854
17845- function push( object, geometry, material, z, group ) {
17855+ function push( object, geometry, material, groupOrder, z, group ) {
1784617856
17847- var renderItem = getNextRenderItem( object, geometry, material, z, group );
17857+ var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
1784817858
1784917859 ( material.transparent === true ? transparent : opaque ).push( renderItem );
1785017860
1785117861 }
1785217862
17853- function unshift( object, geometry, material, z, group ) {
17863+ function unshift( object, geometry, material, groupOrder, z, group ) {
1785417864
17855- var renderItem = getNextRenderItem( object, geometry, material, z, group );
17865+ var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
1785617866
1785717867 ( material.transparent === true ? transparent : opaque ).unshift( renderItem );
1785817868
@@ -20013,31 +20023,44 @@
2001320023
2001420024 if ( ! capabilities.isWebGL2 ) return glFormat;
2001520025
20026+ var internalFormat = glFormat;
20027+
2001620028 if ( glFormat === 6403 ) {
2001720029
20018- if ( glType === 5126 ) return 33326;
20019- if ( glType === 5131 ) return 33325;
20020- if ( glType === 5121 ) return 33321;
20030+ if ( glType === 5126 ) internalFormat = 33326;
20031+ if ( glType === 5131 ) internalFormat = 33325;
20032+ if ( glType === 5121 ) internalFormat = 33321;
2002120033
2002220034 }
2002320035
2002420036 if ( glFormat === 6407 ) {
2002520037
20026- if ( glType === 5126 ) return 34837;
20027- if ( glType === 5131 ) return 34843;
20028- if ( glType === 5121 ) return 32849;
20038+ if ( glType === 5126 ) internalFormat = 34837;
20039+ if ( glType === 5131 ) internalFormat = 34843;
20040+ if ( glType === 5121 ) internalFormat = 32849;
2002920041
2003020042 }
2003120043
2003220044 if ( glFormat === 6408 ) {
2003320045
20034- if ( glType === 5126 ) return 34836;
20035- if ( glType === 5131 ) return 34842;
20036- if ( glType === 5121 ) return 32856;
20046+ if ( glType === 5126 ) internalFormat = 34836;
20047+ if ( glType === 5131 ) internalFormat = 34842;
20048+ if ( glType === 5121 ) internalFormat = 32856;
20049+
20050+ }
20051+
20052+ if ( internalFormat === 33325 || internalFormat === 33326 ||
20053+ internalFormat === 34842 || internalFormat === 34836 ) {
20054+
20055+ extensions.get( 'EXT_color_buffer_float' );
20056+
20057+ } else if ( internalFormat === 34843 || internalFormat === 34837 ) {
20058+
20059+ console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );
2003720060
2003820061 }
2003920062
20040- return glFormat ;
20063+ return internalFormat ;
2004120064
2004220065 }
2004320066
2315423177 currentRenderList = renderLists.get( scene, camera );
2315523178 currentRenderList.init();
2315623179
23157- projectObject( scene, camera, _this.sortObjects );
23180+ projectObject( scene, camera, 0, _this.sortObjects );
2315823181
2315923182 if ( _this.sortObjects === true ) {
2316023183
@@ -23245,15 +23268,19 @@
2324523268
2324623269 };
2324723270
23248- function projectObject( object, camera, sortObjects ) {
23271+ function projectObject( object, camera, groupOrder, sortObjects ) {
2324923272
2325023273 if ( object.visible === false ) return;
2325123274
2325223275 var visible = object.layers.test( camera.layers );
2325323276
2325423277 if ( visible ) {
2325523278
23256- if ( object.isLight ) {
23279+ if ( object.isGroup ) {
23280+
23281+ groupOrder = object.renderOrder;
23282+
23283+ } else if ( object.isLight ) {
2325723284
2325823285 currentRenderState.pushLight( object );
2325923286
2327723304 var geometry = objects.update( object );
2327823305 var material = object.material;
2327923306
23280- currentRenderList.push( object, geometry, material, _vector3.z, null );
23307+ currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
2328123308
2328223309 }
2328323310
2329023317
2329123318 }
2329223319
23293- currentRenderList.push( object, null, object.material, _vector3.z, null );
23320+ currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );
2329423321
2329523322 } else if ( object.isMesh || object.isLine || object.isPoints ) {
2329623323
@@ -23323,15 +23350,15 @@
2332323350
2332423351 if ( groupMaterial && groupMaterial.visible ) {
2332523352
23326- currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );
23353+ currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );
2332723354
2332823355 }
2332923356
2333023357 }
2333123358
2333223359 } else if ( material.visible ) {
2333323360
23334- currentRenderList.push( object, geometry, material, _vector3.z, null );
23361+ currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );
2333523362
2333623363 }
2333723364
2334523372
2334623373 for ( var i = 0, l = children.length; i < l; i ++ ) {
2334723374
23348- projectObject( children[ i ], camera, sortObjects );
23375+ projectObject( children[ i ], camera, groupOrder, sortObjects );
2334923376
2335023377 }
2335123378
0 commit comments