Browse Source

Adds fragDepth, drawBuffers and shaderTextureLOD properties to ShaderMaterial

Liam Magee 9 years ago
parent
commit
17a64ca40c
2 changed files with 10 additions and 2 deletions
  1. 6 0
      src/materials/ShaderMaterial.js
  2. 4 2
      src/renderers/webgl/WebGLProgram.js

+ 6 - 0
src/materials/ShaderMaterial.js

@@ -59,6 +59,9 @@ THREE.ShaderMaterial = function ( parameters ) {
 	this.morphNormals = false; // set to use morph normals
 
 	this.derivatives = false; // set to use derivatives
+	this.fragDepth = false; // set to use fragment depth values
+	this.drawBuffers = false; // set to use draw buffers
+	this.shaderTextureLOD = false; // set to use shader texture LOD
 
 	// 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.
@@ -116,6 +119,9 @@ THREE.ShaderMaterial.prototype.copy = function ( source ) {
 	this.morphNormals = source.morphNormals;
 
 	this.derivatives = source.derivatives;
+	this.fragDepth = source.fragDepth;
+	this.drawBuffers = source.drawBuffers;
+	this.shaderTextureLOD = source.shaderTextureLOD;
 
 	return this;
 

+ 4 - 2
src/renderers/webgl/WebGLProgram.js

@@ -286,9 +286,11 @@ THREE.WebGLProgram = ( function () {
 			prefixFragment = [
 
 				parameters.bumpMap || parameters.normalMap || parameters.flatShading || material.derivatives ? '#extension GL_OES_standard_derivatives : enable' : '',
-				parameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',
+				( parameters.logarithmicDepthBuffer || material.fragDepth ) && renderer.extensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',
 
-				parameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',
+				material.drawBuffers && renderer.extensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : enable' : '',
+
+				( parameters.envMap || material.shaderTextureLOD ) && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',
 
 				'precision ' + parameters.precision + ' float;',
 				'precision ' + parameters.precision + ' int;',