【Shader】UnityShader那些莫名其妙的bug

目录

一、iOS环境

1、编辑器环境

①渲染超大贴图8192尺寸时,渲染情况异常

2、真机环境

二、安卓环境

1、编辑器环境

②渲染粒子特效小贴图时,渲染异常。(可能iOS环境也存在问题!)

三、PC环境


一、iOS环境

1、编辑器环境

①渲染超大贴图8192尺寸时,渲染情况异常

具体问题:一个粒子特效,渲染粒子贴图时透明混合无效了,就像是alpha值没有了一样,shader是简单的顶点片元着色器,采样了摄像机深度图和计算投影空间的自身深度进行基于深度的边缘检测,接着是各种混合贴图和噪声影响得到RGB,Alpha值最终取边缘检测值*一些乱七八糟的遮罩值等等输出,但就是透明混合跟没了一样。

解决方法:将贴图尺寸MaxSize改小 或 直接叫美术改小贴图

2、真机环境

暂无

二、安卓环境

1、编辑器环境

②渲染粒子特效小贴图时,渲染异常。(可能iOS环境也存在问题!)

具体问题:和iOS环境的①一样情况,当我将贴图转为小贴图时,可能也会出现同样的问题,即alpha值无效了!原因是iOS平台下的摄像机深度纹理并没有自动设置。

解决方案:获取摄像机组件camera,接着设置为深度贴图模式,具体代码如下,必须在渲染之前设置好这个参数。(注意可能设置了也无效,重启Unity试试看)

    private void OnEnable()
    {
        //设置摄像机的depthTextureMode,这样摄像机就会将摄像机计算出的屏幕深度纹理传递到Shader
        camera.depthTextureMode |= DepthTextureMode.Depth;
    }

三、PC环境

暂无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值