IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity项目升级支持HDRP管线实践 -> 正文阅读

[游戏开发]Unity项目升级支持HDRP管线实践

本文地址:https://blog.csdn.net/t163361/article/details/127530893

前段时间把产品从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导致报错
    删掉就不会报错了,貌似也没啥问题。
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:54:29  更:2022-11-05 00:54:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:22:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码