瀏覽代碼

ShadowMaterial: Promoted to core.

Mr.doob 9 年之前
父節點
當前提交
468a86c15b

+ 0 - 55
examples/js/materials/ShadowMaterial.js

@@ -1,55 +0,0 @@
-/**
- * @author mrdoob / http://mrdoob.com/
- */
-
-THREE.ShadowMaterial = function () {
-
-	THREE.ShaderMaterial.call( this, {
-		uniforms: THREE.UniformsUtils.merge( [
-			THREE.UniformsLib[ "lights" ],
-			{
-				opacity:  { type: 'f', value: 1.0 }
-			}
-		] ),
-		vertexShader: [
-			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
-			"void main() {",
-				THREE.ShaderChunk[ "begin_vertex" ],
-				THREE.ShaderChunk[ "project_vertex" ],
-				THREE.ShaderChunk[ "worldpos_vertex" ],
-				THREE.ShaderChunk[ "shadowmap_vertex" ],
-			"}"
-		].join( '\n' ),
-		fragmentShader: [
-			THREE.ShaderChunk[ "common" ],
-			THREE.ShaderChunk[ "packing" ],
-			THREE.ShaderChunk[ "bsdfs" ],
-			THREE.ShaderChunk[ "lights_pars" ],
-			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
-			THREE.ShaderChunk[ "shadowmask_pars_fragment" ],
-			"uniform float opacity;",
-			"void main() {",
-			"	gl_FragColor = vec4( 0.0, 0.0, 0.0, opacity * ( 1.0  - getShadowMask() ) );",
-			"}"
-		].join( '\n' )
-	} );
-
-	this.lights = true;
-	this.transparent = true;
-
-	Object.defineProperties( this, {
-		opacity: {
-			enumerable: true,
-			get: function () {
-				return this.uniforms.opacity.value;
-			},
-			set: function ( value ) {
-				this.uniforms.opacity.value = value;
-			}
-		}
-	} );
-
-};
-
-THREE.ShadowMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );
-THREE.ShadowMaterial.prototype.constructor = THREE.ShadowMaterial;

+ 0 - 1
examples/webgl_geometry_spline_editor.html

@@ -19,7 +19,6 @@
 		<script src="js/controls/OrbitControls.js"></script>
 		<script src="js/controls/TransformControls.js"></script>
 		<script src="js/controls/DragControls.js"></script>
-		<script src="js/materials/ShadowMaterial.js"></script>
 
 		<script src="js/libs/stats.min.js"></script>
 

+ 36 - 0
src/materials/ShadowMaterial.js

@@ -0,0 +1,36 @@
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+THREE.ShadowMaterial = function () {
+
+	THREE.ShaderMaterial.call( this, {
+		uniforms: THREE.UniformsUtils.merge( [
+			THREE.UniformsLib[ "lights" ],
+			{
+				opacity: { value: 1.0 }
+			}
+		] ),
+		vertexShader: THREE.ShaderChunk[ 'shadow_vert' ],
+		fragmentShader: THREE.ShaderChunk[ 'shadow_frag' ]
+	} );
+
+	this.lights = true;
+	this.transparent = true;
+
+	Object.defineProperties( this, {
+		opacity: {
+			enumerable: true,
+			get: function () {
+				return this.uniforms.opacity.value;
+			},
+			set: function ( value ) {
+				this.uniforms.opacity.value = value;
+			}
+		}
+	} );
+
+};
+
+THREE.ShadowMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );
+THREE.ShadowMaterial.prototype.constructor = THREE.ShadowMaterial;

+ 14 - 0
src/renderers/shaders/ShaderLib/shadow_frag.glsl

@@ -0,0 +1,14 @@
+uniform float opacity;
+
+#include <common>
+#include <packing>
+#include <bsdfs>
+#include <lights_pars>
+#include <shadowmap_pars_fragment>
+#include <shadowmask_pars_fragment>
+
+void main() {
+
+	gl_FragColor = vec4( 0.0, 0.0, 0.0, opacity * ( 1.0  - getShadowMask() ) );
+
+}

+ 10 - 0
src/renderers/shaders/ShaderLib/shadow_vert.glsl

@@ -0,0 +1,10 @@
+#include <shadowmap_pars_vertex>
+
+void main() {
+
+	#include <begin_vertex>
+	#include <project_vertex>
+	#include <worldpos_vertex>
+	#include <shadowmap_vertex>
+
+}

+ 3 - 0
utils/build/includes/common.json

@@ -102,6 +102,7 @@
 	"src/materials/ShaderMaterial.js",
 	"src/materials/RawShaderMaterial.js",
 	"src/materials/SpriteMaterial.js",
+	"src/materials/ShadowMaterial.js",
 	"src/textures/Texture.js",
 	"src/textures/DepthTexture.js",
 	"src/textures/CanvasTexture.js",
@@ -228,6 +229,8 @@
 	"src/renderers/shaders/ShaderLib/normal_vert.glsl",
 	"src/renderers/shaders/ShaderLib/points_frag.glsl",
 	"src/renderers/shaders/ShaderLib/points_vert.glsl",
+	"src/renderers/shaders/ShaderLib/shadow_frag.glsl",
+	"src/renderers/shaders/ShaderLib/shadow_vert.glsl",
 	"src/renderers/shaders/ShaderLib.js",
 	"src/renderers/WebGLRenderer.js",
 	"src/renderers/WebGLRenderTarget.js",