小编art*_*ler的帖子

在 Swift Playgrounds 中将 SCNTechnique 与金属着色器结合使用

我想在 SCNView 上的 Swift Playgrounds 中使用带有金属着色器的 SCNTechnique。因此,我尝试使用以下代码编译我的着色器:

guard let metalDevice = sceneView.device else {
    return
}

if let path = Bundle.main.path(forResource: "distortTechnique", ofType: "metal") {
    do {
        let contents = try String(contentsOf: URL(fileURLWithPath: path))
        do {
            try metalDevice.makeLibrary(source: contents, options: nil)
        } catch { error
            print(error)
        }
    } catch {
        // contents could not be loaded
    }
}
Run Code Online (Sandbox Code Playgroud)

该文件已加载,但出现以下编译器错误:

Error Domain=MTLLibraryErrorDomain Code=3 "Compilation failed: 

program_source:11:10: fatal error: 'SceneKit/scn_metal' file not found
#include <SceneKit/scn_metal>
         ^
" UserInfo={NSLocalizedDescription=Compilation failed: 

program_source:11:10: fatal error: …
Run Code Online (Sandbox Code Playgroud)

shader scenekit swift-playground metal scntechnique

6
推荐指数
1
解决办法
1109
查看次数

ARSCNView 上的 SCNTechnique 不会影响 iOS 13 上的 CameraFeed(场景背景)

在 iOS 13(iOS 11 和 12)之前,SCNTechnique 应用于具有多通道设置的 ARSCNView,该设置首先应该将整个场景绘制到纹理中(通过 DRAW_SCENE)也会影响 ARKit 场景背景(相机源)。\n现在在 iOS 13 中,情况似乎不再如此。应用于生成的纹理的片段着色器不会更改相机输入\xe2\x80\x93,仅更改SceneKit 内容(例如节点)。当使用自定义场景背景(例如图像)时,一切都会按预期运行。仅使用 SCNView 时会得到相同的结果。

\n\n

在 colorStates 中将clearColor 设置为 sceneBackground 没有帮助。\n我还尝试禁用环境纹理和人物遮挡。

\n\n

有谁知道这个问题的解决方法?我希望过滤整个渲染的 ARKit 场景,以改变我的 AR 体验氛围。\n随附的是我的技术 plist 的屏幕截图。

\n\n

谢谢你!

\n\n

在此输入图像描述

\n

ios scenekit metal scntechnique arkit

4
推荐指数
1
解决办法
421
查看次数

标签 统计

metal ×2

scenekit ×2

scntechnique ×2

arkit ×1

ios ×1

shader ×1

swift-playground ×1