ue4 材质表达式分类
https://api.unrealengine.com/CHN/Engine/Rendering/Materials/ExpressionReference/index.html
在官方文档目录结构上:分材质表达式与材质函数2种
绿色节点 函数
颜色 Color Desaturation
数学 Math GO
字体 Font FontSample,FontSampleParameter
实用程序 Utility
- 常用: Desaturation(去饱和度),Distance(距离),Fresnel(菲涅尔,边框),GIReplace(GI 替换,反射数据替换),LinearInterpolate(线性插值 Lerp)
- 优化用:FeatureLevelSwitch(功能级别开关),QualitySwitch(质量开关)
- 蒙版:SphereMask(球体蒙版),AntialiasedTextureMask(抗锯齿纹理蒙版)
- BumpOffset(视差贴图):视差贴图,本质上,是一种位移贴图(Displacement Mapping)。它的原理,是根据视线方向,对当前看到的像素位置进行一定的坐标偏移,显示偏移过后的像素颜色 https://www.jianshu.com/p/98c137baf855
- Noise(噪声): 生成噪点。 注意:Position要的像素坐标变3维会有些特别的效果
- RotateAboutAxis(绕轴旋转): 1、设定好旋转轴(0,0,1) 2、如果想移动这个旋转轴(100,100,0) 3、LocalPosition=WorldPosition TransformPosition Locatoin Space
- 网格距离场:DistanceToNearestSurface(与最近表面的距离),DistanceFieldGradient(距离场梯度)...生成了网格距离场后这两个函数就可使用了,有点像A*寻路里的格子,算距离很方便。
- 不常用:BlackBody(黑体),ConstantBiasScale(常量偏差比例),hlsl函数 ddx ddy(往屏幕右边走,是离光源更远还是更近,变化幅度由多大)。DepthOfFieldFunction(视野深度函数)
- ??:LightmassReplace(光照系统替换 两种输入,在两种使用阶段)
DepthFade
红色节点 输入OR表达式
常量 Const
- ??? 按实例消退、随机
- 时间(period?周期?),双面法线,VertexColor,ViewProperty(视野大小)
粒子的:颜色,方向,全局空间位置,动运,半径,大小,生存时间,速度
坐标 Coordinates
- 对象:ActorPositionWS,ObjectPositionWS,ObjectOrientatoin,ObjectRadius
- 像素:PixelNormalWS,WorldPosition
- 场景:ViewSize,SceneTexelSize,SceneColor,SceneDepth,ScenePosition //Texel:纹理元素 texture element
- 其他:ParticlePositionWS,VertexNormalWS,CameraPositionWS
WS是全局的意思。LightmapUVs:???。
绿节点:Panner,Rotator
粒子 Particle
ParticleMotionBlurFade(粒子运动模糊的值) ParticleMacroUV(使用粒子拼好贴图) SphericalParticleOpacity(利用透明度达到圆形) ParticleSubUV(粒子动画贴图用)
粒子的:颜色,方向,全局空间位置,动运,半径,大小,生存时间,速度
其他
大气 Atmosphere AtmosphericFogColor
深度 Depth DepthFade(深度消退) PixelDepth(像素深度) SceneDepth(场景深度)
其他
定制 Custom
自t定义HLSL代码,CalcPixelMaterialInputs 最后一步计算函数
函数 Function
多数与材质函数配合使用,除TextureObject与TextureSample配合使用
材质属性 Material Attribute
BreakMaterialAttributes中断材质属性 MakeMaterialAttributes建立材质属性
参数 Paramaters
- CollectionParameter(参数文件) DynamicParameter(粒子系统用) FontSampleParameter TextureObjectParameter(纹理取样用)
- StaticBoolParameter(编译时用的) StaticComponentMaskParameter(编译时用 蒙版)
材质实例,代码用
:ScalarParameter VectorParameter材质实例,代码用
:TSP2D(功能与TextureSample相同),TSPSubUV(功能与ParticleSubUV相同) TSPCube(只接立方体贴图) TSPMovie(只接电影贴图) //TSP=TextureSampleParameter
景观 Landscape
LandscapeLayerBlend:景观模式专用的材质表达式,可将多个材质混合,按需涂到景观上。
1、给景观选择材质 2、在景观模式的颜料下选择层,涂到景观上。要为每个层创建一个文件(Landscape Layer))。
三种混合模式:LB_ALphaBlend、LB_HeightBlend、LB_WeightBlend。
- LB_WeightBlend:按重量混合,使用一个层涂的次数越多混合权重越高。
- LB_HeightBlend:这个会在混合层上加一个H层。H层在与别的层混合时会显示出来,H层的值:白色混合权重0,黑色权重1。
节点:LandscapeLayerCoords,LandscapeLayerSwitch,LandscapeLayerWeight,LandscapeVisibilityMask
纹理 Texture
蓝的节点
- FontSample,FontSampleParameter,TextureObject,TextureSample
- ParticleSubUV,TextureObjectParameter,TextureSampleParameter2D,TextureSampleParameterCube
红的节点
- SpriteTextureSample??定制精灵纹理取样
- SceneColor,TextureProperty
失量操作
ObjectOrientation(对象方向),ReflectionVectorWS(反射全局空间矢量:表面法线上的摄像机方向)
其他的与参考坐标目录
失量
AppendVector(追加矢量),ComponentMask(分量蒙版),CrossProduct(矢量积),Normalize(规范化),Transform(转换 本地<->全局)
DeriveNormalZ(派生法线 Z。。根据X,Y值生成Z),DotProduct(标量积。。参考向量投影,全局向量法线Dot相机相对表面向量 可做出类似菲涅尔效果)
材质相关源代码
Runtime/Engine/Classes/Material MaterialExpressionSceneTexture