热门标签 | 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学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 微软发布OneNote for WordPress插件,支持一键从OneNote获取内容发布
    微软今日发布了OneNoteforWordPress插件,该插件支持从OneNote一键获取 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
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社区 版权所有