diff --git a/docs/api/en/renderers/webgl/WebGLProgram.html b/docs/api/en/renderers/webgl/WebGLProgram.html index 62fe2112ecf99f122e7a66cc08fca0faca2f3284..f9afd7dcd1cb261e07acba1982fbeb69cdafae30 100644 --- a/docs/api/en/renderers/webgl/WebGLProgram.html +++ b/docs/api/en/renderers/webgl/WebGLProgram.html @@ -55,14 +55,12 @@

Vertex shader (conditional):

- #ifdef USE_COLOR - #ifdef USE_VERTEX_ALPHA - // vertex color attribute with alpha channel - attribute vec4 color; - #else - // vertex color attribute without alpha channel - attribute vec3 color; - #endif + #if defined( USE_COLOR_ALPHA ) + // vertex color attribute with alpha + attribute vec4 color; + #elif defined( USE_COLOR ) + // vertex color attribute + attribute vec3 color; #endif diff --git a/docs/api/zh/renderers/webgl/WebGLProgram.html b/docs/api/zh/renderers/webgl/WebGLProgram.html index ecd32f79b9581c01ced709be6240e683be3b3f03..e679d69dd2417de05398db285e40cfd739e1b348 100644 --- a/docs/api/zh/renderers/webgl/WebGLProgram.html +++ b/docs/api/zh/renderers/webgl/WebGLProgram.html @@ -55,14 +55,12 @@

顶点着色器(有条件的):

