当前位置: 首页 > article >正文

Unity高渲染管线

Unity高清渲染管线—2

请添加图片描述

本节简要讲解HDRP文件中的字段

Rendering(渲染)

Color Buffer Format(颜色缓存格式):
一共有两种颜色缓存格式可以选择,区别在于是否包含Alpha通道
R11G11B10格式不包含Alpha通道,所以对性能方面要友好一些
但是如果想要将Unity渲染出来的画面合成到另外的图片上,那颜色缓存格式就要选择R16G16B16A16格式
注意:Color Buffer Format(颜色缓存格式)位置选择的颜色缓存格式一定要与下面Post—processing Quality Settings中的Buffer Format的选项相同

  • (这个是后期处理后面会讲,现在只用记住颜色的缓存格式和后期处理格式要相同就行)、
    List Shader Mode(Lit着色模式):
    这是HDRP材质默认的着色器,这个在后面材质相关的章节会详细的讲使用方法,我到时候在记录
    Motion Vectors(运动矢量):
    简单来说就是和渲染运动的物体有关,可以提示画面质量,如游戏中常用的动态模糊,如果不勾选那么相机组件的Post Anti—aliasing选项的Motion Vectors(运动矢量)就不能正常工作
    Runtime Debug Display(运行时Debug显示):
    这个选项启用后可以在运行时现实灯光和材质的信息,但是会增加项目的构建时间和着色器内存占用,在项目完成后导出包的时候建议禁用
    Dithering Cross-fade(平滑转换):
    这个是与场景中GameObject物体的LOD功能相关,主要用处在于可以让HDRP(高清渲染)在做LOD转换时更加平滑(什么是LOD转换不懂得可以去查一下,简单来说就是隔得远的物体就提华为粗糙的模型隔得近了在替换为精致的模型,这样减少渲染占用)
    Terrain Hole(地形洞):
    启用这个选项后会显示地形上的凹凸孔洞,目的也就是启动增加画面精致度,关闭减少性能需求
    Transparent Backface(透明背面):
    顾名思义,这个设置勾选上就会渲染透明材质的另一面,有个疑问,透明材质不是全部透明的吗,为什么会要渲染另一面,其实他针对的主要对象不是像冰块这种厚的上透明材质的物体,而是透明的面片,如玻璃,树叶,窗帘,给面片物体添加透明材质后一般只会在正面现实透明材质的渲染结果,如反光,当相机移动到物体的背面后透明的材质不会被渲染出来,也就是说物体的材质被无视了,那么就会是透明的,只有当这个选项被勾选上后才会在面片物体的背面去渲染材质出来
    这个选线还关系到Lit材质的Back Then Front Rendering选项(上一章说了HDRP配置文件属于渲染方面的大总管,他没有打开给功能在任何地方都不能打开)
    Transparent Depth Prepass(透明深度预处理):
    也是用于设置透明材质的渲染信息,关联到Lit材质中的Transparent Depth Prepass选项
    Transparent Depth Postpass(透明深度后处理):
    也是用于设置透明材质的渲染信息,同样关联到Lit材质中的Transparent Depth Postpass选项
    (以上3个功能都与Lit材质的透明设置相关,具体作用会在讲解Lit材质时用到)
    Custom Pass(自定义通道):
    这个属于高级的功能,简单介绍用途就是可以自定义渲染逻辑,突破渲染通道限制,这个后面会讲,如果不用的话就把他关闭掉节省性能就行
    Realtime Raytracing(实时光线追踪):
    也就是我们打游戏时常说的光追,这个没什么好说的,如果要用光线追踪那打开就行了
    LOD Bias(LOD偏差):
    这个 也是与LOD相关的设置,我的知道LOD是根据距离调整模型精度的,但是每个模型的LOD我们都需要单独去调整,但是同样的项目有不同配置的机型回去使用它,我们需要根据机器性能来调整物品的LOD数值(比如高性能机器远距离物体也会比较清晰,低性能机器相隔一点距离模型就开始变得低精度),我们无法每次都挨个去调整物体的LOD设置,这时候就可以调整HDRP的LOD Bias数值来统一调整物体的LOD层级。
    如果数值为1就是正常,如果数值为0.8就会让物体替换为低精度模型的距离缩短,如果数值为1.2就会让物体在更远的地方保持包精度模型
    用脚本控制:QualitySettings.lodBias = 1.5f;
    Maximum LOD Level(最大LOD级别):
    这个也是与全局LOD相关的设置,上面我们只是统一设置LOD距离来调整渲染模型的精度,这个设置则是直接调整模型的精度限制,顾名思义他可以限制模型的最大精度,可以填3个数值,分别是0(高模),1(中模),2(低模)根据数值的不同会限制项目的最大精度模型。
    那又有人疑问了,为什么要限制最大精度?当初制作的时候把精度设置好不就好了吗?关于着点的理由和上面的一样,都是为了项目在不同的设备上跑起来,直接统一调整限制
    用脚本控制:QualitySettings.maximumLODLevel = 1;
    Decals(贴花):
    我们在制作游戏的时候肯定会用到比如中单后出现的血迹,弹孔,物体突然出现的污渍等等
    在高清渲染管线项目中都可以通过一个叫​Decal Projector(贴花投影器)​的组件来实现,他的原理是不改变物体本身的材质以投影的方式将图片贴上去,将启用贴画的按钮勾选上后就可以在下面调整所有贴花相关的信息
    贴花设置
    贴花相关设置:
    Draw Distance(渲染距离)​:距离相机多少距离内会渲染,离开这个距离贴画就不渲染出来了
    Atlas Width和Atlas Height:用来这是场景中所有贴画纹理图集的宽度和高度
    Metal and Ambient Occlusion Properties:启用后场景中的贴花会影响被贴上去物体材质的金属高光和环境光遮蔽
    Maximum Clustered Decals on Screen:屏幕上能够同时显示的贴花数量
    Dynamic Resolution(动态分辨率):
    启用/禁用动态分辨率功能,以及调整相关的设置,如图所示
    Low res Transparency(低分辨率透明)在这里插入图片描述
    Low res Transparency(低分辨率透明):
    启用后使用低分辨率的透明效果,用处像名字一样没什么好说的

