|
@@ -4339,9 +4339,10 @@ function UniformContainer() {
|
|
var arrayCacheF32 = [];
|
|
var arrayCacheF32 = [];
|
|
var arrayCacheI32 = [];
|
|
var arrayCacheI32 = [];
|
|
|
|
|
|
-// Float32Array cache used for uploading Matrix4 uniform
|
|
|
|
|
|
+// Float32Array caches used for uploading Matrix uniforms
|
|
|
|
|
|
var mat4array = new Float32Array( 16 );
|
|
var mat4array = new Float32Array( 16 );
|
|
|
|
+var mat3array = new Float32Array( 9 );
|
|
|
|
|
|
// Flattening for arrays of vectors and matrices
|
|
// Flattening for arrays of vectors and matrices
|
|
|
|
|
|
@@ -4447,7 +4448,16 @@ function setValue2fm( gl, v ) {
|
|
|
|
|
|
function setValue3fm( gl, v ) {
|
|
function setValue3fm( gl, v ) {
|
|
|
|
|
|
- gl.uniformMatrix3fv( this.addr, false, v.elements || v );
|
|
|
|
|
|
+ if ( v.elements === undefined ) {
|
|
|
|
+
|
|
|
|
+ gl.uniformMatrix3fv( this.addr, false, v );
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ mat3array.set( v.elements );
|
|
|
|
+ gl.uniformMatrix3fv( this.addr, false, mat3array );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -8328,13 +8338,13 @@ Object.assign( Sphere.prototype, {
|
|
|
|
|
|
function Matrix3() {
|
|
function Matrix3() {
|
|
|
|
|
|
- this.elements = new Float32Array( [
|
|
|
|
|
|
+ this.elements = [
|
|
|
|
|
|
1, 0, 0,
|
|
1, 0, 0,
|
|
0, 1, 0,
|
|
0, 1, 0,
|
|
0, 0, 1
|
|
0, 0, 1
|
|
|
|
|
|
- ] );
|
|
|
|
|
|
+ ];
|
|
|
|
|
|
if ( arguments.length > 0 ) {
|
|
if ( arguments.length > 0 ) {
|
|
|
|
|