OSDN Git Service

three.jsをThirdPartyに追加
[webglgame/webgl_framework.git] / webglFramework / Thirdparty / three.js-master / examples / webgl_shaders_sky.html
diff --git a/webglFramework/Thirdparty/three.js-master/examples/webgl_shaders_sky.html b/webglFramework/Thirdparty/three.js-master/examples/webgl_shaders_sky.html
new file mode 100644 (file)
index 0000000..fdfd26b
--- /dev/null
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html lang="en">
+       <head>
+               <title>three.js webgl - shaders - sky sun shader</title>
+               <meta charset="utf-8">
+               <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+               <style>
+
+                       body {
+                               color: #000;
+                               font-family:Monospace;
+                               font-size:13px;
+                               text-align:center;
+                               font-weight: bold;
+
+                               background-color: #fff;
+                               margin: 0px;
+                               overflow: hidden;
+                       }
+
+                       #info {
+                               color:#ccc;
+                               text-shadow: 1px 1px rgba(0,0,0,0.25);
+                               position: absolute;
+                               top: 0px; width: 100%;
+                               padding: 5px;
+
+                       }
+
+                       a {
+                               color: #fff;
+                       }
+
+               </style>
+       </head>
+       <body>
+
+               <div id="info"><a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webgl - sky + sun shader
+
+                       <br/><a href="https://plus.google.com/117614030945250277079/posts/MYkgKdvLhNj">More info</a> by <a href="http://twitter.com/blurspline">@blurspline</a>
+
+               </div>
+
+               <script src="../build/three.js"></script>
+
+               <script src="js/controls/OrbitControls.js"></script>
+               <script src="js/SkyShader.js"></script>
+
+               <script src="js/Detector.js"></script>
+               <script src="js/libs/dat.gui.min.js"></script>
+
+               <script>
+
+
+                       if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
+
+                       var container;
+
+                       var camera, controls, scene, renderer;
+
+                       var sky, sunSphere;
+
+                       init();
+                       render();
+
+                       function initSky() {
+
+                               // Add Sky Mesh
+                               sky = new THREE.Sky();
+                               scene.add( sky.mesh );
+
+                               // Add Sun Helper
+                               sunSphere = new THREE.Mesh(
+                                       new THREE.SphereBufferGeometry( 20000, 16, 8 ),
+                                       new THREE.MeshBasicMaterial( { color: 0xffffff } )
+                               );
+                               sunSphere.position.y = - 700000;
+                               sunSphere.visible = false;
+                               scene.add( sunSphere );
+
+                               /// GUI
+
+                               var effectController  = {
+                                       turbidity: 10,
+                                       rayleigh: 2,
+                                       mieCoefficient: 0.005,
+                                       mieDirectionalG: 0.8,
+                                       luminance: 1,
+                                       inclination: 0.49, // elevation / inclination
+                                       azimuth: 0.25, // Facing front,
+                                       sun: ! true
+                               };
+
+                               var distance = 400000;
+
+                               function guiChanged() {
+
+                                       var uniforms = sky.uniforms;
+                                       uniforms.turbidity.value = effectController.turbidity;
+                                       uniforms.rayleigh.value = effectController.rayleigh;
+                                       uniforms.luminance.value = effectController.luminance;
+                                       uniforms.mieCoefficient.value = effectController.mieCoefficient;
+                                       uniforms.mieDirectionalG.value = effectController.mieDirectionalG;
+
+                                       var theta = Math.PI * ( effectController.inclination - 0.5 );
+                                       var phi = 2 * Math.PI * ( effectController.azimuth - 0.5 );
+
+                                       sunSphere.position.x = distance * Math.cos( phi );
+                                       sunSphere.position.y = distance * Math.sin( phi ) * Math.sin( theta );
+                                       sunSphere.position.z = distance * Math.sin( phi ) * Math.cos( theta );
+
+                                       sunSphere.visible = effectController.sun;
+
+                                       sky.uniforms.sunPosition.value.copy( sunSphere.position );
+
+                                       renderer.render( scene, camera );
+
+                               }
+
+                               var gui = new dat.GUI();
+
+                               gui.add( effectController, "turbidity", 1.0, 20.0, 0.1 ).onChange( guiChanged );
+                               gui.add( effectController, "rayleigh", 0.0, 4, 0.001 ).onChange( guiChanged );
+                               gui.add( effectController, "mieCoefficient", 0.0, 0.1, 0.001 ).onChange( guiChanged );
+                               gui.add( effectController, "mieDirectionalG", 0.0, 1, 0.001 ).onChange( guiChanged );
+                               gui.add( effectController, "luminance", 0.0, 2 ).onChange( guiChanged );
+                               gui.add( effectController, "inclination", 0, 1, 0.0001 ).onChange( guiChanged );
+                               gui.add( effectController, "azimuth", 0, 1, 0.0001 ).onChange( guiChanged );
+                               gui.add( effectController, "sun" ).onChange( guiChanged );
+
+                               guiChanged();
+
+                       }
+
+                       function init() {
+
+                               camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 100, 2000000 );
+                               camera.position.set( 0, 100, 2000 );
+
+                               //camera.setLens(20);
+
+                               scene = new THREE.Scene();
+
+                               var helper = new THREE.GridHelper( 10000, 2, 0xffffff, 0xffffff );
+                               scene.add( helper );
+
+                               renderer = new THREE.WebGLRenderer();
+                               renderer.setPixelRatio( window.devicePixelRatio );
+                               renderer.setSize( window.innerWidth, window.innerHeight );
+                               document.body.appendChild( renderer.domElement );
+
+                               controls = new THREE.OrbitControls( camera, renderer.domElement );
+                               controls.addEventListener( 'change', render );
+                               //controls.maxPolarAngle = Math.PI / 2;
+                               controls.enableZoom = false;
+                               controls.enablePan = false;
+
+                               initSky();
+
+                               window.addEventListener( 'resize', onWindowResize, false );
+
+                       }
+
+                       function onWindowResize() {
+
+                               camera.aspect = window.innerWidth / window.innerHeight;
+                               camera.updateProjectionMatrix();
+
+                               renderer.setSize( window.innerWidth, window.innerHeight );
+
+                               render();
+
+                       }
+
+                       function render() {
+
+                               renderer.render( scene, camera );
+
+                       }
+
+               </script>
+
+       </body>
+
+</html>