diff options
Diffstat (limited to 'doc/python_api/examples/gpu.3.py')
-rw-r--r-- | doc/python_api/examples/gpu.3.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/doc/python_api/examples/gpu.3.py b/doc/python_api/examples/gpu.3.py new file mode 100644 index 00000000000..30f340c30ff --- /dev/null +++ b/doc/python_api/examples/gpu.3.py @@ -0,0 +1,44 @@ +""" +Triangle with Custom Shader +--------------------------- +""" +import bpy +import gpu +from gpu_extras.batch import batch_for_shader + +vertex_shader = ''' + uniform mat4 viewProjectionMatrix; + + in vec3 position; + out vec3 pos; + + void main() + { + pos = position; + gl_Position = viewProjectionMatrix * vec4(position, 1.0f); + } +''' + +fragment_shader = ''' + uniform float brightness; + + in vec3 pos; + + void main() + { + gl_FragColor = vec4(pos * brightness, 1.0); + } +''' + +coords = [(1, 1, 1), (2, 0, 0), (-2, -1, 3)] +shader = gpu.types.GPUShader(vertex_shader, fragment_shader) +batch = batch_for_shader(shader, 'TRIS', {"position" : coords}) + +def draw(): + shader.bind() + matrix = bpy.context.region_data.perspective_matrix + shader.uniform_float("viewProjectionMatrix", matrix) + shader.uniform_float("brightness", 0.5) + batch.draw(shader) + +bpy.types.SpaceView3D.draw_handler_add(draw, (), 'WINDOW', 'POST_VIEW')
\ No newline at end of file |