Material编辑器中的功能单元写法
常见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
- 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
关键词:线性映射、线性变换
AppendVector
关键词:数据升维
HLSL里坐标变换
- OtherVector = normalize(mul(SomeVector, GetPrimitiveData(Parameters.PrimitiveId).WorldToLocal));
这个示例是将world系的SomeVector转到PrimitiveComponent系