|
@@ -81,7 +81,6 @@
|
|
|
camera.position.z = 200;
|
|
|
|
|
|
scene = new THREE.Scene();
|
|
|
- scene.background = new THREE.Color( bgColor );
|
|
|
|
|
|
//
|
|
|
|
|
@@ -111,6 +110,7 @@
|
|
|
//
|
|
|
|
|
|
renderer = new THREE.WebGLRenderer();
|
|
|
+ renderer.setClearColor( 0xffffff );
|
|
|
renderer.setPixelRatio( window.devicePixelRatio );
|
|
|
renderer.setSize( window.innerWidth, window.innerHeight );
|
|
|
container.appendChild( renderer.domElement );
|
|
@@ -191,6 +191,7 @@
|
|
|
// targets but the aliasing causes some temporal flickering
|
|
|
|
|
|
postprocessing.rtTextureDepth = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
|
|
|
+ postprocessing.rtTextureDepthMask = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
|
|
|
|
|
|
// Aggressive downsize god-ray ping-pong render targets to minimize cost
|
|
|
|
|
@@ -201,6 +202,16 @@
|
|
|
|
|
|
// god-ray shaders
|
|
|
|
|
|
+ var godraysMaskShader = THREE.ShaderGodRays[ "godrays_depthMask" ];
|
|
|
+ postprocessing.godrayMaskUniforms = THREE.UniformsUtils.clone( godraysMaskShader.uniforms );
|
|
|
+ postprocessing.materialGodraysDepthMask = new THREE.ShaderMaterial( {
|
|
|
+
|
|
|
+ uniforms: postprocessing.godrayMaskUniforms,
|
|
|
+ vertexShader: godraysMaskShader.vertexShader,
|
|
|
+ fragmentShader: godraysMaskShader.fragmentShader
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
var godraysGenShader = THREE.ShaderGodRays[ "godrays_generate" ];
|
|
|
postprocessing.godrayGenUniforms = THREE.UniformsUtils.clone( godraysGenShader.uniforms );
|
|
|
postprocessing.materialGodraysGenerate = new THREE.ShaderMaterial( {
|
|
@@ -323,6 +334,13 @@
|
|
|
scene.overrideMaterial = materialDepth;
|
|
|
renderer.render( scene, camera, postprocessing.rtTextureDepth, true );
|
|
|
|
|
|
+ //
|
|
|
+
|
|
|
+ postprocessing.godrayMaskUniforms[ "tInput" ].value = postprocessing.rtTextureDepth.texture;
|
|
|
+
|
|
|
+ postprocessing.scene.overrideMaterial = postprocessing.materialGodraysDepthMask;
|
|
|
+ renderer.render( postprocessing.scene, postprocessing.camera, postprocessing.rtTextureDepthMask );
|
|
|
+
|
|
|
// -- Render god-rays --
|
|
|
|
|
|
// Maximum length of god-rays (in texture space [0,1]X[0,1])
|
|
@@ -344,7 +362,7 @@
|
|
|
var stepLen = filterLen * Math.pow( TAPS_PER_PASS, -pass );
|
|
|
|
|
|
postprocessing.godrayGenUniforms[ "fStepSize" ].value = stepLen;
|
|
|
- postprocessing.godrayGenUniforms[ "tInput" ].value = postprocessing.rtTextureDepth.texture;
|
|
|
+ postprocessing.godrayGenUniforms[ "tInput" ].value = postprocessing.rtTextureDepthMask.texture;
|
|
|
|
|
|
postprocessing.scene.overrideMaterial = postprocessing.materialGodraysGenerate;
|
|
|
|