Performance Unity 2d,多层背景透照
这个问题的定义很简单,但我无法找到一个简单或直接的解决方案。 我有一个背景,由几个不透明层组成:Performance Unity 2d,多层背景透照,performance,unity3d,2d,gpu-overdraw,Performance,Unity3d,2d,Gpu Overdraw,这个问题的定义很简单,但我无法找到一个简单或直接的解决方案。 我有一个背景,由几个不透明层组成: 梯度天空(1张,静态) 明亮的大山(1片,移动一点) 较暗[较近]的山脉(随机生成的几张图片,移动速度更快) 更暗[更近]的山脉,有一些细节(一些随机生成的图片,移动得更快) 我经历了透支:每一幅画都是一幅画接一幅画。每一层都是动态的,所以我不能只切割一半的天空或山的一半。然而,50%的图片只有一种纯色+全透明 问题1:防止背景透支的最佳做法是什么?考虑最简单的例子:背景天空(100%屏幕)+移动山
背景的外观:关于你的第一个问题,如果我理解正确,最简单的解决办法就是改变图片的z位置。关于你的第一个问题,如果我理解正确,最简单的解决方案是更改图片的z位置。在使用alpha的精灵和纹理时,为每一层、每一帧绘制相同的像素,这是导致过度绘制的基本原因。尝试避免将纹理压缩为RGB而不是RGBA当使用精灵和alpha纹理时,会为每个层、每个帧绘制相同的像素,这是导致过度绘制的基本原因。尝试避免将纹理压缩为RGB而不是RGBA回答:
- 首先,空场景渲染的成本应尽可能低。这意味着没有后处理,没有未优化的脚本等。简单的FPS计数器和低端设备的温度测量将在这里有所帮助
- 然后,着色器的选择最为重要。最简单的着色器形式是未照明/*。但是,它们不如默认着色器灵活(也可以认为是轻量级的)
- SetPassCalls可能是一个重要的主题,但对我来说,它并不是一个设备崩溃。从本质上讲,所有背景最好包含在一个图集中,共享同一个着色器,并且在两者之间不包含任何其他内容。通过这种方式,您可以拥有任意多个层,并且所有内容都将在一次绘制过程调用中绘制
- 最后,避免全屏动态照明。光源的照明应尽可能少,面积越小越好。照明质量也可以切换。我仍在和灯光作斗争,并试图将烘焙应用到我的任务中,但到目前为止,摆脱背景全屏灯光是一个巨大的FPS提升
- 首先,空场景渲染的成本应尽可能低。这意味着没有后处理,没有未优化的脚本等。简单的FPS计数器和低端设备的温度测量将在这里有所帮助
- 然后,着色器的选择最为重要。最简单的着色器形式是未照明/*。但是,它们不如默认着色器灵活(也可以认为是轻量级的)
- SetPassCalls可能是一个重要的主题,但对我来说,它并不是一个设备崩溃。从本质上讲,所有背景最好包含在一个图集中,共享同一个着色器,并且在两者之间不包含任何其他内容。通过这种方式,您可以拥有任意多个层,并且所有内容都将在一次绘制过程调用中绘制
- 最后,避免全屏动态照明。光源的照明应尽可能少,面积越小越好。照明质量也可以切换。我仍在和灯光作斗争,并试图将烘焙应用到我的任务中,但到目前为止,摆脱背景全屏灯光是一个巨大的FPS提升