|
@@ -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 ) {
|