diff --git a/examples/webglrenderer2_sandbox.html b/examples/webglrenderer2_sandbox.html
index 49efb757517cb9e384c12dae50946376ecd415b3..9061789924211c324eab14ef4033cbb6e408d637 100644
--- a/examples/webglrenderer2_sandbox.html
+++ b/examples/webglrenderer2_sandbox.html
@@ -133,13 +133,13 @@
scene = new THREE.Scene();
scene.fog = new THREE.Fog( 0xffffff, 0.00025 );
- var geometry = new Sphere( 100, 32, 16 );
+ var geometry = new Sphere( 50, 32, 16 );
var uniforms = ShaderUtils.lib[ 'basic' ].uniforms;
var vertex_shader = ShaderUtils.lib[ 'basic' ].vertex_shader;
var fragment_shader = ShaderUtils.lib[ 'basic' ].fragment_shader;
- var generatedTexture = new THREE.Texture( generateTexture() );
+ var generatedTexture = new THREE.Texture( generateTexture(), new THREE.UVMapping(), THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping );
var materials = [
@@ -158,18 +158,22 @@
];
- for ( var i = 0; i < 1000; i ++ ) {
+ for ( var i = 0; i < 5000; i ++ ) {
var mesh = new THREE.Mesh( geometry, materials[ Math.floor( Math.random() * materials.length ) ] );
mesh.position.x = Math.random() * 10000 - 5000;
mesh.position.y = Math.random() * 10000 - 5000;
mesh.position.z = Math.random() * 10000 - 5000;
+ mesh.rotation.x = Math.random() * 360 * ( Math.PI / 180 );
+ mesh.rotation.y = Math.random() * 360 * ( Math.PI / 180 );
mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 4 + 1;
+ mesh.updateMatrix();
+ mesh.autoUpdateMatrix = false;
scene.addObject( mesh );
}
- renderer = new THREE.WebGLRenderer2();
+ renderer = new THREE.WebGLRenderer2( false );
renderer.setSize( window.innerWidth, window.innerHeight );
// renderer.sortObjects = false;
container.appendChild( renderer.domElement );
diff --git a/src/renderers/WebGLRenderer2.js b/src/renderers/WebGLRenderer2.js
index 51eaf23746e68321644914d4458ade07e4d174c9..eeb12d8e950789ade9c5498b2447eb98b4e96e37 100644
--- a/src/renderers/WebGLRenderer2.js
+++ b/src/renderers/WebGLRenderer2.js
@@ -6,7 +6,7 @@
* @author supereggbert / http://www.paulbrunt.co.uk/
*/
-THREE.WebGLRenderer2 = function () {
+THREE.WebGLRenderer2 = function ( antialias ) {
var _renderList = null,
_projector = new THREE.Projector(),
@@ -22,7 +22,8 @@ THREE.WebGLRenderer2 = function () {
try {
- _gl = _canvas.getContext( 'experimental-webgl', { antialias: true } );
+ antialias = antialias !== undefined ? antialias : true;
+ _gl = _canvas.getContext( 'experimental-webgl', { antialias: antialias } );
} catch(e) { }
@@ -79,6 +80,8 @@ THREE.WebGLRenderer2 = function () {
_viewMatrixArray.set( camera.matrix.flatten() );
_projectionMatrixArray.set( camera.projectionMatrix.flatten() );
+ _currentProgram = null;
+
/*
for ( o = 0, ol = scene.objects.length; o < ol; o++ ) {
@@ -87,7 +90,6 @@ THREE.WebGLRenderer2 = function () {
}
*/
- _currentProgram = null;
_renderList = _projector.projectObjects( scene, camera, this.sortObjects );
for ( o = 0, ol = _renderList.length; o < ol; o++ ) {
@@ -146,13 +148,13 @@ THREE.WebGLRenderer2 = function () {
if ( scene.fog ) {
- _gl.uniform1i( program.uniforms.fog, 1 );
+ _gl.uniform1f( program.uniforms.fog, 1 );
_gl.uniform1f( program.uniforms.fogDensity, scene.fog.density );
_gl.uniform3f( program.uniforms.fogColor, scene.fog.color.r, scene.fog.color.g, scene.fog.color.b );
} else {
- _gl.uniform1i( program.uniforms.fog, 0 );
+ _gl.uniform1f( program.uniforms.fog, 0 );
}
@@ -508,17 +510,14 @@ THREE.WebGLRenderer2 = function () {
// fog
- pfs += 'uniform bool fog;\n';
+ pfs += 'uniform float fog;\n';
pfs += 'uniform vec3 fogColor;\n';
pfs += 'uniform float fogDensity;\n';
- fs += 'if ( fog ) {\n';
fs += 'const float LOG2 = 1.442695;\n';
- fs += 'float z = gl_FragCoord.z / gl_FragCoord.w;\n';
+ fs += 'float z = fog * ( gl_FragCoord.z / gl_FragCoord.w );\n';
fs += 'float fogFactor = exp2( - fogDensity * fogDensity * z * z * LOG2 );\n';
- fs += 'fogFactor = clamp( fogFactor, 0.0, 1.0 );\n';
- fs += 'gl_FragColor = mix( vec4( fogColor, 1.0 ), gl_FragColor, fogFactor );\n',
- fs += '}\n';
+ fs += 'gl_FragColor = mix( gl_FragColor, vec4( fogColor, 1.0 ), 1.0 - clamp( fogFactor, 0.0, 1.0 ) );\n',
identifiers.push( 'fog', 'fogColor', 'fogDensity' );