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

adopt macro-defined encodings, remove uniform defined encodings.

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