|
@@ -4,7 +4,11 @@
|
|
|
|
|
|
function painterSortStable( a, b ) {
|
|
function painterSortStable( a, b ) {
|
|
|
|
|
|
- if ( a.renderOrder !== b.renderOrder ) {
|
|
|
|
|
|
+ if ( a.groupOrder !== b.groupOrder ) {
|
|
|
|
+
|
|
|
|
+ return a.groupOrder - b.groupOrder;
|
|
|
|
+
|
|
|
|
+ } else if ( a.renderOrder !== b.renderOrder ) {
|
|
|
|
|
|
return a.renderOrder - b.renderOrder;
|
|
return a.renderOrder - b.renderOrder;
|
|
|
|
|
|
@@ -30,7 +34,11 @@ function painterSortStable( a, b ) {
|
|
|
|
|
|
function reversePainterSortStable( a, b ) {
|
|
function reversePainterSortStable( a, b ) {
|
|
|
|
|
|
- if ( a.renderOrder !== b.renderOrder ) {
|
|
|
|
|
|
+ if ( a.groupOrder !== b.groupOrder ) {
|
|
|
|
+
|
|
|
|
+ return a.groupOrder - b.groupOrder;
|
|
|
|
+
|
|
|
|
+ } else if ( a.renderOrder !== b.renderOrder ) {
|
|
|
|
|
|
return a.renderOrder - b.renderOrder;
|
|
return a.renderOrder - b.renderOrder;
|
|
|
|
|
|
@@ -64,7 +72,7 @@ function WebGLRenderList() {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- function getNextRenderItem( object, geometry, material, z, group ) {
|
|
|
|
|
|
+ function getNextRenderItem( object, geometry, material, groupOrder, z, group ) {
|
|
|
|
|
|
var renderItem = renderItems[ renderItemsIndex ];
|
|
var renderItem = renderItems[ renderItemsIndex ];
|
|
|
|
|
|
@@ -76,6 +84,7 @@ function WebGLRenderList() {
|
|
geometry: geometry,
|
|
geometry: geometry,
|
|
material: material,
|
|
material: material,
|
|
program: material.program,
|
|
program: material.program,
|
|
|
|
+ groupOrder: groupOrder,
|
|
renderOrder: object.renderOrder,
|
|
renderOrder: object.renderOrder,
|
|
z: z,
|
|
z: z,
|
|
group: group
|
|
group: group
|
|
@@ -90,6 +99,7 @@ function WebGLRenderList() {
|
|
renderItem.geometry = geometry;
|
|
renderItem.geometry = geometry;
|
|
renderItem.material = material;
|
|
renderItem.material = material;
|
|
renderItem.program = material.program;
|
|
renderItem.program = material.program;
|
|
|
|
+ renderItem.groupOrder = groupOrder;
|
|
renderItem.renderOrder = object.renderOrder;
|
|
renderItem.renderOrder = object.renderOrder;
|
|
renderItem.z = z;
|
|
renderItem.z = z;
|
|
renderItem.group = group;
|
|
renderItem.group = group;
|
|
@@ -102,17 +112,17 @@ function WebGLRenderList() {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- function push( object, geometry, material, z, group ) {
|
|
|
|
|
|
+ function push( object, geometry, material, groupOrder, z, group ) {
|
|
|
|
|
|
- var renderItem = getNextRenderItem( object, geometry, material, z, group );
|
|
|
|
|
|
+ var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
|
|
|
|
|
|
( material.transparent === true ? transparent : opaque ).push( renderItem );
|
|
( material.transparent === true ? transparent : opaque ).push( renderItem );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- function unshift( object, geometry, material, z, group ) {
|
|
|
|
|
|
+ function unshift( object, geometry, material, groupOrder, z, group ) {
|
|
|
|
|
|
- var renderItem = getNextRenderItem( object, geometry, material, z, group );
|
|
|
|
|
|
+ var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
|
|
|
|
|
|
( material.transparent === true ? transparent : opaque ).unshift( renderItem );
|
|
( material.transparent === true ? transparent : opaque ).unshift( renderItem );
|
|
|
|
|