Shader Graph 支持
可以使用 Unity Shader Graph 为 visionOS 创建自定义材质。这些将在 Unity 中以编译形式预览,但转换为 MaterialX 以在模拟器和设备上显示。虽然 MaterialX 非常具有表现力,但一些 Shader Graph 节点在 MaterialX 中没有类似物。在 Shader Graph 编辑器中,不支持的节点将由“#”符号表示。
出于技术、安全和隐私原因,在使用AR透传时,visionOS 不允许运行基于 Metal 的着色器或其他低级着色语言。
纹理限制
在 shader graph 中采样纹理时,请注意,与纹理本身关联的采样器状态(过滤器、包裹模式)将被忽略。 相反,如果您想使用默认模式(线性过滤、重复环绕模式)以外的模式,则必须使用Sampler State
节点来控制纹理的采样方式。
坐标空间注释
在 shader graph 中的坐标空间之间进行转换时,需要注意两个注意事项。 由于内容根据 体积摄像机 进行转换,因此 shader graph 中返回的"world space"几何图形将与模拟场景的几何图形不匹配。此外,visionOS 目前在它返回的几何图形和它提供的变换矩阵方面不一致。
检索源场景的几何图形
要获取模拟场景的世界空间中的位置、法线、切线或双切线,请将“Position”、“Normal Vector”、“Tangent Vector”或“Bitangent Vector”节点与“Space”结合使用:“World”,然后使用“PolySpatial Volume to World”节点以及适合该类型的“Transform”对它们进行变换(通常为位置使用“Position”,其余为“Direction",在变换后将进行标准化)。
VisionOS 中变换和变换矩阵节点的注意事项
“Transformation Matrix”节点返回的矩阵和“Transform”节点使用的矩阵是直接从visionOS获得的,目前假设的世界空间既不匹配模拟场景,也不匹配“Position”、“Normal Vector”、“Tangent Vector”或“Bitangent Vector”节点的输出。 这些节点的“world space”输出与输出体积的变换相关,也就是说,当拖动有界应用程序体积时不会改变。 另一方面,“Transform”和“Transformation Matrix”节点假定所有应用程序卷之间共享的世界空间。 要获取此世界空间中的几何图形,请将几何图形(例如“Position”)节点与“Space”一起使用:“Object”,并将“Transform”节点设置为“From”对其进行变换:“Object”和“To”:“World”。
输入属性
Shader Graph 属性必须设置为“Exposed”,才能按实例进行设置。 全局参数不能是“Exposed”,并且必须使用PolySpatialShaderGlobals的方法在 C# 中设置全局值。
基于时间的动画
请注意,visionOS 材质本身不支持全局属性,因此 PolySpatial 必须将全局属性单独应用于所有材质实例,这可能会影响性能。 对于动画,请考虑使用“PolySpatial Time”节点,而不是标准的Unity shader graph “Time”。 虽然“PolySpatial Time”不会与 Time.time 完全同步(值得注意的是,不会反映 Time.timeScale),它在 visionOS 中得到本机支持,不需要每帧属性更新。
支持的目标
支持“Universal”和“Built-In”目标进行转换。 对于这两个目标,都支持“Lit”和“Unlit”材质,以及“Opaque”和“Transparent”表面类型以及“Alpha Clipping”设置。 对于“Transparent”表面,支持“Alpha”、“Premultiply”和“Additive”混合模式。 目前不支持转换的其他目标设置。 由于平台限制,所有材质都将具有“Front”渲染面、启用深度写入、“LEqual”深度测试和切线空间片段法线。
Shader Graph 节点
下表显示了visionOS在PolySpatial中的current support status for Shader Graph nodes,包括支持的节点列表及其各种警告。
如果此处未出现节点,则表示当前不支持该节点。请注意,随着我们继续添加对更多节点的支持,此列表将会同步更新。*
Artistic
部分 | 节点 | 注意 |
---|---|---|
调整 | 通道混合器 | ✓ 支持 |
对比 | ✓ 支持 | |
色调 | ✓ 支持 | |
反转颜色 | ✓ 支持 | |
替换颜色 | ✓ 支持 | |
饱和 | ✓ 支持 | |
白平衡 | ✓ 支持 | |
混合 | 混合 | ✓ 支持 |
过滤 | 噪声处理 | 仅支持默认的“Screen Position”。 |
淡入淡出过渡 | ✓ 支持 | |
遮罩 | 通道遮罩 | ✓ 支持 |
彩色遮罩 | ✓ 支持 | |
法线 | 法线混合 | ✓ 支持 |
高度法线 | ✓ 支持 | |
纹理法线 | ✓ 支持 | |
法线重建Z | ✓ 支持 | |
法线强度 | ✓ 支持 | |
法线拆分 | ✓ 支持 | |
实用程序 | 色彩空间转换 | ✓ 支持 |
渠道
部分 | 节点 | 注意 |
---|---|---|
通道 | 结合 | ✓ 支持 |
翻转 | ✓ 支持 | |
分割 | ✓ 支持 | |
重排 | ✓ 支持 |
输入
“Custom Interpolators”仅限于这些特定/名称类型:
Color
:Vector4UV0
: Vector2UV1
:Vector2UserAttribute
:Vector4部分 节点 注意 基本 布尔值 (Boolean) ✓ 支持 颜色 ✓ 支持 常量 ✓ 支持 整数 ✓ 支持 滑动条 ✓ 支持 时间 ✓ 支持 浮点 ✓ 支持 Vector2 ✓ 支持 Vector3 ✓ 支持 Vector4 ✓ 支持 几何体 双切向量 切线和视图空间选项不是标准选项。 法向量 切线和视图空间选项不是标准选项。 位置 切线和视图空间选项不是标准选项。 屏幕位置 ✓ 支持 切向量 切线和视图空间选项不是标准选项。 UV ✓ 支持 顶点颜色 ✓ 支持 顶点ID ✓ 支持 视图方向 ✓ 支持 渐变 黑体 ✓ 支持 渐变 ✓ 支持 样本梯度 ✓ 支持 照明 环境 ✓ 支持 主光源方向 ✓ 支持 矩阵 矩阵2x2 ✓ 支持 矩阵3x3 ✓ 支持 矩阵4x4 ✓ 支持 变换矩阵 切线和视图空间选项不是标准选项。 PBR 电介质镜面 ✓ 支持 金属反射率 ✓ 支持 场景 摄像机 支持“Position”和“Direction”输出(非标准)。 眼睛指数 ✓ 支持 对象 ✓ 支持 场景深度 平台不允许访问深度缓冲区,这只是在剪辑或视图空间的摄像机距离。 屏幕 ✓ 支持 纹理 立方体贴图资源 ✓ 支持 立方体贴图示例 ✓ 支持 反射立方体贴图示例 ✓ 支持 2D纹理示例 ✓ 支持 2D LOD纹理示例 ✓ 支持 3D纹理示例 ✓ 支持 采样器状态 不支持“MirrorOnce”环绕模式。 纹理2D资源 ✓ 支持 纹理3D资源 ✓ 支持 纹理尺寸 ✓ 支持
数学
部分 | 节点 | 注意 |
---|---|---|
高級 | 绝对 | ✓ 支持 |
指数 | ✓ 支持 | |
长度 | ✓ 支持 | |
日志 | ✓ 支持 | |
模数 | ✓ 支持 | |
否定 | ✓ 支持 | |
归一化 | ✓ 支持 | |
色调分离 | ✓ 支持 | |
相互 | ✓ 支持 | |
倒数平方根 | ✓ 支持 | |
基本 | 添加 | ✓ 支持 |
划分 | ✓ 支持 | |
乘法 | ✓ 支持 | |
幂 | ✓ 支持 | |
平方根 | ✓ 支持 | |
减去 | ✓ 支持 | |
插值 | 逆线性插值 | ✓ 支持 |
线性插值 | ✓ 支持 | |
平滑步 | ✓ 支持 | |
矩阵 | 矩阵构建 | ✓ 支持 |
矩阵行列式 | ✓ 支持 | |
矩阵分裂 | ✓ 支持 | |
矩阵转置 | ✓ 支持 | |
范围 | 钳制 | ✓ 支持 |
片段 | ✓ 支持 | |
最大 | ✓ 支持 | |
最小 | ✓ 支持 | |
一减 | ✓ 支持 | |
随机范围 | ✓ 支持 | |
重新映射 | ✓ 支持 | |
饱和 | ✓ 支持 | |
圆形的 | 天花板 | ✓ 支持 |
地面 | ✓ 支持 | |
圆形的 | ✓ 支持 | |
符号 | ✓ 支持 | |
步骤 | ✓ 支持 | |
截断 | ✓ 支持 | |
三角学 | 反余弦 | ✓ 支持 |
反正弦 | ✓ 支持 | |
反正切 | ✓ 支持 | |
Arctangent2 | ✓ 支持 | |
余弦 | ✓ 支持 | |
度到弧度 | ✓ 支持 | |
双曲余弦 | ✓ 支持 | |
双曲正弦 | ✓ 支持 | |
双曲正切 | ✓ 支持 | |
弧度到度 | ✓ 支持 | |
正弦 | ✓ 支持 | |
Tangent | ✓ 支持 | |
Vector | 叉积 | ✓ 支持 |
距离 | ✓ 支持 | |
点积 | ✓ 支持 | |
菲涅耳效应 | ✓ 支持 | |
投影 | ✓ 支持 | |
反射 | ✓ 支持 | |
折射 | ✓ 支持 | |
拒绝 | ✓ 支持 | |
绕轴旋转 | ✓ 支持 | |
球体遮罩 | ✓ 支持 | |
变换 | 有些空间是模拟的,不包括在测试中。 | |
波形 | 噪声正弦波 | ✓ 支持 |
锯齿波 | ✓ 支持 | |
方波 | ✓ 支持 | |
三角波 | ✓ 支持 |
程序化
部分 | 节点 | 注意 |
---|---|---|
程序化 | 棋盘 | ✓ 支持 |
噪音 | 梯度噪声 | ✓ 支持 |
泰森多边形 | 不支持“Cells”输出。 | |
形狀 | 椭圆 | ✓ 支持 |
多边形 | ✓ 支持 | |
矩形 | ✓ 支持 | |
圆角多边形 | ✓ 支持 | |
圆角矩形 | ✓ 支持 |
实用程序
部分 | 节点 | 注意 |
---|---|---|
实用程序 | 自定义功能 | 参见custom function node conversion notes。 |
PolySpatial环境辐射 | 请参阅lighting notes。 | |
PolySpatial照明 | 请参阅lighting notes。 | |
PolySpatial时间 | PolySpatial专用非标准 shader graph 节点。实现MaterialX Spec中所述的时间函数。 | |
预览 | ✓ 支持 | |
分体式LR | PolySpatial 专用非标 shader graph 节点。实现MaterialX Spec中所述的splitlr函数。 | |
逻辑 | 分支 | ✓ 支持 |
比较 | ✓ 支持 | |
无限 | ✓ 支持 | |
NaN | ✓ 支持 | |
或 | ✓ 支持 |
UV
部分 | 节点 | 注意 |
---|---|---|
UV | Flipbook | ✓ 支持 |
极坐标 | ✓ 支持 | |
径向剪切 | ✓ 支持 | |
旋转 | ✓ 支持 | |
球化 | ✓ 支持 | |
平铺和偏移 | ✓ 支持 | |
三平面 | ✓ 支持 | |
旋转 | ✓ 支持 |