Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions examples/jsm/shaders/GTAOShader.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,12 @@ const GTAOShader = {
#define FRAGMENT_OUTPUT vec4(vec3(ao), 1.)
#endif

vec3 getViewPosition(const in vec2 screenPosition, const in float depth) {
vec4 clipSpacePosition = vec4(vec3(screenPosition, depth) * 2.0 - 1.0, 1.0);
vec3 getViewPosition( const in vec2 screenPosition, const in float depth ) {
#ifdef USE_REVERSED_DEPTH_BUFFER
vec4 clipSpacePosition = vec4( vec2( screenPosition ) * 2.0 - 1.0, depth, 1.0 );
#else
vec4 clipSpacePosition = vec4( vec3( screenPosition, depth ) * 2.0 - 1.0, 1.0 );
#endif
vec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;
return viewSpacePosition.xyz / viewSpacePosition.w;
}
Expand Down Expand Up @@ -154,10 +158,19 @@ const GTAOShader = {

void main() {
float depth = getDepth(vUv.xy);
if (depth >= 1.0) {
discard;
return;
}

#ifdef USE_REVERSED_DEPTH_BUFFER
if (depth <= 0.0) {
discard;
return;
}
#else
if (depth >= 1.0) {
discard;
return;
}
#endif

vec3 viewPos = getViewPosition(vUv, depth);
vec3 viewNormal = getViewNormal(vUv);

Expand Down
8 changes: 6 additions & 2 deletions examples/jsm/shaders/PoissonDenoiseShader.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,12 @@ const PoissonDenoiseShader = {

const vec3 poissonDisk[SAMPLES] = SAMPLE_VECTORS;

vec3 getViewPosition(const in vec2 screenPosition, const in float depth) {
vec4 clipSpacePosition = vec4(vec3(screenPosition, depth) * 2.0 - 1.0, 1.0);
vec3 getViewPosition( const in vec2 screenPosition, const in float depth ) {
#ifdef USE_REVERSED_DEPTH_BUFFER
vec4 clipSpacePosition = vec4( vec2( screenPosition ) * 2.0 - 1.0, depth, 1.0 );
#else
vec4 clipSpacePosition = vec4( vec3( screenPosition, depth ) * 2.0 - 1.0, 1.0 );
#endif
vec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;
return viewSpacePosition.xyz / viewSpacePosition.w;
}
Expand Down
32 changes: 17 additions & 15 deletions examples/jsm/shaders/SAOShader.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,17 +86,6 @@ const SAOShader = {

#include <packing>

#ifdef USE_REVERSED_DEPTH_BUFFER

const float depthThreshold = 0.0 + EPSILON;

#else

const float depthThreshold = 1.0 - EPSILON;

#endif


vec4 getDefaultColor( const in vec2 screenPosition ) {
#if DIFFUSE_TEXTURE == 1
return texture2D( tDiffuse, vUv );
Expand Down Expand Up @@ -164,9 +153,15 @@ const SAOShader = {
angle += ANGLE_STEP;

float sampleDepth = getDepth( sampleUv );
if( sampleDepth >= depthThreshold ) {
#ifdef USE_REVERSED_DEPTH_BUFFER
if( sampleDepth <= 0.0 + EPSILON ) {
continue;
}
#else
if( sampleDepth >= 1.0 - EPSILON ) {
continue;
}
#endif

float sampleViewZ = getViewZ( sampleDepth );
vec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );
Expand All @@ -181,9 +176,16 @@ const SAOShader = {

void main() {
float centerDepth = getDepth( vUv );
if( centerDepth >= depthThreshold ) {
discard;
}

#ifdef USE_REVERSED_DEPTH_BUFFER
if( centerDepth <= 0.0 + EPSILON ) {
discard;
}
#else
if( centerDepth >= 1.0 - EPSILON ) {
discard;
}
#endif

float centerViewZ = getViewZ( centerDepth );
vec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );
Expand Down
9 changes: 9 additions & 0 deletions src/cameras/CubeCamera.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,19 +203,27 @@ class CubeCamera extends Object3D {

renderTarget.texture.generateMipmaps = false;

// https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
const reversedDepthBuffer = !! ( renderer.isWebGLRenderer && renderer.state.buffers.depth.getReversed() );

renderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraPX );

renderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraNX );

renderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraPY );

renderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraNY );

renderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraPZ );

// mipmaps are generated during the last call of render()
Expand All @@ -224,6 +232,7 @@ class CubeCamera extends Object3D {
renderTarget.texture.generateMipmaps = generateMipmaps;

renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
renderer.render( scene, cameraNZ );

renderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
Expand Down
7 changes: 7 additions & 0 deletions src/core/Clock.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import { warn } from '../utils.js';

/**
* Class for keeping track of time.
*
* @deprecated since r183.
*/
class Clock {

/**
* Constructs a new clock.
*
* @deprecated since 183.
* @param {boolean} [autoStart=true] - Whether to automatically start the clock when
* `getDelta()` is called for the first time.
*/
Expand Down Expand Up @@ -53,6 +58,8 @@ class Clock {
*/
this.running = false;

warn( 'THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183

}

/**
Expand Down
3 changes: 2 additions & 1 deletion src/renderers/webgl/WebGLState.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,15 @@ function WebGLState( gl, extensions ) {

if ( currentDepthClear !== depth ) {

currentDepthClear = depth;

if ( currentReversed ) {

depth = 1 - depth;

}

gl.clearDepth( depth );
currentDepthClear = depth;

}

Expand Down