在 visionOS 上使用 Metal for .generateText 在代码中创建着色器

Create shader in code using Metal for .generateText on visionOS

提问人:user7289922 提问时间:11/14/2023 更新时间:11/15/2023 访问量:52

问:

我正在尝试使用金属着色器将文本效果应用于在 visionOS 上使用的文本。 我正在使用以下UI代码,并且能够像这样分配:.generateTextSimpleMaterial

 RealityView { content in  
        let font = UIFont.systemFont(ofSize: 1)
        let resource: MeshResource = .generateText("Metal on visionOS", font: font)
        let entity: ModelEntity = ModelEntity(mesh: resource, materials: [SimpleMaterial(color: .blue, isMetallic: false)])
        content.add(entity)
}       

我的问题是我需要能够使用 Metal 创建自定义着色器。我知道我可以使用 Reality Composer Pro,但我希望能够使用 Metal 着色器在代码中创建它们。我看到人们使用 来执行此操作,但是在 visionOS 上不可用。 这是我尝试附加到 3D 文本的文件中的着色器:CustomMaterialCustomMaterialshaders.swift

#include <metal_stdlib>
using namespace metal;

[[ stitchable ]] half4 aqua(
    float2 position,
    float width
    ) {
        return half4(60.0/255.0, 238.0/255.0, 227/255.0, 1.0);
    };

谢谢你的帮助。

Swift 着色器 金属 RealityKit VisionOS

评论


答:

1赞 Jeshua Lacock 11/15/2023 #1

如您所知,在 visionOS 上不可用,所以这当然行不通。CustomMaterial

您需要将 a 与 in 一起使用。ShaderGraphMaterialMaterialXReality Composer Pro

请参阅在 Reality Composer Pro 中探索材质