浏览代码

Updated builds.

Mr.doob 11 年之前
父节点
当前提交
8f89488694
共有 2 个文件被更改,包括 239 次插入63 次删除
  1. 180 4
      build/three.js
  2. 59 59
      build/three.min.js

+ 180 - 4
build/three.js

@@ -17500,7 +17500,15 @@ THREE.ShaderChunk = {
 
 
 		"#ifdef USE_FOG",
 		"#ifdef USE_FOG",
 
 
-		"	float depth = gl_FragCoord.z / gl_FragCoord.w;",
+		"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+		"		float depth = gl_FragDepthEXT / gl_FragCoord.w;",
+
+		"	#else",
+
+		"		float depth = gl_FragCoord.z / gl_FragCoord.w;",
+
+		"	#endif",
 
 
 		"	#ifdef FOG_EXP2",
 		"	#ifdef FOG_EXP2",
 
 
@@ -19121,8 +19129,77 @@ THREE.ShaderChunk = {
 
 
 		"#endif"
 		"#endif"
 
 
-	].join("\n")
+	].join("\n"),
+
+	// LOGARITHMIC DEPTH BUFFER
+	// 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
+	// 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
+	// the camera is near the surface.
+
+	logdepthbuf_pars_vertex: [
+
+		"#ifdef USE_LOGDEPTHBUF",
+
+		"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+		"		varying float vFragDepth;",
+
+		"	#endif",
+
+		"	uniform float logDepthBufFC;",
+
+		"#endif",
+
+	].join('\n'),
+
+	logdepthbuf_vertex: [
+
+		"#ifdef USE_LOGDEPTHBUF",
+
+		"	gl_Position.z = log2(max(1e-6, gl_Position.w + 1.0)) * logDepthBufFC;",
 
 
+		"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+		"		vFragDepth = 1.0 + gl_Position.w;",
+
+		"#else",
+
+		"		gl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;",
+
+		"	#endif",
+
+		"#endif"
+
+	].join("\n"),
+
+	logdepthbuf_pars_fragment: [
+
+		"#ifdef USE_LOGDEPTHBUF",
+
+		"	uniform float logDepthBufFC;",
+
+		"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+		"		#extension GL_EXT_frag_depth : enable",
+		"		varying float vFragDepth;",
+
+		"	#endif",
+
+		"#endif"
+
+	].join('\n'),
+
+	logdepthbuf_fragment: [
+		"#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)",
+
+		"	gl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;",
+
+		"#endif"
+
+	].join("\n")
 
 
 };
 };
 
 
@@ -19324,6 +19401,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19343,6 +19421,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 
 
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "envmap_vertex" ],
 				THREE.ShaderChunk[ "envmap_vertex" ],
@@ -19364,11 +19443,13 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = vec4( diffuse, opacity );",
 			"	gl_FragColor = vec4( diffuse, opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
@@ -19424,6 +19505,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19439,6 +19521,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 
 
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "envmap_vertex" ],
 				THREE.ShaderChunk[ "envmap_vertex" ],
@@ -19468,11 +19551,13 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
@@ -19544,6 +19629,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19561,6 +19647,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 
 
 			"	vViewPosition = -mvPosition.xyz;",
 			"	vViewPosition = -mvPosition.xyz;",
 
 
