网站建设新闻 常识,网站建设五年发展规划,天津建网站的公司,wordpress 写php代码特效性能分析#xff1a;
1、粒子数量太多#xff0c;这个会对CPU的耗时产生一定的压力。 2、粒子的size太大#xff0c;这样容易导致渲染的像素数量非常高。 3、Overdraw非常高#xff0c;当场上粒子数非常高导致叠层很高#xff0c;会造成Overdraw很高#xff0c;这会…特效性能分析
1、粒子数量太多这个会对CPU的耗时产生一定的压力。 2、粒子的size太大这样容易导致渲染的像素数量非常高。 3、Overdraw非常高当场上粒子数非常高导致叠层很高会造成Overdraw很高这会对GPU造成一定的压力尤其在中低端设备上会造成性能的下降从而影响游戏表现如卡顿、发热等。
1、贴图信息 遍历特效的Material.mainTexture统计贴图数量使用反射调用函数统计贴图所占内存。 private static int GetStorageMemorySize(Texture texture) { return (int)InvokeInternalAPI(UnityEditor.TextureUtil, GetStorageMemorySize, texture); } 2、DrawCall 采用了UnityStats.batches的数值统计当前运行的粒子特效的Batches数量并不完全等同于DrawCall数量 3、粒子数量 通过反射调用函数进行统计。 #if UNITY_2017 m_CalculateEffectUIDataMethod typeof(ParticleSystem).GetMethoc(CalculateEffectUIData, Bind #else m_CalculateEffectUIDataMethod typeof(ParticleSystem).GetMethodCountSubEmitterParticles,E #endif 4、Overdraw 通过Camera.SetReplacementShader这个API全局地替换着色器为Overdraw.Shader。 public void SetCamera(Camera camera)_camera camera;camera.SetReplacementShader(Shader.Find(ParticleEffectProfiler/OverDraw), ); 该Shader使得像素每次通过片元着色器进行渲染时G值都会增加0.04。 fixed4 frag(v2f i) : SV_Targetreturn fixed4(0.1, 0.04, 0.02, 0); 将当前特效渲染在RenderTexture上进而转换为Texture逐像素统计RGB数值。将每个像素的G值除以0.04得到该像素实际绘制的次数。 public int DrawPixTimes(float r, float g, float b){return Convert.ToInt32(g/0.04); 遍历所有像素得到有颜色的像素数量特效原填充像素点GPU实际渲染的像素数量特效实际填充像素点从而得到重复比率。