Как заставить Xcode использовать редактирование синтаксиса и автозавершение кода в модификаторах Metal Shader? - PullRequest
0 голосов
/ 20 июня 2020

Начинаю свое приключение по пути изучения металла и шейдеров. В настоящее время я использую этот пример отсюда для экспериментов.

Как видите, он хранит свой шейдер в отдельном .txt файле. Хотя мне нравится идея, что шейдер является ресурсом, мне это не нравится, потому что это текст, я теряю подсветку синтаксиса, завершение кода и т. Д. c.

Я попытался изменить расширение на .metal и Xcode теперь распознали его как таковое с помощью цветовой кодировки, но теперь я не могу создать приложение с Xcode, говоря, что с ним много ошибок, что явно неверно, поскольку оно отлично работает как .txt . Чтобы доказать это, я просто снова изменил его на .txt, и все начинает работать, как было раньше, в том числе без выделения или завершения кода.

Примечание: я также попытался оставить его как текст, но изменив введите в инспекторе значение «металл», но это тоже не сработало.

Я все время слышу такие замечательные вещи о металлическом отладчике, но я даже не могу понять, как получить металл редактор рабочий! Помогите!

Итак ... как я могу включить свои шейдеры как отдельные .metal файлы (или сопоставимые) и по-прежнему иметь возможность редактировать / запускать их, как в прямом, так и в переносном смысле?

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вы должны иметь возможность вручную установить тип файла в Инспекторе файлов:

введите описание изображения здесь

0 голосов
/ 20 июня 2020

В приведенном вами примере @warrenm использовал shaderModifiers:

Модификатор шейдера - это фрагмент исходного кода на языке шейдеров Metal или OpenGL Shader Language. (GLSL), который SceneKit внедряет в свои собственные шейдерные программы в определенной точке входа.

.metal - это полная реализация Vertex / Fragment / Compute, а это не то shaderModifiers are.

Вместо этого вы можете создать SCNProgram : полную программу шейдера Metal или OpenGL, которая заменяет рендеринг геометрии или материала SceneKit.

...