- #ifdef USE_COLOR - #ifdef USE_VERTEX_ALPHA - // vertex color attribute with alpha channel - attribute vec4 color; - #else - // vertex color attribute without alpha channel - attribute vec3 color; - #endif + #if defined( USE_COLOR_ALPHA ) + // vertex color attribute with alpha + attribute vec4 color; + #elif defined( USE_COLOR ) + // vertex color attribute + attribute vec3 color; #endif diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 752315f9df13247cfd855c58d7550ca542b39a22..8444fa67b1df6c8b9b313faba5085df82cdaef16 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1452,7 +1452,7 @@ function WebGLRenderer( parameters ) { materialProperties.instancing = parameters.instancing; materialProperties.numClippingPlanes = parameters.numClippingPlanes; materialProperties.numIntersection = parameters.numClipIntersection; - materialProperties.vertexAlpha = parameters.vertexAlpha; + materialProperties.vertexAlphas = parameters.vertexAlphas; } @@ -1466,7 +1466,7 @@ function WebGLRenderer( parameters ) { const environment = material.isMeshStandardMaterial ? scene.environment : null; const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding; const envMap = cubemaps.get( material.envMap || environment ); - const vertexAlpha = ( ( object.isMesh || object.isLine || object.isPoints ) && object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4 ); + const vertexAlphas = material.vertexColors === true && object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4; const materialProperties = properties.get( material ); const lights = currentRenderState.state.lights; @@ -1524,7 +1524,7 @@ function WebGLRenderer( parameters ) { needsProgramChange = true; - } else if ( materialProperties.vertexAlpha !== vertexAlpha ) { + } else if ( materialProperties.vertexAlphas !== vertexAlphas ) { needsProgramChange = true; diff --git a/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js index 0846ee3791ad29022bff3259cc6f4bcba7630194..96d4a3728b3c2ffa7a288756b6a4442e0cc82609 100644 --- a/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js @@ -1,15 +1,11 @@ export default /* glsl */` -#ifdef USE_COLOR +#if defined( USE_COLOR_ALPHA ) - #ifdef USE_VERTEX_ALPHA + diffuseColor *= vColor; - diffuseColor *= vColor; +#elif defined( USE_COLOR ) - #else - - diffuseColor.rgb *= vColor; - - #endif + diffuseColor.rgb *= vColor; #endif `; diff --git a/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js b/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js index ba64298a12a79cc592708e2fcdc108449ab27595..1040a715bb7f642ec6e12e7947cb76ac75b36529 100644 --- a/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +++ b/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js @@ -1,15 +1,11 @@ export default /* glsl */` -#ifdef USE_COLOR +#if defined( USE_COLOR_ALPHA ) - #if defined( USE_VERTEX_ALPHA ) + varying vec4 vColor; - varying vec4 vColor; +#elif defined( USE_COLOR ) - #else - - varying vec3 vColor; - - #endif + varying vec3 vColor; #endif `; diff --git a/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js b/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js index caa333f8dcf67c736a162cfcb8faf995d1e79d0b..80c4934d555ee1e61d64b68247d813b001164a18 100644 --- a/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +++ b/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js @@ -1,15 +1,11 @@ export default /* glsl */` -#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) +#if defined( USE_COLOR_ALPHA ) - #if defined( USE_VERTEX_ALPHA ) + varying vec4 vColor; - varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) - #else - - varying vec3 vColor; - - #endif + varying vec3 vColor; #endif `; diff --git a/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js b/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js index c9ff8f62321bc4176083c0b14c2b13f1b104242b..b288b7c472c0fb5de15cf19eef4b2e3cf882c7a3 100644 --- a/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +++ b/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js @@ -1,15 +1,11 @@ export default /* glsl */` -#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) +#if defined( USE_COLOR_ALPHA ) - #if defined( USE_VERTEX_ALPHA ) + vColor = vec4( 1.0 ); - vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) - #else - - vColor = vec3( 1.0 ); - - #endif + vColor = vec3( 1.0 ); #endif diff --git a/src/renderers/webgl/WebGLProgram.js b/src/renderers/webgl/WebGLProgram.js index aba7ecef33bf9e704bd4812481ef60f4c017c6dd..4b58595358c32adac9a670ca7554877409b576d6 100644 --- a/src/renderers/webgl/WebGLProgram.js +++ b/src/renderers/webgl/WebGLProgram.js @@ -472,7 +472,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors ? '#define USE_COLOR' : '', - parameters.vertexAlpha ? '#define USE_VERTEX_ALPHA' : '', + parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', @@ -524,17 +524,13 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { '#endif', - '#ifdef USE_COLOR', + '#if defined( USE_COLOR_ALPHA )', - ' #ifdef USE_VERTEX_ALPHA', + ' attribute vec4 color;', - ' attribute vec4 color;', + '#elif defined( USE_COLOR )', - ' #else', - - ' attribute vec3 color;', - - ' #endif', + ' attribute vec3 color;', '#endif', @@ -617,7 +613,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) { parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '', - parameters.vertexAlpha ? '#define USE_VERTEX_ALPHA' : '', + parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '', parameters.vertexUvs ? '#define USE_UV' : '', parameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', diff --git a/src/renderers/webgl/WebGLPrograms.js b/src/renderers/webgl/WebGLPrograms.js index 45eed5f42ca0756a2a7ccbf78b5e0e1bb441e8a1..72a988879cf9d4a72731b2df7cb4d3263e4f204c 100644 --- a/src/renderers/webgl/WebGLPrograms.js +++ b/src/renderers/webgl/WebGLPrograms.js @@ -38,7 +38,7 @@ function WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingSta 'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV', 'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap', 'objectSpaceNormalMap', 'tangentSpaceNormalMap', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap', 'displacementMap', 'specularMap', 'roughnessMap', 'metalnessMap', 'gradientMap', - 'alphaMap', 'combine', 'vertexColors', 'vertexAlpha', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2', + 'alphaMap', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2', 'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning', 'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'premultipliedAlpha', 'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights', @@ -208,7 +208,7 @@ function WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingSta vertexTangents: ( material.normalMap && material.vertexTangents ), vertexColors: material.vertexColors, - vertexAlpha: ( ( object.isMesh || object.isLine || object.isPoints ) && object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4 ), + vertexAlphas: material.vertexColors === true && object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4, vertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap, uvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.transmissionMap ) && !! material.displacementMap,