提交 15db34ad 编写于 作者: A alteredq

Refactored custom attributes for particles.

More moving ifs out of inner loops.
上级 363ce622
此差异已折叠。
此差异已折叠。
......@@ -90,11 +90,11 @@
size = 50,
curveSegments = 10,
steps = 20,
steps = 40,
bevelThickness = 5,
bevelSize = 1.5,
bevelSegments = 3,
bevelSegments = 10,
bevelEnabled = true,
bend = false,
......@@ -159,6 +159,7 @@
bevelThickness: bevelThickness,
bevelSize: bevelSize,
bevelEnabled: bevelEnabled,
bevelSegments: bevelSegments,
bend: bend,
......@@ -221,15 +222,19 @@
uniforms.amplitude.value = 0.5 * Math.sin( 0.5 * time );
THREE.ColorUtils.adjustHSV( uniforms.color.value, 0.0005, 0, 0 );
for( var i = 0; i < attributes.displacement.value.length; i ++ ) {
var nx, ny, nz, value;
for( var i = 0, il = attributes.displacement.value.length; i < il; i ++ ) {
nx = 0.3 * ( 0.5 - Math.random() );
ny = 0.3 * ( 0.5 - Math.random() );
nz = 0.3 * ( 0.5 - Math.random() );
attributes.displacement.value[ i ].x += nx;
attributes.displacement.value[ i ].y += ny;
attributes.displacement.value[ i ].z += nz;
value = attributes.displacement.value[ i ];
value.x += nx;
value.y += ny;
value.z += nz;
}
......
......@@ -2715,51 +2715,83 @@ THREE.WebGLRenderer = function ( parameters ) {
cal = customAttribute.value.length;
for ( ca = 0; ca < cal; ca ++ ) {
if ( customAttribute.size === 1 ) {
index = sortArray[ ca ][ 1 ];
for ( ca = 0; ca < cal; ca ++ ) {
if ( customAttribute.size === 1 ) {
index = sortArray[ ca ][ 1 ];
customAttribute.array[ offset ] = customAttribute.value[ index ];
customAttribute.array[ ca ] = customAttribute.value[ index ];
} else {
}
} else if ( customAttribute.size === 2 ) {
for ( ca = 0; ca < cal; ca ++ ) {
index = sortArray[ ca ][ 1 ];
value = customAttribute.value[ index ];
if ( customAttribute.size === 2 ) {
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
offset += 2;
} else if ( customAttribute.size === 3 ) {
}
if ( customAttribute.type === "c" ) {
} else if ( customAttribute.size === 3 ) {
customAttribute.array[ offset ] = value.r;
customAttribute.array[ offset + 1 ] = value.g;
customAttribute.array[ offset + 2 ] = value.b;
if ( customAttribute.type === "c" ) {
} else {
for ( ca = 0; ca < cal; ca ++ ) {
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
index = sortArray[ ca ][ 1 ];
}
value = customAttribute.value[ index ];
} else {
customAttribute.array[ offset ] = value.r;
customAttribute.array[ offset + 1 ] = value.g;
customAttribute.array[ offset + 2 ] = value.b;
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
customAttribute.array[ offset + 3 ] = value.w;
offset += 3;
}
} else {
for ( ca = 0; ca < cal; ca ++ ) {
index = sortArray[ ca ][ 1 ];
value = customAttribute.value[ index ];
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
offset += 3;
}
}
offset += customAttribute.size;
} else if ( customAttribute.size === 4 ) {
for ( ca = 0; ca < cal; ca ++ ) {
index = sortArray[ ca ][ 1 ];
value = customAttribute.value[ index ];
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
customAttribute.array[ offset + 3 ] = value.w;
offset += 4;
}
}
......@@ -2815,52 +2847,73 @@ THREE.WebGLRenderer = function ( parameters ) {
offset = 0;
for ( ca = 0; ca < cal; ca ++ ) {
if ( customAttribute.size === 1 ) {
offset_custom = customAttribute.offset;
for ( ca = 0; ca < cal; ca ++ ) {
if ( customAttribute.size === 1 ) {
customAttribute.array[ ca ] = customAttribute.value[ ca ];
customAttribute.array[ offset ] = customAttribute.value[ ca ];
}
} else {
} else if ( customAttribute.size === 2 ) {
for ( ca = 0; ca < cal; ca ++ ) {
value = customAttribute.value[ ca ];
if ( customAttribute.size === 2 ) {
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
offset += 2;
} else if ( customAttribute.size === 3 ) {
}
} else if ( customAttribute.size === 3 ) {
if ( customAttribute.type === "c" ) {
if ( customAttribute.type === "c" ) {
for ( ca = 0; ca < cal; ca ++ ) {
value = customAttribute.value[ ca ];
customAttribute.array[ offset ] = value.r;
customAttribute.array[ offset + 1 ] = value.g;
customAttribute.array[ offset + 2 ] = value.b;
customAttribute.array[ offset ] = value.r;
customAttribute.array[ offset + 1 ] = value.g;
customAttribute.array[ offset + 2 ] = value.b;
offset += 3;
}
} else {
} else {
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
for ( ca = 0; ca < cal; ca ++ ) {
}
value = customAttribute.value[ ca ];
} else {
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
customAttribute.array[ offset + 3 ] = value.w;
offset += 3;
}
}
offset += customAttribute.size;
} else if ( customAttribute.size === 4 ) {
for ( ca = 0; ca < cal; ca ++ ) {
value = customAttribute.value[ ca ];
customAttribute.array[ offset ] = value.x;
customAttribute.array[ offset + 1 ] = value.y;
customAttribute.array[ offset + 2 ] = value.z;
customAttribute.array[ offset + 3 ] = value.w;
offset += 4;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册