فهرست منبع

ShaderMaterial: Added derivatives property so we can inject the directive first thing. See #6493.

Mr.doob 10 سال پیش
والد
کامیت
59aebeda08

+ 0 - 1
examples/js/ShaderSkin.js

@@ -59,7 +59,6 @@ THREE.ShaderSkin = {
 		fragmentShader: [
 
 			"#define USE_BUMPMAP",
-			"#extension GL_OES_standard_derivatives : enable",
 
 			"uniform bool enableBump;",
 			"uniform bool enableSpecular;",

+ 1 - 1
examples/webgl_materials_bumpmap_skin.html

@@ -282,7 +282,7 @@
 
 				uniforms[ "offsetRepeat" ].value.set( 0.001, 0.001, 0.998, 0.998 );
 
-				var material = new THREE.ShaderMaterial( { fragmentShader: fragmentShader, vertexShader: vertexShader, uniforms: uniforms, lights: true } );
+				var material = new THREE.ShaderMaterial( { fragmentShader: fragmentShader, vertexShader: vertexShader, uniforms: uniforms, lights: true, derivatives: true } );
 
 				mesh = new THREE.Mesh( geometry, material );
 

+ 2 - 0
src/materials/ShaderMaterial.js

@@ -59,6 +59,8 @@ THREE.ShaderMaterial = function ( parameters ) {
 	this.morphTargets = false; // set to use morph targets
 	this.morphNormals = false; // set to use morph normals
 
+	this.derivatives = false; // set to use derivatives
+
 	// When rendered geometry doesn't include these attributes but the material does,
 	// use these default values in WebGL. This avoids errors when buffer data is missing.
 	this.defaultAttributeValues = {

+ 1 - 1
src/renderers/webgl/WebGLProgram.js

@@ -275,7 +275,7 @@ THREE.WebGLProgram = ( function () {
 
 			prefix_fragment = [
 
-				( parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',
+				( parameters.bumpMap || parameters.normalMap || parameters.flatShading || material.derivatives ) ? '#extension GL_OES_standard_derivatives : enable' : '',
 
 				'precision ' + parameters.precision + ' float;',
 				'precision ' + parameters.precision + ' int;',