فهرست منبع

remove encoding_template and WebGLShaderPrePRocessor as mrdoob has rewritten it.

Ben Houston 9 سال پیش
والد
کامیت
653a2787ce

+ 0 - 6
src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl

@@ -2,10 +2,4 @@
 
 	uniform sampler2D emissiveMap;
 
-	vec4 emissiveMapTexelToLinear( vec4 value ) {
-		#define MACRO_DECODE EMISSIVEMAP_ENCODING
-			#include <encoding_template>
-		#undef MACRO_DECODE
-	}
-
 #endif

+ 0 - 48
src/renderers/shaders/ShaderChunk/encoding_template.glsl

@@ -1,48 +0,0 @@
-// this is intended to be the body of a macro.  Define the name of the function,
-// set the defines and then include this glsl snippet to define its body.
-
-#if defined( MACRO_DECODE )
-
-  #if ( MACRO_DECODE == ENCODING_Linear )
-    return value;
-  #elif ( MACRO_DECODE == ENCODING_sRGB )
-    return sRGBToLinear( value );
-  #elif ( MACRO_DECODE == ENCODING_RGBE )
-    return RGBEToLinear( value );
-  #elif ( MACRO_DECODE == ENCODING_LogLuv )
-    return LogLuvToLinear( value );
-  #elif ( MACRO_DECODE == ENCODING_RGBM7 )
-    return RGBMToLinear( value, 7.0 );
-  #elif ( MACRO_DECODE == ENCODING_RGBM16 )
-    return RGBMToLinear( value, 16.0 );
-  #elif ( MACRO_DECODE == ENCODING_RGBD )
-    return RGBDToLinear( value, 256.0 );
-  #elif ( MACRO_DECODE == ENCODING_Gamma )
-      return GammaToLinear( value, float( GAMMA_FACTOR ) );
-  #else
-    return vec4( 1.0, 0.0, 0.0, 1.0 );
-  #endif
-
-#elif defined( MACRO_ENCODE )
-
-  #if ( MACRO_ENCODE == ENCODING_Linear )
-    return value;
-  #elif ( MACRO_ENCODE == ENCODING_sRGB )
-    return LinearTosRGB( value );
-  #elif ( MACRO_ENCODE == ENCODING_RGBE )
-    return LinearToRGBE( value );
-  #elif ( MACRO_ENCODE == ENCODING_LogLuv )
-    return LinearToLogLuv( value );
-  #elif ( MACRO_ENCODE == ENCODING_RGBM7 )
-    return LinearToRGBM( value, 7.0 );
-  #elif ( MACRO_ENCODE == ENCODING_RGBM16 )
-    return LinearToRGBM( value, 16.0 );
-  #elif ( MACRO_ENCODE == ENCODING_RGBD )
-    return LinearToRGBD( value, 256.0 );
-  #elif ( MACRO_ENCODE == ENCODING_Gamma )
-    return LinearToGamma( value, float( GAMMA_FACTOR ) );
-  #else
-    return vec4( 1.0, 0.0, 0.0, 1.0 );
-  #endif
-
-#endif

+ 0 - 6
src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl

@@ -2,10 +2,4 @@
 
 	uniform sampler2D map;
 
-	vec4 mapTexelToLinear( vec4 value ) {
-		#define MACRO_DECODE MAP_ENCODING
-			#include <encoding_template>
-		#undef MACRO_DECODE
-	}
-
 #endif

+ 0 - 6
src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl

@@ -2,11 +2,5 @@
 
 	uniform vec4 offsetRepeat;
 	uniform sampler2D map;
-	
-	vec4 mapTexelToLinear( vec4 value ) {
-		#define MACRO_DECODE MAP_ENCODING
-			#include <encoding_template>
-		#undef MACRO_DECODE
-	}
 
 #endif

+ 21 - 33
src/renderers/webgl/WebGLProgram.js

