问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

three.js案例解读之多渲染目标

发布网友 发布时间:2024-09-28 01:16

我来回答

1个回答

热心网友 时间:2024-09-29 15:50

下图是多渲染目标的效果:

预备知识WebGLRenderTarget

什么是渲染目标?渲染目标是一种缓冲区。这个缓冲区用于缓存在显卡将图形显示在显示屏之前所执行的一些操作得到的绘图数据。

通常我们处理什么数据呢?

constimage={width:width,height:height,depth:1};this.texture=newTexture(image,options.mapping,options.wrapS,options.wrapT,options.magFilter,options.minFilter,options.format,options.type,options.anisotropy,options.encoding);

上面这段代码是WebGLRenderTarget构造器源码的核心代码。

可以看到three.js提供的这个离屏渲染对象WebGLRenderTarget主要用于处理计算量较大的纹理数据。

说到纹理,我们简单了解一下纹理的各个属性是什么含义,有什么作用。

wrapS,定义了在uv映射中横向纹理的包裹情况。

wrapT,定义了在uv映射中纵向纹理的包裹情况。

magFilter,定义了当一个纹素包含多于一个像素时,纹理如何采样。

minFilter,定义了当一个纹素包含少于一个像素时,纹理如何采样。

anisotropy,定义了纹素与像素之间的比例关系,值设置得越大,图形越精细。

离屏渲染functionrender(){renderer.setRenderTarget(renderTarget)renderer.render(scene,camera)renderer.setRenderTarget(null)renderer.render(postScene,postCamera)}setRenderTarget

该方法设置活跃rendertarget。在渲染目标不为空时,场景将不会被渲染出来,因为这个时候还在处理纹理数据。

第二次将渲染目标设置为空,此时场景中附加了纹理数据,将渲染带有纹理的场景。

这个就是离屏渲染。因为纹理处理通常都是比较耗时的,在后台处理好纹理数据后在渲染出场景,会提高渲染效率。

绘制纹理没有后处理的效果RawShaderMaterial

这个材质我们需要自定义它的顶点着色器和片段着色器,通过向着色器传递图形数据,我们可以控制纹理的处理逻辑。

scene.add(newTHREE.Mesh(newTHREE.BoxGeometry(1,1,1,64),newTHREE.RawShaderMaterial({vertexShader:document.querySelector('#gbuffer-vert').textContent.trim(),//顶点着色器fragmentShader:document.querySelector('#gbuffer-frag').textContent.trim(),//片段着色器uniforms:{tDiffuse:{value:diffuse},//纹理图片数据repeat:{value:newTHREE.Vector2(5,0.5)}},glslVersion:THREE.GLSL3})));

在着色器代码中有这样一段代码:

layout(location=0)outvec4pc_FragColor;

我们只需要知道,它是用来获取一个变量引用的,这个变量引用就是gl_FragColor。

这样,我们就完成了纹理的离屏渲染。

原文:https://juejin.cn/post/7101551219503529992
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 大数据是需要新处理模式,才能具有更强的能力的海量和多样化的信息资产... 博德之门3希望之邸怎么去,博德之门3希望之邸怎么去 昆明汽车甲醛检测服务费 英语题!翻译一下! 博德之门3月出之塔怎么去-月出之塔前往方法 ...A.华北平原、云贵高原 B.黄土高原、东南丘陵 C.长江中 世界最大的黄土堆积区在( )A.黄土高原B.华北平原C.东北平原D.四川盆 下列位于南方地区的地形区是( )A.黄土高原B.华北平原C.东北平原D... ...最丰富的是( )A.东南丘陵B.东北平原C.黄土高原D.横断山 下图中地形区①为 [ ] A.内蒙古高原B.黄土高原C.华北平原D.东北平 为什么别人的微信没有添加我为好友的功能? ...A.东北平原 B.华北平原 C.内蒙古高原 D.黄土高 我国北方最缺水的农耕区是( )A.东北平原B.华北平原C.黄土高原D... ...之乡”特征的是( )A.东北平原B.内蒙古高原C.黄土高原D. 下列地区人口合理容量最小的是( )A.东北平原B.华北平原C.黄土高原... qq隐身后状态不见了? QQ隐身别人能看见吗? qq炫舞环球旅行北极任务没有宠物怎么办 第一个任务匹配3次未完成_百 ... QQ炫舞新版本多宠跨区pk如何进行天梯匹配赛? 我台式电脑CPU90度 Three.js展示GLB文件 《神武4》怎么养4个孩子介绍_《神武4》怎么养4个孩子是什么 呼伦贝尔哪有卖驻车加热器的啊?顺便说说这东西怎么样啊? 有谁安过... 博德之门3轻羽树皮在哪 博德之门3邪念专属装备怎么获取 什么都说谢谢的人,你心理会有反感的表现吗? 博德之门3轻语树皮在哪 博德之门3轻语树皮位置介绍 ...子发想你啊之类的短信,时间长了她是会高兴还是会觉得烦,谢谢... 高德地图搜不到卫星信号怎么办? 苹果6发烫怎么解决 ...风暴英雄》背叛者伊利丹详细攻略介绍是什么 风暴英雄天赋介绍(风暴英雄快速选天赋) 2018昌河汽车昌河北斗星空调系统介绍 昌河汽车2014款 有带空调的吗? 如何护理头发才是正确的? 实用的护发技巧有哪些? 如何正确进行护发步骤以防止头发问题? 男生看到女生发出去玩照片,评论说好好玩啊(玩的开心的意思),是正常朋... 男生真正喜欢女生的表现 复读学校的收费标准? 长沙同升湖复读学校