フレーム バッファをぼかす必要があり、THREE.js を使用してフレーム バッファを取得する方法がわかりません。
シーン内の各テクスチャをぼかすのではなく、フレーム バッファ全体をぼかす必要があります。したがって、シェーダーでこれを行うのではなく、フレーム バッファーを読み取ってからブラーする必要があると思います。
これが私が試したことです:
初期化時に呼び出す:
var renderTarget = new THREE.WebGLRenderTarget(512, 512, {
wrapS: THREE.RepeatWrapping,
wrapT: THREE.RepeatWrapping,
minFilter: THREE.NearestFilter,
magFilter: THREE.NearestFilter,
format: THREE.RGBAFormat,
type: THREE.FloatType,
stencilBuffer: false,
depthBuffer: true
});
renderTarget.generateMipmaps = false;
各フレームで呼び出します。
var gl = renderer.getContext();
// render to target
renderer.render(scene, camera, renderTarget, false);
framebuffer = renderTarget.__webglFramebuffer;
console.log(framebuffer);
gl.flush();
if (framebuffer != null)
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
var width = height = 512;
var rdData = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, rdData);
console.log(rdData);
// render to screen
renderer.render(scene, camera);
が、framebuffer
でいっぱいです。私はこれを正しい方法で行っていますか?WebFramebuffer {}
rdData
0