Lighting(光照)

Screen Space Ambient Occlusion(屏幕空间环境光遮蔽):
这是控制项目是否打开环境光遮蔽的开关
简单讲一下什么是环境光遮蔽,环境光遮蔽就是在环境中的各种夹角位置其实是要比一般平面暗一些的,为了让画面更加真实,这种夹角的阴影高清渲染管线也可以计算出来,这就是环境光遮蔽
打开这个开关才可以在帧设置和Volume中调整
Volumetrics(体积光):
打开和关闭体积光的开光
简单讲解一下什么是体积光,当光线照射到空气中的灰尘上时光就有了形状,让光有形状有体积,这就是体积光
同样是只有打开了这个设置后才可以在帧设置和Volume中调整
Light Layers(光照层):
这个开关控制帧设置和Volume组件光照层功能是否启用
光照层就是控制光具体打到什么层级,什么层级的物体不受光线的影响,就是普通的层的运用,和摄像机看到什么层的物体原理相同
这个后续会详细的讲
Cookies(光线遮罩):
在这里大概讲一下什么是光线遮罩,就是相当于阳光穿过树阴投射成斑驳光影,白日光透过彩色灯片出现五彩斑斓效果,通过其他物体的遮罩改变光下形状颜色就是光线遮罩,在这里可以调整全项目光线遮罩的Cookie纹理图集的大小以及使用的格式等,增加Cookie会增加内存占用,但是可以提升光线遮罩的精度
具体用法在后面会讲
Reflections(反射):
这个调整的都是和场景中反射相关的设置,下面来挨个讲解重要的设置:
Screen Space Reflection(屏幕空间反射):选项可以控制项目屏幕空间反射效果是否启用,启用后可以在Volume中调整相关参数
Compress Reflection Probe Cache(压缩反射探针缓存):启用选项可以对反射探针缓存进行压缩
ReflectionCubemap Size:可以调整反射探针中Cubemap(这是立方体贴图,是反射探针保留场景中反射信息的格式)
Probe Cache Size(反射探针缓存大小):用于存储反射探针中Cubemap的最大数量
Planar Reflection Probe(平面反射探针):设置与上面的设置与上面反射探针的相同
Max Planar Reflection On Screen:同一画面中可以显示的平面反射探针的最大数量
Maximum Reflection Probes on Screen:同一画面中可以显示的反射探针的最大数量
Sky(天空):
这个是与项目中天空相关参数的设置,下面讲解重要的设置:
Reflection Size:当场景中没有反射探针来计算反射信息时会自动调用天空盒的Cubemap(这个上面有说到)来计算反射信息,在这里可以调整天空盒的Cubemap分辨率,此选项并不会影响天空盒本身的分辨率
Lighting Override Mask(光照覆盖遮罩):他的作用是将他3指定的层级的物体如果上面有Volume组件并且可以影响到相机的话那个物体就不受环境光设置的影响而是通过自身的Volume设置光照信息
简单来说就是将设置指定层的物体可以有与环境光不一样的光照设置,如有些物体想要通过光照来加强他的重点信息,或者想要给人物的光照局部增强凸显焦点
Shadows(阴影):
Shadowmask:控制Shadowmask光照模式(Shadowmask Lighting Mode)的启用/禁用。​(在光照相关章节会详细介绍HDRP中的阴影,包括Shadowmask。​)
Maximum Shadows on Screen(同屏显示最大阴影数量)​:用于控制同屏显示的最大阴影数量。超过这里设定的阴影数量之外的阴影将不被渲染
Filtering Quality(过滤质量)​:用于选择阴影的过滤质量。选择高质量可以提升阴影质量,减少阴影边缘的锯齿。在Forward模式和Both模式下,可以选择Low、Medium和High三档质量。在Deferred模式下,只能使用Medium质量
Screen Space Shadows(屏幕空间阴影)​:
打开这个选项后HDRP会在另一个通道计算屏幕空间阴影(当前屏幕内的阴影,屏幕外的阴影不做计算)
Maximum是当前项目可以处理的最大数量的屏幕空间阴影
Buffer Format是屏幕空间阴影的缓存格式
Use Contact Shadows(使用接触阴影)​:
使用接触阴影就是当场景中的物体发生接触时产生的阴影,为的也是让画面真实感更加强
这里有3个选项,只有在这里又选了选项在帧设置中才可以自由选择被勾选了的选项,否则在帧设置的Light模块中只能选择Contact Shadows选项(默认)选项
在这里插入图片描述

  •                       (下面是针对不同光源的阴影设置)
    

