提交 bcae10df 编写于 作者: N Nima

fixed nagative f in pow warning in shaders

上级 c12ca877
/** /**
* Shader chunks for WebLG Shader library * Shader chunks for WebLG Shader library
* *
* @author alteredq / http://alteredqualia.com/ * @author alteredq / http://alteredqualia.com/
* @author mrdoob / http://mrdoob.com/ * @author mrdoob / http://mrdoob.com/
* @author mikael emtinger / http://gomo.se/ * @author mikael emtinger / http://gomo.se/
...@@ -625,7 +625,7 @@ THREE.ShaderChunk = { ...@@ -625,7 +625,7 @@ THREE.ShaderChunk = {
" if ( spotEffect > spotLightAngleCos[ i ] ) {", " if ( spotEffect > spotLightAngleCos[ i ] ) {",
" spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );", " spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );",
" float lDistance = 1.0;", " float lDistance = 1.0;",
" if ( spotLightDistance[ i ] > 0.0 )", " if ( spotLightDistance[ i ] > 0.0 )",
...@@ -880,7 +880,7 @@ THREE.ShaderChunk = { ...@@ -880,7 +880,7 @@ THREE.ShaderChunk = {
" if ( spotEffect > spotLightAngleCos[ i ] ) {", " if ( spotEffect > spotLightAngleCos[ i ] ) {",
" spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );", " spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );",
// diffuse // diffuse
...@@ -1007,7 +1007,7 @@ THREE.ShaderChunk = { ...@@ -1007,7 +1007,7 @@ THREE.ShaderChunk = {
" vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );", " vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );",
" float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;", " float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;",
" float hemiSpecularWeightSky = specularStrength * max( pow( hemiDotNormalHalfSky, shininess ), 0.0 );", " float hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );",
// specular (ground light) // specular (ground light)
...@@ -1015,7 +1015,7 @@ THREE.ShaderChunk = { ...@@ -1015,7 +1015,7 @@ THREE.ShaderChunk = {
" vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );", " vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );",
" float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;", " float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;",
" float hemiSpecularWeightGround = specularStrength * max( pow( hemiDotNormalHalfGround, shininess ), 0.0 );", " float hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );",
" float dotProductGround = dot( normal, lVectorGround );", " float dotProductGround = dot( normal, lVectorGround );",
...@@ -1541,7 +1541,7 @@ THREE.ShaderChunk = { ...@@ -1541,7 +1541,7 @@ THREE.ShaderChunk = {
" vec3 shadowZ = vec3( shadowCoord.z );", " vec3 shadowZ = vec3( shadowCoord.z );",
" shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));", " shadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));",
" shadowKernel[0] *= vec3(0.25);", " shadowKernel[0] *= vec3(0.25);",
" shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));", " shadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));",
" shadowKernel[1] *= vec3(0.25);", " shadowKernel[1] *= vec3(0.25);",
...@@ -1664,7 +1664,7 @@ THREE.ShaderChunk = { ...@@ -1664,7 +1664,7 @@ THREE.ShaderChunk = {
// http://outerra.blogspot.com/2012/11/maximizing-depth-buffer-range-and.html // http://outerra.blogspot.com/2012/11/maximizing-depth-buffer-range-and.html
// WebGL doesn't support gl_FragDepth out of the box, unless the EXT_frag_depth extension is available. On platforms // WebGL doesn't support gl_FragDepth out of the box, unless the EXT_frag_depth extension is available. On platforms
// without EXT_frag_depth, we have to fall back on linear z-buffer in the fragment shader, which means that some long // without EXT_frag_depth, we have to fall back on linear z-buffer in the fragment shader, which means that some long
// faces close to the camera may have issues. This can be worked around by tesselating the model more finely when // faces close to the camera may have issues. This can be worked around by tesselating the model more finely when
// the camera is near the surface. // the camera is near the surface.
......
...@@ -507,7 +507,7 @@ THREE.ShaderLib = { ...@@ -507,7 +507,7 @@ THREE.ShaderLib = {
"uniform float mNear;", "uniform float mNear;",
"uniform float mFar;", "uniform float mFar;",
"uniform float opacity;", "uniform float opacity;",
THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ], THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
"void main() {", "void main() {",
...@@ -816,7 +816,7 @@ THREE.ShaderLib = { ...@@ -816,7 +816,7 @@ THREE.ShaderLib = {
" float specularNormalization = ( shininess + 2.0 ) / 8.0;", " float specularNormalization = ( shininess + 2.0 ) / 8.0;",
" vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( pointVector, pointHalfVector ), 5.0 );", " vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( pointVector, pointHalfVector ), 0.0 ), 5.0 );",
" pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance * specularNormalization;", " pointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance * specularNormalization;",
" }", " }",
...@@ -845,7 +845,7 @@ THREE.ShaderLib = { ...@@ -845,7 +845,7 @@ THREE.ShaderLib = {
" if ( spotEffect > spotLightAngleCos[ i ] ) {", " if ( spotEffect > spotLightAngleCos[ i ] ) {",
" spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );", " spotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );",
// diffuse // diffuse
...@@ -872,7 +872,7 @@ THREE.ShaderLib = { ...@@ -872,7 +872,7 @@ THREE.ShaderLib = {
" float specularNormalization = ( shininess + 2.0 ) / 8.0;", " float specularNormalization = ( shininess + 2.0 ) / 8.0;",
" vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( spotVector, spotHalfVector ), 5.0 );", " vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( spotVector, spotHalfVector ), 0.0 ), 5.0 );",
" spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * spotDistance * specularNormalization * spotEffect;", " spotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * spotDistance * specularNormalization * spotEffect;",
" }", " }",
...@@ -918,7 +918,7 @@ THREE.ShaderLib = { ...@@ -918,7 +918,7 @@ THREE.ShaderLib = {
" float specularNormalization = ( shininess + 2.0 ) / 8.0;", " float specularNormalization = ( shininess + 2.0 ) / 8.0;",
" vec3 schlick = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( dirVector, dirHalfVector ), 5.0 );", " vec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );",
" dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;", " dirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;",
" }", " }",
...@@ -951,7 +951,7 @@ THREE.ShaderLib = { ...@@ -951,7 +951,7 @@ THREE.ShaderLib = {
" vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );", " vec3 hemiHalfVectorSky = normalize( lVector + viewPosition );",
" float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;", " float hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;",
" float hemiSpecularWeightSky = specularTex.r * max( pow( hemiDotNormalHalfSky, shininess ), 0.0 );", " float hemiSpecularWeightSky = specularTex.r * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );",
// specular (ground light) // specular (ground light)
...@@ -959,14 +959,14 @@ THREE.ShaderLib = { ...@@ -959,14 +959,14 @@ THREE.ShaderLib = {
" vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );", " vec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );",
" float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;", " float hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;",
" float hemiSpecularWeightGround = specularTex.r * max( pow( hemiDotNormalHalfGround, shininess ), 0.0 );", " float hemiSpecularWeightGround = specularTex.r * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );",
" float dotProductGround = dot( normal, lVectorGround );", " float dotProductGround = dot( normal, lVectorGround );",
" float specularNormalization = ( shininess + 2.0 ) / 8.0;", " float specularNormalization = ( shininess + 2.0 ) / 8.0;",
" vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( lVector, hemiHalfVectorSky ), 5.0 );", " vec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );",
" vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 5.0 );", " vec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );",
" hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );", " hemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );",
" }", " }",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册