|
|
@@ -1,4 +1,4 @@
|
|
|
-import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, SRGBTransfer } from '../../constants.js';
|
|
|
+import { BackSide, DoubleSide, CubeUVReflectionMapping, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, SRGBTransfer, RGFormat, RG11_EAC_Format, RED_GREEN_RGTC2_Format } from '../../constants.js';
|
|
|
import { Layers } from '../../core/Layers.js';
|
|
|
import { WebGLProgram } from './WebGLProgram.js';
|
|
|
import { WebGLShaderCache } from './WebGLShaderCache.js';
|
|
|
@@ -7,6 +7,12 @@ import { UniformsUtils } from '../shaders/UniformsUtils.js';
|
|
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
import { warn } from '../../utils.js';
|
|
|
|
|
|
+function isPackedRGFormat( format ) {
|
|
|
+
|
|
|
+ return format === RGFormat || format === RG11_EAC_Format || format === RED_GREEN_RGTC2_Format;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
function WebGLPrograms( renderer, environments, extensions, capabilities, bindingStates, clipping ) {
|
|
|
|
|
|
const _programLayers = new Layers();
|
|
|
@@ -217,6 +223,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
|
|
|
normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,
|
|
|
normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,
|
|
|
+ packedNormalMap: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap && isPackedRGFormat( material.normalMap.format ),
|
|
|
|
|
|
metalnessMap: HAS_METALNESSMAP,
|
|
|
roughnessMap: HAS_ROUGHNESSMAP,
|
|
|
@@ -521,6 +528,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
_programLayers.enable( 20 );
|
|
|
if ( parameters.gradientMap )
|
|
|
_programLayers.enable( 21 );
|
|
|
+ if ( parameters.packedNormalMap )
|
|
|
+ _programLayers.enable( 22 );
|
|
|
|
|
|
array.push( _programLayers.mask );
|
|
|
_programLayers.disableAll();
|