У меня работает металлический конвейер.
Я рендеринг геометрии живого лица,
, снятый с камеры TrueDepth на iPhone X.
Я беру ARFaceGeometry
изARSessionDelegate
каждый кадр.
Я передаю данные своей структуре в металлический конвейер.
То есть рендеринг выполняется со скоростью 2,5 кадра в секунду ...
Вот конвейер рендеринга: PixelsRender.swift
Данные: uv's xyz & массив индексов.ARFaceGeometry
состоит из 2304 треугольников.
Я рассчитал конвейер рендеринга:
[1.086ms] Command Buffer
[0.006ms] Input Texture
[0.054ms] Drawable
[0.110ms] Command Encoder
[0.123ms] Uniforms
[0.006ms] Uniform Arrays
[0.009ms] Fragment Texture
[68.015ms] Vertices
[0.002ms] Vertex Uniforms
[0.000ms] Custom Vertex Texture
[0.027ms] Draw
[0.036ms] Encode
[80.207ms] All CPU
[346.936ms] GPU
[431.035ms] All CPU + GPU
[434.100ms] Total
Это все вершины, которые рендерится так долго.
Есть ли способкешировать пространство памяти на GPU или что-то в этом роде?
У меня есть что оптимизировать, я уверен, что-нибудь очевидное, что мне не хватает?
Вот лицо моего друга:
Обновление (решено)
Я ошибочно принимал примеры за треугольники!
Это былов основном розыгрыше(Спасибо Кену Томассу за то, что он поймал это)
commandEncoder.drawPrimitives(type: vertices.type,
vertexStart: 0,
vertexCount: vertices.vertexCount,
instanceCount: 1 /* previously triangle count of 2304 */)
Новое время GPU:
[2.769ms] GPU