|
|
||
|---|---|---|
| .. | ||
| final | ||
| projects | ||
| starter | ||
| README.md | ||
| references.markdown | ||
README.md
Chapter 16: Particle Systems
As I read this book, I summarize what I think is wrong. If you think my comments are wrong then please let me know. We can dicuss more and update your opinion.
Compute
A metal shader file isn't included in the bundle so we can't read shader so the runtime error is happened. But a metal shader is compiled and saved as the default library. In Renderer.swift, in initializeMetal(), replace:
guard let device = MTLCreateSystemDefaultDevice(),
let commandQueue = device.makeCommandQueue(),
let path = Bundle.main.path(forResource: "Shaders", ofType:"metal")
else { return nil }
let pipelineState: MTLComputePipelineState
do {
let input = try String(contentsOfFile: path, encoding: String.Encoding.utf8)
let library = try device.makeLibrary(source: input, options: nil)
guard let function = library.makeFunction(name: "compute")
else { return nil }
pipelineState = try device.makeComputePipelineState(function: function)
} catch {
print(error.localizedDescription)
return nil
}
With:
guard let device = MTLCreateSystemDefaultDevice(),
let commandQueue = device.makeCommandQueue()
else { return nil }
let pipelineState: MTLComputePipelineState
do {
let library = device.makeDefaultLibrary()!
guard let function = library.makeFunction(name: "compute")
else { return nil }
pipelineState = try device.makeComputePipelineState(function: function)
} catch {
print(error.localizedDescription)
return nil
}