Unity RenderTexture 当作为 Camera.targetTexture 时,在某些安卓手机或模拟器无法显示或出现错乱 以及粒子无法正常显示
参考:
关于 RenderTexture 半透明粒子特效无法显示以及后续各类神奇问题的终极解决方案(大概)_半透明特效用rt有问题-CSDN博客
【Unity Shader】半透明特效在RenderTexture上的显示问题-CSDN博客
shader之——最常用的Blend_blend srcalpha one-CSDN博客
今天打包的时候遇到一个坑,就是用RenderTexture的时候,在某些手机上会显示黑屏,一查发现这是某些安卓设备才会出现的BUG(奇怪的是那台测试机是鸿蒙系统,懂的都懂)
解决方法也很简单,就是不能用RenderTexture资源,而改成动态代码创建即可解决这个BUG
同时解决了另一个RenderTexture的BUG,就是用RT的时候,Camera里的粒子物体,在RT上显示不正常,解决方法,例子的材质改成用 Moblile/Particels/Additive
另一个问题,除了粒子,发现diffuse之类的cutout材质,如果背后没有其他可渲染物体,则会直接看不见,怀疑是跟shader层级以及cutout的设置有关,目前暂时不知道怎么解决,好在pbr的standard材质里的cutout能正常渲染出来
using UnityEngine; using UnityEngine.UI; public class Test:MonoBehaviour{ public RawImage rawImage; public Camera cam; private RenderTexture m_renderTexture; private void Start(){ m_renderTexture=new RenderTexture(512,512,16,RenderTextureFormat.ARGB32); rawImage.texture=m_renderTexture; cam.targetTexture=m_renderTexture; //必须为 CameraClearFlags.SolidColor或CameraClearFlags.Depth,CameraClearFlags.Nothing 时会不显示 cam.clearFlags=CameraClearFlags.SolidColor; //CameraClearFlags.SolidColor时会有背景色,需要设置背景色透明 Color color=cam.backgroundColor; color.a=0f; cam.backgroundColor=color; } }
注意:Camera.clearFlags 必须为 CameraClearFlags.SolidColor或CameraClearFlags.Depth,CameraClearFlags.Nothing 时会不显示
CameraClearFlags.SolidColor:会有背景色,需要设置Camera背景色为透明
CameraClearFlags.Depth:不会清除上一次渲染的内容,会出现重叠花屏
使用以上方法将粒子系统制作的特效显示在 UI 时,需要注意粒子系统 Renderer 栏下的 Material、TrailMaterial 使用的 Shader ,在 Unity2019.4.28f1c1 使用 Legacy Shaders/Particels/Additive 的粒子特效无法实现背景透明,改成 Moblile/Particels/Additive
原文地址:https://www.cnblogs.com/kingBook/p/14160483.html
rt的问题:
1.鸿蒙跟部分安卓,电脑上正常,打包后黑屏
2.如果相机渲染无背景,即要渲染出透明背景的RT,半透明的部分会显示不正常
3.解决了上面的可以渲染半透明的背景后,有的图片在正常相机视角下看正常,在RT下看就变成黑色了(用不着A通道并且被填满,colormaskrgb,把A裁剪掉)
4.渲染出来的半透明部分颜色偏淡
5.RT的颜色是16位而不是24位时,由于位数不够导致的显示异常
如果美术给的要有透明效果的图片不存在A通道(一般是用黑色当背景),只有RGB,
则Alpha Source选From Gray Scale,从输入纹理 RGB 值的平均值生成 Alpha。否则默认用Input Texture Alpha,即用纹理自带的。
depth buffer要选24,否则有些东西可能会显示异常,例如那个假影子,就变成怪怪的,像多个多边形组合一样
Blend One OneMinusSrcAlpha 效果最好,但是背景图较亮的时候,特效也会变亮,要注意下
参考:https://blog.csdn.net/baicaishisan/article/details/79072127