# GPU Shader (gpu.shader)

This module provides access to GPUShader internal functions.

## Built-in shaders

All built-in shaders have the `mat4 ModelViewProjectionMatrix` uniform. The value of it can only be modified using the `gpu.matrix` module.

2D_UNIFORM_COLOR:
  attributes: vec3 pos uniforms: vec4 color
2D_FLAT_COLOR:
  attributes: vec3 pos, vec4 color uniforms: -
2D_SMOOTH_COLOR:
  attributes: vec3 pos, vec4 color uniforms: -
2D_IMAGE:
  attributes: vec3 pos, vec2 texCoord uniforms: sampler2D image
3D_UNIFORM_COLOR:
  attributes: vec3 pos uniforms: vec4 color
3D_FLAT_COLOR:
  attributes: vec3 pos, vec4 color uniforms: -
3D_SMOOTH_COLOR:
  attributes: vec3 pos, vec4 color uniforms: -

`gpu.shader.``code_from_builtin`(shader_name)

  Exposes the internal shader code for query.

  Parameters: | shader_name (str) – One of these builtin shader names: { ‘2D_UNIFORM_COLOR’, ‘2D_FLAT_COLOR’, ‘2D_SMOOTH_COLOR’, ‘2D_IMAGE’, ‘3D_UNIFORM_COLOR’, ‘3D_FLAT_COLOR’, ‘3D_SMOOTH_COLOR’}
  Returns: | Vertex, fragment and geometry shader codes.
  Return type: | dict

`gpu.shader.``from_builtin`(shader_name)

  Shaders that are embedded in the blender internal code. They all read the uniform ‘mat4 ModelViewProjectionMatrix’, which can be edited by the ‘gpu.matrix’ module. For more details, you can check the shader code with the function ‘gpu.shader.code_from_builtin’;

  Parameters: | shader_name (str) – One of these builtin shader names: { ‘2D_UNIFORM_COLOR’, ‘2D_FLAT_COLOR’, ‘2D_SMOOTH_COLOR’, ‘2D_IMAGE’, ‘3D_UNIFORM_COLOR’, ‘3D_FLAT_COLOR’, ‘3D_SMOOTH_COLOR’}
  Returns: | Shader object corresponding to the given name.
  Return type: | `bpy.types.GPUShader`

`gpu.shader.``unbind`()

  Unbind the bound shader object.