发布时间:2023-06-26源自:未知 作者:admin阅读( )
例如 在cad光源中的平行光源怎么设置和应用
多光源有几个思路:
1.Uber Shader,这是比较常见的做法,就是把所有的光照计算合并成一个大的shader,最后点光源,平行光源,聚光灯全部在这个shader里处理,缺点是一个pass里要处理的内容非常多,而且一旦光照条件发生变化(比如添加了新的光源或者某个光源被剔除),则需要重新编译该shader,当然一般而言游戏引擎里shader都会预编译缓存的,这是three.js和babylonJS等引擎的常见做法,鉴于Uniform数量有硬件限制等,Uber Shader一般也会潜在地限制最大光源数量
2.Z-Prepass加多次遍历,这个方法的好处是比较灵活,早期在idSoftware的引擎里有应用,简单地说就是先关闭color attachment的写入(单纯写depth attachment要快2-4倍),只写一个简单的深度pass,然后有了深度,再关闭深度写入进行正常的光源遍历,找出每个物体的光源列表,然后每盏光源以模型为几何体执行一次光照计算(blend mode设置成add,one,one),最终把结果叠加起来,缺点是随着物体的增加draw call会大幅增加(尽快很多会被early z culling)
3.Deferred Rendering,这是近年来PC游戏引擎的主流做法,先绘制一个GBuffer,把光照计算需要的所有信息先写进texture,然后用光源的包围盒进行光照计算,一盏灯一个pass,但是不再区分物体,优点是光照计算量和场景复杂度无关(只和光源数量相关),缺点是GBuffer的绘制比较慢,需要消耗大量的带宽(早期也有很多引擎在努力减小这个部分的开销,这两年对GBuffer的压缩倒是比较少了,毕竟显卡越来越好了,但在移动平台上仍然会有性能问题),初次外延迟渲染一般来说需要multiple render target的支持(虽然没有也能做,但是效率会很差)
近年来也有很多针对z-prepass和deferred rendering绘制管线的变种,包括了deferred lighting(把光照和最终着色进一步拆分开),forward+, tile-based deferred rending, clustered shading(把GBuffer/ShadingBuffer分块,每块单独和灯光列表求交,进一步提高灯光的剔除效率并且省掉灯光包围盒的draw call)
上一篇:jkm-ak00b什么型号
下一篇:字体安装包放什么位置
中长跑的好处(中长跑的好处作文)
1、坚持中长跑锻炼能提高心血管系统功能。促进血液循环使心脏、血管系统发达。另外中长跑...刺激战场新手最多的地图(刺激战场哪个地图最好玩)
山顶屋顶,一直都是一个不错的隐藏地点,位置足够高,能够一览无遗,洞察周围敌人位置,...sad的反义词(happy)
sad(反义词)-happy small(比较级)-smaller hot(比较级)-hotter easy(比较级) -easier heavier(原级...蓝星花的花语(珍惜眼前,把握当下)
在蓝星花生长期间还需严格的控制水肥的施加,浇水时需根据土壤的干湿程度来补充水分,保...婴儿奶瓶十大品牌排行 婴儿奶瓶十大品牌排行榜图片
2.清洁奶嘴的时候不用另外使用清洁剂,清洁的时候应该把奶嘴翻过来,再用奶嘴刷清洗。如果...Copyright ©2008-2022 石柱百科网 版权所有
声明:本站部分内容来源于网络,如涉及侵权,请与我们联系,本站为非赢利性网站 不接受任何赞助和广告渝ICP备2023005114号-2