three.js - Adding SSAO shader pass -


i'm trying add ssao shader pass earlier fiddle result of: effectcomposer second pass "overwrites" first pass

unfortunately black screen created new fiddle update findings:

http://jsfiddle.net/mqt1ng2r/

creating depthshader , target depth shader render onto:

var depthshader = three.shaderlib[ "depthrgba" ]; var depthuniforms = three.uniformsutils.clone( depthshader.uniforms ); depthmaterial = new three.shadermaterial( { fragmentshader: depthshader.fragmentshader, vertexshader: depthshader.vertexshader, uniforms: depthuniforms } ); depthmaterial.blending = three.noblending;  depthtarget = new three.webglrendertarget( window.innerwidth, window.innerheight, { minfilter: three.nearestfilter, magfilter: three.nearestfilter, format: three.rgbaformat } ); 

creating ssao shader pas , adding composer

var effect = new three.shaderpass( three.ssaoshader ); effect.uniforms[ 'tdepth' ].value = depthtarget; effect.uniforms[ 'size' ].value.set( window.innerwidth, window.innerheight ); effect.uniforms[ 'cameranear' ].value = camera.near; effect.uniforms[ 'camerafar' ].value = camera.far; effect.rendertoscreen = true; composer.addpass( effect ); 

the render loop rendering scene override material set first befor composer rendered

requestanimationframe( animate ); //renderer.clear(); // changed -------------  scene.overridematerial = depthmaterial; renderer.render( scene, camera, depthtarget ); scene.overridematerial = null;  composer.render();  

a side question came able add rendering of scene depth target composer too?

reason question rendertarget different , override material set. couldnt find way do this, sound reasonable or miss using effect composer here?

found out ssao partially working if set effect.uniforms[ 'onlyao' ].value = 1; can see working setting 0 results in black screen. looking @ code of effectcomposer see happening.

hopefully can me out once again.

like said i'll update post , fiddle attempts

interesting links on subject:

edits:

  • added relevant snippets of code (posting here clutter question)
  • added interesting links
  • effect.uniforms[ 'onlyao' ].value = 1;


Comments