Skip to content

Commit 33bd7a2

Browse files
committed
Add support for log depth
1 parent 5cbded1 commit 33bd7a2

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

src/effects/SelectiveBloomEffect.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,12 @@ export class SelectiveBloomEffect extends BloomEffect {
334334
this.depthPass.initialize(renderer, alpha, frameBufferType);
335335
this.depthMaskPass.initialize(renderer, alpha, frameBufferType);
336336

337+
if(renderer.capabilities.logarithmicDepthBuffer) {
338+
339+
this.depthMaskPass.fullscreenMaterial.defines.LOG_DEPTH = "1";
340+
341+
}
342+
337343
if(frameBufferType !== undefined) {
338344

339345
this.renderTargetMasked.texture.type = frameBufferType;

src/materials/glsl/depth-mask.frag

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ void main() {
4444

4545
depth.x = texture2D(depthBuffer0, vUv).r;
4646

47+
#ifdef LOG_DEPTH
48+
49+
float d = pow(2.0, depth.x * log2(cameraNearFar.y + 1.0)) - 1.0;
50+
float a = cameraNearFar.y / (cameraNearFar.y - cameraNearFar.x);
51+
float b = cameraNearFar.y * cameraNearFar.x / (cameraNearFar.x - cameraNearFar.y);
52+
depth.x = a + b / d;
53+
54+
#endif
55+
4756
#endif
4857

4958
#if DEPTH_PACKING_1 == 3201
@@ -54,6 +63,15 @@ void main() {
5463

5564
depth.y = texture2D(depthBuffer1, vUv).r;
5665

66+
#ifdef LOG_DEPTH
67+
68+
float d = pow(2.0, depth.y * log2(cameraNearFar.y + 1.0)) - 1.0;
69+
float a = cameraNearFar.y / (cameraNearFar.y - cameraNearFar.x);
70+
float b = cameraNearFar.y * cameraNearFar.x / (cameraNearFar.x - cameraNearFar.y);
71+
depth.y = a + b / d;
72+
73+
#endif
74+
5775
#endif
5876

5977
bool isMaxDepth = (depth.x == 1.0);

src/passes/DepthPass.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class DepthPass extends Pass {
5151
renderPass.skipShadowMapUpdate = true;
5252
renderPass.ignoreBackground = true;
5353

54-
const clearPass = renderPass.getClearPass();
54+
const clearPass = renderPass.clearPass;
5555
clearPass.overrideClearColor = new Color(0xffffff);
5656
clearPass.overrideClearAlpha = 1;
5757

0 commit comments

Comments
 (0)