ThreeJS后期多场景渲染
需求:场景模型需要Bloom,ssao等后期特效,但人物模型不需要。
之前做过类似的需求,一个场景伽马校正,另一个不需要,实现方式是用同一个renderer和camera, 多个scene,将renderer.autoClear = false,然后分别渲染scene1,scene2
尝试了下这套方案不可取,因为现在renderer通过后期混合器调用来渲染,然后就是一顿上网查,国内没有相关信息,google一下发现5,6年前在stackoverflow上有人问过,但不了了之..
看下了renderPass的源码:
var RenderPass = function ( scene, camera, overrideMaterial, clearColor, clearAlpha ) {
Pass.call( this );
this.scene = scene;
this.camera = camera;
this.overrideMaterial = overrideMaterial;
this.clearColor = clearColor;
this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0;
this.clear = true;
this.clearDepth = false;
this.needsSwap = false;
};
发现RenderPass有clear属性可以利用下,新建一个renderPass在ssao后面,通过叠加的方式,可以实现需要的效果
function initEffect() {
let renderTargetParameters = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, stencilBuffer: true };
let renderTarget = new THREE.WebGLRenderTarget(window.innerWidth, window.innerHeight, renderTargetParameters);
composer = new EffectComposer(renderer, renderTarget);
renderPass = new RenderPass(scene, camera);
composer.addPass(renderPass);
var ssaoPass = new SSAOPass(scene, camera, window.innerWidth, window.innerHeight);
ssaoPass.kernelRadius = 16;
ssaoPass.maxDistance = 0.03;
ssaoPass.maxDistance = 0.1;
composer.addPass(ssaoPass);
renderPass2 = new RenderPass(scene2, camera);
renderPass2.clear = false
composer.addPass(renderPass2);
var bloomPass = new UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight));
bloomPass.threshold = 0;
bloomPass.strength = 0.1;
bloomPass.radius = 0;
composer.addPass(bloomPass);
}
done:)
ThreeJS后期多场景渲染的更多相关文章
- CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口
CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSh ...
- [ZZ] 景深效果(Depth of Field) , Pass1 将场景渲染到一个RenderTarget,做为清晰版, Pass2: BluredRT , Pass3: WDepth = Depth / Far_Z_Clip
http://blog.csdn.net/xoyojank/article/details/1883520 什么是景深效果? 景深效果,简称DOF,在人眼跟光学摄像设备上很常见.如下图: 简单地来 ...
- openGL 3.3+ 场景渲染
这个渲染程序是研一下学期的计算机图形学课程大作业,花了两三周学习使用了下 openGL 3.3+ 库,整合出了这个渲染程序,完成于 2013/07/05. 相对于老版本的库,新版本更开放,给了程序员更 ...
- OSG 3D场景渲染编程概述
OSG是Open Scene Graphic的缩写,是基于C++平台的使用OpenGL技术的开源3D场景开发. vs环境安装或者是在Ubuntu中环境的安装网上教程很多,都是大同小异的,认真操作容易成 ...
- Unity场景渲染相关实现的猜想
如下,很简单的一个场景,一个Panel,二个Cube,一个camera,一个方向光,其中为了避免灯光阴影的影响,关掉阴影,而Panel和二个Cube都是默认的材质,没做修改,我原猜,这三个模型应该都动 ...
- Unity3D 屏幕空间雪场景Shader渲染
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- threeJs构建3D世界
threejs官网 https://threejs.org/docs/index.html#manual/zh/introduction/Installation (官网非常的详细) 导入安装 npm ...
- threejs构建web三维视图入门教程
本文是一篇简单的webGL+threejs构建web三维视图的入门教程,你可以了解到利用threejs创建简单的三维图形,并且控制图形运动.若有不足,欢迎指出. 本文使用的框架是three.js gi ...
- 初识webgl--我的webgl学习第一课(基于threeJs)
一,我为什么要学习webgl 一个偶然的机会,在和朋友的聊天过程中,听说了webgl,也许过去也看到过,但是没有特别在意过.原来,JavaScript也可以很好的渲染并在网页上显示三维动画,不用借助插 ...
- threejs纹理
纹理 纹理用来表现物体的细节.理论上可以将物体的每个细节建模出来,但是这样时间成本和性能成本都太高,因此,将物体的一些细节用纹理来表示. 图片纹理 图片纹理直接在物体表面应用图片.可以使用Textur ...
随机推荐
- ABAP基础一:ALV样例
REPORT zly_report. *********Report Demo**************************************** *本程序主要将普通的ALV报表做拆分讲解 ...
- linux(Ubuntu22.04)二进制安装mysql及redis
安装MySQL 1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 解压压缩包 tar xf mysql-8.0.30-linux ...
- 20250620 - Bonding 攻击事件: 项目方不创建的池子由我攻击者来创建
背景信息 本次攻击涉及 Bonding 和 LBM 两种代币,用户可以通过 Bonding.buy() 用 USDC 购买 Bonding,当 Bonding 合约中的 USDC 累积超过一定阈值时会 ...
- vite vue3 全局批量注册组件
方式1-使用import.meta.glob 同webpack的 require.context一样,这个是vite提供的一个方法 import { createApp, defineAsyncCom ...
- Gym - 101147 & 队内自训#2 题解
A - The game of Osho 题意:每次给你G堆石子,每堆有\(n{_i}\)个,一次可挑走\(B{_i}^k\)个.最后不能选的人输.问最后先手赢还是后手赢. 思路:从SG表的方式入手. ...
- 多Agent协作入门:顺序编排模式
大家好,我是Edison. 上一篇我们学习了Semantic Kernel中的并发编排模式,它非常适合并行分析.独立子任务并集成决策的任务场景.今天,我们学习新的模式:顺序编排. 顺序编排模式简介 在 ...
- SciTech-BigDataAI-ImageProcessing-OpenCV-OpenCV modules
OpenCV modules https://docs.opencv.org/3.4/ Introduction OpenCV Tutorials OpenCV-Python Tutorials Op ...
- java线程池使用小技巧:自定义拒绝策略
java 线程池默认提供了几种拒绝策略: 这几个策略都实现了RejectedExecutionHandler,拿DiscardOldestPolicy来说,查看源码: 核心代码只有2行: e.getQ ...
- CPU 负载高,到底应不应该告警?
CPU 负载高,到底应不应该告警? 不告警吧,出了问题怕被怼,嫌你告警缺失 告警吧,好像全是噪音,工程师都自动忽略了 尴尬... 成年人的世界没有非黑即白,如果要严肃的论述,就要加很多限定词,为了避免 ...
- Win11 64位系统为什么无法设置分屏的问题
有些雨林木风官网的用户升级Win11 64位系统后,想要使用分屏功能的时候,却无法分屏,使用不上的问题,这是怎么回事呢?难道win11系统不能设置分屏吗?本文中,雨林木风小编就来分享具体的设置方法,有 ...