Мы написали модификатор шейдера, основанный на протоколе SCNShadable , который работает хорошо до тех пор, пока число однородных переменных не станет довольно медленным (скажем, 5-10). Позже нам нужно было расширить модификатор шейдера и использовать новые униформы, всего их 25, включая 8 текстур и соответствующие матрицы float4x4. Затем он перестал работать, не смог скомпилировать функцию фрагмента, которая выдает следующее бесполезное сообщение об ошибке:
Error Domain=AGXMetalA12 Code=3 "Internal error during fragment function compilation" UserInfo={NSLocalizedDescription=Internal error during fragment function compilation}
Когда мы уменьшили количество float4x4
матриц до 2, он снова начал работать на iPhone 7
и другие Metal GPU Family 3
устройства, но не на Metal GPU Family 4
или более новых устройствах.
Наш вопрос заключается в том, знает ли кто-нибудь какие-либо ограничения, объясняющие такое поведение.