Table Of Contents
Shader¶
The Shader
class handles the compilation of the vertex and fragment
shader as well as the creation of the program in OpenGL.
Todo
Include more complete documentation about the shader.
Header inclusion¶
New in version 1.0.7.
When you are creating a Shader, Kivy will always include default parameters. If you don’t want to rewrite this each time you want to customize / write a new shader, you can add the “$HEADER$” token and it will be replaced by the corresponding shader header.
Here is the header for the fragment Shader:
#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;
And the header for vertex Shader:
#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;
Single file glsl shader programs¶
New in version 1.6.0.
To simplify shader management, the vertex and fragment shaders can be loaded automatically from a single glsl source file (plain text). The file should contain sections identified by a line starting with ‘—vertex’ and ‘—fragment’ respectively (case insensitive), e.g.
// anything before a meaningful section such as this comment are ignored
---VERTEX SHADER--- // vertex shader starts here
void main(){
...
}
---FRAGMENT SHADER--- // fragment shader starts here
void main(){
...
}
The source property of the Shader should be set to the filename of a glsl shader file (of the above format), e.g. phong.glsl
-
class
kivy.graphics.shader.
Shader
¶ Bases:
builtins.object
Create a vertex or fragment shader.
- Parameters
- vs: string, defaults to None
Source code for vertex shader
- fs: string, defaults to None
Source code for fragment shader
-
fs
¶ Fragment shader source code.
If you set a new fragment shader code source, it will be automatically compiled and will replace the current fragment shader.
-
source
¶ glsl source code.
source should be the filename of a glsl shader that contains both the vertex and fragment shader sourcecode, each designated by a section header consisting of one line starting with either “–VERTEX” or “–FRAGMENT” (case insensitive).
New in version 1.6.0.
-
success
¶ Indicate whether the shader loaded successfully and is ready for usage or not.
-
vs
¶ Vertex shader source code.
If you set a new vertex shader code source, it will be automatically compiled and will replace the current vertex shader.