草庐IT

unity 内置渲染管线 效果调整工作流程

小生云木 2023-04-10 原文

unity 内置渲染管线 效果调整工作流程

本次工作流程使用的是unity 2021.3.0f1,主要针对表现效果较差的webgl的效果调整,同样适用于pc端的效果调整,只是在shader的表现上有所差异。(不涉及烘焙内容)
webgl效果展示(挂GitHud上,加载会很慢)

以下的工作流程只是个人的经验总结,欢迎指导。

以下图场景为例

第一步.直接光照调整

  • Directional Light(平行光)

    • 决定了漫反射光照强度
    • 阴影方向
    • 阴影强度

    调整说明:

Intensity:光照强度(越高直接光越亮)

Strength:阴影强度

shadow Type(阴影类型)

  • soft shadows——阴影边缘比较柔和,但是漏光明显
  • hard shadows——阴影边缘比较硬

2.全局光照(环境光)

Window→Rendering→Lighting→Environment

  • Environment Lighting(光源)

    • Source

      • Skybox - 采用天空球的光线作为环境光源
      • Gradient - 自定义环境光的颜色(推荐使用)
  • Environment Reflections(反射)

    • Source
      • Skybox - 采用天空球作为反射参数
        • Resolution 参数的尺寸
      • Custom - 采用自定义天空盒作为反射参数

    调整说明:

    1.Skybox模式:

    Environment Lighting和Environment Reflections的Source都选Skybox

    intensity Multiplier 代表光照的强度

    Environment Lighting(环境光源)的强度对Metallic(金属度)越低的材质影响越高

    Environment Reflections(反射)的强度是整体影响的。


    2. Gradient模式:

    Environment Lighting的Source选Gradient;

    Environment Reflections的Source选Coustiom;

    Environment Lighting分别对color进行调整

    Environment Reflections的Intensity Multiplier对强度进行调整

    这里的CubeMap用了一张渐变贴图,需要把贴图的Inspector中把TextureShape需改成Cube,贴图可以是彩色的这里主要是天空,反射的光线会加上Cubemap贴图的颜色。

    后面的示例延用Gradient模式的效果

3.渲染模式

内置渲染管线在Main Camera→Camera→Rendering

渲染模式抗锯齿效果支持空间映射
Forward(前向渲染)不支持
Deferred(延迟渲染)不好支持

为了后面的反射效果,牺牲了抗锯齿用了延迟渲染。

4.抗锯齿

使用unity官方提供的PostProcessing。Window→PackagesManager

注意,要在Unity Registy的模式下搜索,安装后右下角会是Remove,否则是Install。

在Main Camera 添加Post-process Layer组件,Main Camera 所在的Layer必须和Post-process Layer里的Layer一致。

Anti-aliasing Mode

  • MSAA像素加点采用
  • FXAA替换边界
  • TAA复用上一帧(推荐)

如果觉得效果不明显还可以叠加抗锯齿的脚本,下面Effect会提到

抗锯齿效果对比

5.Effect

这里没有继续使用PostProcessing,原因是它对webGL的支持不太好,所以使用了很久以前的Effects脚本工具包,效果是一样的。

Tonemapping 色调映射

这里选择Neutral 可以调整的参数多一点

  • Exposure(曝光度)整体调整场景的明暗

  • 下面的参数都可以调整,对场景的明暗都会有影响

Color Grading 颜色分级

  • Shadows、Midtones、Highlights(阴影,中间色,高光的色相)

  • Temperature Shift(色温) ——冷暖色调

  • Tint(色调)——一般不动

  • Hue(色相)——和色调一样不动

  • Saturation(饱和度)——越高颜色越鲜艳,默认1,可以稍微调大一点

  • Vibrance(自然饱和度)——越高颜色越鲜艳,默认0

  • Value(明暗度)——默认1

  • Contrast(对比度)——越高画面越明显,默认1,可以稍微调大一点

  • Gain(增益)——默认1,轻易不要动

  • Gamma(伽马校正)——默认1,轻易不动

Screen Space Reflections 屏幕空间反射

必须满足上文提到的渲染模式

  • Max Distance (最大映射距离)

  • Iteration Conut(迭代数量)

  • Step Size(步长)——太高会出现摩尔纹

  • Width Modifier(宽度修饰)——太低和影响映射的完整度

  • Reflections Blur(反射模糊)——越低越清晰

  • Reflections Multiplier(反射乘数)——影响反射的颜色,越低越黑

  • Fade Distance (消失距离)

Ambient Occlusion 环境光遮蔽

  • Intensity(强度)
  • Radius(半径)

这里的值都不要太高,画面容易脏

效果对比

使用前

使用后

(该模型在建立时,就进行过贴图的AO烘焙,效果不是很明显)

Depth of Field 景深

  • Quality——选择只影响远处
  • Focal Piont(焦点)
  • Smoothness(平滑度)

效果对比

使用前

使用后

Bloom 辉光

webGL,最好不要使用bloom,使用需要把强度调低

  • Threshold (阈值)——越高,辉光越明显
  • Soft knee(曲线缓变弯折处)——越高,影响到的色彩范围越大,使用时不要拉到1,留出高光位置
  • Radius(影响半径)
  • Intensity(强度)
  • Dirt Texture(辉光图)——可以赋值一只图片,可以起到类似滤镜的作用
  • Dirt Intensity(辉光图的强度)

效果对比

使用前

6.天空球

使用天空球,要回到第二步全局光照(环境光),修改成Skybox模式,后面的调整都是基于全局光照和直接光照固定的情况下。因为全局光照的变化对整个场景的色调影响很大,因此室内和室外的效果调整是完成不一样的,unity的 HDRP 渲染设置引入了Volume的方式重新定义了全局和局部的效果调整,后面会更新unity HDRP 渲染设置。

天空球的模式

天空球有三种模式,6sided,cubemap和HDRI 全景贴图

6sided

是由六张贴图组成的盒子

建立的效果

cubemap

是由一张张贴图组成的盒子

HDRI 全景贴图

这里有几点要注意:使用贴图做天空球,要用高清的图片,导入后也要设置在1024以上;相较起来6张的效果会比一张的好一点。

加入天空盒子球的效果

7.材质

这里以unity 内置渲染管线的Standard为例

Metallic 金属度

0-1代表金属度 ,金属度越低,环境光对材质的影响越大。

再开始调整前,可以适量的将金属度调低,方便颜色调整后进行微调。因为天空的亮度比较高,如果金属度太高,后面整体调整时会出现要么天空曝光,要么模型太暗。

Smoothness 光滑度

0-1代表光滑度,值越大,菲涅耳反射效应越明显。

Smoothness 为0

Smoothness 为1

Emission自发光

配合Bloom 可以实现高光的效果;也是提高材质亮度和颜色的手段

Transparent 透明

渲染模型改为Transparent ,Albedo颜色的alpha值调低。

透明效果

不透明效果

最后的效果

有关unity 内置渲染管线 效果调整工作流程的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  4. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  5. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  6. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  7. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  8. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  9. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

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

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

随机推荐