首页 > 其他分享 >Unity性能优化GPU渲染优化

Unity性能优化GPU渲染优化

时间:2024-05-20 10:54:17浏览次数:21  
标签:贴图 显存 模型 Unity 使用 GPU 优化

GPU优化不够容易出现 1.发热严重,耗电量高 2.FPS降低 GPU优化的方向: 1.像素的复杂度,比如实施阴影(手游中禁用),复杂的shader 2.顶点过多,也就是模型面数多、复杂 3.GPU的显存带宽   一、优化美术资源 1)合理规划图集 2)约定好模型的最大三角形面数 3)制定合理的粒子效果规范 4)减少模型数量,谷歌数量,使用法线贴图代替细节模型 使用平台推荐的压缩方式 1)安卓平台 ETC1 2)IOS平台PVRTC 简化或者优化Shader 1)少使用的函数:pow,sin,cos等 2)fixed、half、float慢慢斟酌着使用,切忌浪费,采取够用的类型就行 3)在游戏开始前就对Shader进行编译和加载。   二、减少绘制数目 1)保持材质的数目尽可能少。这使得Unity更容易进行批处理。 2)使用纹理图集(一张大贴图里包含了很多子贴图)来代替一系列单独的小贴图。它们可以更快地被加载,具有很少的状态转换,而且批处理更友好。 3)如果使用了纹理图集和共享材质,使用Renderer.sharedMaterial 来代替Renderer.material 。 4)使用光照纹理(lightmap)而非实时灯光。 5)使用LOD(细节级别渐变),好处就是对那些离得远,看不清的物体的细节可以忽略。也就是根据距离的远近使用不同模型级别,这样就可以减少模型上面的顶点和面片数量从而提高性能。 6)遮挡剔除(Occlusion culling)   三、优化显存带宽 1)压缩图片,减小显存带宽的压力。例如:可以通过减色的方式减少图片大小。许多UI其实用的色彩很少,用不到256色,这类图片就可以使用减色压缩。 2)使用MipMap(纹理贴图金字塔)贴图会根据摄像机距离模型的远近而调整不同的不同质量的贴图显示。 Mipmap中每一个层级的小图都是主图的一个特定比例的缩小细节的复制品。因为存了主图和它的那些缩小的复制品,所以内存占用会比之前大。但是为何又优化了显存带宽呢?因为可以根据实际情况,选择适合的小图来渲染。所以,虽然会消耗一些内存,但是为了图片渲染的质量(比压缩要好),这种方式也是推荐的。  

标签:贴图,显存,模型,Unity,使用,GPU,优化
From: https://www.cnblogs.com/weigangblog/p/18201412

相关文章

  • Unity性能优化内存优化
    如何优化内存?1.压缩自带类库;2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;3.释放AssetBundle占用的资源;4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图;6.使用多层次细节(LOD);7.使用着色器(Shader);8.使用预设(Prefab)等。 内存开......
  • Unity内存优化(来自uwa)
    内存优化——“勿以善小而不为,勿以恶小而为之” 资源内存占用一、纹理资源纹理资源可以说是几乎所有游戏项目中占据最大内存开销的资源。一个6万面片的场景,网格资源最大才不过10MB,但一个2048x2048的纹理,可能直接就达到16MB。因此,项目中纹理资源的使用是否得当会极大地影响......
  • Unity场景预加载
    async.allowSceneActivation=false;privateAsyncOperationasync;async=SceneManager.LoadSceneAsync("MainScene");async.allowSceneActivation=false;yieldreturnStartCoroutine(Loading());IEnumeratorLoading(){floatcurProgress......
  • Unity中Reorderable List用法(待维护)
    Unity官方文档里完全没有提到ReorderableList类,这是因为它不在UnityEngine或UnityEditor的命名空间下,而是在UnityEditorInternal命名空间下,这个命名空间里的东西是没有官方文档支持的 ReorderableList的作用它的作用,是让一个数组,在Unity的Inspector界面上显示得更好一些//......
  • Invalid URI at UnityEngineInternal.WebRequestUtils.MakeInitialUrl (System.Stri
    问题背景:有一个项目用到3d模型,原来访问地址用的是域名,访问老是报跨域问题,于是换成了内网地址这么一换问题来了,控制台直接报错 FormatException:InvalidURIatUnityEngineInternal.WebRequestUtils.MakeInitialUrl(System.StringtargetUrl,System.StringlocalUrl)[0......
  • Unity是如何跨平台的
    做游戏肯定要跨平台,Unity是如何实现跨平台的,这就得提到Unity脚本后端处理(ScriptingBackend)的两种方式Mono和IL2Cpp Mono组成组件:C#编译器,CIL虚拟机,核心类别的程序库,Mono的编译器负责生成符合公共语言规范的映射代码Mono打包的主要流程:c#script,unityspcript和第三方库......
  • Unity渲染管线的流程
    来自https://www.jianshu.com/p/02eebbf9ad9a 渲染管线的流程是在GPU中进行的,它主要占有计算机的显存部分。渲染管线在这个过程中进行了顶点处理、面处理、光栅化、像素处理。 1.顶点处理3D模型是由众多点构成的面展现出来的。顶点处理:是通过一系列坐标系的变换,让每个......
  • Unity中的OnApplicationPause和OnApplicationFocus
    OnApplicationPause游戏进入后台和返回前台//游戏进入后台时执行该方法pause为true切换回前台时pause为falsevoidOnApplicationPause(boolpause){if(pause){//切换到后台时执行}else{//切换到前台时执行,游戏启动时执行一次}}......
  • Unity遮挡剔除使用
    (1)设置对象为遮挡物or被遮挡物选中某个对象后,在其Occlusion窗口可以设置其Occluder Static和OccludeeStatic属性:遮挡物通过勾选一个对象的OccluderStatic可将其设置为静态遮挡物。理想的遮挡物应该是实心的,体积较大的物体。原则1:可能阻挡到其它对象的对象才应该被设置......
  • SQL优化-20231016
    数据结构数据库的表和索引缺一不可表特点:无序,插入速度快,查找速度慢索引(B+Tree)特点:有序,插入速度慢,查找速度快查找的效率比较,如果按照读取的数据块来计算?测试数据TABLE_OWNERTABLE_NAMEINDEX_NAMECOLUMNS......