2017-05-11 15 views
0

私は光scrattringを作るしようとしているコードThreejsは画面

var renderTargetParameters = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, stencilBuffer: false,depthBuffer:false }, 
     renderTargetOcl = new THREE.WebGLRenderTarget(SCREEN_WIDTH/4, SCREEN_HEIGHT/4, renderTargetParameters); 

    var effectFXAA = new THREE.ShaderPass(THREE.ShaderExtras[ "fxaa" ]); 
    effectFXAA.uniforms[ 'resolution' ].value.set(1/SCREEN_WIDTH, 1/SCREEN_HEIGHT); 

    let hblur = new THREE.ShaderPass(THREE.ShaderExtras[ "horizontalBlur" ]); 
    let vblur = new THREE.ShaderPass(THREE.ShaderExtras[ "verticalBlur" ]); 

    var bluriness = 2; 

    hblur.uniforms[ 'h' ].value = bluriness/SCREEN_WIDTH*2; 
    vblur.uniforms[ 'v' ].value = bluriness/SCREEN_HEIGHT*2; 

    var renderModel = new THREE.RenderPass(this.scene, this.camera); 
    var renderModelOcl = new THREE.RenderPass(this.oclscene, this.oclcamera); 

    let grPass = new THREE.ShaderPass(THREE.ShaderExtras['Godrays']); 
    grPass.needsSwap = true; 
    grPass.renderToScreen = false; 

    var finalPass = new THREE.ShaderPass(THREE.ShaderExtras['Additive']); 
    finalPass.needsSwap = true; 
    finalPass.renderToScreen = true; 

    let oclcomposer = new THREE.EffectComposer(this.renderer, renderTargetOcl); 

    oclcomposer.addPass(renderModelOcl); 
    oclcomposer.addPass(hblur); 
    oclcomposer.addPass(vblur); 
    oclcomposer.addPass(hblur); 
    oclcomposer.addPass(vblur); 
    oclcomposer.addPass(grPass); 



    let renderTarget = new THREE.WebGLRenderTarget(SCREEN_WIDTH, SCREEN_HEIGHT, renderTargetParameters); 

    let finalcomposer = new THREE.EffectComposer(this.renderer, renderTarget); 

    finalcomposer.addPass(renderModel); 
    // finalcomposer.addPass(effectFXAA); 
    finalcomposer.addPass(finalPass); 

    finalPass.uniforms[ 'tAdd' ].value = oclcomposer.renderTarget1.texture; 

にレンダリングと異なるテクスチャの結果を返すWebGLRenderTarget。

設定grPass.renderToScreen =はtrue。およびfinalPass.renderToScreen = false;私は正しい結果を得ました。つまり、最初の作曲家はうまくいきます。

私は平面材料にテクスチャとしてoclcomposerを使用していますが、それは間違った結果が得られます。光が輝く維持し、緑と黄色のリングがそれをaroudています。

私が望む結果はenter image description hereのように常に輝いていないし、青い色しかありません。一度スクリーンを切断すると間違った結果が消えます。

以上のことから、私はそれが間違った結果を得るレンダーからだと思う、それはテクスチャ

答えて

0

ああ、私はgrPass.needsSwapが= falseを設定すると、それはバージョン変更を好きworks.Seemを変更するものは考えていません。