Версия 2.1.0

Quick search

Shader

Класс Shader обрабатывает компиляцию вершинного и фрагментного шейдера, а также создание программы в OpenGL.

Задача

Добавить более полную документацию о шейдере.

Включение заголовка

Добавлено в версии 1.0.7.

При создании Shader Kivy всегда будет включать параметры по умолчанию. Если вы не хотите переписывать это каждый раз, когда вам нужно настроить / написать новый шейдер, вы можете добавить токен “$HEADER$”, и его заменят на соответствующий заголовок шейдера.

Вот заголовок для фрагментного шейдера:

#ifdef GL_ES
    precision highp float;
#endif

/* Outputs from the vertex shader */
varying vec4 frag_color;
varying vec2 tex_coord0;

/* uniform texture samplers */
uniform sampler2D texture0;

uniform mat4 frag_modelview_mat;

А вот заголовок для вершинного шейдера:

#ifdef GL_ES
    precision highp float;
#endif

/* Outputs to the fragment shader */
varying vec4 frag_color;
varying vec2 tex_coord0;

/* vertex attributes */
attribute vec2     vPosition;
attribute vec2     vTexCoords0;

/* uniform variables */
uniform mat4       modelview_mat;
uniform mat4       projection_mat;
uniform vec4       color;
uniform float      opacity;

Программы шейдера glsl в одном файле

Добавлено в версии 1.6.0.

Для упрощения управления шейдерами вершин и фрагментов их можно загружать автоматически из одного исходного файла glsl (обычного текста). Файл должен содержать разделы, идентифицируемые строкой, начинающейся с ‘—vertex’ и ‘—fragment’ соответственно (регистр не имеет значения), например:

// все содержимое до значимого раздела такого как этот комментарий игнорируется

---VERTEX SHADER--- // вершинный шейдер начинается здесь
void main(){
    ...
}

---FRAGMENT SHADER--- // фрагментный шейдер начинается здесь
void main(){
    ...
}

Свойство source шейдера должно быть установлено в имя файла glsl (в указанном выше формате), например, phong.glsl

class kivy.graphics.shader.Shader(unicode vs=None, unicode fs=None, unicode source=None)

Базовый класс: builtins.object

Параметры
vs: строка, по умолчанию None

Исходный код вершинного шейдера

fs: строка, по умолчанию None

Исходный код фрагментного шейдера

fs

Исходный код фрагментного шейдера.

Если вы установите новый исходный код фрагментного шейдера, он будет автоматически скомпилирован и заменит текущий фрагментный шейдер.

source

Исходный код glsl.

source должен быть именем файла glsl, содержащего как вершинный, так и фрагментный исходный код шейдера, каждый из которых обозначен заголовком раздела состоящим из одной строки, начинающейся либо с “–VERTEX”, либо с “–FRAGMENT” (без учета регистра).

Добавлено в версии 1.6.0.

success

Указывает, успешно ли загружен шейдер и готов ли он к использованию или нет.

vs

Исходный код вершинного шейдера.

Если вы установите новый исходный код вершинного шейдера, он будет автоматически скомпилирован и заменит текущий вершинный шейдер.