提交 e2c86dae 编写于 作者: B Ben Houston

adopt macro-defined encodings, remove uniform defined encodings.

上级 b057fed4
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
vec4 emissiveColor = texture2D( emissiveMap, vUv ); vec4 emissiveColor = texture2D( emissiveMap, vUv );
emissiveColor.rgb = EncodingToLinear( emissiveColor, emissiveMapEncoding ).rgb; emissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;
totalEmissiveLight *= emissiveColor.rgb; totalEmissiveLight *= emissiveColor.rgb;
......
#ifdef USE_EMISSIVEMAP #ifdef USE_EMISSIVEMAP
uniform sampler2D emissiveMap; uniform sampler2D emissiveMap;
uniform int emissiveMapEncoding;
vec4 emissiveMapTexelToLinear( vec4 texel ) {
#define DECODE_MACRO EMISSIVEMAP_ENCODING
#include "encoding_template.glsl"
#undef DECODE_MACRO
}
#endif #endif
...@@ -3,19 +3,19 @@ ...@@ -3,19 +3,19 @@
#if defined( MACRO_DECODE ) #if defined( MACRO_DECODE )
#if ( MACRO_ENCODING_TYPE == ENCODING_Linear ) #if ( MACRO_DECODE == ENCODING_Linear )
return value; return value;
#elif ( MACRO_ENCODING_TYPE == ENCODING_sRGB ) #elif ( MACRO_DECODE == ENCODING_sRGB )
return sRGBToLinear( value ); return sRGBToLinear( value );
#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBE ) #elif ( MACRO_DECODE == ENCODING_RGBE )
return RGBEToLinear( value ); return RGBEToLinear( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_LogLuv ) TODO //#elif ( MACRO_DECODE == ENCODING_LogLuv ) TODO
// return LogLuvToLinear( value ); // return LogLuvToLinear( value );
#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBM7 ) #elif ( MACRO_DECODE == ENCODING_RGBM7 )
return RGBM7ToLinear( value ); return RGBM7ToLinear( value );
#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBM16 ) #elif ( MACRO_DECODE == ENCODING_RGBM16 )
return RGBM16ToLinear( value ); return RGBM16ToLinear( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBD ) TODO //#elif ( MACRO_DECODE == ENCODING_RGBD ) TODO
// return RGBMDToLinear( value ); // return RGBMDToLinear( value );
#else #else
return vec4( 1.0, 0.0, 0.0, 1.0 ); return vec4( 1.0, 0.0, 0.0, 1.0 );
...@@ -23,19 +23,19 @@ ...@@ -23,19 +23,19 @@
#elif defined( MACRO_ENCODE ) #elif defined( MACRO_ENCODE )
#if ( MACRO_ENCODING_TYPE == ENCODING_Linear ) #if ( MACRO_ENCODE == ENCODING_Linear )
return value; return value;
#elif ( MACRO_ENCODING_TYPE == ENCODING_sRGB ) #elif ( MACRO_ENCODE == ENCODING_sRGB )
return LinearTosRGB( value ); return LinearTosRGB( value );
#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBE ) #elif ( MACRO_ENCODE == ENCODING_RGBE )
return LinearToRGBE( value ); return LinearToRGBE( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_LogLuv ) TODO //#elif ( MACRO_ENCODE == ENCODING_LogLuv ) TODO
// return LinearToLogLuv( value ); // return LinearToLogLuv( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBM7 ) TODO //#elif ( MACRO_ENCODE == ENCODING_RGBM7 ) TODO
// return LinearToRGBM7( value ); // return LinearToRGBM7( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBM16 ) TODO //#elif ( MACRO_ENCODE == ENCODING_RGBM16 ) TODO
// return LinearToRGBM16( value ); // return LinearToRGBM16( value );
//#elif ( MACRO_ENCODING_TYPE == ENCODING_RGBD ) TODO //#elif ( MACRO_ENCODE == ENCODING_RGBD ) TODO
// return LinearToRGBMD( value ); // return LinearToRGBMD( value );
#else #else
return vec4( 1.0, 0.0, 0.0, 1.0 ); return vec4( 1.0, 0.0, 0.0, 1.0 );
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 ); vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );
#endif #endif
envColor = EncodingToLinear( envColor, envMapEncoding ); envColor = envMapTexelToLinear( envColor );
#ifdef ENVMAP_BLENDING_MULTIPLY #ifdef ENVMAP_BLENDING_MULTIPLY
......
...@@ -10,7 +10,12 @@ ...@@ -10,7 +10,12 @@
uniform sampler2D envMap; uniform sampler2D envMap;
#endif #endif
uniform float flipEnvMap; uniform float flipEnvMap;
uniform int envMapEncoding;
vec4 envMapTexelToLinear( vec4 texel ) {
#define DECODE_MACRO ENVMAP_ENCODING
#include "encoding_template.glsl"
#undef DECODE_MACRO
}
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( STANDARD ) #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( STANDARD )
......
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
#endif #endif
envMapColor.rgb = EncodingToLinear( envMapColor, envMapEncoding ).rgb; envMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;
return envMapColor.rgb * envMapIntensity; return envMapColor.rgb * envMapIntensity;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
vec4 texelColor = texture2D( map, vUv ); vec4 texelColor = texture2D( map, vUv );
texelColor = EncodingToLinear( texelColor, mapEncoding ); texelColor = mapTexelToLinear( texelColor );
diffuseColor *= texelColor; diffuseColor *= texelColor;
#endif #endif
#ifdef USE_MAP #ifdef USE_MAP
uniform sampler2D map; uniform sampler2D map;
uniform int mapEncoding;
vec4 mapTexelToLinear( vec4 texel ) {
#define DECODE_MACRO MAP_ENCODING
#include "encoding_template.glsl"
#undef DECODE_MACRO
}
#endif #endif
...@@ -406,13 +406,16 @@ THREE.WebGLProgram = ( function () { ...@@ -406,13 +406,16 @@ THREE.WebGLProgram = ( function () {
( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',
parameters.map ? '#define USE_MAP' : '', parameters.map ? '#define USE_MAP' : '',
parameters.mapEncoding ? '#define MAP_ENCODING ' + material.map.encoding : '',
parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '',
parameters.envMap ? '#define ' + envMapTypeDefine : '', parameters.envMap ? '#define ' + envMapTypeDefine : '',
parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.envMap ? '#define ' + envMapModeDefine : '',
parameters.envMap ? '#define ' + envMapBlendingDefine : '', parameters.envMap ? '#define ' + envMapBlendingDefine : '',
parameters.envMapEncoding ? '#define ENVMAP_ENCODING ' + material.envMap.encoding : '',
parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '',
parameters.aoMap ? '#define USE_AOMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '',
parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',
parameters.emissiveMapEncoding ? '#define EMISSIVEMAP_ENCODING ' + material.emissiveMap.encoding : '',
parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '',
parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '',
parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '',
......
...@@ -15,8 +15,8 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) { ...@@ -15,8 +15,8 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
}; };
var parameterNames = [ var parameterNames = [
"precision", "supportsVertexTextures", "map", "envMap", "envMapMode", "precision", "supportsVertexTextures", "map", "mapEncoding", "envMap", "envMapMode", "envMapEncoding",
"lightMap", "aoMap", "emissiveMap", "bumpMap", "normalMap", "displacementMap", "specularMap", "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "displacementMap", "specularMap",
"roughnessMap", "metalnessMap", "roughnessMap", "metalnessMap",
"alphaMap", "combine", "vertexColors", "fog", "useFog", "fogExp", "alphaMap", "combine", "vertexColors", "fog", "useFog", "fogExp",
"flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning",
...@@ -96,11 +96,14 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) { ...@@ -96,11 +96,14 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
supportsVertexTextures: capabilities.vertexTextures, supportsVertexTextures: capabilities.vertexTextures,
map: !! material.map, map: !! material.map,
mapEncoding: ( !! material.map ) ? material.map.encoding : false,
envMap: !! material.envMap, envMap: !! material.envMap,
envMapMode: material.envMap && material.envMap.mapping, envMapMode: material.envMap && material.envMap.mapping,
envMapEncoding: ( !! material.envMap ) ? material.envMap.encoding : false,
lightMap: !! material.lightMap, lightMap: !! material.lightMap,
aoMap: !! material.aoMap, aoMap: !! material.aoMap,
emissiveMap: !! material.emissiveMap, emissiveMap: !! material.emissiveMap,
emissiveMapEncoding: ( !! material.emissiveMap ) ? material.emissiveMap.encoding : false,
bumpMap: !! material.bumpMap, bumpMap: !! material.bumpMap,
normalMap: !! material.normalMap, normalMap: !! material.normalMap,
displacementMap: !! material.displacementMap, displacementMap: !! material.displacementMap,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册