博客
关于我
[Unity 优化]Shader
阅读量:709 次
发布时间:2019-03-21

本文共 1582 字,大约阅读时间需要 5 分钟。

igneous

文档内容:

Shader 变种

multi_compile

通过代码控制关键字开关,一定会编译生成变种。

shader_feature

通常由材质控制是否启用,由材质和ShaderVariantCollection决定是否生成变种。如果在AB文件里将Shader与材质球一同打包,才能灵活获取所需的shader_feature。

skip_variants

可用于剪裁某些变种,避免压缩或优化资源。

Graphics 设置

如果设置了“Always Included Shaders”,游戏运行时会将所有变种打包到资源中,确保它们被加载和缓存。

过多变种会导致ShaderLab内存占用增大,影响Shader.Parse(编译)和Shader.CreateGpuProgram(创建CPU执行程序片段)的性能,且变种过多可能会导致性能问题。

ShaderVariantCollection 使用

将其用于WarmUp,是为了优化Shader.CreateGpuProgram的性能,但不要同时使用多个ShaderVariantCollection进行WarmUp,更应该考虑将多个WarmUp过程合并。

合理使用ClearCurrentShaderVariantCollection和SaveCurrentShaderVariantCollection,合并多个 ShaderVariantCollection 提交摊销,让其高效管理多个版本以提高渲染效率。

Shader 打包 AB

将所有所需的Shader文件和ShaderVariantCollection打包到一个 AB 文件中,这样游戏运行时会全部加载并缓存,之后只需调用 ShaderVariantCollection的WarmUp即可同时预热所有变种,避免后续的Shader.Parse和Shader.CreateGpuProgram操作。

注意事项

  • 如果仍然出现Shader.Parse错误,说明存在冗余资源,可能是未被清理的第三方插件或未加入Always Included Shaders的默认Shader。
  • 如果继续出现Shader.CreateGpuProgram错误,大会源于如下原因:
    • 某些Shader变种被不当添加到Always Included Shaders里,例如使用默认材质的Standard shader。
    • 某些Shader重复加载导致冗余。

依此类推,这些问题需要在预处理阶段就得深度分析和优化。

Shader 冗余

依托上述打AB的优化方式,如果仍然出现冗余,主要可能来自以下方面:

  • 第三方插件:如果项目中引入了第三方库或插件,可能会带来额外的Shader文件,但通过合理配置可以避免加载这些无关的资源。

  • 默认材质引用:未被适当移除的默认材质引用的Shader会在项目中存在,且未被加入Always Included Shaders的情况下,可能会导致冗余。

  • ShaderLab 内存占用

    如果发现ShaderLab内存占用异常大,第一反应应确认是否存在冗余Shader变种,特别是那些被不当地添加到了Always Included Shaders中的Standard材质相关Shader。

    此外,过多的变种使用不当会导致Renderer负担加重,尤其是那些大规模的)fbx文件导入的结构中使用的Standard材质,需要谨慎管理。

    通过定期清理冗余资源和调整不必要的变种生成设置,观察内存占用变化,确保ShaderLab能够高效运作。建议通过Profiler 工具查看 Assets/Shader 中重复出现的Shader文件数量,及时exclude 无用资源。

    希望这份优化后的文档能为您提供清晰的指导,帮助您高效使用和管理Shader资源。

    转载地址:http://wxyrz.baihongyu.com/

    你可能感兴趣的文章
    nginx反向代理解决跨域问题,使本地调试更方便
    查看>>
    nginx反向代理转发、正则、重写、负摘均衡配置案例
    查看>>
    Nginx反向代理配置
    查看>>
    Nginx启动SSL功能,并进行功能优化,你看这个就足够了
    查看>>
    nginx启动脚本
    查看>>
    Nginx和Tomcat的区别
    查看>>
    Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
    查看>>
    Nginx在Windows下载安装启动与配置前后端请求代理
    查看>>
    Nginx在开发中常用的基础命令
    查看>>
    Nginx基础知识点与使用场景梳理
    查看>>
    Nginx多域名,多证书,多服务配置,实用版
    查看>>
    nginx如何实现图片防盗链
    查看>>
    Nginx学习总结(10)——Nginx前后端分离将多个请求转发到多个Tomcat,负载均衡反向代理
    查看>>
    Nginx学习总结(11)——提高Nginx服务器的安全性,稳定性和性能的12种技巧
    查看>>
    Nginx学习总结(12)——Nginx各项配置总结
    查看>>
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    Nginx学习总结(15)—— 提升 Web 应用性能的十个步骤
    查看>>
    Nginx学习总结(1)——Nginx入门简介
    查看>>
    Nginx学习总结(2)——Nginx手机版和PC电脑版网站配置
    查看>>