热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Unity标准着色器(StandardShader)参数讲解(一)

官方文档:https:docs.unity3d.comManualshader-StandardShader.html请注意,下文:50%谷歌翻译,30%自己翻译修正,20%自己瞎

官方文档:

https://docs.unity3d.com/Manual/shader-StandardShader.html

请注意,下文:50%谷歌翻译,30%自己翻译修正,20%自己瞎猜理解。

Unity标准着色器是一个内置的着色器,具有全面的功能。它可用于渲染“真实世界”的对象,如石头,木头,玻璃,塑料和金属,并支持几种着色器类型和组合(个人理解:就是标准着色器里,实际包含了以前的几种着色器的功能)。然后,通过使用或不使用材质编辑器中的各种纹理插槽(就是赋予对应的贴图)和参数,来启用或禁用对应的功能。

标准着色器设计有硬表面,可以处理大多数真实世界的材质,如石头,玻璃,陶瓷,黄铜,银或橡胶。甚至皮肤,头发和布等非硬质材质,也能表现出像样的效果。

-------------------- 【两种Standard】-----------------------

好,我们在Unity 面板中,看到的Standard Shader是这样的:

这两种,用Unity官网的话来说,就是两种工作流:

Standard ,使用金属工作流(Metallic workflow)。
Standard(Specular setup),  使用镜面工作流(Specular workflow)。 

个人理解:实际中,主要还是靠参数的调整。比如Standard 模式下,完全可以把金属材质参数设置为0(非金属)。

-------------- 下面我们逐个说明,这些【材质参数(Material parameters)】--------------:

使用这些参数,几乎可以重现,你所看到的现实世界的任何表面。

------------------------------------------------------------

1, 渲染模式:

Rendering Mode

Opaque - 不透明 - 是默认值,适用于没有透明区域的普通固体物体。

Cutout -  切边- 允许您创建透明效果,在不透明区域和透明区域之间具有硬边。 在这种模式下,没有半透明区域,纹理是100%不透明或不可见。 当使用透明度创建材料的形状(如叶子或具有孔和布料的布料)时,这是有用的。

Transparent - 透明- 适用于渲染真实的透明材料,如透明塑料或玻璃。 在这种模式下,材质本身将承担透明度值(基于纹理的Alpha通道和色调的alpha),然而反射和照明亮度将保持可视的全透明度,如真正的透明材料的情况。

Fade - 褪色- 允许透明度值完全淡出一个对象,包括任何镜面高光或反射。 如果要使对象渐变或缩小,则此模式很有用。 它不适用于渲染真实的透明材料,如透明塑料或玻璃,因为反射和亮点也将逐渐消失。

官方文档中,给了很多效果示例,详见:

https://docs.unity3d.com/Manual/StandardShaderMaterialParameterRenderingMode.html

------------------------------------------------------------

2,反照率色彩和透明度

Albedo Color and Transparency

选择Opaque,不透明渲染时, 如下:

选择Cutout,带透明的渲染时,会有透明度滑块:

Albedo(反照率)参数, 控制表面的基色。

一般情况下,我们都是给Albedo参数分配纹理贴图。当然,为Albedo指定个颜色,也是可以的。 这代表对象表面的颜色。 重要的是要注意,纹理贴图上,不要包含任何光照(比如亮点或者阴影)。

关于透明效果:可以通过带有Alpha通道的纹理贴图,来控制材质的透明度。 Alpha通道值映射到透明度级别:白色完全不透明,黑色完全透明。 这可以让材质,可以具有不同透明度的区域的效果。(官网有破碎的玻璃窗例子)

官网文档:

https://docs.unity3d.com/Manual/StandardShaderMaterialParameterAlbedoColor.html

------------------------------------------------------------

3.1, Standard 下会有:金属参数

Metallic Parameter

金属模式,不仅仅是为了做看起来像金属的材料! 

这种模式被称为金属,因为您可以控制表面金属或非金属的方式。

