TMP的阴影性能如何
Posted UWATech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TMP的阴影性能如何相关的知识,希望对你有一定的参考价值。
1)TMP的阴影性能如何
2)CommandBuffer.DrawMeshInstanced无法画阴影问题
3)Unity编辑器在Require大量加载Lua文件时,经常报出not enough memory
4)场景制作的时候,2D资源受后处理调色影响比较大
这是第335篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:465082844
TextMeshPro
Q:请问TMP的阴影性能如何?TMP的描边没办法改成外描边吗?看起来Outline是内外都扩的,如果想要改成外扩只能改源码吗?
A1:UGUI的Outline会让对象多渲染n次,TMP的Outline并不会让对象的渲染次数增加,性能更好。
在这个Shader中把“+outline”删除,Outline就会只往外扩散了。
感谢Xuan@UWA问答社区提供了回答
A2:TMP的阴影性能非常不错,因为它使用的是基于距离场的渲染技术,这种技术可以在保持高质量的情况下减少渲染时间。这意味着,即使在文本中使用多个阴影效果,也可以获得良好的性能表现。
至于TMP的描边效果,它是支持外描边的。默认情况下,TMP的描边是内外都扩的,但是你可以通过更改材质属性来将其改为外描边。
具体来说,你可以在使用TMP组件的对象上找到对应的材质,然后将材质的Outline Width属性设置为负数,这样就可以将描边扩展到文本的外部。
需要注意的是,TMP的材质是使用ShaderLab语言编写的,如果需要修改其内部逻辑,可能需要一定的编程知识。但是,对于简单的修改,例如更改描边效果,你可以尝试使用Shader Graph工具来简化修改过程。
感谢NG週@UWA问答社区提供了回答
Rendering
Q:想用CommandBuffer.DrawMeshInstanced画阴影,使用的是URP的Lit Shader,ForwardLit 是可以的,且可以AfterRenderingOpaques。但是阴影是画不出来,请问有什么解决方法吗?以下是代码(代码不是原创):
https://forum.unity.com/threads/commandbuffer-drawmeshinstanced-shadowcasting.1343306/
部分代码截图:
针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/6455c52f66cf0b727a3226f9
Rendering
Q:场景制作的时候,要不要开着后处理,遇到的问题是2D资源受后处理调色影响比较大?
我们的情况比较复杂:
1. 从性能角度考虑,低配机型是不开后处理的
2. 2D角色、2D建筑、3D场景混合渲染
3. 有半解锁的战争迷雾效果
在这些需求下,场景制作跟后处理要怎么协同呢?
思考了几个方案都不太行:
1. 在UI相机画2D,但无法完美处理深度问题,因为场景的RT是缩放过的,但UI采用全分辨率
2. 2D片写入Stencil,有一些半透的云可能遮住2D片,写入Stencil处理的话可能会有明显的边界问题,且UberPost最后是全屏的,由于场景RT跟界面RT尺寸不同,Stencil也不对应
3. 将后处理的调色放到Opaque之后进行,但这样其他的半透则无法参与调色,且这种方案带来更多的RT切换,在移动端并不明智
现在想着是在不开后期的情况下设计场景,然后后期调色只是进行微调,尽量不影响2D,如果效果甚微的话,就不开启后期调色了,不知这样处理如何?主要是2D与3D混合的场景,不是说UI,UI相机本身是不开后期的,不知大家有什么方案?
针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/643e255a4530066a5c277d8f
Lua
Q:在Unity 2018编辑器上跑时,启动Require大量加载Lua文件时,经常报出not enough memory,很频繁但非必现,在Windows/Android/iOS上都不会,用的是toLua。
A:可以在编辑器里面用System.IO.File的接口读Lua,避开TextAsset在编辑器不能卸载的问题。或者尝试升级Lua版本。
感谢欧月松@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844
提高点光源的阴影贴图性能?
【中文标题】提高点光源的阴影贴图性能?【英文标题】:Improving shadow map performance of point lights? 【发布时间】:2013-06-02 07:11:44 【问题描述】:我正在使用阴影贴图制作点光源,目前我使用六个深度贴图纹理完成了它,每个纹理都单独渲染并应用于光照贴图。这工作得很好,但性能成本很高。
现在,为了通过减少深度贴图着色器和光照贴图着色器之间的 FBO 更改和着色器交换来提高性能,我正在考虑几种方法。第一个涉及拥有一个比阴影贴图大六倍的纹理,并“一次”渲染所有点光深度图,然后使用此纹理在一次调用中布置光照贴图。是否可以只渲染部分纹理?
为了详细说明第一个示例,它会是这样的:
1. Set shadow map size to 128x128
2. Create a depth map texture of 384x256 (3 x 2 shadow map)
3. Render the first 'side' of a point light to the rectangle (0, 0, 128, 128)
4. Render the second 'side' to the rectangle (128, 0, 128, 128)
5. - 9. Render the other 'sides' in a similar manner
10. Swap to light map mode
11. Render the light map in a single call using the 'cube-map'-ish depth texture
我认为的第二种方法是使用 3D 纹理而不是部分渲染,但我仍然有一个类似的问题:我可以只渲染 3D 纹理的某个“层”而保留其他层吗?
【问题讨论】:
实际使用几何着色器进行分层渲染怎么样? opengl.org/wiki/Geometry_Shader#Layered_rendering @Grimmy 这可能行得通,但出于兼容性目的,我尽量不使用 GS。 我不知道你对阴影贴图了解多少,阴影应该有什么质量。所以我想提一些技术,如 Cascaded Shadow Maps、Variance Shadow Maps 和 Perspective Shadow Maps,您可能应该在尝试之前考虑这些技术进行优化。因为根据您使用的技术,您可以用来优化的技术有限。 您可以同时支持(GS 和非 GS)版本。说到性能,很难说你会从中获得什么。过去我做了太多“明显的优化”,导致完全没有收获。也许你是对的,有一种更快的方法..谁知道.. :) 【参考方案1】:为什么组合阴影贴图会有优势?
你必须渲染场景六次。
您可以渲染 6 次 128x128 FBO,然后创建 256x384 纹理并用之前渲染的纹理填充它。但是每个像素的带宽和采样率保持不变。
在保留其他部分的同时渲染一个部分可能会使用模板缓冲区完成,但在这种情况下,我看不到创建组合阴影贴图的任何意义。
希望这会有所帮助。任何反馈将不胜感激。
【讨论】:
以上是关于TMP的阴影性能如何的主要内容,如果未能解决你的问题,请参考以下文章