Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Установка областей чтения семплов
- public var centers:[float2] = [float2]() {
- didSet{
- if centers.count > 0 {
- // создать MTL-буфер из которого будем читать центры областей в шейдере
- centersBuffer = context.device.makeBuffer(length: MemoryLayout<float2>.size * centers.count, options: [])!
- // создаем MTL-буфер в который будем писать значения цветов в шейдере
- colorsBuffer = context.device.makeBuffer(length: MemoryLayout<float3>.size * centers.count, options: .storageModeShared)!
- // пишем в буфер центры
- memcpy(centersBuffer.contents(), centers, centersBuffer.length)
- // выделяем память массив цветов, в который потом скопируем то что прилетело
- // в буфер в шейдере
- _colors = [float3](repeating:float3(0), count:centers.count)
- // определим размерность грида вычислений GPU
- patchColorsKernel.preferedDimension = MTLSize(width: centers.count, height: 1, depth: 1)
- // сбросим фильтр
- dirty = true
- // запустим вычисления на шейдерах
- process()
- }
- }
- }
Add Comment
Please, Sign In to add comment