Add Name Reroute Node ...(本地变量)
该节点可以整理节点,优化界面
Texture
Texture(纹理图像),一般由RGB三个通道混合构成,RGB三个通道的值代表亮度,RGB三个通道分别都是0-1(0-255)的黑白图。
补充:Texture有四个通道(RGBA),A:透明通道,通常我们并不会塞入A通道反而是把A通道删去,因为在UE游戏引擎里A通道的体积较大,所以我们只需要RGB通道即可。
我们可以在RGB通道里分别塞入,金属度,粗糙度,AO,置换贴图等等一些只有灰度的纹理图像,这样做可以小幅度优化性能减少采样次数。 此时Texture由多个贴图混合而成,每个通道代表一张贴图。
补充:如果你的三个通道都塞入了一些灰度图纹理,命名方式也要按照RGB的顺序来表示分别塞入了什么纹理,比如R通道:粗糙度,G通道:金属度,B通道:AO。所以我们通常命名为“T_RMAO”。如果B通道为置换贴图,那么我们可以命名为“T_RMD”等等
例子
通过改变Roughness(粗糙度),实现生锈(脏)的效果
Texture设置
Has Alpha Channel表明没有透明通道(即该纹理没有A值,只有RGB),此时应该勾选Compress Without Alpha。
Compression Setting:设置纹理压缩模式,根据作用选择不同的值(一般选默认),如果是法线纹理选法线。
当该纹理参与基础颜色显示时,勾选sRGB,否则不勾选。
当纹理不参与基础颜色显示时,Sampler Type设置为:Linear Color(即sRGB不勾选),当纹理参与基础颜色显示时,Sampler Type设置为:Color(即sRGB勾选),为法线纹理时选择法线。
TexCoord(UV)
通过UV进行平铺,值越大,图片重复的越多,蹄片越小,U从左到右,V从上到下。将三维的物品映射到二维。
例子:
Panner
让贴图平移,达到流动的效果,(通过改变UV坐标实现效果)
补充: 两种效果一样
拓展:多行贴图平移
Sine
用于做周期变化,输出【-1,1】区间的值
Staturate
将值限制到【0,1】区间,开销比clamp小,更节省性能。
补充:
当将某一区间值限制到另一区间时,可以考虑用映射。
拓展:
当想控制水平与垂直做不同行为时,可以用两张贴图
World Position Offest(世界位置偏移)
输入允许网格体的顶点在世界空间中由材质操纵。这有助于实现使对象移动、改变形状、旋转和各种其他效果。这适用于环境动画之类的内容
补充:
但需要注意:当使用世界位置偏移(World Position Offset)将对象扩展到超出其原始边界时需注意,渲染程序仍将使用那些原始边界。这意味着你可能会看到剔除和阴影错误。你可以进入一个网格体的属性,设置它的 范围边界(Scale Bounds) 属性来进行补偿,但这样会影响性能,并可能导致投影错误。
例子: 改变石头位置
通过两个sine相加,制造随机性。
CheapContrast(低成本对比度)
CheapContrast(低成本对比度)函数通过将直方图的高端重新映射到低端值,并将直方图的低端重新映射到高端值,提升输入的对比度。这类似于在 Photoshop 中应用色阶调整,以及将黑色和白色标志拉入到一个位中。用户可控制提升对比度的程度。
补充:
CheapContrast_RGB(低成本对比度_RGB)
CheapContrast_RGB(低成本对比度_RGB)函数通过将直方图的高端重新映射到低端值,并将直方图的低端重新映射到高端值,提升输入的对比度。这类似于在 Photoshop 中应用色阶调整,以及将黑色和白色标志拉入到一个位中。用户可控制提升对比度的程度。
与普通的 *CheapContrast(低成本对比度)函数*不同,此函数可接收"矢量 3"作为输入,从而允许其对彩色图像执行对比度操作。
SmoothThreshold(平滑阈值)
SmoothThreshold(平滑阈值)函数接收渐变、插值率和阈值(分界值)。然后,它根据输入,将平滑对比度应用于渐变。
Tip:尽可能用一个高纬变量代替几个低纬变量
可以减少节点数量,便于维护与拓展,提高开发效率。
材质节点的输出值,是根据输入值决定的,RGB通道不是一定输出的就是颜色。
颜色
构成:Brightness(亮度), Stauration(饱和度), Contrast(对比度), Tint(色彩)
Desaturation(去饱和度) :
表达式对其输入进行去饱和,即根据特定百分比将其输入的颜色转换为灰色阴影
Fraction = 0时
Fraction = 10时
Normal:法线
UE支持的是DirectX格式的法线,如果想用OpenGL的法线,需要勾选Flip Green Channel
补充:
DirectX是左手坐标系,OpenGL是右手坐标系,区别是y轴相反。
FlattenNormal:改变法线强度
材质属性
建立材质属性(Make Material Attributes)
节点用于定义主材质节点上的标准材质属性,将其集合,然后在一个输出进行传送。这对于创建分层材质非常有用,因为它允许你在材质函数中定义一整个材质并在父级材质中使用该数据。你还可以将其用于复杂的材质设置,定义多个材质类型并将其混合,全部在一个材质资产中进行。
将建立材质属性节点连接到材质时,必须确保材质属性中的使用材质属性选项设为true(勾选)。这会将主材质节点折叠为一个输入,可以接收来自建立材质属性节点的输入数据。
建立材质属性会被设置材质属性节点覆盖,大部分情况下应该使用后者。
设置材质属性(Set Material Attributes)
表达式和建立材质属性的功能一样。它用于定义一组材质属性,并将其打包后在单根引线中传输。
建立材质属性节点默认显示所有标准材质属性,而设置材质属性节点上显示的输入由用户在 细节面板(Details panel) 中定义。这意味着你可以仅使用需要的材质属性。
用设置材质属性表达式替代建立材质属性可以节约空间,让材质图表更加简洁。
中断材质属性(Break Material Attributes)
表达式可以切分输入的一组材质属性,并将每个属性在单独的引脚输出。这对于创建分层材质非常有用,因为它允许你在材质分层函数中访问每个单独的属性。这样你可以选择要插入主材质节点的属性,并且可以用材质图表中的逻辑选择性地编辑属性。
获取材质属性(Get Material Attributes)
与中断材质属性作用相同,但是有很多工作流程上的好处。它不会像中断材质属性那样分割所有的输入材质属性,而是可以选择要提取的属性。选中该节点然后在 细节面板(Details Panel) 中点击 添加元素(Add Element) 图标来添加输出节点
你可以使用下拉菜单来定义每个数组元素对应哪个材质属性。
下图展示的材质复原了中断材质属性小节中的染色镀铬示例,但是使用了获取和设置材质属性表达式。注意图表看起来更简洁,引线更少。
在该示例中,只有粗糙度数据从材质属性中分割出来。一个染色参数添加到了粗糙度映射,以此来造成表面的变化,其结果由一个设置材质属性节点传送进基础颜色。其余的材质属性不经过修改直接传送。
混合材质属性(Blend Material Attributes)
表达式使用两组材质属性,并且用Alpha输入中定义的像素级别操作来将其混合在一起。举个例子,该材质分层混合将上下两组材质属性用一个遮罩纹理进行混合。
Texture Object
当讲材质函数的输入类型改为Tuxture2D时,需要输入Texture Object而不是Texture Sample
TextureObject(纹理对象)
表达式用来为函数内的纹理函数输入提供默认纹理。此节点不会对该纹理进行实际取样,因此必须与"纹理取样"(TextureSample)节点配合使用。
TextureSample
表达式输出纹理中的颜色值。此纹理可以是常规Texture2D(包括法线贴图)、立方体贴图或电影纹理。
TextureProperty
用于公开你选择的纹理属性,例如纹理大小或纹素大小。
深度
DepthFade(深度消退)
表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。
PixelDepth(像素深度)
表达式输出当前所渲染像素的深度,即该像素与摄像机之间的距离。
SceneDepth(场景深度)
表达式输出现有的场景深度。这类似于 PixelDepth(像素深度),但是 PixelDepth(像素深度)只能在当前所绘制像素处进行深度取样,而 SceneDepth(场景深度)可以在 任何位置 进行深度取样。
CameraDepthFade