All to render the grid...

This commit is contained in:
Eryn Wells 2018-10-14 12:17:17 -07:00
parent 5672a44b47
commit 3f98d0f478
3 changed files with 15 additions and 9 deletions

View file

@ -263,7 +263,7 @@ public class Field {
guard self.device == nil else {
return
}
NSLog("Setting up Metal")
print("Setting up Metal")
self.device = device
populateParametersBuffer()
populateBallBuffer()

View file

@ -21,5 +21,6 @@ struct Rect {
]
}
var transform: Matrix3x3
var transform: Matrix4x4
var color: Float4
}

View file

@ -44,6 +44,7 @@ public class Renderer: NSObject, MTKViewDelegate {
delegate.field.setupMetal(withDevice: device)
delegate.marchingSquares.setupMetal(withDevice: device)
delegate.marchingSquares.populateGrid(withDevice: device)
}
}
@ -126,11 +127,13 @@ public class Renderer: NSObject, MTKViewDelegate {
fatalError("Couldn't get Metal library")
}
let vertexShader = library.makeFunction(name: "passthroughVertexShader")
let fragmentShader = library.makeFunction(name: "passthroughFragmentShader")
guard let vertexShader = library.makeFunction(name: "gridVertexShader"),
let fragmentShader = library.makeFunction(name: "gridFragmentShader") else {
fatalError("Couldn't get marching squares vertex or fragment function from library")
}
let pipelineDesc = MTLRenderPipelineDescriptor()
pipelineDesc.label = "Marching Squares Pipeline"
pipelineDesc.label = "Grid Pipeline"
pipelineDesc.vertexFunction = vertexShader
pipelineDesc.fragmentFunction = fragmentShader
if let renderAttachment = pipelineDesc.colorAttachments[0] {
@ -232,11 +235,13 @@ public class Renderer: NSObject, MTKViewDelegate {
pass.colorAttachments[0].loadAction = .load
if let pipeline = marchingSquaresPipeline,
let encoder = buffer.makeRenderCommandEncoder(descriptor: pass) {
encoder.label = "Marching Squares Render"
encoder.label = "Marching Squares Grid Render"
encoder.setRenderPipelineState(pipeline)
encoder.setVertexBuffer(marchingSquares.gridGeometry, offset: 0, index: 0)
encoder.setVertexBuffer(parametersBuffer, offset: 0, index: 1)
encoder.drawPrimitives(type: .line, vertexStart: 0, vertexCount: marchingSquares.gridVertexCount)
encoder.setVertexBytes(Rect.geometry, length: MemoryLayout<Vertex>.stride * Rect.geometry.count, index: 0)
encoder.setVertexBuffer(marchingSquares.gridGeometry, offset: 0, index: 1)
encoder.setVertexBuffer(parametersBuffer, offset: 0, index: 2)
encoder.setTriangleFillMode(.lines)
encoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: Rect.geometry.count, instanceCount: marchingSquares.samplesCount)
encoder.endEncoding()
didEncode = true
}