소스 검색

Examples: Moved js/SkyShader to js/objects/Sky.

Mr.doob 7 년 전
부모
커밋
7643c6375f
2개의 변경된 파일14개의 추가작업 그리고 21개의 파일을 삭제
  1. 8 13
      examples/js/objects/Sky.js
  2. 6 8
      examples/webgl_shaders_sky.html

+ 8 - 13
examples/js/SkyShader.js → examples/js/objects/Sky.js

@@ -16,26 +16,21 @@
 
 THREE.Sky = function () {
 
-	var skyShader = THREE.Sky.SkyShader;
+	var shader = THREE.Sky.SkyShader;
 
-	var skyUniforms = THREE.UniformsUtils.clone( skyShader.uniforms );
-
-	var skyMat = new THREE.ShaderMaterial( {
-		fragmentShader: skyShader.fragmentShader,
-		vertexShader: skyShader.vertexShader,
-		uniforms: skyUniforms,
+	var material = new THREE.ShaderMaterial( {
+		fragmentShader: shader.fragmentShader,
+		vertexShader: shader.vertexShader,
+		uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
 		side: THREE.BackSide
 	} );
 
-	var skyGeo = new THREE.SphereBufferGeometry( 1, 32, 15 );
-	var skyMesh = new THREE.Mesh( skyGeo, skyMat );
-
-	// Expose variables
-	this.mesh = skyMesh;
-	this.uniforms = skyUniforms;
+	THREE.Mesh.call( this, new THREE.SphereBufferGeometry( 1, 32, 15 ), material );
 
 };
 
+THREE.Sky.prototype = Object.create( THREE.Mesh.prototype );
+
 THREE.Sky.SkyShader = {
 
 	uniforms: {

+ 6 - 8
examples/webgl_shaders_sky.html

@@ -44,7 +44,7 @@
 		<script src="../build/three.js"></script>
 
 		<script src="js/controls/OrbitControls.js"></script>
-		<script src="js/SkyShader.js"></script>
+		<script src="js/objects/Sky.js"></script>
 
 		<script src="js/Detector.js"></script>
 		<script src="js/libs/dat.gui.min.js"></script>
@@ -65,12 +65,10 @@
 
 			function initSky() {
 
-				// Add Sky Mesh
+				// Add Sky
 				sky = new THREE.Sky();
-				sky.mesh.scale.setScalar( 450000 );
-				sky.mesh.matrixAutoUpdate = false;//The sky is still (see https://threejs.org/docs/#manual/introduction/How-to-update-things)
-				sky.mesh.updateMatrixWorld();//So only compute its matrix now.
-				scene.add( sky.mesh );
+				sky.scale.setScalar( 450000 );
+				scene.add( sky );
 
 				// Add Sun Helper
 				sunSphere = new THREE.Mesh(
@@ -98,7 +96,7 @@
 
 				function guiChanged() {
 
-					var uniforms = sky.uniforms;
+					var uniforms = sky.material.uniforms;
 					uniforms.turbidity.value = effectController.turbidity;
 					uniforms.rayleigh.value = effectController.rayleigh;
 					uniforms.luminance.value = effectController.luminance;
@@ -114,7 +112,7 @@
 
 					sunSphere.visible = effectController.sun;
 
-					sky.uniforms.sunPosition.value.copy( sunSphere.position );
+					uniforms.sunPosition.value.copy( sunSphere.position );
 
 					renderer.render( scene, camera );