Unity Universal Render Pipeline/Lit光照材质介绍

文章目录

  • 前言
  • 参数介绍
    • 1、表面选项
      • [1.1 Worflow Mode工作流模式](#1.1 Worflow Mode工作流模式)
      • [1.2 Surface Type 表面类型](#1.2 Surface Type 表面类型)
      • [1.3 Blending Mode 混合模式](#1.3 Blending Mode 混合模式)
      • [1.4 Preserve Specular 保留镜面光照(高光)](#1.4 Preserve Specular 保留镜面光照(高光))
      • [1.5 Render Face 渲染面](#1.5 Render Face 渲染面)
      • [1.6 Alpha Clipping 透明度剪裁](#1.6 Alpha Clipping 透明度剪裁)
      • [1.7 Receive Shadows 是否接收阴影](#1.7 Receive Shadows 是否接收阴影)
    • 2、表面输入
      • [2.1 BaseMap 基础贴图](#2.1 BaseMap 基础贴图)
      • [2.2 Specular Map 高光贴图](#2.2 Specular Map 高光贴图)
      • [2.3 Smoothness 光滑度](#2.3 Smoothness 光滑度)
      • [2.4 Normal Map法线贴图、Height Map高度贴图、Occlusion Map遮蔽贴图](#2.4 Normal Map法线贴图、Height Map高度贴图、Occlusion Map遮蔽贴图)
      • [2.5 Emission 自发光](#2.5 Emission 自发光)
      • [2.6 Tiling和Offset](#2.6 Tiling和Offset)
    • [3、Detail Inputs细节输入](#3、Detail Inputs细节输入)
    • 4、高级选项
      • [4.1 Specular Highlights 镜面高光](#4.1 Specular Highlights 镜面高光)
      • [4.2 Environment Reflections 环境反射](#4.2 Environment Reflections 环境反射)
      • [4.3 Sorting Order 渲染顺序](#4.3 Sorting Order 渲染顺序)
      • [4.4 Enable GPU Instancing](#4.4 Enable GPU Instancing)
  • 参考
  • 专栏推荐
  • 完结

前言

URP/Lit(Universal Render Pipeline/Lit)是Unity通用渲染管线(URP)中的标准PBR(基于物理的渲染)材质,适用于大多数3D物体渲染。它是URP中最常用且功能最全面的材质类型。

参数介绍

1、表面选项

1.1 Worflow Mode工作流模式

Metallic和Specular,两个模式都能做出高质量材质,使用任何一种方法,您都可以很好地表示大多数常见的材质类型,因此在大多数情况下,选择其中一种是个人喜好的问题,以适应您的艺术工作流程。

1.2 Surface Type 表面类型

  • Opaque:不透明的
  • ransparent:透明的

现实世界多数物体是不透明的,它们之间会相互遮挡,Opaque不会开启混合(Blend模式),即使对象有Apha值,也不会产生透明效果.

如果使用Transparent,则可以透过透明物体,看到背后的物体,修改Alpha值能明显改变透明度

1.3 Blending Mode 混合模式

最常用的是Alpha,它是最接近真实世界的混合模式

  • Alpha 使用材质的 Alpha 值来更改对象的透明度。0 表示完全透明。1 表示完全不透明,但在透明渲染过程中仍然会渲染材质。对于您希望完全可见但随着时间的推移也会逐渐消失的视觉效果(例如云),这非常有用。
  • Premultiply 对材质应用与 Alpha 类似的效果,但保留反射和高光,即使表面是透明的情况下也是如此。这意味着只有反射光可见。例如,想象一下透明玻璃。
  • Additive 在另一个表面之上给材质添加额外的一层。这对全息图很有用。
  • Multiply 将材质的颜色与表面的背景颜色相乘。这会产生更暗的效果,就像透过彩色玻璃观看一样。

1.4 Preserve Specular 保留镜面光照(高光)

是否要保特高光,不受Alpha值影响.如果勾上,即使Alpha变为0,高光依然存在。如果取消,高光会随着Alphal降低而变弱

1.5 Render Face 渲染面

  • Both是两面都渲染
  • Back是仅渲染背面
  • Front是仅渲染正面

正面背面是指网格表面的方向,以四边形Quad为例,它有一个正面,一个背面

至于哪边是正面,哪边是背面,是网格在制作时决定的,封闭模型,比如球和正方体,一般把外表面定义为"正面,当从球的内部往外看,就会看到球表面的"背面"

1.6 Alpha Clipping 透明度剪裁

所有像素最终的alpha值,会和Alpha clipping里的值比较,如果像素的alpha值必小于这个配置,那么这个像素会被直接丢弃,不会渲染到最终输出里。

启用后可用于制作镂空效果(如树叶、栅栏等)。需要在制作贴图时考虑Alpha值。

1.7 Receive Shadows 是否接收阴影

表示阴影能否出现在它上面

2、表面输入

2.1 BaseMap 基础贴图

网格(Mesh)使用的纹理贴图,也被称作Albedo/Diffuse贴图。贴图一般会随着模型制作,是模型的外观,

贴图提供了一个颜色的配置,这里的颜色会和贴图进行混合,最后再附加到模型

2.2 Specular Map 高光贴图

影响物体的光泽

2.3 Smoothness 光滑度

光滑度越高,反光越集中。1数值达到1,就是一面镜子,光滑度的数值可以从贴图中获取,也就是在制作高光或者纹理贴图时,将Alpha值制作为纹理的光滑度,可以让物体不同区域有不同的光滑度。

Unity有一些推荐的参数,用来模拟各种材质,简单总结一下它的建议:

  • 对于更偏向金属质感的材质,Base Map最好接近黑色,而Specular Map接近金属本身的颜色
  • 对非金属的材质,Base Map使用接近材质的颜色,而Specular Map接近灰色

2.4 Normal Map法线贴图、Height Map高度贴图、Occlusion Map遮蔽贴图

它们都是让物体看起来更有凹凸感,在制作模型时一起制作

2.5 Emission 自发光

在没有光照的情况下发出的光亮

Unity里可以配合全局光照(GI),光照探针,将自发光计算为间接光照

2.6 Tiling和Offset

分别表示以上所有贴图的重复和移动,X/Y表示哪个轴的变化

这里用一个贴图方便演示

如果Tiling是1,Offset是0,就是使用原图作为贴图

如果增加Tiling,可以看到在对应轴上,贴图看起来被压缩了

而Offset就是平移了这个贴图,

它的原理是改变了顶点的纹理坐标,进而改变了每个像素的采样结果。

我们可以在资源文件夹中找到纹理,其中Wrap Mode 包裹模式 定义了当纹理坐标UV超出0-1的范围时,采样的结果是什么

3、Detail Inputs细节输入

该选项用于添加细节

如何让模型在局部放大时,仍然可以看到丰富的细节?

最简单的方式是,绘制更高清的纹理贴图,容纳更多的颜色细节,但是它会明显增加贴图占用空间。

Detail Inputs就是一个解决局部细节的方案,它的核心思想是,把局部的细节从主贴图中剥离出来,单独成为一张贴图,通过增加Tiling模拟高分辨率的纹理,在采样主纹理贴图时,同时采样细节纹理贴图,然后将细节采样的结果叠加到主纹理的采样上,它平衡了占用空间和细节效果。

Mask用于标记主纹理上的哪些部分,是需要和细节贴图进行叠加的,下面是细节贴图和细节贴图的法线贴图,以及它们的Tiling和Offset。

4、高级选项

4.1 Specular Highlights 镜面高光

就是球面这个明显的光点

取消后光点消失

4.2 Environment Reflections 环境反射

提供更逼真的镜面反光效果,反射环境中的物体,比如反射天空盒。

4.3 Sorting Order 渲染顺序

所有Shader都有一个渲染队列序号,比如不透明物体是2000,透明物体是3000,越靠前的越先渲染。URP隐藏了队列序号,改为一个Slider,但是原理是一样的。

4.4 Enable GPU Instancing

当场景中存在大量相同的对象时,勾上它可以在一次DrawCall中,传递多个相同网格和材质的对象,加快渲染计算的速度。

注意:Unity官方建议低于256顶点的网格,不要启用这个选项,应该采用另外的优化方案。

参考

https://docs.unity3d.com/cn/Packages/com.unity.render-pipelines.universal@12.1/manual/lit-shader.html

https://www.bilibili.com/video/BV1foFNeuEjA/


专栏推荐

地址
【unity游戏开发入门到精通------C#篇】
【unity游戏开发入门到精通------unity通用篇】
【unity游戏开发入门到精通------unity3D篇】
【unity游戏开发入门到精通------unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发------模型篇】
【unity游戏开发------InputSystem】
【unity游戏开发------Animator动画】
【unity游戏开发------UGUI】
【unity游戏开发------联网篇】
【unity游戏开发------优化篇】
【unity游戏开发------shader篇】
【unity游戏开发------编辑器扩展】
【unity游戏开发------热更新】
【unity游戏开发------网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

相关推荐
水果里面有苹果2 小时前
19-C#静态方法与静态类
java·开发语言·c#
吃着火锅x唱着歌2 小时前
LeetCode 3306.元音辅音字符串计数2
算法·leetcode·c#
向宇it6 小时前
【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果
游戏·3d·unity·编辑器·游戏引擎·材质
witton6 小时前
C语言使用Protobuf进行网络通信
c语言·开发语言·游戏·c·模块化·protobuf·protobuf-c
格林威7 小时前
Baumer工业相机堡盟工业相机如何通过DeepOCR模型识别判断数值和字符串的范围和相似度(C#)
开发语言·人工智能·python·数码相机·计算机视觉·c#·视觉检测
alansoulKing7 小时前
2025年7月:打cs1.5 600元装机台式电脑方案A
游戏·电脑
HMS Core7 小时前
用AI重塑游戏体验:《诛仙2》携手HarmonyOS SDK实现性能与功耗双赢
人工智能·游戏·harmonyos
困惑阿三9 小时前
Mac mini 高性价比扩容 + Crossover 游戏实测 全流程手册
游戏·macos
布呐呐na9 小时前
C#基础篇(10)集合类之列表
开发语言·c#