提交 0bd23ca9 编写于 作者: A alteredq

Added scene override material to RenderPass. Added mipmapped depth-of-field shader.

上级 5a87757b
......@@ -343,6 +343,63 @@ THREE.ShaderExtras = {
},
/* -------------------------------------------------------------------------
// Depth-of-field shader using mipmaps
// - from Matt Handley @applmak
// - requires power-of-2 sized render target with enabled mipmaps
------------------------------------------------------------------------- */
'dofmipmap': {
uniforms: {
tColor: { type: "t", value: 0, texture: null },
tDepth: { type: "t", value: 1, texture: null },
focus: { type: "f", value: 1.0 },
maxblur: { type: "f", value: 1.0 }
},
vertexShader: [
"varying vec2 vUv;",
"void main() {",
"vUv = vec2( uv.x, 1.0 - uv.y );",
"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
"}"
].join("\n"),
fragmentShader: [
"uniform float focus;",
"uniform float maxblur;",
"uniform sampler2D tColor;",
"uniform sampler2D tDepth;",
"varying vec2 vUv;",
"void main() {",
"vec4 depth = texture2D( tDepth, vUv );",
"float factor = depth.x - focus;",
"vec4 col = texture2D( tColor, vUv, 2.0 * maxblur * abs( focus - depth.x ) );",
"gl_FragColor = col;",
"gl_FragColor.a = 1.0;",
"}"
].join("\n")
},
/* -------------------------------------------------------------------------
// Sepia tone shader
// - based on glfx.js sepia shader
......
......@@ -2,10 +2,11 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE.RenderPass = function ( scene, camera ) {
THREE.RenderPass = function ( scene, camera, overrideMaterial ) {
this.scene = scene;
this.camera = camera;
this.overrideMaterial = overrideMaterial;
this.clear = true;
this.needsSwap = false;
......@@ -16,8 +17,12 @@ THREE.RenderPass.prototype = {
render: function ( renderer, writeBuffer, readBuffer, delta ) {
this.scene.overrideMaterial = this.overrideMaterial;
renderer.render( this.scene, this.camera, readBuffer, this.clear );
this.scene.overrideMaterial = null;
}
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册