Blender  V3.3
Classes | Typedefs | Enumerations | Functions | Variables
blender::gpu::shader Namespace Reference

Classes

struct  StageInterfaceInfo
 
struct  ShaderCreateInfo
 Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correctly provided, this is all that is needed to create and compile a GPUShader. More...
 

Typedefs

using CreateInfoDictionnary = Map< StringRef, ShaderCreateInfo * >
 
using InterfaceDictionnary = Map< StringRef, StageInterfaceInfo * >
 

Enumerations

enum class  Type {
  FLOAT = 0 , VEC2 , VEC3 , VEC4 ,
  MAT3 , MAT4 , UINT , UVEC2 ,
  UVEC3 , UVEC4 , INT , IVEC2 ,
  IVEC3 , IVEC4 , BOOL
}
 
enum class  BuiltinBits {
  NONE = 0 , BARYCENTRIC_COORD = (1 << 0) , FRAG_COORD = (1 << 2) , FRONT_FACING = (1 << 4) ,
  GLOBAL_INVOCATION_ID = (1 << 5) , INSTANCE_ID = (1 << 6) , LAYER = (1 << 7) , LOCAL_INVOCATION_ID = (1 << 8) ,
  LOCAL_INVOCATION_INDEX = (1 << 9) , NUM_WORK_GROUP = (1 << 10) , POINT_COORD = (1 << 11) , POINT_SIZE = (1 << 12) ,
  PRIMITIVE_ID = (1 << 13) , VERTEX_ID = (1 << 14) , WORK_GROUP_ID = (1 << 15) , WORK_GROUP_SIZE = (1 << 16)
}
 
enum class  DepthWrite { ANY = 0 , GREATER , LESS , UNCHANGED }
 
enum class  ImageType {
  FLOAT_BUFFER = 0 , FLOAT_1D , FLOAT_1D_ARRAY , FLOAT_2D ,
  FLOAT_2D_ARRAY , FLOAT_3D , FLOAT_CUBE , FLOAT_CUBE_ARRAY ,
  INT_BUFFER , INT_1D , INT_1D_ARRAY , INT_2D ,
  INT_2D_ARRAY , INT_3D , INT_CUBE , INT_CUBE_ARRAY ,
  UINT_BUFFER , UINT_1D , UINT_1D_ARRAY , UINT_2D ,
  UINT_2D_ARRAY , UINT_3D , UINT_CUBE , UINT_CUBE_ARRAY ,
  SHADOW_2D , SHADOW_2D_ARRAY , SHADOW_CUBE , SHADOW_CUBE_ARRAY ,
  DEPTH_2D , DEPTH_2D_ARRAY , DEPTH_CUBE , DEPTH_CUBE_ARRAY
}
 
enum class  Qualifier {
  NO_RESTRICT = (1 << 0) , READ = (1 << 1) , WRITE = (1 << 2) , READ_WRITE = READ | WRITE ,
  QUALIFIER_MAX = (WRITE << 1) - 1
}
 
enum class  Frequency { BATCH = 0 , PASS }
 
enum class  DualBlend { NONE = 0 , SRC_0 , SRC_1 }
 
enum class  Interpolation { SMOOTH = 0 , FLAT , NO_PERSPECTIVE }
 
enum class  PrimitiveIn {
  POINTS = 0 , LINES , LINES_ADJACENCY , TRIANGLES ,
  TRIANGLES_ADJACENCY
}
 
enum class  PrimitiveOut { POINTS = 0 , LINE_STRIP , TRIANGLE_STRIP }
 

Functions

static Type to_type (const eGPUType type)
 
static std::ostream & operator<< (std::ostream &stream, const Type type)
 
static std::ostream & operator<< (std::ostream &stream, const eGPUType type)
 
 ENUM_OPERATORS (BuiltinBits, BuiltinBits::WORK_GROUP_SIZE)
 
 ENUM_OPERATORS (Qualifier, Qualifier::QUALIFIER_MAX)
 
BuiltinBits gpu_shader_dependency_get_builtins (const StringRefNull shader_source_name)
 
Vector< const char * > gpu_shader_dependency_get_resolved_source (const StringRefNull shader_source_name)
 
StringRefNull gpu_shader_dependency_get_source (const StringRefNull shader_source_name)
 
StringRefNull gpu_shader_dependency_get_filename_from_source_string (const StringRefNull source_string)
 

Variables

static CreateInfoDictionnaryg_create_infos = nullptr
 
static InterfaceDictionnaryg_interfaces = nullptr
 

Typedef Documentation

◆ CreateInfoDictionnary

Definition at line 28 of file gpu_shader_create_info.cc.

◆ InterfaceDictionnary

Definition at line 29 of file gpu_shader_create_info.cc.

Enumeration Type Documentation

◆ BuiltinBits

Enumerator
NONE 
BARYCENTRIC_COORD 

Allow getting barycentric coordinates inside the fragment shader.

Note
Emulated on OpenGL.
FRAG_COORD 
FRONT_FACING 
GLOBAL_INVOCATION_ID 
INSTANCE_ID 
LAYER 

Allow setting the target layer when the output is a layered frame-buffer.

