相关疑难解决方法(0)

在 SceneKit 中使用 Metal 着色器

我想使用Metal着色器将卡通/单元着色应用于场景中使用的材质。我尝试实现的着色器是 AppleAAPLCelShaderMetalShaderShowcase中找到的自己的着色器。我对实现着色器有点陌生,SceneKit所以我可能会做完全错误的事情。

根据我在文档中的理解,从 iOS 9 和 Xcode 7 开始,aMetal或 GL 着色器可用于修改SceneKit渲染。文档表明,这与 GL 着色器的完成方式相同。

我的方法是尝试获取文件的路径,然后将其加载到一个字符串中,以 [String: String] 字典的形式在属性中.metal使用,就像使用 GL 着色器一样(尽管我还没有SCNMaterial shaderModifiers使其正常工作)。

我的代码是:

var shaders = [String: String]()
let path = NSBundle.mainBundle().pathForResource("AAPLCelShader", ofType: "metal")!

do{
  let celShader = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding)
  shaders[SCNShaderModifierEntryPointLightingModel] = celShader
}catch let error as NSError{
  error.description
}
scene.rootNode.enumerateChildNodesUsingBlock({ (node, stop) -> Void in
  node.geometry?.firstMaterial?.shaderModifiers = shaders
})
Run Code Online (Sandbox Code Playgroud)

这是在一个测试场景上运行的,其中有一个从.scn文件加载的盒子几何体。文件加载工作正常,所以这不是问题。 …

shader scenekit swift metal ios9

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

标签 统计

ios9 ×1

metal ×1

scenekit ×1

shader ×1

swift ×1