草庐IT

Unity项目升级支持HDRP管线实践

听星 2024-06-06 原文

本文地址:https://blog.csdn.net/t163361/article/details/127530893
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

前段时间把产品从Unity2018升级到Unity2021,遇到了一些小问题,整体过程比较顺利。
最近升级到HDRP,过程就比较坎坷了。
Unity版本2021.3.0f1c1
下面是踩坑记录。

加载Assetbundle场景效果和原场景效果不一致

我们的场景是美术单独用Unity打包的,和程序工程相互独立,然后生成assetbundle,主工程加载,发现效果对不上。
解决方案:

  • 解决效果不一致问题之前,一定要保证,使用相同的Unity版本,HDRP版本也要保持一致
  • 使用相同的RenderPipelineAsset。
    包括HDRenderPipelineAsset和HDRenderPipelineGlobalSettings两个文件,以及GlobalSettings中引用的VolumeProfiles和DiffusionProfileAssets文件。同时需要保证两个项目中的Graphics和Quality中设置的RenderPipelineAsset需要相同(Graphics和Quality可以设置不同的asset文件,但需要两个工程保持一致),其中GlobalSettings文件中的VolumeProfiles和DiffusionProfileAssets文件也需要保持一致。同时最关键的需要保证两个项目中以上所有文件对应的meta文件需要保持一致,不然会导致加载后索引不到对应的引用而产生画面差异。如果你发现场景光没啥大问题,但是某些场景物件有细微差别,那大概率是DiffusionProfileAssets文件不同导致的。
  • Decal无法看到的问题
    上面说所的文件不一致导致的,HDRenderPipelineAsset文件中有个开关Rendering->Decals.同时Unity2021.3.0f1c1对应的HDRP版本中有个Bug,Decal开关会影响到场景中物体的反射/金属度效果。
  • 远处的纹理分级模糊

    Quality中的Anisortopic Textures需要修改成Forced On
  • 场景中支持透明的纹理模糊闪烁
    关闭HDRenderPipelineAsset文件中的Rendering->Low res Transparency
  • 给相机设置的RenderTexture纹理半透丢失
    将HDRenderPipelineAsset文件中的Rendering->ColorBufferFormat设置为R16G16B16A16

功能失效

有一些功能在HDRP下面已经无法使用了

  • 所有使用OnPostRender支持的功能都失效
    此函数在HDRP中不支持,需要自己写CustomPass自己实现
  • Graphics.DrawMeshNow无法渲染模型
    此函数无法在HDRP中使用,需要自己写CustomPass,拿去pass中提供的CommandBuffer,然后调用DrawMesh函数渲染
  • GL.Draw和GL.Vector3等无法使用
    此函数无法在HDRP中使用,需要自己写CustomPass,拿去pass中提供的CommandBuffer,然后调用DrawMesh函数渲染。也有一些其他方案可以看这个贴子gl-draw-in-hdrp

功能异常

  • UI显示异常
    当UI使用Screen Space - Camera或者World Space时,UI也会被后处理所影响,需要把Enviroment中的VolumeMask和Probe Layer Mask关闭对应的后效
  • UI相机和场景相机叠加异常
    当UI相机和场景相机同时往一个Display输出时,UI相机会导致场景相机的效果异常,解决方案,把相机相机输出到RenderTexture作为UI的背景RawImage。官方文档里还有一些其他处理方案Working with UI in the High Definition Render Pipeline
  • ShaderGraph的半透混合支持不完整
    ShaderGraph中的Blending Mode所支持Alpha,Additive,Premultiply都无法生成 SrcAlpha OneMinusSrcApha这种混合方式,需要写HLSL的Shader才行。貌似自己手动改Material可以支持这种混合方式。
  • Shader中的Transparent有上限
    之前一些shader里面设置RenderQueue会设置的比较高比如
    Tags {“Queue”=“Transparent+800” “IgnoreProjector”=“True” “RenderType”=“Transparent”}
    现在貌似最高支持到"Queue"=“Transparent+500
  • 多相机半透出问题
    当Shader中的混合使用Blend SrcAlpha OneMinusSrcAlpha,导致半透里面混合了其他相机的画面。解决方案在Shader里面添加ColorMask RGB(同事查出来的)
  • Assetbundle打包的场景内物体显示不全
    当相机的Layer没有设置为Everything时,物体显示不全。
    开始使用测试场景有问题,后来用正式场景没问题了。猜测和不同工程中的Layer设置不一致有关系。

AssetBundle打包问题

  • AssetBundle中模型使用HDRP/Lit,关闭Decals选项失效
    12.1.3版本的HDRP和12.1.6版本的HDRP中Decal对应的Keyword发生了变化,导致老版本打的assetbundle在新版本里不生效。统一版本就好了
  • AssetBundle中模型的金属度贴图失效
    当使用命令行导入模型,设置金属度贴图时,Unity并没有正确触发_MaskMap对应shader变体的生成。设置好贴图后,重新设置一次shader就好了
  • 构建命令中包含-nographics导致报错
    删掉就不会报错了,貌似也没啥问题。

有关Unity项目升级支持HDRP管线实践的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  5. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  6. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  7. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  8. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  9. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  10. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

随机推荐