SCNProgram
Вы используете SCNProgram
объект выполнить пользовательский рендеринг с помощью программ программы построения теней, записанных на Языке Штриховки OpenGL (GLSL). Объект программы содержит вершинный шейдер и программу построения теней фрагмента. Для использования объекта программы для рендеринга присвойте его program
свойство геометрии или материала.
Используйте объект программы, когда Вы захотите полностью заменить рендеринг SceneKit. Ваши программы построения теней берут ввод от SceneKit и становятся ответственными за всех, преобразовывают, освещение и эффекты затенения, которые Вы хотите произвести.
Установка пользовательской программы программы построения теней
Для использования пользовательской программы программы построения теней в SceneKit создайте SCNProgram
возразите и дополнительно укажите delegate
объект для ошибок из-за неправильного обращения. Затем, обеспечьте исходный код GLSL для вершины программы и этапов программы построения теней фрагмента (использующий vertexShader
и fragmentShader
свойства).
Решите, какие вводы Вы хотите использовать в Вашей программе программы построения теней:
Атрибуты вершины. Использовать атрибуты вершины, предоставленные
SCNGeometry
объекты в Вашей программе программы построения теней, отобразите семантику SceneKit на входные названия атрибута вершины, объявленные в программе построения теней. ИспользуйтеsetSemantic:forSymbol:options:
метод и константы перечислили в Геометрии Семантические Идентификаторы.Координатные трансформации. Для использования координатных трансформаций, определенных иерархией узла сцены и камерой точки зрения в программе программы построения теней, отобразите матрицы преобразования SceneKit на универсальные имена переменной, объявленные в программе построения теней. Используйте
setSemantic:forSymbol:options:
метод и константы, перечисленные в Рендеринге, Преобразовывают Ключи.Пользовательские универсальные переменные. Для обеспечения значений для собственных универсальных переменных, объявленных в программе построения теней, присвойте обязательные блоки с помощью
handleBindingOfSymbol:usingBlock:
метод геометрии или материала, который будет представлен с Вашей пользовательской программой.
Наконец, присвойте свой объект программы конфигурациям или материалам, Вы хотите представленное использование программы программы построения теней.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Создает новый объект программы.
Объявление
Objective C
+ (instancetype)program
Возвращаемое значение
Инициализированный
SCNProgram
объект, илиnil
если инициализация не успешна.Обсуждение
Вы не можете использовать недавно создаваемый объект программы для рендеринга, пока Вы не обеспечиваете исходный код шейдера для
vertexShader
иfragmentShader
свойства.Для использования программы построения теней для рендеринга присвойте его
program
свойство геометрии или материала.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
vertexShader vertexShader
СвойствоИсходный код GLSL для вершинного шейдера программы.
Объявление
Swift
var vertexShader: String!
Objective C
@property(nonatomic, copy) NSString *vertexShader
Обсуждение
Вершинный шейдер программы выполняется один раз для каждой вершины в геометрии, которую это представляет. Это берет в качестве ввода атрибуты каждой вершины (такие как позиция в пространстве модели, векторах нормали и координатах текстуры). Вершинный шейдер тогда выводит позицию пространства клипа для вершины, а также значения, которые GPU интерполирует через поверхность и отправляет в программу построения теней фрагмента.
SceneKit компилирует и соединяет Вашу программу программы построения теней только, когда это необходимо для рендеринга. Чтобы быть уведомленными относительно ошибок компиляции программы, обеспечьте a
delegate
объект для программы.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
fragmentShader fragmentShader
СвойствоИсходный код GLSL для программы построения теней фрагмента программы.
Объявление
Swift
var fragmentShader: String!
Objective C
@property(nonatomic, copy) NSString *fragmentShader
Обсуждение
Программа построения теней фрагмента программы (иногда называемый пиксельным шейдером) выполняется, по крайней мере, один раз для каждого пикселя в представленном выводе. Программа построения теней фрагмента принимает как ввод значения, выведенные вершинным шейдером (после того, как те значения были интерполированы GPU), и использует их для вычислений итогового цвета для каждого пикселя.
SceneKit компилирует и соединяет Вашу программу программы построения теней только, когда это необходимо для рендеринга. Чтобы быть уведомленными относительно ошибок компиляции программы, обеспечьте a
delegate
объект для программы.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
geometryShader geometryShader
СвойствоИсходный код GLSL для дополнительной программы построения теней геометрии программы.
Объявление
Swift
var geometryShader: String!
Objective C
@property(nonatomic, copy) NSString *geometryShader
Обсуждение
Программа построения теней геометрии программы выполняется один раз для каждого геометрического примитива (строка или треугольник), чтобы быть представленной. Программа построения теней геометрии занимает как ввод позиции вершины, выведенные вершинным шейдером (или программой построения теней составления мозаики, если Вы используетесь), и выводы новые геометрические примитивы для рендеринга.
Программы построения теней геометрии требуют OS X и Профиля Ядра OpenGL. Для использования Профиля Ядра OpenGL в представлении SceneKit установите представление
pixelFormat
свойство. Штриховка геометрии является дополнительной — чтобы представить без программы построения теней геометрии, установить значение этого свойства вnil
(значение по умолчанию).SceneKit компилирует и соединяет Вашу программу программы построения теней только, когда это необходимо для рендеринга. Чтобы быть уведомленными относительно ошибок компиляции программы, обеспечьте a
delegate
объект для программы.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Исходный код GLSL для дополнительного составления мозаики программы управляет программой построения теней.
Объявление
Swift
var tessellationControlShader: String!
Objective C
@property(nonatomic, copy) NSString *tessellationControlShader
Обсуждение
Программа построения теней управления составлением мозаики программы выполняется один раз для каждой вершины в геометрии, которую это представляет. Программа построения теней управления составлением мозаики занимает как ввод позиции вершины, выведенные вершинным шейдером и выходной информацией об уровне составления мозаики, которая будет использоваться аппаратными средствами tessellator для подразделения многоугольников и краев. tessellator тогда обеспечивает ввод для Вашей программы построения теней оценки составления мозаики.
Программы построения теней составления мозаики требуют OS X и Профиля Ядра OpenGL. Для использования Профиля Ядра OpenGL в представлении SceneKit установите представление
pixelFormat
свойство. Штриховка составления мозаики является дополнительной — чтобы представить без программы построения теней составления мозаики, установить значение этого свойства вnil
(значение по умолчанию). Однако при указании программы построения теней управления составлением мозаики программа построения теней оценки составления мозаики также требуется.SceneKit компилирует и соединяет Вашу программу программы построения теней только, когда это необходимо для рендеринга. Чтобы быть уведомленными относительно ошибок компиляции программы, обеспечьте a
delegate
объект для программы.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Исходный код GLSL для дополнительной программы построения теней оценки составления мозаики программы.
Объявление
Swift
var tessellationEvaluationShader: String!
Objective C
@property(nonatomic, copy) NSString *tessellationEvaluationShader
Обсуждение
Программа построения теней оценки составления мозаики программы выполняется один раз для каждой вершины в геометрии, которую это представляет. Программа построения теней оценки составления мозаики занимает как ввод позиции вершины, сгенерированные аппаратными средствами tessellator (на основе вывода информации уровня составления мозаики из Вашей программы построения теней управления составлением мозаики). Программа построения теней оценки составления мозаики тогда выводит позицию пространства клипа для вершины, а также значения, которые GPU интерполирует через поверхность и отправляет в программу построения теней фрагмента.
Программы построения теней составления мозаики требуют OS X и Профиля Ядра OpenGL. Для использования Профиля Ядра OpenGL в представлении SceneKit установите представление
pixelFormat
свойство. Штриховка составления мозаики является дополнительной — чтобы представить без программы построения теней составления мозаики, установить значение этого свойства вnil
(значение по умолчанию). Однако при указании программы построения теней оценки составления мозаики программа построения теней управления составлением мозаики также требуется.SceneKit компилирует и соединяет Вашу программу программы построения теней только, когда это необходимо для рендеринга. Чтобы быть уведомленными относительно ошибок компиляции программы, обеспечьте a
delegate
объект для программы.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Связывает SceneKit семантический идентификатор с указанным атрибутом вершины GLSL или универсальной переменной.
Объявление
Swift
func setSemantic(_
semantic
: String!, forSymbolsymbol
: String, optionsoptions
: [NSObject : AnyObject]!)Objective C
- (void)setSemantic:(NSString *)
semantic
forSymbol:(NSString *)symbol
options:(NSDictionary *)options
Параметры
semantic
SceneKit семантический идентификатор. Посмотрите Геометрию, Семантические Идентификаторы и Рендеринг Преобразовывают Ключи для возможных значений.
symbol
Имя, объявленное в исходном коде программы GLSL для атрибута вершины или универсальной переменной, которая будет связана с семантическим.
options
Словарь опций, влияющих на семантическое. См. Программу Семантические Опции для применимых ключей и значений.
Обсуждение
Используйте этот метод для обеспечения вводов, которыми управляет SceneKit к программе GLSL.
Использовать атрибуты вершины, предоставленные
SCNGeometry
объекты, используйте константы, перечисленные в Геометрии Семантические Идентификаторы.Для использования координатных трансформаций, определенных иерархией узла сцены и камерой точки зрения использование, константы, перечисленные в Рендеринге, Преобразовывают Ключи.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Возвращает SceneKit семантические идентификаторы, связанные с указанным атрибутом вершины GLSL или универсальной переменной.
Объявление
Параметры
symbol
Имя, объявленное в исходном коде программы GLSL для атрибута вершины или универсальной семантической переменной.
Возвращаемое значение
SceneKit семантический идентификатор. Посмотрите Геометрию, Семантические Идентификаторы и Рендеринг Преобразовывают Ключи для возможных значений.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Делегат объекта программы.
Объявление
Swift
unowned(unsafe) var delegate: SCNProgramDelegate?
Objective C
@property(nonatomic, assign) id< SCNProgramDelegate > delegate
Обсуждение
SCNProgram
если ошибки происходят при компиляции исходного кода GLSL, объект отправляет сообщения делегата.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
непрозрачный непрозрачный
СвойствоБулево значение, указывающее, полностью непрозрачны ли фрагменты, представленные программой.
Объявление
Swift
var opaque: Bool
Objective C
@property(nonatomic, getter=isOpaque) BOOL opaque
Обсуждение
Значение по умолчанию
YES
true
, указание, что все фрагменты, представленные программой, полностью непрозрачны. В этом случае SceneKit может составить эти фрагменты в заключительное изображение без смешивания, улучшив рендеринг производительности.Если Ваша программа программы построения теней представляет цвета фрагмента, альфа-значение которых является меньше, чем
1.0
, измените значение этого свойства наNO
false
для надлежащего смешивания.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Ключи для словаря опций, используемого
setSemantic:forSymbol:options:
метод.Объявление
Swift
let SCNProgramMappingChannelKey: NSString!
Objective C
NSString *const SCNProgramMappingChannelKey
Константы
-
SCNProgramMappingChannelKey
SCNProgramMappingChannelKey
Отображающийся канал, который будет использоваться для семантической координаты текстуры.
Этот ключ является дополнительным и применяется только к
SCNGeometrySourceSemanticTexcoord
семантический. Его значениеNSNumber
объект, содержащий значение целого без знака.Геометрия может обеспечить, и программа программы построения теней может использовать, больше чем один источник координат текстуры для каждой вершины. Используйте этот ключ для указания, какой источник геометрии должен предоставить данные для каждого атрибута вершины сэмплера текстуры, объявленного в программе программы построения теней. Отображающийся канал для источника геометрии соответствует своему индексу в массиве, возвращенном путем вызова
geometrySourcesForSemantic:
метод.Доступный в OS X v10.8 и позже.
-