소스 검색

Improve example

WestLangley 6 년 전
부모
커밋
45cd9d4c65
1개의 변경된 파일46개의 추가작업 그리고 56개의 파일을 삭제
  1. 46 56
      examples/webgl_materials_wireframe.html

+ 46 - 56
examples/webgl_materials_wireframe.html

@@ -19,6 +19,7 @@
 			void main() {
 
 				vCenter = center;
+
 				gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
 
 			}
@@ -31,16 +32,22 @@
 
 			float edgeFactorTri() {
 
+				const float widthFactor = 1.0;
+
 				vec3 d = fwidth( vCenter.xyz );
-				vec3 a3 = smoothstep( vec3( 0.0 ), d * 1.5, vCenter.xyz );
+
+				vec3 a3 = smoothstep( vec3( 0.0 ), d * widthFactor, vCenter.xyz );
+
 				return min( min( a3.x, a3.y ), a3.z );
 
 			}
 
 			void main() {
 
-				gl_FragColor.rgb = mix( vec3( 1.0 ), vec3( 0.2 ), edgeFactorTri() );
-				gl_FragColor.a = 1.0;
+				if ( edgeFactorTri() > 0.99 ) discard;
+
+				gl_FragColor = gl_FrontFacing ? vec4( 0.9, 0.9, 1.0, 1.0 ) : vec4( 0.4, 0.4, 0.5, 1.0 );
+
 			}
 
 		</script>
@@ -49,77 +56,66 @@
 
 			import * as THREE from '../build/three.module.js';
 
-			var camera, scene, renderer;
+			var renderer, scene, camera, mesh1, mesh2;
 
 			init();
-			animate();
 
 			function init() {
 
-				var geometry, material, mesh;
+				renderer = new THREE.WebGLRenderer( { antialias: true } );
+				renderer.setPixelRatio( window.devicePixelRatio );
+				renderer.setSize( window.innerWidth, window.innerHeight );
+				document.body.appendChild( renderer.domElement );
 
-				var size = 150;
+				scene = new THREE.Scene();
 
-				camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 2000 );
-				camera.position.z = 800;
+				camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 500 );
+				camera.position.z = 150;
 
-				scene = new THREE.Scene();
+				new THREE.BufferGeometryLoader().load( 'models/json/WaltHeadLo_buffergeometry.json', function ( geometry ) {
 
-				//
+					// on the left
 
-				geometry = new THREE.BoxBufferGeometry( size, size, size );
-				material = new THREE.MeshBasicMaterial( { wireframe: true } );
+					var material = new THREE.MeshBasicMaterial( {
 
-				mesh = new THREE.Mesh( geometry, material );
-				mesh.position.x = - 150;
-				scene.add( mesh );
+						color: 0xe0e0ff,
+						wireframe: true
 
-				//
+					} );
 
-				geometry = new THREE.BoxBufferGeometry( size, size, size );
-				geometry = geometry.toNonIndexed();
+					mesh2 = new THREE.Mesh( geometry, material );
+					mesh2.position.set( - 40, 0, 0 );
 
-				setupAttributes( geometry );
+					scene.add( mesh2 );
 
-				material = new THREE.ShaderMaterial( {
-					uniforms: {},
-					vertexShader: document.getElementById( 'vertexShader' ).textContent,
-					fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-				} );
+					// on the right
 
-				material.extensions.derivatives = true;
+					var material = new THREE.ShaderMaterial( {
 
-				mesh = new THREE.Mesh( geometry, material );
-				mesh.position.x = 150;
-				scene.add( mesh );
+						uniforms: {},
+						vertexShader: document.getElementById( 'vertexShader' ).textContent,
+						fragmentShader: document.getElementById( 'fragmentShader' ).textContent,
+						side: THREE.DoubleSide
 
-				//
+					} );
 
-				geometry = new THREE.SphereBufferGeometry( size / 2, 32, 16 );
-				geometry = geometry.toNonIndexed();
+					material.extensions.derivatives = true;
 
-				setupAttributes( geometry );
+					geometry.removeAttribute( 'normal' );
+					geometry.removeAttribute( 'uv' );
 
-				material = new THREE.ShaderMaterial( {
-					uniforms: {},
-					vertexShader: document.getElementById( 'vertexShader' ).textContent,
-					fragmentShader: document.getElementById( 'fragmentShader' ).textContent
-				} );
+					setupAttributes( geometry );
 
-				material.extensions.derivatives = true;
+					mesh1 = new THREE.Mesh( geometry, material );
+					mesh1.position.set( 40, 0, 0 );
 
-				mesh = new THREE.Mesh( geometry, material );
-				mesh.position.x = - 150;
-				scene.add( mesh );
+					scene.add( mesh1 );
 
-				// renderer
+					//
 
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				document.body.appendChild( renderer.domElement );
+					animate();
 
-				// events
+				} );
 
 				window.addEventListener( 'resize', onWindowResize, false );
 
@@ -127,8 +123,6 @@
 
 			function setupAttributes( geometry ) {
 
-				// TODO: Bring back quads
-
 				var vectors = [
 					new THREE.Vector3( 1, 0, 0 ),
 					new THREE.Vector3( 0, 1, 0 ),
@@ -161,13 +155,9 @@
 
 				requestAnimationFrame( animate );
 
-				for ( var i = 0; i < scene.children.length; i ++ ) {
+				mesh1.rotation.y += 0.01;
 
-					var object = scene.children[ i ];
-					object.rotation.x += 0.005;
-					object.rotation.y += 0.01;
-
-				}
+				mesh2.rotation.y += 0.01;
 
 				renderer.render( scene, camera );