Directional Light Shadows(平行光阴影)​:
这个下面的选项用于控制平行光阴影
在这里插入图片描述
Directional Shadow Precision(平行光阴影精度):用于控制平行光阴影的精度,同样是可以降低性能提升阴影精度的选项
Directional Shadow Resolution Tiers(平行光阴影分辨率等级):用于控制项目场景中的阴影分辨率等级
在Light组件的Shadows选项中的Resolution可以选择这个Light组件的光打出来的阴影质量,除了Custon(自定义)外还有由低到高4个等级
在这里插入图片描述
这4个等级的分辨率设置都是被设置好了的
这四个等级的分辨率设置就是在Directional Shadow Resolution Tiers(平行光阴影分辨率等级)
的这4个选项,比如设置Low 256那么选择Low的阴影分辨率就是256*256
Punctual Shadow ResolutionTiers(精确光源阴影分辨率等级):这里是限制最大阴影分辨率等级,就算我把Low设置为4000分辨率但是最大分辨率等级设置为2000,那么我使用Low也只能被限制到2000分辨率
Punctual Light Shadows(精确光源阴影)​:
精确光源分为两大光源,聚光灯(Spot)和点光源(Point)两种光源类型,这里主要对他们两个光源的阴影进行设置
这里的涉及到关于纹理图集的概念,纹理图集很简单,就是当多个物体的阴影重合在一起时为了节省性能就会将重叠在一起的阴影纹理放在一张贴图里变成一个集合,这就是纹理图集
Resolution(分辨率):用于控制精确光源纹理图集的分辨率
Precision(精度):与平行光源阴影的精度相同都是可以控制阴影精度提升或降低性能消耗的
Dynamic Rescale(动态缩放):当画面中的阴影过多无法全部放入纹理图集时可以启动动态阴影缩放,他会有选择的将阴影放入纹理图及渲染,注意由于打开了动态缩放,他会经常改变纹理图集导致画面一闪一闪的
Punctual Shadow ResolutionTiers(精确光源阴影分辨率等级):与平行光源阴影分辨率等级相同
Max shadow resolution(最大阴影分辨率):与平行光最大阴影分辨率用法相同
Area Light Shadows(面积光阴影)​:
首先面积光是类似窗户招进来的光以及台灯的光,他们的特点都是由余有物体遮挡导致光有了体积,面积光阴影就是这种光的阴影,他相比于点光源和平行光的阴影要更加柔和和真实,一般用于影视级别渲染
他的特点是由于光源被遮挡所以阴影会呈现柔和的方式逐渐加深,而不像光直接消失后的那个硬阴影
还会根据遮挡物的不同光投射出来的形状的不同而改版阴影边缘的衰减方式
其中设置的用法都与上面的相同
Lights(光照):
Maximum Directional on Screen:同一画面中最多可以出现的平行光的数量。
Maximum Punctual on Screen:同一画面中最多可以出现的聚光灯和点光源的数量。
Maximum Area on Screen:同一画面中最多可以出现的面积光的数量

Lighting Quality Settings光照质量设置

Low、Medium和High三项配置下的参数都是一样的,唯一的区别是各项参数对应的数值。这些数值一般代表的是采样值。采样值越大,效果越好,但是性能消耗也越大。
Screen Space Ambient Occlusion(屏幕空间环境光遮蔽):SpetCount(采样值)
Contact Shadows(接触阴影):SampleCount(采样值)
Screen Space Reflection(屏幕空间反射):SampleCount(采样值)
这三个设置都是用于提升光照质量的,相对的也会降低性能
在这里插入图片描述