@@ -7,46 +7,35 @@ THREE.WebGLProgram = ( function () {
 	var arrayStructRe = /^([\w\d_]+)\[(\d+)\]\.([\w\d_]+)$/;
 	var arrayRe = /^([\w\d_]+)\[0\]$/;
 
-	function getTexelDecodingMacro( encoding ) {
+	function getTexelDecodingFunction( functionName, encoding ) {
+		var code = "vec4 " + functionName + "( vec4 value ) { return ";
 		switch( encoding ) {
 			case THREE.LinearEncoding:
-				return "(value)";
+				code += "value";
+				break;
 			case THREE.sRGBEncoding:
-				return "sRGBToLinear( value )";
+				code += "sRGBToLinear( value )";
+				break;
 			case THREE.RGBEEncoding:
-				return "RGBEToLinear( value )";
+				code += "RGBEToLinear( value )";
+				break;
 			case THREE.RGBM7Encoding:
-				return "RGBMToLinear( value, 7.0 )";
+				code += "RGBMToLinear( value, 7.0 )";
+				break;
 			case THREE.RGBM16Encoding:
-				return "RGBMToLinear( value, 16.0 )";
+				code += "RGBMToLinear( value, 16.0 )";
+				break;
 			case THREE.RGBDEncoding:
-				return "RGBDToLinear( value, 256.0 )";
+				code += "RGBDToLinear( value, 256.0 )";
+				break;
 			case THREE.GammaEncoding:
-				return "GammaToLinear( value, float( GAMMA_FACTOR ) )";
-			default:
-			 throw new Error( "unsupported encoding: " + encoding );
-		}
-	}
-
-	function getTexelEncodingMacro( encoding ) {
-		switch( encoding ) {
-			case THREE.LinearEncoding:
-				return "(value)";
-			case THREE.sRGBEncoding:
-				return "LinearTosRGB( value )";
-			case THREE.RGBEEncoding:
-				return "LinearToRGBE( value )";
-			case THREE.RGBM7Encoding:
-				return "LinearToRGBM( value, 7.0 )";
-			case THREE.RGBM16Encoding:
-				return "LinearToRGBM( value, 16.0 )";
-			case THREE.RGBDEncoding:
-				return "LinearToRGBD( value, 256.0 )";
-			case THREE.GammaEncoding:
-				return "LinearToGamma( value, float( GAMMA_FACTOR ) )";
+				code += "GammaToLinear( value, float( GAMMA_FACTOR ) )";
+				break;
 			default:
 			 throw new Error( "unsupported encoding: " + encoding );
 		}
+		code += "; }";
+		return code;
 	}
 
 	function generateExtensions( extensions, parameters, rendererExtensions ) {
@@ -340,7 +329,6 @@ THREE.WebGLProgram = ( function () {
 
 				parameters.map ? '#define USE_MAP' : '',
 				parameters.envMap ? '#define USE_ENVMAP' : '',
-				parameters.envMap ? '#define ' + envMapModeDefine : '',
 				parameters.lightMap ? '#define USE_LIGHTMAP' : '',
 				parameters.aoMap ? '#define USE_AOMAP' : '',
 				parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
@@ -448,16 +436,16 @@ THREE.WebGLProgram = ( function () {
 				( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',
 
 				parameters.map ? '#define USE_MAP' : '',
-				parameters.mapEncoding ? '#define MAP_ENCODING ' + material.map.encoding : '',
+				parameters.mapEncoding ? getTexelDecodingFunction( "mapTexelToLinear", material.map.encoding ) : '',
 				parameters.envMap ? '#define USE_ENVMAP' : '',
 				parameters.envMap ? '#define ' + envMapTypeDefine : '',
 				parameters.envMap ? '#define ' + envMapModeDefine : '',
 				parameters.envMap ? '#define ' + envMapBlendingDefine : '',
-				parameters.envMapEncoding ? '#define ENVMAP_ENCODING ' + material.envMap.encoding : '',
 				parameters.lightMap ? '#define USE_LIGHTMAP' : '',
+				parameters.envMapEncoding ? getTexelDecodingFunction( "envMapTexelToLinear", material.envMap.encoding ) : '',
 				parameters.aoMap ? '#define USE_AOMAP' : '',
 				parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
-				parameters.emissiveMapEncoding ? '#define EMISSIVEMAP_ENCODING ' + material.emissiveMap.encoding : '',
+				parameters.emissiveMapEncoding ? getTexelDecodingFunction( "emissiveMapTexelToLinear", material.emissiveMap.encoding ) : '',
 				parameters.bumpMap ? '#define USE_BUMPMAP' : '',
 				parameters.normalMap ? '#define USE_NORMALMAP' : '',
 				parameters.specularMap ? '#define USE_SPECULARMAP' : '',

+ 0 - 43
src/renderers/webgl/WebGLShaderPreProcessor.js

@@ -1,43 +0,0 @@
-/**
-* @author bhouston / http://clara.io
-*/
-
-THREE.WebGLShaderPreProcessor = {};
-
-THREE.WebGLShaderPreProcessor.compile = function() {
-
-  var regexInclude = /[ ]*#include[ ]+["<]([\w\d.]*)[">]/;
-
-  return function( code, includeResolver ) {
-
-    includeResolver = includeResolver || THREE.WebGLShaderPreProcessor.defaultIncludeResolver;
-
-    var lines = code.split( '\n' );
-    var newLines = [];
-    while( lines.length > 0 ) {
-      var line = lines.shift();
-
-      var matcheInclude = regexInclude.exec(line);
-      if( matcheInclude ) {
-        var includeFileName = matcheInclude[1];
-        var includeChunk = includeResolver( includeFileName );
-        if( ! includeChunk ) throw new Error( "can not find include file for line: " + line );
-        var includeLines = includeChunk.split( '\n' );
-        while( includeLines.length > 0 ) {
-          lines.unshift( includeLines.pop() );
-        }
-      }
-      else {
-        newLines.push( line );
-      }
-    }
-    return newLines.join( '\n' );
-  };
-
-}();
-
-THREE.WebGLShaderPreProcessor.defaultIncludeResolver = function( fileName ) {
-
-  return THREE.ShaderChunk[ fileName ];
-
-};

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

@@ -138,7 +138,6 @@
 	"src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/encodings.glsl",
-	"src/renderers/shaders/ShaderChunk/encoding_template.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
@@ -209,7 +208,6 @@
 	"src/renderers/webgl/WebGLPrograms.js",
 	"src/renderers/webgl/WebGLProperties.js",
 	"src/renderers/webgl/WebGLShader.js",
-	"src/renderers/webgl/WebGLShaderPreProcessor.js",
 	"src/renderers/webgl/WebGLShadowMap.js",
 	"src/renderers/webgl/WebGLState.js",
 	"src/renderers/webgl/plugins/LensFlarePlugin.js",