#610 Material编辑器中的功能单元写法   HLSL相关     material_材质     UE4     UV     about a year ago (owner) Document
常见0~1函数图像公式:kynd,参考自《The Book of Shaders》

ObjectLocalBounds
  • LocalBoundsMinimal
    • GetPrimitiveData(Parameters).LocalObjectBoundsMin.xyz
  • LocalBoundsMax
    • GetPrimitiveData(Parameters).LocalObjectBoundsMax.xyz
该表达式输出LocalBoundingBox的Min、Max、Size,这个Size就是Max-Min,也就是所谓的Extents的2倍。注意这个BoundingBox是Local系的,可以简单理解为PrimitiveComponent系。参考 Bounding Box

BoundingBoxBased_0-1_UVW
  • TransformPosition
    • 注意该节点Details里选择的参数,是将PositionWS(Excluding Materials Shader Offset)从WS变换到InstanceSpace,可以简单理解为WS->CS。Excluding Materials Shader Offset这个选项可能是忽略GeometryShader对原始Mesh造成的拉伸,而取Mesh顶点的原始值。
  • (PositionCS-LocalBoundingBox.Min) / LocalBoundingBox.Size将PositionCS进行了0-1化
总结一下:该节点将PositionWS变换为PositionCS后进行了LocalBoundingBox内的0-1化

ConstantBiasScale
  • Output = (Input + Bias) * Scale
    • 比如:将UV输入该节点,则<Bias, Scale>=<-0.5, 1>表示将UV的[0,1]变换到[-0.5,0.5]
关键词:线性映射、线性变换

AppendVector
  • 两个输入A和B,将B作为新的维度或分量与A合成在一起。如AppendVector(UV, W)输出UVW
关键词:数据升维

HLSL里坐标变换
  • OtherVector = normalize(mul(SomeVector, GetPrimitiveData(Parameters.PrimitiveId).WorldToLocal));
这个示例是将world系的SomeVector转到PrimitiveComponent系