@@ -7,46 +7,35 @@ THREE.WebGLProgram = ( function () {
77 var arrayStructRe = / ^ ( [ \w \d _ ] + ) \[ ( \d + ) \] \. ( [ \w \d _ ] + ) $ / ;
88 var arrayRe = / ^ ( [ \w \d _ ] + ) \[ 0 \] $ / ;
99
10- function getTexelDecodingMacro ( encoding ) {
10+ function getTexelDecodingFunction ( functionName , encoding ) {
11+ var code = "vec4 " + functionName + "( vec4 value ) { return " ;
1112 switch ( encoding ) {
1213 case THREE . LinearEncoding :
13- return "(value)" ;
14+ code += "value" ;
15+ break ;
1416 case THREE . sRGBEncoding :
15- return "sRGBToLinear( value )" ;
17+ code += "sRGBToLinear( value )" ;
18+ break ;
1619 case THREE . RGBEEncoding :
17- return "RGBEToLinear( value )" ;
20+ code += "RGBEToLinear( value )" ;
21+ break ;
1822 case THREE . RGBM7Encoding :
19- return "RGBMToLinear( value, 7.0 )" ;
23+ code += "RGBMToLinear( value, 7.0 )" ;
24+ break ;
2025 case THREE . RGBM16Encoding :
21- return "RGBMToLinear( value, 16.0 )" ;
26+ code += "RGBMToLinear( value, 16.0 )" ;
27+ break ;
2228 case THREE . RGBDEncoding :
23- return "RGBDToLinear( value, 256.0 )" ;
29+ code += "RGBDToLinear( value, 256.0 )" ;
30+ break ;
2431 case THREE . GammaEncoding :
25- return "GammaToLinear( value, float( GAMMA_FACTOR ) )" ;
26- default :
27- throw new Error ( "unsupported encoding: " + encoding ) ;
28- }
29- }
30-
31- function getTexelEncodingMacro ( encoding ) {
32- switch ( encoding ) {
33- case THREE . LinearEncoding :
34- return "(value)" ;
35- case THREE . sRGBEncoding :
36- return "LinearTosRGB( value )" ;
37- case THREE . RGBEEncoding :
38- return "LinearToRGBE( value )" ;
39- case THREE . RGBM7Encoding :
40- return "LinearToRGBM( value, 7.0 )" ;
41- case THREE . RGBM16Encoding :
42- return "LinearToRGBM( value, 16.0 )" ;
43- case THREE . RGBDEncoding :
44- return "LinearToRGBD( value, 256.0 )" ;
45- case THREE . GammaEncoding :
46- return "LinearToGamma( value, float( GAMMA_FACTOR ) )" ;
32+ code += "GammaToLinear( value, float( GAMMA_FACTOR ) )" ;
33+ break ;
4734 default :
4835 throw new Error ( "unsupported encoding: " + encoding ) ;
4936 }
37+ code += "; }" ;
38+ return code ;
5039 }
5140
5241 function generateExtensions ( extensions , parameters , rendererExtensions ) {
@@ -340,7 +329,6 @@ THREE.WebGLProgram = ( function () {
340329
341330 parameters . map ? '#define USE_MAP' : '' ,
342331 parameters . envMap ? '#define USE_ENVMAP' : '' ,
343- parameters . envMap ? '#define ' + envMapModeDefine : '' ,
344332 parameters . lightMap ? '#define USE_LIGHTMAP' : '' ,
345333 parameters . aoMap ? '#define USE_AOMAP' : '' ,
346334 parameters . emissiveMap ? '#define USE_EMISSIVEMAP' : '' ,
@@ -448,16 +436,16 @@ THREE.WebGLProgram = ( function () {
448436 ( parameters . useFog && parameters . fogExp ) ? '#define FOG_EXP2' : '' ,
449437
450438 parameters . map ? '#define USE_MAP' : '' ,
451- parameters . mapEncoding ? '#define MAP_ENCODING ' + material . map . encoding : '' ,
439+ parameters . mapEncoding ? getTexelDecodingFunction ( "mapTexelToLinear" , material . map . encoding ) : '' ,
452440 parameters . envMap ? '#define USE_ENVMAP' : '' ,
453441 parameters . envMap ? '#define ' + envMapTypeDefine : '' ,
454442 parameters . envMap ? '#define ' + envMapModeDefine : '' ,
455443 parameters . envMap ? '#define ' + envMapBlendingDefine : '' ,
456- parameters . envMapEncoding ? '#define ENVMAP_ENCODING ' + material . envMap . encoding : '' ,
457444 parameters . lightMap ? '#define USE_LIGHTMAP' : '' ,
445+ parameters . envMapEncoding ? getTexelDecodingFunction ( "envMapTexelToLinear" , material . envMap . encoding ) : '' ,
458446 parameters . aoMap ? '#define USE_AOMAP' : '' ,
459447 parameters . emissiveMap ? '#define USE_EMISSIVEMAP' : '' ,
460- parameters . emissiveMapEncoding ? '#define EMISSIVEMAP_ENCODING ' + material . emissiveMap . encoding : '' ,
448+ parameters . emissiveMapEncoding ? getTexelDecodingFunction ( "emissiveMapTexelToLinear" , material . emissiveMap . encoding ) : '' ,
461449 parameters . bumpMap ? '#define USE_BUMPMAP' : '' ,
462450 parameters . normalMap ? '#define USE_NORMALMAP' : '' ,
463451 parameters . specularMap ? '#define USE_SPECULARMAP' : '' ,
0 commit comments