@@ -19593,11 +19680,13 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "bumpmap_pars_fragment" ],
 			THREE.ShaderChunk[ "bumpmap_pars_fragment" ],
 			THREE.ShaderChunk[ "normalmap_pars_fragment" ],
 			THREE.ShaderChunk[ "normalmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
 				THREE.ShaderChunk[ "specularmap_fragment" ],
@@ -19635,6 +19724,7 @@ THREE.ShaderLib = {
 
 
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19650,6 +19740,7 @@ THREE.ShaderLib = {
 
 
 			"	gl_Position = projectionMatrix * mvPosition;",
 			"	gl_Position = projectionMatrix * mvPosition;",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "worldpos_vertex" ],
 				THREE.ShaderChunk[ "shadowmap_vertex" ],
 				THREE.ShaderChunk[ "shadowmap_vertex" ],
 
 
@@ -19666,11 +19757,13 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "map_particle_pars_fragment" ],
 			THREE.ShaderChunk[ "map_particle_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = vec4( psColor, opacity );",
 			"	gl_FragColor = vec4( psColor, opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_particle_fragment" ],
 				THREE.ShaderChunk[ "map_particle_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "alphatest_fragment" ],
 				THREE.ShaderChunk[ "color_fragment" ],
 				THREE.ShaderChunk[ "color_fragment" ],
@@ -19706,6 +19799,7 @@ THREE.ShaderLib = {
 			"varying float vLineDistance;",
 			"varying float vLineDistance;",
 
 
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19716,6 +19810,8 @@ THREE.ShaderLib = {
 			"	vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
 			"	vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
 			"	gl_Position = projectionMatrix * mvPosition;",
 			"	gl_Position = projectionMatrix * mvPosition;",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
+
 			"}"
 			"}"
 
 
 		].join("\n"),
 		].join("\n"),
@@ -19732,6 +19828,7 @@ THREE.ShaderLib = {
 
 
 			THREE.ShaderChunk[ "color_pars_fragment" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19743,6 +19840,7 @@ THREE.ShaderLib = {
 
 
 			"	gl_FragColor = vec4( diffuse, opacity );",
 			"	gl_FragColor = vec4( diffuse, opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "color_fragment" ],
 				THREE.ShaderChunk[ "color_fragment" ],
 				THREE.ShaderChunk[ "fog_fragment" ],
 				THREE.ShaderChunk[ "fog_fragment" ],
 
 
@@ -19763,11 +19861,13 @@ THREE.ShaderLib = {
 		},
 		},
 
 
 		vertexShader: [
 		vertexShader: [
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
 			"	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 			"}"
 			"}"
 
 
 		].join("\n"),
 		].join("\n"),
@@ -19777,10 +19877,22 @@ 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" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
-			"	float depth = gl_FragCoord.z / gl_FragCoord.w;",
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
+
+			"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+			"		float depth = gl_FragDepthEXT / gl_FragCoord.w;",
+
+			"	#else",
+
+			"		float depth = gl_FragCoord.z / gl_FragCoord.w;",
+
+			"	#endif",
+
 			"	float color = 1.0 - smoothstep( mNear, mFar, depth );",
 			"	float color = 1.0 - smoothstep( mNear, mFar, depth );",
 			"	gl_FragColor = vec4( vec3( color ), opacity );",
 			"	gl_FragColor = vec4( vec3( color ), opacity );",
 
 
@@ -19803,6 +19915,7 @@ THREE.ShaderLib = {
 			"varying vec3 vNormal;",
 			"varying vec3 vNormal;",
 
 
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -19810,6 +19923,7 @@ THREE.ShaderLib = {
 
 
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 
 
 			"}"
 			"}"
 
 
@@ -19820,10 +19934,14 @@ THREE.ShaderLib = {
 			"uniform float opacity;",
 			"uniform float opacity;",
 			"varying vec3 vNormal;",
 			"varying vec3 vNormal;",
 
 
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
+
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",
 			"	gl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
+
 			"}"
 			"}"
 
 
 		].join("\n")
 		].join("\n")
@@ -19962,8 +20080,10 @@ THREE.ShaderLib = {
 
 
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
 
 
 			"void main() {",
 			"void main() {",
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 
 
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 			"	gl_FragColor = vec4( vec3( 1.0 ), opacity );",
 
 
@@ -20335,6 +20455,7 @@ THREE.ShaderLib = {
 
 
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -20422,6 +20543,8 @@ THREE.ShaderLib = {
 
 
 			"	gl_Position = projectionMatrix * mvPosition;",
 			"	gl_Position = projectionMatrix * mvPosition;",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
+
 				//
 				//
 
 
 			"	vWorldPosition = worldPosition.xyz;",
 			"	vWorldPosition = worldPosition.xyz;",
@@ -20458,6 +20581,8 @@ THREE.ShaderLib = {
 
 
 			"varying vec3 vWorldPosition;",
 			"varying vec3 vWorldPosition;",
 
 
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
+
 			"void main() {",
 			"void main() {",
 
 
 			"	vec4 worldPosition = modelMatrix * vec4( position, 1.0 );",
 			"	vec4 worldPosition = modelMatrix * vec4( position, 1.0 );",
@@ -20465,6 +20590,8 @@ THREE.ShaderLib = {
 
 
 			"	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
 			"	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
+
 			"}"
 			"}"
 
 
 		].join("\n"),
 		].join("\n"),
@@ -20476,10 +20603,14 @@ THREE.ShaderLib = {
 
 
 			"varying vec3 vWorldPosition;",
 			"varying vec3 vWorldPosition;",
 
 
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
+
 			"void main() {",
 			"void main() {",
 
 
 			"	gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",
 			"	gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",
 
 
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
+
 			"}"
 			"}"
 
 
 		].join("\n")
 		].join("\n")
@@ -20502,6 +20633,7 @@ THREE.ShaderLib = {
 
 
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
+			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 
 
 			"void main() {",
 			"void main() {",
 
 
@@ -20509,6 +20641,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "morphtarget_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "skinning_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
+				THREE.ShaderChunk[ "logdepthbuf_vertex" ],
 
 
 			"}"
 			"}"
 
 
@@ -20516,6 +20649,8 @@ THREE.ShaderLib = {
 
 
 		fragmentShader: [
 		fragmentShader: [
 
 
+			THREE.ShaderChunk[ "logdepthbuf_pars_fragment" ],
+
 			"vec4 pack_depth( const in float depth ) {",
 			"vec4 pack_depth( const in float depth ) {",
 
 
 			"	const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );",
 			"	const vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );",
@@ -20528,7 +20663,17 @@ THREE.ShaderLib = {
 
 
 			"void main() {",
 			"void main() {",
 
 
-			"	gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );",
+				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
+
+			"	#ifdef USE_LOGDEPTHBUF_EXT",
+
+			"		gl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );",
+
+			"	#else",
+
+			"		gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );",
+
+			"	#endif",
 
 
 				//"gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z / gl_FragCoord.w );",
 				//"gl_FragData[ 0 ] = pack_depth( gl_FragCoord.z / gl_FragCoord.w );",
 				//"float z = ( ( gl_FragCoord.z / gl_FragCoord.w ) - 3.0 ) / ( 4000.0 - 3.0 );",
 				//"float z = ( ( gl_FragCoord.z / gl_FragCoord.w ) - 3.0 ) / ( 4000.0 - 3.0 );",
@@ -20569,6 +20714,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 	_antialias = parameters.antialias !== undefined ? parameters.antialias : false,
 	_antialias = parameters.antialias !== undefined ? parameters.antialias : false,
 	_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,
 	_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,
 	_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,
 	_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,
+	_logarithmicDepthBuffer = parameters.logarithmicDepthBuffer !== undefined ? parameters.logarithmicDepthBuffer : false,
 
 
 	_clearColor = new THREE.Color( 0x000000 ),
 	_clearColor = new THREE.Color( 0x000000 ),
 	_clearAlpha = 0;
 	_clearAlpha = 0;
@@ -20729,6 +20875,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 	var _glExtensionTextureFilterAnisotropic;
 	var _glExtensionTextureFilterAnisotropic;
 	var _glExtensionCompressedTextureS3TC;
 	var _glExtensionCompressedTextureS3TC;
 	var _glExtensionElementIndexUint;
 	var _glExtensionElementIndexUint;
+	var _glExtensionFragDepth;
 	
 	
 
 
 	initGL();
 	initGL();
@@ -24645,6 +24792,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			fogExp: fog instanceof THREE.FogExp2,
 			fogExp: fog instanceof THREE.FogExp2,
 
 
 			sizeAttenuation: material.sizeAttenuation,
 			sizeAttenuation: material.sizeAttenuation,
+			logarithmicDepthBuffer: _logarithmicDepthBuffer,
 
 
 			skinning: material.skinning,
 			skinning: material.skinning,
 			maxBones: maxBones,
 			maxBones: maxBones,
@@ -24844,6 +24992,13 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 			_gl.uniformMatrix4fv( p_uniforms.projectionMatrix, false, camera.projectionMatrix.elements );
 			_gl.uniformMatrix4fv( p_uniforms.projectionMatrix, false, camera.projectionMatrix.elements );
 
 
+			if ( _logarithmicDepthBuffer ) {
+
+				_gl.uniform1f(p_uniforms.logDepthBufFC, 2.0 / (Math.log(camera.far + 1.0) / Math.LN2));
+
+			}
+
+
 			if ( camera !== _currentCamera ) _currentCamera = camera;
 			if ( camera !== _currentCamera ) _currentCamera = camera;
 
 
 		}
 		}
@@ -26680,6 +26835,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 			}
 			}
 		}
 		}
 
 
+		if ( _logarithmicDepthBuffer ) {
+
+			_glExtensionFragDepth = _gl.getExtension( 'EXT_frag_depth' );
+
+		}
+
 	};
 	};
 
 
 	function setDefaultGLState () {
 	function setDefaultGLState () {
@@ -26962,6 +27123,10 @@ THREE.WebGLProgram = ( function () {
 
 
 				parameters.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "",
 				parameters.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "",
 
 
+				parameters.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "",
+				//_this._glExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "",
+
+
 				"uniform mat4 modelMatrix;",
 				"uniform mat4 modelMatrix;",
 				"uniform mat4 modelViewMatrix;",
 				"uniform mat4 modelViewMatrix;",
 				"uniform mat4 projectionMatrix;",
 				"uniform mat4 projectionMatrix;",
@@ -27058,6 +27223,9 @@ THREE.WebGLProgram = ( function () {
 				parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
 				parameters.shadowMapDebug ? "#define SHADOWMAP_DEBUG" : "",
 				parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
 				parameters.shadowMapCascade ? "#define SHADOWMAP_CASCADE" : "",
 
 
+				parameters.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "",
+				//_this._glExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "",
+
 				"uniform mat4 viewMatrix;",
 				"uniform mat4 viewMatrix;",
 				"uniform vec3 cameraPosition;",
 				"uniform vec3 cameraPosition;",
 				""
 				""
@@ -27124,6 +27292,13 @@ THREE.WebGLProgram = ( function () {
 
 
 		}
 		}
 
 
+		if ( parameters.logarithmicDepthBuffer ) {
+
+			identifiers.push('logDepthBufFC');
+
+		}
+
+
 		for ( var u in uniforms ) {
 		for ( var u in uniforms ) {
 
 
 			identifiers.push( u );
 			identifiers.push( u );
@@ -27175,6 +27350,7 @@ THREE.WebGLProgram = ( function () {
 	};
 	};
 
 
 } )();
 } )();
+
 THREE.WebGLShader = ( function () {
 THREE.WebGLShader = ( function () {
 
 
 	var addLineNumbers = function ( string ) {
 	var addLineNumbers = function ( string ) {

文件差异内容过多而无法显示
+ 59 - 59
build/three.min.js


部分文件因为文件数量过多而无法显示