diff --git a/Source/Renderer/UniformState.js b/Source/Renderer/UniformState.js index 6c00ed0522c7..3abe699ca767 100644 --- a/Source/Renderer/UniformState.js +++ b/Source/Renderer/UniformState.js @@ -996,6 +996,7 @@ define([ Color.clone(frameState.backgroundColor, this._backgroundColor); this._minimumDisableDepthTestDistance = frameState.minimumDisableDepthTestDistance; + this._minimumDisableDepthTestDistance *= this._minimumDisableDepthTestDistance; if (this._minimumDisableDepthTestDistance === Number.POSITIVE_INFINITY) { this._minimumDisableDepthTestDistance = -1.0; } diff --git a/Source/Scene/BillboardCollection.js b/Source/Scene/BillboardCollection.js index 69633c448932..7cd3e39fdc92 100644 --- a/Source/Scene/BillboardCollection.js +++ b/Source/Scene/BillboardCollection.js @@ -1169,6 +1169,7 @@ define([ } var disableDepthTestDistance = billboard.disableDepthTestDistance; + disableDepthTestDistance *= disableDepthTestDistance; if (disableDepthTestDistance > 0.0) { billboardCollection._shaderDisableDepthDistance = true; if (disableDepthTestDistance === Number.POSITIVE_INFINITY) { diff --git a/Source/Scene/PointPrimitiveCollection.js b/Source/Scene/PointPrimitiveCollection.js index a5ba2dd3394a..9dd0d4bd690c 100644 --- a/Source/Scene/PointPrimitiveCollection.js +++ b/Source/Scene/PointPrimitiveCollection.js @@ -651,6 +651,7 @@ define([ } var disableDepthTestDistance = pointPrimitive.disableDepthTestDistance; + disableDepthTestDistance *= disableDepthTestDistance; if (disableDepthTestDistance > 0.0) { pointPrimitiveCollection._shaderDisableDepthDistance = true; if (disableDepthTestDistance === Number.POSITIVE_INFINITY) { diff --git a/Source/Shaders/BillboardCollectionVS.glsl b/Source/Shaders/BillboardCollectionVS.glsl index 528ad4736dec..2757474d9787 100644 --- a/Source/Shaders/BillboardCollectionVS.glsl +++ b/Source/Shaders/BillboardCollectionVS.glsl @@ -205,7 +205,7 @@ void main() /////////////////////////////////////////////////////////////////////////// -#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) float lengthSq; if (czm_sceneMode == czm_sceneMode2D) { @@ -260,16 +260,17 @@ void main() #ifdef DISABLE_DEPTH_DISTANCE float disableDepthTestDistance = distanceDisplayConditionAndDisableDepth.z; - if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) { + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { disableDepthTestDistance = czm_minimumDisableDepthTestDistance; } - if (disableDepthTestDistance != 0.0) { + if (disableDepthTestDistance != 0.0) + { gl_Position.z = min(gl_Position.z, gl_Position.w); bool clipped = gl_Position.z < -gl_Position.w || gl_Position.z > gl_Position.w; - float distance = length(positionEC.xyz); - if (!clipped && (disableDepthTestDistance < 0.0 || (distance > 0.0 && distance < disableDepthTestDistance))) + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) { gl_Position.z = -gl_Position.w; } diff --git a/Source/Shaders/PointPrimitiveCollectionVS.glsl b/Source/Shaders/PointPrimitiveCollectionVS.glsl index 9f00e44c0e8f..cdb0fa4faf4c 100644 --- a/Source/Shaders/PointPrimitiveCollectionVS.glsl +++ b/Source/Shaders/PointPrimitiveCollectionVS.glsl @@ -102,7 +102,7 @@ void main() /////////////////////////////////////////////////////////////////////////// -#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) float lengthSq; if (czm_sceneMode == czm_sceneMode2D) { @@ -153,16 +153,17 @@ void main() #ifdef DISABLE_DEPTH_DISTANCE float disableDepthTestDistance = distanceDisplayConditionAndDisableDepth.z; - if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) { + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { disableDepthTestDistance = czm_minimumDisableDepthTestDistance; } - if (disableDepthTestDistance != 0.0) { + if (disableDepthTestDistance != 0.0) + { gl_Position.z = min(gl_Position.z, gl_Position.w); bool clipped = gl_Position.z < -gl_Position.w || gl_Position.z > gl_Position.w; - float distance = length(positionEC.xyz); - if (!clipped && (disableDepthTestDistance < 0.0 || (distance > 0.0 && distance < disableDepthTestDistance))) + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) { gl_Position.z = -gl_Position.w; }