SKShader
SKShader
объект содержит пользовательский OpenGL программа построения теней фрагмента ES. Объекты программы построения теней используются для настройки поведения получения многих различных видов узлов в Наборе Sprite.
Для использования пользовательской программы построения теней создайте SKShader
возразите и обеспечьте источник для пользовательской программы построения теней фрагмента. Если Ваша программа построения теней должна обеспечить универсальное состояние для программы построения теней, создайте один или больше SKUniform
объекты и связывают их с объектом программы построения теней. Затем присвойте объект программы построения теней shader
свойство любых спрайтов, которым нужно пользовательское поведение.
Компиляция программы построения теней и универсальных данных, связанных с ним, может быть дорогой. Из-за этого Вы должны:
Инициализируйте объекты программы построения теней, когда Ваша игра запускается, не, в то время как работает игра.
Избегите изменять источник или универсальные формы программы построения теней, в то время как работает Ваша игра. Любая из этих вещей перекомпилировала программу построения теней.
Программа построения теней доли возражает, когда это возможно. Если многократные спрайты нуждаются в том же поведении, создают один объект программы построения теней и связывают его с каждым спрайтом, которому нужно то поведение. Не создавайте отдельную программу построения теней для каждого спрайта.
Создание пользовательской программы построения теней фрагмента
Ваша программа построения теней фрагмента должна быть записана на языке штриховки OpenGL ES 2.0. Набор Sprite автоматически выполняет необходимую работу для проверки этой программы построения теней компиляции правильно и в iOS и в OS X. Объект программы построения теней компилирует Вашу программу построения теней путем добавления исходного кода, который Вы обеспечиваете для преамбулы, создаваемой Набором Sprite. Эта преамбула объявляет все стандартные переменные Набора Sprite и функции, включая объявления для любых универсальных форм, которые Вы связали с объектом программы построения теней. Таблица 1 описывает символы Набора Sprite, сделанные доступный для Вашей программы построения теней.
Объявление символа |
Ввести |
Описание |
---|---|---|
sampler2D u_texture; |
Универсальная форма |
Сэмплер связался с текстурой, используемой для рендеринга узла. |
плавание u_time; |
Универсальная форма |
Прошедшее время на моделировании. |
vec2 u_sprite_size; |
Универсальная форма |
Размер спрайта в пикселях. |
плавание u_path_length; |
Универсальная форма |
Эта универсальная форма предоставлена только, когда программа построения теней присоединена |
vec2 v_tex_coord; |
Варьирование |
Координаты раньше получали доступ к текстуре. Они нормализованы так, чтобы точка (0.0 0.0) была в нижнем левом углу текстуры. |
vec4 v_color_mix; |
Варьирование |
Предварительно умноженное значение цвета для представляемого узла. |
плавание v_path_distance; |
Варьирование |
Это варьирование предоставлено только, когда программа построения теней присоединена |
vec4 SKDefaultShading () |
Функция |
Функция, обеспечивающая поведение по умолчанию, используемое Набором Sprite. |
Ваша программа построения теней должна определить a main()
функция. Эта функция должна установить gl_FragColor
переменная к значению цвета для использования на этапе смешения; обычно значение цвета, которое Вы возвращаете в этой переменной, должно уже быть предварительно умножено на альфа-значение фрагмента.
Перечисление 1 показывает очень простую программу построения теней фрагмента, обеспечивающую поведение штриховки значения по умолчанию.
void main()
{
gl_FragColor = SKDefaultShading();
}
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import SpriteKit
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новый объект программы построения теней путем загрузки источника для программы построения теней фрагмента от файла, хранившего в пакете приложения.
Объявление
Swift
convenience init!(fileNamed
name
: String)Objective C
+ (instancetype)shaderWithFileNamed:(NSString *)
name
Параметры
name
Имя программы построения теней фрагмента для загрузки. Файл должен присутствовать в Вашем комплекте приложений с тем же именем и a
.fsh
расширение файла.Возвращаемое значение
Недавно инициализированная программа построения теней возражает, чей начальный источник загружается из файла программы построения теней.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новый объект программы построения теней использование указанного источника и универсальных данных.
Объявление
Параметры
source
Строка, содержащая источник для программы построения теней фрагмента.
uniforms
Список универсальных форм для добавления к объекту программы построения теней.
Возвращаемое значение
Недавно инициализированный объект программы построения теней.
Оператор импорта
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новый объект программы построения теней использование указанного исходного кода.
Объявление
Objective C
+ (instancetype)shaderWithSource:(NSString *)
source
Параметры
source
Строка, содержащая исходный код для программы построения теней фрагмента.
Возвращаемое значение
Недавно инициализированный объект программы построения теней.
Оператор импорта
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новый пустой объект программы построения теней.
Объявление
Objective C
+ (instancetype)shader
Возвращаемое значение
Недавно инициализированный объект программы построения теней.
Обсуждение
Программа построения теней инициализируется без любого исходного кода или универсальных данных. Необходимо присвоить исходный код программе построения теней перед использованием его.
Оператор импорта
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Инициализирует новый объект программы построения теней использование указанного источника и универсальных данных.
Объявление
Swift
init(source
source
: String!, uniformsuniforms
: [AnyObject]!)Параметры
source
Строка, содержащая начальный источник для программы построения теней.
uniforms
Список универсальных форм для добавления к объекту программы построения теней.
Возвращаемое значение
Инициализированный объект программы построения теней.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Инициализирует новый объект программы построения теней использование указанного исходного кода.
Объявление
Swift
init(source
source
: String!)Objective C
- (instancetype)initWithSource:(NSString *)
source
Параметры
source
Строка, содержащая начальный источник для программы построения теней.
Возвращаемое значение
Инициализированный объект программы построения теней.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Добавляет универсальная форма к объекту программы построения теней.
Объявление
Swift
func addUniform(_
uniform
: SKUniform)Objective C
- (void)addUniform:(SKUniform *)
uniform
Параметры
uniform
Новый универсальный объект добавить. Имя универсального объекта не должно уже использоваться другой универсальной формой, присоединенной к программе построения теней.
Обсуждение
Универсальная переменная автоматически доступна в Вашей программе построения теней; не добавляйте объявление для него в исходном коде Вашей программы построения теней. К универсальной форме нужно получить доступ в программе построения теней фрагмента.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Удаляет универсальную форму из программы построения теней.
Объявление
Swift
func removeUniformNamed(_
name
: String)Objective C
- (void)removeUniformNamed:(NSString *)
name
Параметры
name
Имя универсальной формы для удаления.
Обсуждение
Если универсальная форма с тем именем не существует в программе построения теней, ничто не происходит.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
универсальные формы универсальные формы
СвойствоСписок универсальных форм связался с программой построения теней.
Обсуждение
Это свойство не только для чтения, таким образом, можно также использовать его для обеспечения всех универсальных форм в единственной работе. Каждую из универсальных форм нужно уникально назвать.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Возвращает универсальный объект, соответствующий определенной универсальной переменной.
Объявление
Параметры
name
Имя универсальной формы для поиска.
Возвращаемое значение
Универсальный объект, соответствующий имени, или
nil
если не может быть найдена та универсальная форма.Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.
-
Исходный код для программы построения теней.
Обсуждение
Во время выполнения может быть обновлен исходный код для объекта программы построения теней. Однако перекомпиляция программы построения теней фрагмента может быть дорогой работой.
Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.10 и позже.