|
|
@@ -97,43 +97,24 @@ function getTexelEncodingFunction( functionName, colorSpace ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
-
|
|
|
- let toneMappingName;
|
|
|
-
|
|
|
- switch ( toneMapping ) {
|
|
|
-
|
|
|
- case LinearToneMapping:
|
|
|
- toneMappingName = 'Linear';
|
|
|
- break;
|
|
|
-
|
|
|
- case ReinhardToneMapping:
|
|
|
- toneMappingName = 'Reinhard';
|
|
|
- break;
|
|
|
-
|
|
|
- case CineonToneMapping:
|
|
|
- toneMappingName = 'Cineon';
|
|
|
- break;
|
|
|
+const toneMappingFunctions = {
|
|
|
+ [ LinearToneMapping ]: 'Linear',
|
|
|
+ [ ReinhardToneMapping ]: 'Reinhard',
|
|
|
+ [ CineonToneMapping ]: 'Cineon',
|
|
|
+ [ ACESFilmicToneMapping ]: 'ACESFilmic',
|
|
|
+ [ AgXToneMapping ]: 'AgX',
|
|
|
+ [ NeutralToneMapping ]: 'Neutral',
|
|
|
+ [ CustomToneMapping ]: 'Custom'
|
|
|
+};
|
|
|
|
|
|
- case ACESFilmicToneMapping:
|
|
|
- toneMappingName = 'ACESFilmic';
|
|
|
- break;
|
|
|
-
|
|
|
- case AgXToneMapping:
|
|
|
- toneMappingName = 'AgX';
|
|
|
- break;
|
|
|
+function getToneMappingFunction( functionName, toneMapping ) {
|
|
|
|
|
|
- case NeutralToneMapping:
|
|
|
- toneMappingName = 'Neutral';
|
|
|
- break;
|
|
|
+ const toneMappingName = toneMappingFunctions[ toneMapping ];
|
|
|
|
|
|
- case CustomToneMapping:
|
|
|
- toneMappingName = 'Custom';
|
|
|
- break;
|
|
|
+ if ( toneMappingName === undefined ) {
|
|
|
|
|
|
- default:
|
|
|
- warn( 'WebGLProgram: Unsupported toneMapping:', toneMapping );
|
|
|
- toneMappingName = 'Linear';
|
|
|
+ warn( 'WebGLProgram: Unsupported toneMapping:', toneMapping );
|
|
|
+ return 'vec3 ' + functionName + '( vec3 color ) { return LinearToneMapping( color ); }';
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -361,95 +342,54 @@ function generatePrecision( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-function generateShadowMapTypeDefine( parameters ) {
|
|
|
-
|
|
|
- let shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
|
|
|
-
|
|
|
- if ( parameters.shadowMapType === PCFShadowMap ) {
|
|
|
+const shadowMapTypeDefines = {
|
|
|
+ [ PCFShadowMap ]: 'SHADOWMAP_TYPE_PCF',
|
|
|
+ [ VSMShadowMap ]: 'SHADOWMAP_TYPE_VSM'
|
|
|
+};
|
|
|
|
|
|
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';
|
|
|
-
|
|
|
- } else if ( parameters.shadowMapType === VSMShadowMap ) {
|
|
|
-
|
|
|
- shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';
|
|
|
-
|
|
|
- }
|
|
|
+function generateShadowMapTypeDefine( parameters ) {
|
|
|
|
|
|
- return shadowMapTypeDefine;
|
|
|
+ return shadowMapTypeDefines[ parameters.shadowMapType ] || 'SHADOWMAP_TYPE_BASIC';
|
|
|
|
|
|
}
|
|
|
|
|
|
-function generateEnvMapTypeDefine( parameters ) {
|
|
|
-
|
|
|
- let envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
|
|
|
-
|
|
|
- if ( parameters.envMap ) {
|
|
|
-
|
|
|
- switch ( parameters.envMapMode ) {
|
|
|
-
|
|
|
- case CubeReflectionMapping:
|
|
|
- case CubeRefractionMapping:
|
|
|
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE';
|
|
|
- break;
|
|
|
-
|
|
|
- case CubeUVReflectionMapping:
|
|
|
- envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';
|
|
|
- break;
|
|
|
+const envMapTypeDefines = {
|
|
|
+ [ CubeReflectionMapping ]: 'ENVMAP_TYPE_CUBE',
|
|
|
+ [ CubeRefractionMapping ]: 'ENVMAP_TYPE_CUBE',
|
|
|
+ [ CubeUVReflectionMapping ]: 'ENVMAP_TYPE_CUBE_UV'
|
|
|
+};
|
|
|
|
|
|
- }
|
|
|
+function generateEnvMapTypeDefine( parameters ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( parameters.envMap === false ) return 'ENVMAP_TYPE_CUBE';
|
|
|
|
|
|
- return envMapTypeDefine;
|
|
|
+ return envMapTypeDefines[ parameters.envMapMode ] || 'ENVMAP_TYPE_CUBE';
|
|
|
|
|
|
}
|
|
|
|
|
|
-function generateEnvMapModeDefine( parameters ) {
|
|
|
-
|
|
|
- let envMapModeDefine = 'ENVMAP_MODE_REFLECTION';
|
|
|
-
|
|
|
- if ( parameters.envMap ) {
|
|
|
+const envMapModeDefines = {
|
|
|
+ [ CubeRefractionMapping ]: 'ENVMAP_MODE_REFRACTION'
|
|
|
+};
|
|
|
|
|
|
- switch ( parameters.envMapMode ) {
|
|
|
-
|
|
|
- case CubeRefractionMapping:
|
|
|
-
|
|
|
- envMapModeDefine = 'ENVMAP_MODE_REFRACTION';
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
+function generateEnvMapModeDefine( parameters ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( parameters.envMap === false ) return 'ENVMAP_MODE_REFLECTION';
|
|
|
|
|
|
- return envMapModeDefine;
|
|
|
+ return envMapModeDefines[ parameters.envMapMode ] || 'ENVMAP_MODE_REFLECTION';
|
|
|
|
|
|
}
|
|
|
|
|
|
-function generateEnvMapBlendingDefine( parameters ) {
|
|
|
-
|
|
|
- let envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';
|
|
|
-
|
|
|
- if ( parameters.envMap ) {
|
|
|
-
|
|
|
- switch ( parameters.combine ) {
|
|
|
-
|
|
|
- case MultiplyOperation:
|
|
|
- envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';
|
|
|
- break;
|
|
|
+const envMapBlendingDefines = {
|
|
|
+ [ MultiplyOperation ]: 'ENVMAP_BLENDING_MULTIPLY',
|
|
|
+ [ MixOperation ]: 'ENVMAP_BLENDING_MIX',
|
|
|
+ [ AddOperation ]: 'ENVMAP_BLENDING_ADD'
|
|
|
+};
|
|
|
|
|
|
- case MixOperation:
|
|
|
- envMapBlendingDefine = 'ENVMAP_BLENDING_MIX';
|
|
|
- break;
|
|
|
-
|
|
|
- case AddOperation:
|
|
|
- envMapBlendingDefine = 'ENVMAP_BLENDING_ADD';
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
+function generateEnvMapBlendingDefine( parameters ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( parameters.envMap === false ) return 'ENVMAP_BLENDING_NONE';
|
|
|
|
|
|
- return envMapBlendingDefine;
|
|
|
+ return envMapBlendingDefines[ parameters.combine ] || 'ENVMAP_BLENDING_NONE';
|
|
|
|
|
|
}
|
|
|
|