 			self.instanceUniforms = (0..<bufferCount).map { _ in
 				return device.makeBuffer(length: PoiRenderer.kMaxVisibleInstances * MemoryLayout<InstanceUniforms>.stride, options: .storageModeShared)!
 			}
+			self.renderLists = Array(repeating: ContiguousArray(), count: bufferCount)
 		} catch let error {
 			fatalError(error.localizedDescription)
 		}

			}
		}
		
		renderList = poiPlanePrimitives.filter({ visibleSet.contains($0.ownerHash) })
																			.filter({ poiVisibility[$0.hashValue] != nil })
		var fades = Array<InstanceUniforms>()
		fades.reserveCapacity(renderList.count)
		for plane in renderList {
			let u = InstanceUniforms(progress: poiVisibility[plane.hashValue]!.alpha())
			fades.append(u)
		}

		encoder.setVertexBuffer(instanceUniforms[bufferIndex], offset: 0, index: 2)
		
		var instanceCursor = 0
		for primitive in renderLists[bufferIndex] {
			encoder.setVertexBufferOffset(instanceCursor, index: 2)
			render(primitive: primitive, into: encoder)
			
			instanceCursor += MemoryLayout<InstanceUniforms>.stride
		}