Note
Emulated through geometry shader on older hardware.
LOCAL_INVOCATION_ID 
LOCAL_INVOCATION_INDEX 
NUM_WORK_GROUP 
POINT_COORD 
POINT_SIZE 
PRIMITIVE_ID 
VERTEX_ID 
WORK_GROUP_ID 
WORK_GROUP_SIZE 

Definition at line 105 of file gpu_shader_create_info.hh.

◆ DepthWrite

Follow convention described in: https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_conservative_depth.txt

Enumerator
ANY 
GREATER 
LESS 
UNCHANGED 

Definition at line 137 of file gpu_shader_create_info.hh.

◆ DualBlend

Enumerator
NONE 
SRC_0 
SRC_1 

Definition at line 200 of file gpu_shader_create_info.hh.

◆ Frequency

Enumerator
BATCH 
PASS 

Definition at line 194 of file gpu_shader_create_info.hh.

◆ ImageType

Enumerator
FLOAT_BUFFER 

Color samplers/image.

FLOAT_1D 
FLOAT_1D_ARRAY 
FLOAT_2D 
FLOAT_2D_ARRAY 
FLOAT_3D 
FLOAT_CUBE 
FLOAT_CUBE_ARRAY 
INT_BUFFER 
INT_1D 
INT_1D_ARRAY 
INT_2D 
INT_2D_ARRAY 
INT_3D 
INT_CUBE 
INT_CUBE_ARRAY 
UINT_BUFFER 
UINT_1D 
UINT_1D_ARRAY 
UINT_2D 
UINT_2D_ARRAY 
UINT_3D 
UINT_CUBE 
UINT_CUBE_ARRAY 
SHADOW_2D 

Depth samplers (not supported as image).

SHADOW_2D_ARRAY 
SHADOW_CUBE 
SHADOW_CUBE_ARRAY 
DEPTH_2D 
DEPTH_2D_ARRAY 
DEPTH_CUBE 
DEPTH_CUBE_ARRAY 

Definition at line 145 of file gpu_shader_create_info.hh.

◆ Interpolation

Enumerator
SMOOTH 
FLAT 
NO_PERSPECTIVE 

Definition at line 207 of file gpu_shader_create_info.hh.

◆ PrimitiveIn

Input layout for geometry shader.

Enumerator
POINTS 
LINES 
LINES_ADJACENCY 
TRIANGLES 
TRIANGLES_ADJACENCY 

Definition at line 214 of file gpu_shader_create_info.hh.

◆ PrimitiveOut

Output layout for geometry shader.

Enumerator
POINTS 
LINE_STRIP 
TRIANGLE_STRIP 

Definition at line 223 of file gpu_shader_create_info.hh.

◆ Qualifier

Enumerator
NO_RESTRICT 

Restrict flag is set by default. Unless specified otherwise.

READ 
WRITE 
READ_WRITE 

Shorthand version of combined flags.

QUALIFIER_MAX 

Definition at line 183 of file gpu_shader_create_info.hh.

◆ Type

Enumerator
FLOAT 
VEC2 
VEC3 
VEC4 
MAT3 
MAT4 
UINT 
UVEC2 
UVEC3 
UVEC4 
INT 
IVEC2 
IVEC3 
IVEC4 
BOOL 

Definition at line 34 of file gpu_shader_create_info.hh.

Function Documentation

◆ ENUM_OPERATORS() [1/2]

blender::gpu::shader::ENUM_OPERATORS ( BuiltinBits  ,
BuiltinBits::WORK_GROUP_SIZE   
)

◆ ENUM_OPERATORS() [2/2]

blender::gpu::shader::ENUM_OPERATORS ( Qualifier  ,
Qualifier::QUALIFIER_MAX   
)

◆ gpu_shader_dependency_get_builtins()

BuiltinBits blender::gpu::shader::gpu_shader_dependency_get_builtins ( const StringRefNull  shader_source_name)

◆ gpu_shader_dependency_get_filename_from_source_string()

StringRefNull blender::gpu::shader::gpu_shader_dependency_get_filename_from_source_string ( const StringRefNull  source_string)

◆ gpu_shader_dependency_get_resolved_source()

Vector<const char *> blender::gpu::shader::gpu_shader_dependency_get_resolved_source ( const StringRefNull  shader_source_name)

◆ gpu_shader_dependency_get_source()

StringRefNull blender::gpu::shader::gpu_shader_dependency_get_source ( const StringRefNull  shader_source_name)

◆ operator<<() [1/2]

static std::ostream& blender::gpu::shader::operator<< ( std::ostream &  stream,
const eGPUType  type 
)
inlinestatic

Definition at line 95 of file gpu_shader_create_info.hh.

References GPU_CLOSURE, to_type(), and type.

◆ operator<<() [2/2]

static std::ostream& blender::gpu::shader::operator<< ( std::ostream &  stream,
const Type  type 
)
inlinestatic

Definition at line 74 of file gpu_shader_create_info.hh.

References BLI_assert, FLOAT, MAT3, MAT4, type, VEC2, VEC3, and VEC4.

◆ to_type()

static Type blender::gpu::shader::to_type ( const eGPUType  type)
inlinestatic

Variable Documentation

◆ g_create_infos

CreateInfoDictionnary* blender::gpu::shader::g_create_infos = nullptr
static

◆ g_interfaces

InterfaceDictionnary* blender::gpu::shader::g_interfaces = nullptr
static