根据您给出的金属和平滑度级别的设置,会产生细节反射。

默认情况下,Metallic没有分配纹理贴图。

这时,金属和平滑度参数,由每个滑块控制。整个物体具有单一的金属和平滑度值。

Metallic (金属参数)

金属参数,决定了表面的“金属状”。 当金属化参数调整到更大时,材质更金属化,它将更多的反映环境。反照率颜色(就是Albedo那个)将变得不太可见。当全金属时,表面颜色完全由来自环境的反射驱动。 而当表面金属少时,其反照率颜色更清晰。

下面是官网说明图:

金属值从0到1(平滑度均为0.8)

Smoothness (平滑度)

下面是官网平滑度说明图(从0到1):

Unity的“microsurface detail”(微表面细节)不是直接可见的。 这是在照明计算中使用的概念。 但是,您可以看到这个微表面细节的影响,这是通过从物体反射而扩散的光量所代表的。 光滑的表面,所有的光线倾向于以可预测和一致的角度反弹。 取而代之的是,一个完美光滑的表面反射光,像面镜子。 较不光滑的表面,在更宽的角度范围内反射光(因为光照在微表面的凸起),因此反射具有较少的细节,并且以更漫反射的方式,散布在表面上。

下图,平滑度从低到高(左中右)。材质理论上存在的微表面细节,如图示。 黄线表示光线,撞击不同平滑度的表面并反射。

面细节中具有高峰和谷,因此光在广泛的角度范围内反射。当平均时,则无明显反射的漫反射色。

如果我们给Metallic贴上一张纹理贴图,金属和平滑度滑块都将消失。那Metallic是什么样的贴图,贴上之后产生怎样的效果呢?

下面举例说明:


如果您的模型的表面反照率纹理(Albedo)贴图中,有材质类型混合的区域(比如布料和金属扣、拉链),则可以使用 Metallic纹理贴图 ,来控制材料表面的金属和平滑度的变化。你会希望扣和拉链比衣服织物有更高的金属质感。为了实现这一点,代替使用滑块值,可以在贴图中,把拉链区域做成较浅的颜色,织物部分做成深色。具体原理:


材质的金属水平由纹理的红色通道中的值控制,材质的平滑度水平由纹理的Alpha通道控制。 (这意味着绿色和蓝色通道被忽略)。这意味着您有一个单一的纹理,可以将区域定义为粗糙或平滑,以及金属或非金属,这对于覆盖具有不同要求的模型的许多区域的纹理贴图非常有用 - 例如,角色有1张纹理贴图,通常包括多个表面要求 - 皮鞋,布衣服,皮肤,和金属扣。

下面是官网文档的 Metallic贴图 示例:

扣环现在具有很高的金属值,并相应响应光线。 皮革皮带比皮革的皮革盒子光滑,但它们具有低的“金属”值,因此它似乎是非金属表面的光泽。 最右边的黑白地图显示了金属的是较浅色的区域,皮革是中低灰度。

对比下面这张,是不使用贴图,用默认滑块调整的:



推荐阅读
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文介绍如何在 Visual Studio Code 中使用 Jupyter Notebook 插件,包括创建、编辑和运行笔记本的基本操作。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • GIMP 2.99.2 发布:UI 采用 GTK3 实现、原生支持高分屏和 Wayland
    开源项目评选最后一周,手里的5票再不用就没用了https:www.oschina.netprojecttop_cn_2020GIMP2.99.2已发布,同时这也标志着GIMP3.0的到来,其中最显著的变化是从GTK2过渡到GTK3工具包。基于 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 由中科院自动化所、中科院大学及南昌大学联合研究提出了一种新颖的双路径生成对抗网络(TP-GAN),该技术能通过单一侧面照片生成逼真的正面人脸图像,显著提升了不同姿态下的人脸识别效果。 ... [详细]
author-avatar
广东抱米花_冰月
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有