threejs 反射的实现

引入库

// 主要
import { SSRPass, SSRPassParams } from 'three/examples/jsm/postprocessing/SSRPass';
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
// Gamma和ShaderPass主要做矫正用的,习惯写pass通道的时候加上
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
import { GammaCorrectionShader } from 'three/examples/jsm/shaders/GammaCorrectionShader';
// FXAA抗锯齿,常用抗锯齿,测试在SSRPass里好像几种AA抗锯齿都无效
import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader';

新建渲染目标:WebGLRenderTarget

 const target = new THREE.WebGLRenderTarget(
            width,//宽
            height,//高
            {
                minFilter: THREE.LinearFilter,
                magFilter: THREE.LinearFilter,
                format: THREE.RGBAFormat,
                stencilBuffer: false,
                type: THREE.FloatType,
                encoding: THREE.sRGBEncoding
            }
        )

通过EffectComposer混合后期处理

   ssrcomposer: EffectComposer = null;
   this.ssrcomposer = new EffectComposer(this.renderer, target);
        const ssrPass = new SSRPass({
            renderer: this.renderer,
            scene: this.scene,
            camera: this.camera,
            width: width,
            height: height,
            selects: object,//object是要反射的物体
            isPerspectiveCamera: true,
            isBouncing: true,
            groundReflector: null
        });// 反射衰减
        ssrPass.isDistanceAttenuation = true;
        // 反射距离
        ssrPass.maxDistance = 10;
        // 菲涅尔反应
        ssrPass.isFresnel = true;
        ssrPass.output = SSRPass.OUTPUT.Default;
        ssrPass.opacity = 0.5;
    
        this.ssrcomposer.addPass(ssrPass);

最后实时渲染

 if(this.ssrcomposer!=null){
            this.ssrcomposer.render(1)
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值