其中的Screen Space Ambient Occlusion(屏幕空间环境光遮蔽)设置的数值会影响到Volume中的Ambient Occlusion设置
在这里插入图片描述

Material(材质)

Available Material Quality Levels(可用材质质量等级):
这里是设置项目可以用上面等级的材质,默认所有等级的材质都可以用,这个也是为了适配设备的性能做出的限制,后面在材质篇会专门讲
Default Material Quality Level(默认材质质量等级):
当用户没有选择材质等级时将会自动使用这个默认材质等级
Distortion(变形):
如果启用此选项,就可以在HDRP的Unlit着色器中使用Distortion功能。
在这里插入图片描述
具体用途会在材质篇讲解
Subsurface Scattering(次表面散射):
次表面反射是光透过透明材质后发生变化的一种技术,比如过透过多棱镜,光透过皮肤
只有在HDRP文件中启用了此选项后在帧设置的Light列表下面才可以启用Subsurface Scattering(次表面散射)然后调整参数,否则全局都将用不上次表面散射
Fabric BSDF Convolution:
这是针对布料材质的设置,打开它就会为项目中的布料材质单独开辟一个空间来存储反射探针(布料的反射和一般的反射计算方式不同),但是打开了这个设置会让一般的反射探针数量减少一半(因为相当于增加了一份反射探针数据,但是保存数据的位置大小不变,所以会将场景中的普通反射探针减半)

Post-processing(后处理)

Grading LUT Size和Grading LUT Format:
这个设置指的是​Grading LUT(颜色分级查找表)​ 的 ​Size(尺寸)​ 和 ​Format(格式)
首先​Grading LUT(颜色分级查找表)​ 的 ​Size(尺寸)控制的是颜色的精度,他所提供的32是最平衡的数值,这个同样是提升画质降低性能的设置
​16x16x16 (4,096 entries)

​应用场景:游戏实时后处理、移动端应用
​优点:内存占用低(通常 < 1 MB),采样性能高
​缺点:低精度场景可能出现颜色过渡不自然(如渐变色带)
​32x32x32 (32,768 entries)

​应用场景:电影级后期、HDR高动态范围渲染
​优点:颜色过渡平滑,支持复杂色调映射(如ACES)
​缺点:内存占用高(约8-16 MB),采样延迟增加
​64x64x64 (262,144 entries)

​应用场景:专业调色软件(DaVinci Resolve)、离线渲染
​优点:极端精度,适用于胶片模拟或医学成像
​缺点:内存爆炸(100+ MB),实时场景几乎不可用

​Grading LUT(颜色分级查找表)的​Format(格式)指的就是后处理的颜色编码格式,精度越高的格式颜色越准确,但是会增加性能消耗

Buffer Format(缓存格式):
这个指的是颜色的缓存格式,但是这个缓存格式的通道为后处理所用,精度越高颜色越准确,但是会增加性能消耗

Post-processing Quality Settings(后处理质量设置)

这个下面主要就是设置Depth of Field(景深)​、Motion Blur(运动模糊)​、Bloom(泛光)和Chromatic Aberration(色差)等数值。
在这里插入图片描述
数值的具体作用在后面会讲到

HDRP配置文件的重要设置就说到这里,这不是全部的设置,其他设置可以自行查阅


http://www.kler.cn/a/613610.html

相关文章:

  • linux0.11内核源码修仙传第十一章——硬盘初始化
  • 数据库约束、常见语句等
  • VGG 改进:添加ScConv空间与通道特征重构卷积
  • pip show protobuf ValueError: invalid literal for int() with base 10: ‘‘
  • 【redis】前缀树 trie-radix tree-rax
  • 协作机械臂需要加安全墙吗? 安全墙 光栅 干涉区
  • 详细比较StringRedisTemplate和RedisTemplate的区别及使用方法,及解决融合使用方法
  • Go语言nil原理深度解析:底层实现与比较规则
  • ReAct: Synergizing Reasoning and Acting in Language Models
  • 数字化转型1061丨某著名企业新零售云业务中台总体解决方案(文末有下载方式)
  • ElasticSearch在Windows单节点部署及使用
  • 云原生周刊:Ingress-NGINX 漏洞
  • JDBC FetchSize不生效,批量变全量致OOM问题分析
  • 将网页操作的脚本自动保存成yaml ,然后修改使用
  • RK3568笔记八十一: Linux 小智AI聊天机器人移植
  • pnpm node_modules 高效删除
  • XHR.readyState详解
  • Vue warn :意外的非属性属性(类)被传递到组件
  • DeepSeek与GPT的全方位对比及其为编程工作带来的巨大变革
  • [分层图] 汽车加油行驶问题