提交 ecad27eb 编写于 作者: A alteredq

Moved MeshPhongMaterial onto common shader builder machinery, ubershader is no more.

Code is still rough around edges (it can be made nicer), though it should already produce one-to-one results with ubershader.

Side-effect is that scene is no longer required as WebGLRenderer constructor parameter. Shader programs are now constructed upon first frame render and only then scene lights are examined.
上级 8ed9a9c4
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -151,7 +151,7 @@
if ( render_gl ) {
try {
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
container.appendChild( webglRenderer.domElement );
has_gl = 1;
......
......@@ -154,7 +154,7 @@
directionalLight.position.normalize();
scene.addLight( directionalLight );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.innerHTML = "";
......
......@@ -482,7 +482,7 @@
directionalLight.position.normalize();
scene.addLight( directionalLight );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.innerHTML = "";
......
......@@ -103,7 +103,7 @@
mesh.rotation.x = - 90 * Math.PI / 180;
scene.addObject( mesh );
renderer = new THREE.WebGLRenderer( { scene: scene, clearColor: 0xefd1b5, clearAlpha: 1 } );
renderer = new THREE.WebGLRenderer( { clearColor: 0xefd1b5, clearAlpha: 1 } );
renderer.setSize( window.innerWidth, window.innerHeight );
container.innerHTML = "";
......
......@@ -92,7 +92,7 @@
mesh.rotation.x = - 90 * Math.PI / 180;
scene.addObject( mesh );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.innerHTML = "";
......
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>three.js - geometry - webgl terrain</title>
<title>three.js - geometry - webgl terrain 2</title>
<meta charset="utf-8">
<style type="text/css">
body {
......@@ -93,7 +93,7 @@
mesh.rotation.x = - 90 * Math.PI / 180;
scene.addObject( mesh );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.innerHTML = "";
......
......@@ -115,7 +115,7 @@
light3 = new THREE.PointLight( 0x80ff80 );
scene.addLight( light3 );
var sphere = new Sphere( 0.5, 16, 8, 1 );
var sphere = new Sphere( 0.5, 16, 8 );
var l1 = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color: 0xff0040 } ) );
l1.position = light1.position;
......@@ -129,7 +129,7 @@
l3.position = light3.position;
scene.addObject( l3 );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
......
......@@ -199,7 +199,7 @@
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.setFaceCulling( 0 );
webglRenderer.autoClear = false;
......
......@@ -84,7 +84,7 @@
scene.addLight( pointLight );
// light representation
sphere = new Sphere( 100, 16, 8, 1 );
sphere = new Sphere( 100, 16, 8 );
lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color:0xffaa00 } ) );
lightMesh.position = pointLight.position;
lightMesh.scale.x = lightMesh.scale.y = lightMesh.scale.z = 0.05;
......@@ -112,7 +112,7 @@
//SceneUtils.addPanoramaCube( sceneCube, 100000, images );
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, reflectionCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.autoClear = false;
//webglRenderer.setFaceCulling( 0 );
......
......@@ -104,7 +104,7 @@
//SceneUtils.addPanoramaCube( sceneCube, 100000, images );
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.autoClear = false;
container.appendChild( webglRenderer.domElement );
......
......@@ -102,7 +102,7 @@
//SceneUtils.addPanoramaCube( sceneCube, 100000, images );
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.autoClear = false;
container.appendChild( webglRenderer.domElement );
......
......@@ -78,7 +78,7 @@
var textureCube = new THREE.Texture( images );
var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube } )
var geometry = new Sphere( 100, 96, 64, true );
var geometry = new Sphere( 100, 96, 64 );
var mesh = new THREE.Mesh( geometry, material );
mesh.scale.x = mesh.scale.y = mesh.scale.z = 16;
......@@ -88,7 +88,7 @@
//SceneUtils.addPanoramaCube( scene, 6000, images );
SceneUtils.addPanoramaCubeWebGL( scene, 6000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( webglRenderer.domElement );
......
......@@ -85,7 +85,7 @@
scene.addLight( pointLight );
// light representation
sphere = new Sphere( 100, 16, 8, 1 );
sphere = new Sphere( 100, 16, 8 );
lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color:0xffaa00 } ) );
lightMesh.position = pointLight.position;
lightMesh.scale.x = lightMesh.scale.y = lightMesh.scale.z = 0.05;
......@@ -110,7 +110,7 @@
//SceneUtils.addPanoramaCube( sceneCube, 100000, images );
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.autoClear = false;
container.appendChild( webglRenderer.domElement );
......
......@@ -84,9 +84,9 @@
// Spheres geometry
var geometry_smooth = new Sphere( 70, 32, 16, true );
var geometry_flat = new Sphere( 70, 32, 16, false );
var geometry_pieces = new Sphere( 70, 32, 16, true ); // Extra geometry to be broken down for MeshFaceMaterial
var geometry_smooth = new Sphere( 70, 32, 16 );
var geometry_flat = new Sphere( 70, 32, 16 );
var geometry_pieces = new Sphere( 70, 32, 16 ); // Extra geometry to be broken down for MeshFaceMaterial
for ( var i = 0, l = geometry_pieces.faces.length; i < l; i ++ ) {
......@@ -143,7 +143,7 @@
pointLight = new THREE.PointLight( 0xffffff, 1 );
scene.addLight( pointLight );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
......
......@@ -50,7 +50,7 @@
}
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
renderer.sortObjects = false;
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
......
......@@ -102,7 +102,7 @@
// SPHERES
sphere = new Sphere( 100, 16, 8, 1 );
sphere = new Sphere( 100, 16, 8 );
for (var i=0; i<10; i++) {
//mesh = new THREE.Mesh( sphere, new THREE.MeshLambertMaterial( ) );
mesh = new THREE.Mesh( sphere, [ new THREE.MeshLambertMaterial( { color: 0xffffff } ), new THREE.MeshBasicMaterial( { color: 0x000000, wireframe: true, wireframe_linewidth: 1.5 } ) ] );
......@@ -146,7 +146,7 @@
if ( render_gl ) {
try {
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
container.appendChild( webglRenderer.domElement );
has_gl = 1;
......
......@@ -141,7 +141,7 @@
// light representation
var sphere = new Sphere( 100, 16, 8, 1 );
var sphere = new Sphere( 100, 16, 8 );
lightMesh = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( { color:0xffaa00 } ) );
lightMesh.position = pointLight.position;
lightMesh.scale.x = lightMesh.scale.y = lightMesh.scale.z = 0.05;
......@@ -190,7 +190,7 @@
loader.loadBinary( "obj/ninja/NinjaLo_bin.js", function( geometry ) { createScene( geometry, scale, material1, material2 ) }, "obj/ninja" );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( webglRenderer.domElement );
......
......@@ -174,7 +174,7 @@
loader.loadAscii( "obj/leeperrysmith/LeePerrySmith.js", function( geometry ) { createScene( geometry, 100, material ) }, "obj/leeperrysmith" );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( webglRenderer.domElement );
......
......@@ -171,7 +171,7 @@
if ( render_gl ) {
try {
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
container.appendChild( webglRenderer.domElement );
has_gl = 1;
......
......@@ -113,7 +113,7 @@
SceneUtils.addPanoramaCubeWebGL( sceneCube, 100000, textureCube );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( window.innerWidth, window.innerHeight );
webglRenderer.autoClear = false;
container.appendChild( webglRenderer.domElement );
......
......@@ -167,7 +167,7 @@
if ( render_gl ) {
try {
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setFaceCulling(0);
webglRenderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
container.appendChild( webglRenderer.domElement );
......
......@@ -124,7 +124,7 @@
mesh = new THREE.Mesh( new Plane( 2, 2 ), material );
scene.addObject( mesh );
renderer = new THREE.WebGLRenderer( { scene: scene } );
renderer = new THREE.WebGLRenderer();
container.appendChild( renderer.domElement );
stats = new Stats();
......
......@@ -223,7 +223,7 @@
svgRenderer.setQuality( 'low' );
container.appendChild( svgRenderer.domElement );
webglRenderer = new THREE.WebGLRenderer( { scene: scene } );
webglRenderer = new THREE.WebGLRenderer();
webglRenderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
// webglRenderer.setFaceCulling( 0 );
container.appendChild( webglRenderer.domElement );
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册