|
@@ -4,6 +4,7 @@
|
|
|
/* global QUnit */
|
|
|
|
|
|
import { WebGLRenderLists, WebGLRenderList } from '../../../../../src/renderers/webgl/WebGLRenderLists';
|
|
|
+import { WebGLProperties } from '../../../../../src/renderers/webgl/WebGLProperties';
|
|
|
import { Camera } from '../../../../../src/cameras/Camera';
|
|
|
import { Scene } from '../../../../../src/scenes/Scene';
|
|
|
|
|
@@ -16,7 +17,9 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
// PUBLIC STUFF
|
|
|
QUnit.test( "get", ( assert ) => {
|
|
|
|
|
|
- var renderLists = new WebGLRenderLists();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+
|
|
|
+ var renderLists = new WebGLRenderLists( properties );
|
|
|
var sceneA = new Scene();
|
|
|
var sceneB = new Scene();
|
|
|
var cameraA = new Camera();
|
|
@@ -26,8 +29,8 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
var listAB = renderLists.get( sceneA, cameraB );
|
|
|
var listBA = renderLists.get( sceneB, cameraA );
|
|
|
|
|
|
- assert.propEqual( listAA, new WebGLRenderList(), "listAA is type of WebGLRenderList." );
|
|
|
- assert.propEqual( listAB, new WebGLRenderList(), "listAB is type of WebGLRenderList." );
|
|
|
+ assert.propEqual( listAA, new WebGLRenderList( properties ), "listAA is type of WebGLRenderList." );
|
|
|
+ assert.propEqual( listAB, new WebGLRenderList( properties ), "listAB is type of WebGLRenderList." );
|
|
|
assert.ok( listAA !== listAB, "Render lists for camera A and B with same scene are different." );
|
|
|
assert.ok( listAA !== listBA, "Render lists for scene A and B with same camera are different." );
|
|
|
assert.ok( listAA === renderLists.get( sceneA, cameraA ), "The same list is returned when called with the same scene, camera." );
|
|
@@ -36,13 +39,14 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
QUnit.test( "dispose", ( assert ) => {
|
|
|
|
|
|
- var renderLists = new WebGLRenderLists();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+ var renderLists = new WebGLRenderLists( properties );
|
|
|
var scene = new Scene();
|
|
|
var camera = new Camera();
|
|
|
|
|
|
var list1 = renderLists.get( scene, camera );
|
|
|
|
|
|
- scene.dispose()
|
|
|
+ scene.dispose();
|
|
|
|
|
|
var list2 = renderLists.get( scene, camera );
|
|
|
|
|
@@ -57,7 +61,8 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
QUnit.test( 'init', ( assert ) => {
|
|
|
|
|
|
- var list = new WebGLRenderList();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+ var list = new WebGLRenderList( properties );
|
|
|
|
|
|
assert.ok( list.transparent.length === 0, 'Transparent list defaults to length 0.' );
|
|
|
assert.ok( list.opaque.length === 0, 'Opaque list defaults to length 0.' );
|
|
@@ -77,23 +82,38 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
QUnit.test( 'push', ( assert ) => {
|
|
|
|
|
|
- var list = new WebGLRenderList();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+
|
|
|
+ var list = new WebGLRenderList( properties );
|
|
|
var objA = { id: 'A', renderOrder: 0 };
|
|
|
- var matA = { transparent: true, program: { id: 1 } };
|
|
|
+ var matA = { transparent: true };
|
|
|
+ var proA = { id: 1 };
|
|
|
var geoA = {};
|
|
|
|
|
|
var objB = { id: 'B', renderOrder: 0 };
|
|
|
- var matB = { transparent: true, program: { id: 2 } };
|
|
|
+ var matB = { transparent: true };
|
|
|
+ var proB = { id: 2 };
|
|
|
var geoB = {};
|
|
|
|
|
|
var objC = { id: 'C', renderOrder: 0 };
|
|
|
- var matC = { transparent: false, program: { id: 3 } };
|
|
|
+ var matC = { transparent: false };
|
|
|
+ var proC = { id: 3 };
|
|
|
var geoC = {};
|
|
|
|
|
|
var objD = { id: 'D', renderOrder: 0 };
|
|
|
- var matD = { transparent: false, program: { id: 4 } };
|
|
|
+ var matD = { transparent: false };
|
|
|
+ var proD = { id: 4 };
|
|
|
var geoD = {};
|
|
|
|
|
|
+ var materialProperties = properties.get( matA );
|
|
|
+ materialProperties.program = proA;
|
|
|
+ materialProperties = properties.get( matB );
|
|
|
+ materialProperties.program = proB;
|
|
|
+ materialProperties = properties.get( matC );
|
|
|
+ materialProperties.program = proC;
|
|
|
+ materialProperties = properties.get( matD );
|
|
|
+ materialProperties.program = proD;
|
|
|
+
|
|
|
list.push( objA, geoA, matA, 0, 0.5, {} );
|
|
|
assert.ok( list.transparent.length === 1, 'Transparent list is length 1 after adding transparent item.' );
|
|
|
assert.ok( list.opaque.length === 0, 'Opaque list list is length 0 after adding transparent item.' );
|
|
@@ -104,7 +124,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objA,
|
|
|
geometry: geoA,
|
|
|
material: matA,
|
|
|
- program: matA.program,
|
|
|
+ program: proA,
|
|
|
groupOrder: 0,
|
|
|
renderOrder: 0,
|
|
|
z: 0.5,
|
|
@@ -123,7 +143,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objB,
|
|
|
geometry: geoB,
|
|
|
material: matB,
|
|
|
- program: matB.program,
|
|
|
+ program: proB,
|
|
|
groupOrder: 1,
|
|
|
renderOrder: 0,
|
|
|
z: 1.5,
|
|
@@ -142,7 +162,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objC,
|
|
|
geometry: geoC,
|
|
|
material: matC,
|
|
|
- program: matC.program,
|
|
|
+ program: proC,
|
|
|
groupOrder: 2,
|
|
|
renderOrder: 0,
|
|
|
z: 2.5,
|
|
@@ -161,7 +181,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objD,
|
|
|
geometry: geoD,
|
|
|
material: matD,
|
|
|
- program: matD.program,
|
|
|
+ program: proD,
|
|
|
groupOrder: 3,
|
|
|
renderOrder: 0,
|
|
|
z: 3.5,
|
|
@@ -174,23 +194,37 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
QUnit.test( 'unshift', ( assert ) => {
|
|
|
|
|
|
- var list = new WebGLRenderList();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+ var list = new WebGLRenderList( properties );
|
|
|
var objA = { id: 'A', renderOrder: 0 };
|
|
|
- var matA = { transparent: true, program: { id: 1 } };
|
|
|
+ var matA = { transparent: true };
|
|
|
+ var proA = { id: 1 };
|
|
|
var geoA = {};
|
|
|
|
|
|
var objB = { id: 'B', renderOrder: 0 };
|
|
|
- var matB = { transparent: true, program: { id: 2 } };
|
|
|
+ var matB = { transparent: true };
|
|
|
+ var proB = { id: 2 };
|
|
|
var geoB = {};
|
|
|
|
|
|
var objC = { id: 'C', renderOrder: 0 };
|
|
|
- var matC = { transparent: false, program: { id: 3 } };
|
|
|
+ var matC = { transparent: false };
|
|
|
+ var proC = { id: 3 };
|
|
|
var geoC = {};
|
|
|
|
|
|
var objD = { id: 'D', renderOrder: 0 };
|
|
|
- var matD = { transparent: false, program: { id: 4 } };
|
|
|
+ var matD = { transparent: false };
|
|
|
+ var proD = { id: 4 };
|
|
|
var geoD = {};
|
|
|
|
|
|
+ var materialProperties = properties.get( matA );
|
|
|
+ materialProperties.program = proA;
|
|
|
+ materialProperties = properties.get( matB );
|
|
|
+ materialProperties.program = proB;
|
|
|
+ materialProperties = properties.get( matC );
|
|
|
+ materialProperties.program = proC;
|
|
|
+ materialProperties = properties.get( matD );
|
|
|
+ materialProperties.program = proD;
|
|
|
+
|
|
|
list.unshift( objA, geoA, matA, 0, 0.5, {} );
|
|
|
assert.ok( list.transparent.length === 1, 'Transparent list is length 1 after adding transparent item.' );
|
|
|
assert.ok( list.opaque.length === 0, 'Opaque list list is length 0 after adding transparent item.' );
|
|
@@ -201,7 +235,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objA,
|
|
|
geometry: geoA,
|
|
|
material: matA,
|
|
|
- program: matA.program,
|
|
|
+ program: proA,
|
|
|
groupOrder: 0,
|
|
|
renderOrder: 0,
|
|
|
z: 0.5,
|
|
@@ -220,7 +254,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objB,
|
|
|
geometry: geoB,
|
|
|
material: matB,
|
|
|
- program: matB.program,
|
|
|
+ program: proB,
|
|
|
groupOrder: 1,
|
|
|
renderOrder: 0,
|
|
|
z: 1.5,
|
|
@@ -239,7 +273,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objC,
|
|
|
geometry: geoC,
|
|
|
material: matC,
|
|
|
- program: matC.program,
|
|
|
+ program: proC,
|
|
|
groupOrder: 2,
|
|
|
renderOrder: 0,
|
|
|
z: 2.5,
|
|
@@ -258,7 +292,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
object: objD,
|
|
|
geometry: geoD,
|
|
|
material: matD,
|
|
|
- program: matD.program,
|
|
|
+ program: proD,
|
|
|
groupOrder: 3,
|
|
|
renderOrder: 0,
|
|
|
z: 3.5,
|
|
@@ -271,7 +305,8 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
QUnit.test( 'sort', ( assert ) => {
|
|
|
|
|
|
- var list = new WebGLRenderList();
|
|
|
+ var properties = new WebGLProperties();
|
|
|
+ var list = new WebGLRenderList( properties );
|
|
|
var items = [ { id: 4 }, { id: 5 }, { id: 2 }, { id: 3 } ];
|
|
|
|
|
|
items.forEach( item => {
|
|
@@ -299,7 +334,7 @@ export default QUnit.module( 'Renderers', () => {
|
|
|
|
|
|
// QUnit.test( 'finish', ( assert ) => {
|
|
|
|
|
|
- // var list = new WebGLRenderList();
|
|
|
+ // var list = new WebGLRenderList( properties );
|
|
|
// var obj = { id: 'A', renderOrder: 0 };
|
|
|
// var mat = { transparent: false, program: { id: 0 } };
|
|
|
// var geom = {};
|