簡體   English   中英

ARKit,用於ARSCNView的金屬着色器

[英]ARKit, metal shader for ARSCNView

試圖弄清楚如何解決我的着色器應用到我的ARSCNView的問題。 以前,當使用標准SCNView時,我已成功地通過以下方式應用失真着色器:

if let path = Bundle.main.path(forResource: "art.scnassets/distortion", ofType: "plist") {
    if let dict = NSDictionary(contentsOfFile: path)  {
        let technique = SCNTechnique(dictionary: dict as! [String : AnyObject])

        scnView.technique = technique
    }
}

用ARSCNView替換SCNView會給我以下錯誤:

“錯誤:金屬渲染器不支持nil頂點函數名稱”

“錯誤:_executeProgram - 沒有管道狀態”

我在想它是因為ARSCNView使用與SCNView不同的渲染器。 但是記錄ARSCNView.renderingAPI告訴我關於渲染器的任何信息,當我構建我的ARSCNView實例時,我似乎無法選擇一個。 我必須遺漏一些明顯的東西,因為我在網上搜索參考資料時似乎無法找到單一資源。

我最初的想法是使用SCNProgram來應用着色器。 但我找不到任何有關如何將其應用於ARSCNView的資源,或者如果它甚至是正確/可能的解決方案,SCNProgram似乎是為材料保留的。

有誰能給我任何有用的指針,如何解決ARSCNView的頂點+片段着色器?

SCNTechniqueARSCNView不GLSL着色器的工作,而是需要在技術的plist文件鍵下方設置金屬功能metalVertexShadermetalFragmentShader

相反, 文檔說明着色器的任何組合應該工作:

您必須同時指定片段和頂點着色器,並且必須指定GLSL着色器程序,一對Metal函數或兩者。 如果同時指定了兩者,則SceneKit將使用適合當前渲染器的任何着色器。

所以這可能是一個錯誤,但我想文檔已經過時了。 由於所有ARKit運行設備也運行Metal,因此尚未向ARSCNViews添加GLSL支持。 由於iOS12對OpenGL不贊成,這看起來像是計划好的。

我在ARKit iOS11.4和12中遇到過這個問題,它歸結為一系列拼錯的着色器。 我希望這可以幫助某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM