Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
GPU_shader.h File Reference

Go to the source code of this file.

Classes

struct  GPU_ShaderCreateFromArray_Params
 
struct  GPUShaderConfigData
 

Macros

#define GPU_shader_create_from_arrays(...)
 
#define GPU_shader_create_from_arrays_named(name, ...)
 
#define GPU_SHADER_BUILTIN_LEN   (GPU_SHADER_2D_NODELINK_INST + 1)
 
#define GPU_SHADER_CFG_LEN   (GPU_SHADER_CFG_CLIPPED + 1)
 
#define GPU_MAX_ATTR   15
 
#define GPU_MAX_UNIFORM_ATTR   8
 
#define GPU_KEYFRAME_SHAPE_SQUARE    (GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL | GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL)
 

Typedefs

typedef struct GPUShaderCreateInfo GPUShaderCreateInfo
 
typedef struct GPUShader GPUShader
 
typedef enum eGPUShaderTFBType eGPUShaderTFBType
 
typedef enum eGPUBuiltinShader eGPUBuiltinShader
 
typedef enum eGPUShaderConfig eGPUShaderConfig
 
typedef struct GPUShaderConfigData GPUShaderConfigData
 
typedef enum eGPUKeyframeShapes eGPUKeyframeShapes
 

Enumerations

enum  eGPUShaderTFBType { GPU_SHADER_TFB_NONE = 0 , GPU_SHADER_TFB_POINTS = 1 , GPU_SHADER_TFB_LINES = 2 , GPU_SHADER_TFB_TRIANGLES = 3 }
 
enum  GPUUniformBuiltin {
  GPU_UNIFORM_MODEL = 0 , GPU_UNIFORM_VIEW , GPU_UNIFORM_MODELVIEW , GPU_UNIFORM_PROJECTION ,
  GPU_UNIFORM_VIEWPROJECTION , GPU_UNIFORM_MVP , GPU_UNIFORM_MODEL_INV , GPU_UNIFORM_VIEW_INV ,
  GPU_UNIFORM_MODELVIEW_INV , GPU_UNIFORM_PROJECTION_INV , GPU_UNIFORM_VIEWPROJECTION_INV , GPU_UNIFORM_NORMAL ,
  GPU_UNIFORM_ORCO , GPU_UNIFORM_CLIPPLANES , GPU_UNIFORM_COLOR , GPU_UNIFORM_BASE_INSTANCE ,
  GPU_UNIFORM_RESOURCE_CHUNK , GPU_UNIFORM_RESOURCE_ID , GPU_UNIFORM_SRGB_TRANSFORM , GPU_NUM_UNIFORMS
}
 
enum  GPUUniformBlockBuiltin {
  GPU_UNIFORM_BLOCK_VIEW = 0 , GPU_UNIFORM_BLOCK_MODEL , GPU_UNIFORM_BLOCK_INFO , GPU_UNIFORM_BLOCK_DRW_VIEW ,
  GPU_UNIFORM_BLOCK_DRW_MODEL , GPU_UNIFORM_BLOCK_DRW_INFOS , GPU_NUM_UNIFORM_BLOCKS
}
 
enum  eGPUBuiltinShader {
  GPU_SHADER_TEXT , GPU_SHADER_KEYFRAME_SHAPE , GPU_SHADER_SIMPLE_LIGHTING , GPU_SHADER_2D_UNIFORM_COLOR ,
  GPU_SHADER_2D_FLAT_COLOR , GPU_SHADER_2D_SMOOTH_COLOR , GPU_SHADER_2D_IMAGE , GPU_SHADER_2D_IMAGE_COLOR ,
  GPU_SHADER_2D_IMAGE_DESATURATE_COLOR , GPU_SHADER_2D_IMAGE_RECT_COLOR , GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR , GPU_SHADER_2D_CHECKER ,
  GPU_SHADER_2D_DIAG_STRIPES , GPU_SHADER_3D_UNIFORM_COLOR , GPU_SHADER_3D_CLIPPED_UNIFORM_COLOR , GPU_SHADER_3D_FLAT_COLOR ,
  GPU_SHADER_3D_SMOOTH_COLOR , GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR , GPU_SHADER_3D_POLYLINE_CLIPPED_UNIFORM_COLOR , GPU_SHADER_3D_POLYLINE_FLAT_COLOR ,
  GPU_SHADER_3D_POLYLINE_SMOOTH_COLOR , GPU_SHADER_3D_DEPTH_ONLY , GPU_SHADER_2D_IMAGE_OVERLAYS_MERGE , GPU_SHADER_2D_IMAGE_OVERLAYS_STEREO_MERGE ,
  GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR , GPU_SHADER_3D_IMAGE , GPU_SHADER_3D_IMAGE_MODULATE_ALPHA , GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA ,
  GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA , GPU_SHADER_3D_POINT_FIXED_SIZE_VARYING_COLOR , GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA , GPU_SHADER_3D_POINT_VARYING_SIZE_VARYING_COLOR ,
  GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR , GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR , GPU_SHADER_GPENCIL_STROKE , GPU_SHADER_2D_AREA_BORDERS ,
  GPU_SHADER_2D_WIDGET_BASE , GPU_SHADER_2D_WIDGET_BASE_INST , GPU_SHADER_2D_WIDGET_SHADOW , GPU_SHADER_2D_NODELINK ,
  GPU_SHADER_2D_NODELINK_INST
}
 
enum  eGPUShaderConfig { GPU_SHADER_CFG_DEFAULT = 0 , GPU_SHADER_CFG_CLIPPED = 1 }
 
enum  eGPUKeyframeShapes {
  GPU_KEYFRAME_SHAPE_DIAMOND = (1 << 0) , GPU_KEYFRAME_SHAPE_CIRCLE = (1 << 1) , GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL = (1 << 2) , GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL = (1 << 3) ,
  GPU_KEYFRAME_SHAPE_INNER_DOT = (1 << 4) , GPU_KEYFRAME_SHAPE_ARROW_END_MAX = (1 << 8) , GPU_KEYFRAME_SHAPE_ARROW_END_MIN = (1 << 9) , GPU_KEYFRAME_SHAPE_ARROW_END_MIXED = (1 << 10)
}
 

Functions

GPUShaderGPU_shader_create (const char *vertcode, const char *fragcode, const char *geomcode, const char *libcode, const char *defines, const char *shname)
 
GPUShaderGPU_shader_create_compute (const char *computecode, const char *libcode, const char *defines, const char *shname)
 
GPUShaderGPU_shader_create_from_python (const char *vertcode, const char *fragcode, const char *geomcode, const char *libcode, const char *defines, const char *name)
 
GPUShaderGPU_shader_create_ex (const char *vertcode, const char *fragcode, const char *geomcode, const char *computecode, const char *libcode, const char *defines, eGPUShaderTFBType tf_type, const char **tf_names, int tf_count, const char *shname)
 
GPUShaderGPU_shader_create_from_info (const GPUShaderCreateInfo *_info)
 
GPUShaderGPU_shader_create_from_info_name (const char *info_name)
 
const GPUShaderCreateInfoGPU_shader_create_info_get (const char *info_name)
 
bool GPU_shader_create_info_check_error (const GPUShaderCreateInfo *_info, char r_error[128])
 
struct GPUShaderGPU_shader_create_from_arrays_impl (const struct GPU_ShaderCreateFromArray_Params *params, const char *func, int line)
 
void GPU_shader_free (GPUShader *shader)
 
void GPU_shader_bind (GPUShader *shader)
 
void GPU_shader_unbind (void)
 
const char * GPU_shader_get_name (GPUShader *shader)
 
bool GPU_shader_transform_feedback_enable (GPUShader *shader, struct GPUVertBuf *vertbuf)
 
void GPU_shader_transform_feedback_disable (GPUShader *shader)
 
int GPU_shader_get_program (GPUShader *shader)
 
void GPU_shader_set_srgb_uniform (GPUShader *shader)
 
int GPU_shader_get_uniform (GPUShader *shader, const char *name)
 
int GPU_shader_get_builtin_uniform (GPUShader *shader, int builtin)
 
int GPU_shader_get_builtin_block (GPUShader *shader, int builtin)
 
int GPU_shader_get_uniform_block (GPUShader *shader, const char *name)
 
int GPU_shader_get_ssbo (GPUShader *shader, const char *name)
 
int GPU_shader_get_uniform_block_binding (GPUShader *shader, const char *name)
 
int GPU_shader_get_texture_binding (GPUShader *shader, const char *name)
 
void GPU_shader_uniform_vector (GPUShader *shader, int location, int length, int arraysize, const float *value)
 
void GPU_shader_uniform_vector_int (GPUShader *shader, int location, int length, int arraysize, const int *value)
 
void GPU_shader_uniform_float (GPUShader *shader, int location, float value)
 
void GPU_shader_uniform_int (GPUShader *shader, int location, int value)
 
void GPU_shader_uniform_1i (GPUShader *sh, const char *name, int value)
 
void GPU_shader_uniform_1b (GPUShader *sh, const char *name, bool value)
 
void GPU_shader_uniform_1f (GPUShader *sh, const char *name, float value)
 
void GPU_shader_uniform_2f (GPUShader *sh, const char *name, float x, float y)
 
void GPU_shader_uniform_3f (GPUShader *sh, const char *name, float x, float y, float z)
 
void GPU_shader_uniform_4f (GPUShader *sh, const char *name, float x, float y, float z, float w)
 
void GPU_shader_uniform_2fv (GPUShader *sh, const char *name, const float data[2])
 
void GPU_shader_uniform_3fv (GPUShader *sh, const char *name, const float data[3])
 
void GPU_shader_uniform_4fv (GPUShader *sh, const char *name, const float data[4])
 
void GPU_shader_uniform_mat4 (GPUShader *sh, const char *name, const float data[4][4])
 
void GPU_shader_uniform_2fv_array (GPUShader *sh, const char *name, int len, const float(*val)[2])
 
void GPU_shader_uniform_4fv_array (GPUShader *sh, const char *name, int len, const float(*val)[4])
 
int GPU_shader_get_attribute (GPUShader *shader, const char *name)
 
void GPU_shader_set_framebuffer_srgb_target (int use_srgb_to_linear)
 
GPUShaderGPU_shader_get_builtin_shader_with_config (eGPUBuiltinShader shader, eGPUShaderConfig sh_cfg)
 
GPUShaderGPU_shader_get_builtin_shader (eGPUBuiltinShader shader)
 
void GPU_shader_free_builtin_shaders (void)
 

Variables

const GPUShaderConfigData GPU_shader_cfg_data [GPU_SHADER_CFG_LEN]
 

Macro Definition Documentation

◆ GPU_KEYFRAME_SHAPE_SQUARE

Definition at line 403 of file GPU_shader.h.

◆ GPU_MAX_ATTR

#define GPU_MAX_ATTR   15

Definition at line 388 of file GPU_shader.h.

◆ GPU_MAX_UNIFORM_ATTR

#define GPU_MAX_UNIFORM_ATTR   8

Definition at line 391 of file GPU_shader.h.

◆ GPU_SHADER_BUILTIN_LEN

#define GPU_SHADER_BUILTIN_LEN   (GPU_SHADER_2D_NODELINK_INST + 1)

Definition at line 361 of file GPU_shader.h.

◆ GPU_SHADER_CFG_LEN

#define GPU_SHADER_CFG_LEN   (GPU_SHADER_CFG_CLIPPED + 1)

Definition at line 368 of file GPU_shader.h.

◆ GPU_shader_create_from_arrays

#define GPU_shader_create_from_arrays (   ...)
Value:
&(const struct GPU_ShaderCreateFromArray_Params)__VA_ARGS__, __func__, __LINE__)
struct GPUShader * GPU_shader_create_from_arrays_impl(const struct GPU_ShaderCreateFromArray_Params *params, const char *func, int line)
Definition: gpu_shader.cc:458

Definition at line 87 of file GPU_shader.h.

◆ GPU_shader_create_from_arrays_named

#define GPU_shader_create_from_arrays_named (   name,
  ... 
)
Value:

Definition at line 91 of file GPU_shader.h.

Typedef Documentation

◆ eGPUBuiltinShader

◆ eGPUKeyframeShapes

◆ eGPUShaderConfig

Support multiple configurations.

◆ eGPUShaderTFBType

◆ GPUShader

typedef struct GPUShader GPUShader

Opaque type hiding blender::gpu::Shader

Definition at line 1 of file GPU_shader.h.

◆ GPUShaderConfigData

◆ GPUShaderCreateInfo

Opaque type hiding blender::gpu::shader::ShaderCreateInfo

Definition at line 1 of file GPU_shader.h.

Enumeration Type Documentation

◆ eGPUBuiltinShader

Enumerator
GPU_SHADER_TEXT 
GPU_SHADER_KEYFRAME_SHAPE 
GPU_SHADER_SIMPLE_LIGHTING 
GPU_SHADER_2D_UNIFORM_COLOR 

Take a single color for all the vertices and a 2D position for each vertex.

Parameters
coloruniform vec4
posin vec2
GPU_SHADER_2D_FLAT_COLOR 

Take a 2D position and color for each vertex without color interpolation.

Parameters
colorin vec4
posin vec2
GPU_SHADER_2D_SMOOTH_COLOR 

Take a 2D position and color for each vertex with linear interpolation in window space.

Parameters
colorin vec4
posin vec2
GPU_SHADER_2D_IMAGE 
GPU_SHADER_2D_IMAGE_COLOR 
GPU_SHADER_2D_IMAGE_DESATURATE_COLOR 
GPU_SHADER_2D_IMAGE_RECT_COLOR 
GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR 
GPU_SHADER_2D_CHECKER 
GPU_SHADER_2D_DIAG_STRIPES 
GPU_SHADER_3D_UNIFORM_COLOR 

Take a single color for all the vertices and a 3D position for each vertex.

Parameters
coloruniform vec4
posin vec3
GPU_SHADER_3D_CLIPPED_UNIFORM_COLOR 
GPU_SHADER_3D_FLAT_COLOR 

Take a 3D position and color for each vertex without color interpolation.

Parameters
colorin vec4
posin vec3
GPU_SHADER_3D_SMOOTH_COLOR 

Take a 3D position and color for each vertex with perspective correct interpolation.

Parameters
colorin vec4
posin vec3
GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR 

Take a single color for all the vertices and a 3D position for each vertex. Used for drawing wide lines.

Parameters
coloruniform vec4
posin vec3
GPU_SHADER_3D_POLYLINE_CLIPPED_UNIFORM_COLOR 
GPU_SHADER_3D_POLYLINE_FLAT_COLOR 

Take a 3D position and color for each vertex without color interpolation. Used for drawing wide lines.

Parameters
colorin vec4
posin vec3
GPU_SHADER_3D_POLYLINE_SMOOTH_COLOR 

Take a 3D position and color for each vertex with perspective correct interpolation. Used for drawing wide lines.

Parameters
colorin vec4
posin vec3
GPU_SHADER_3D_DEPTH_ONLY 

Take a 3D position for each vertex and output only depth. Used for drawing wide lines.

Parameters
posin vec3
GPU_SHADER_2D_IMAGE_OVERLAYS_MERGE 
GPU_SHADER_2D_IMAGE_OVERLAYS_STEREO_MERGE 
GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR 
GPU_SHADER_3D_IMAGE 

Draw a texture in 3D. Take a 3D position and a 2D texture coordinate for each vertex.

Exposed via Python-API for add-ons.

Parameters
imageuniform sampler2D
texCoordin vec2
posin vec3
GPU_SHADER_3D_IMAGE_MODULATE_ALPHA 

Draw texture with alpha. Take a 3D position and a 2D texture coordinate for each vertex.

Parameters
alphauniform float
imageuniform sampler2D
texCoordin vec2
posin vec3
GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA 

Draw round points with a constant size. Take a single color for all the vertices and a 2D position for each vertex.

Parameters
sizeuniform float
coloruniform vec4
posin vec2
GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_OUTLINE_AA 

Draw round points with a constant size and an outline. Take a single color for all the vertices and a 2D position for each vertex.

Parameters
sizeuniform float
outlineWidthuniform float
coloruniform vec4
outlineColoruniform vec4
posin vec2
GPU_SHADER_3D_POINT_FIXED_SIZE_VARYING_COLOR 

Draw round points with a hardcoded size. Take a single color for all the vertices and a 3D position for each vertex.

Parameters
coloruniform vec4
posin vec3
GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA 

Draw round points with a constant size. Take a single color for all the vertices and a 3D position for each vertex.

Parameters
sizeuniform float
coloruniform vec4
posin vec3
GPU_SHADER_3D_POINT_VARYING_SIZE_VARYING_COLOR 

Draw round points with a constant size and an outline. Take a 3D position and a color for each vertex.

Parameters
sizein float
colorin vec4
posin vec3
GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR 
GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR 
GPU_SHADER_GPENCIL_STROKE 
GPU_SHADER_2D_AREA_BORDERS 
GPU_SHADER_2D_WIDGET_BASE 
GPU_SHADER_2D_WIDGET_BASE_INST 
GPU_SHADER_2D_WIDGET_SHADOW 
GPU_SHADER_2D_NODELINK 
GPU_SHADER_2D_NODELINK_INST 

Definition at line 189 of file GPU_shader.h.

◆ eGPUKeyframeShapes

Enumerator
GPU_KEYFRAME_SHAPE_DIAMOND 
GPU_KEYFRAME_SHAPE_CIRCLE 
GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL 
GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL 
GPU_KEYFRAME_SHAPE_INNER_DOT 
GPU_KEYFRAME_SHAPE_ARROW_END_MAX 
GPU_KEYFRAME_SHAPE_ARROW_END_MIN 
GPU_KEYFRAME_SHAPE_ARROW_END_MIXED 

Definition at line 393 of file GPU_shader.h.

◆ eGPUShaderConfig

Support multiple configurations.

Enumerator
GPU_SHADER_CFG_DEFAULT 
GPU_SHADER_CFG_CLIPPED 

Definition at line 364 of file GPU_shader.h.

◆ eGPUShaderTFBType

Enumerator
GPU_SHADER_TFB_NONE 
GPU_SHADER_TFB_POINTS 
GPU_SHADER_TFB_LINES 
GPU_SHADER_TFB_TRIANGLES 

Definition at line 22 of file GPU_shader.h.

◆ GPUUniformBlockBuiltin

Enumerator
GPU_UNIFORM_BLOCK_VIEW 

Deprecated

GPU_UNIFORM_BLOCK_MODEL 
GPU_UNIFORM_BLOCK_INFO 
GPU_UNIFORM_BLOCK_DRW_VIEW 

New ones

GPU_UNIFORM_BLOCK_DRW_MODEL 
GPU_UNIFORM_BLOCK_DRW_INFOS 
GPU_NUM_UNIFORM_BLOCKS 

Definition at line 138 of file GPU_shader.h.

◆ GPUUniformBuiltin

Enumerator
GPU_UNIFORM_MODEL 
GPU_UNIFORM_VIEW 
GPU_UNIFORM_MODELVIEW 
GPU_UNIFORM_PROJECTION 
GPU_UNIFORM_VIEWPROJECTION 
GPU_UNIFORM_MVP 
GPU_UNIFORM_MODEL_INV 
GPU_UNIFORM_VIEW_INV 
GPU_UNIFORM_MODELVIEW_INV 
GPU_UNIFORM_PROJECTION_INV 
GPU_UNIFORM_VIEWPROJECTION_INV 
GPU_UNIFORM_NORMAL 
GPU_UNIFORM_ORCO 
GPU_UNIFORM_CLIPPLANES 
GPU_UNIFORM_COLOR 
GPU_UNIFORM_BASE_INSTANCE 
GPU_UNIFORM_RESOURCE_CHUNK 
GPU_UNIFORM_RESOURCE_ID 
GPU_UNIFORM_SRGB_TRANSFORM 
GPU_NUM_UNIFORMS 

Definition at line 111 of file GPU_shader.h.

Function Documentation

◆ GPU_shader_bind()

void GPU_shader_bind ( GPUShader shader)

Definition at line 491 of file gpu_shader.cc.

References blender::gpu::Shader::bind(), blender::gpu::Context::get(), GPU_matrix_bind(), GPU_matrix_dirty_get(), GPU_shader_set_srgb_uniform(), gpu_shader_srgb_uniform_dirty_get(), blender::gpu::Context::shader, and blender::gpu::unwrap().

Referenced by draw_filled_lasso(), draw_shgroup(), draw_subdiv_accumulate_normals(), draw_subdiv_build_edge_fac_buffer(), draw_subdiv_build_edituv_stretch_angle_buffer(), draw_subdiv_build_edituv_stretch_area_buffer(), draw_subdiv_build_fdots_buffers(), draw_subdiv_build_lines_buffer(), draw_subdiv_build_lines_loose_buffer(), draw_subdiv_build_lnor_buffer(), draw_subdiv_build_sculpt_data_buffer(), draw_subdiv_build_tris_buffer(), draw_subdiv_extract_pos_nor(), draw_subdiv_extract_uvs(), draw_subdiv_finalize_custom_normals(), draw_subdiv_finalize_normals(), draw_subdiv_interp_custom_data(), blender::gpu::GLImmediate::end(), GPU_batch_draw(), GPU_batch_draw_instanced(), GPU_batch_draw_range(), GPU_batch_set_shader(), GPU_compute_dispatch(), GPU_compute_dispatch_indirect(), GPU_shader_get_builtin_shader_with_config(), icon_draw_cache_texture_flush_ex(), icon_draw_texture(), immBindShader(), pygpu_batch_program_use_begin(), pygpu_shader_bind(), blender::gpu::tests::test_gpu_shader_compute_1d(), blender::gpu::tests::test_gpu_shader_compute_2d(), blender::gpu::tests::test_gpu_shader_compute_ibo(), blender::gpu::tests::test_gpu_shader_compute_vbo(), blender::gpu::tests::test_gpu_shader_ssbo_binding(), and wm_draw_region_blend().

◆ GPU_shader_create()

GPUShader* GPU_shader_create ( const char *  vertcode,
const char *  fragcode,
const char *  geomcode,
const char *  libcode,
const char *  defines,
const char *  shname 
)

◆ GPU_shader_create_compute()

GPUShader* GPU_shader_create_compute ( const char *  computecode,
const char *  libcode,
const char *  defines,
const char *  shname 
)

◆ GPU_shader_create_ex()

GPUShader* GPU_shader_create_ex ( const char *  vertcode,
const char *  fragcode,
const char *  geomcode,
const char *  computecode,
const char *  libcode,
const char *  defines,
eGPUShaderTFBType  tf_type,
const char **  tf_names,
int  tf_count,
const char *  shname 
)

◆ GPU_shader_create_from_arrays_impl()

struct GPUShader* GPU_shader_create_from_arrays_impl ( const struct GPU_ShaderCreateFromArray_Params params,
const char *  func,
int  line 
)

Use via GPU_shader_create_from_arrays macro (avoids passing in param).

Similar to DRW_shader_create_with_lib with the ability to include libs for each type of shader.

It has the advantage that each item can be conditionally included without having to build the string inline, then free it.

Parameters
paramsNULL terminated arrays of strings.

Example:

.vert = (const char *[]){shader_lib_glsl, shader_vert_glsl, NULL},
.geom = (const char *[]){shader_geom_glsl, NULL},
.frag = (const char *[]){shader_frag_glsl, NULL},
.defs = (const char *[]){"#define DEFINE\n", test ? "#define OTHER_DEFINE\n" : "", NULL},
});
#define GPU_shader_create_from_arrays(...)
Definition: GPU_shader.h:87
ccl_gpu_kernel_postfix ccl_global float int int int int sh

Definition at line 458 of file gpu_shader.cc.

References ARRAY_SIZE, BLI_snprintf(), GPU_shader_create(), MEM_freeN, params, sh, str, and string_join_array_maybe_alloc().

◆ GPU_shader_create_from_info()

GPUShader* GPU_shader_create_from_info ( const GPUShaderCreateInfo _info)

Definition at line 277 of file gpu_shader.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, blender::StringRefNull::c_str(), blender::gpu::shader::ShaderCreateInfo::check_error(), blender::gpu::Shader::compute_layout_declare(), blender::gpu::Shader::compute_shader_from_glsl(), blender::gpu::shader::ShaderCreateInfo::compute_source_, blender::gpu::Shader::defines_declare(), error(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), blender::gpu::Shader::finalize(), blender::gpu::Shader::fragment_shader_from_glsl(), blender::gpu::shader::ShaderCreateInfo::fragment_source_, blender::gpu::Shader::geometry_layout_declare(), blender::gpu::Shader::geometry_shader_from_glsl(), blender::gpu::shader::ShaderCreateInfo::geometry_source_, blender::gpu::GPUBackend::get(), GPU_debug_group_begin(), GPU_debug_group_end(), GPU_DEBUG_SHADER_COMPILATION_GROUP, blender::gpu::shader::gpu_shader_dependency_get_resolved_source(), blender::gpu::shader::gpu_shader_dependency_get_source(), blender::StringRefBase::is_empty(), blender::gpu::shader::ShaderCreateInfo::legacy_resource_location_, blender::gpu::shader::ShaderCreateInfo::name_, blender::gpu::Shader::resources_declare(), blender::gpu::GPUBackend::shader_alloc(), standard_defines(), blender::gpu::shader::ShaderCreateInfo::typedef_source_generated, blender::gpu::shader::ShaderCreateInfo::typedef_sources_, blender::gpu::Shader::vertex_shader_from_glsl(), blender::gpu::shader::ShaderCreateInfo::vertex_source_, and blender::gpu::wrap().

Referenced by createGPUShader(), GPU_pass_compile(), GPU_shader_create_from_info_name(), gpu_shader_create_info_compile_all(), and pygpu_shader_create_from_info().

◆ GPU_shader_create_from_info_name()

GPUShader* GPU_shader_create_from_info_name ( const char *  info_name)

Definition at line 265 of file gpu_shader.cc.

References blender::StringRefNull::c_str(), blender::gpu::shader::ShaderCreateInfo::do_static_compilation_, GPU_shader_create_from_info(), gpu_shader_create_info_get(), and blender::gpu::shader::ShaderCreateInfo::name_.

Referenced by BASIC_shaders_curves_depth_sh_get(), BASIC_shaders_depth_conservative_sh_get(), BASIC_shaders_depth_sh_get(), BASIC_shaders_pointcloud_depth_conservative_sh_get(), BASIC_shaders_pointcloud_depth_sh_get(), external_engine_init(), GPENCIL_shader_antialiasing(), GPENCIL_shader_depth_merge_get(), GPENCIL_shader_fx_blur_get(), GPENCIL_shader_fx_colorize_get(), GPENCIL_shader_fx_composite_get(), GPENCIL_shader_fx_glow_get(), GPENCIL_shader_fx_pixelize_get(), GPENCIL_shader_fx_rim_get(), GPENCIL_shader_fx_shadow_get(), GPENCIL_shader_fx_transform_get(), GPENCIL_shader_geometry_get(), GPENCIL_shader_layer_blend_get(), GPENCIL_shader_mask_invert_get(), GPU_shader_get_builtin_shader_with_config(), hair_refine_shader_compute_create(), hair_refine_shader_transform_feedback_workaround_create(), blender::draw::image_engine::IMAGE_shader_depth_get(), blender::draw::image_engine::IMAGE_shader_image_get(), OVERLAY_shader_antialiasing(), OVERLAY_shader_armature_degrees_of_freedom_solid(), OVERLAY_shader_armature_degrees_of_freedom_wire(), OVERLAY_shader_armature_envelope(), OVERLAY_shader_armature_shape(), OVERLAY_shader_armature_shape_wire(), OVERLAY_shader_armature_sphere(), OVERLAY_shader_armature_stick(), OVERLAY_shader_armature_wire(), OVERLAY_shader_background(), OVERLAY_shader_clipbound(), OVERLAY_shader_depth_only(), OVERLAY_shader_edit_curve_handle(), OVERLAY_shader_edit_curve_point(), OVERLAY_shader_edit_curve_wire(), OVERLAY_shader_edit_gpencil_guide_point(), OVERLAY_shader_edit_gpencil_point(), OVERLAY_shader_edit_gpencil_wire(), OVERLAY_shader_edit_lattice_point(), OVERLAY_shader_edit_lattice_wire(), OVERLAY_shader_edit_mesh_analysis(), OVERLAY_shader_edit_mesh_edge(), OVERLAY_shader_edit_mesh_face(), OVERLAY_shader_edit_mesh_facedot(), OVERLAY_shader_edit_mesh_normal(), OVERLAY_shader_edit_mesh_skin_root(), OVERLAY_shader_edit_mesh_vert(), OVERLAY_shader_edit_particle_point(), OVERLAY_shader_edit_particle_strand(), OVERLAY_shader_edit_uv_edges_for_edge_select_get(), OVERLAY_shader_edit_uv_edges_get(), OVERLAY_shader_edit_uv_face_dots_get(), OVERLAY_shader_edit_uv_face_get(), OVERLAY_shader_edit_uv_mask_image(), OVERLAY_shader_edit_uv_stencil_image(), OVERLAY_shader_edit_uv_stretching_angle_get(), OVERLAY_shader_edit_uv_stretching_area_get(), OVERLAY_shader_edit_uv_tiled_image_borders_get(), OVERLAY_shader_edit_uv_verts_get(), OVERLAY_shader_extra(), OVERLAY_shader_extra_grid(), OVERLAY_shader_extra_groundline(), OVERLAY_shader_extra_loose_point(), OVERLAY_shader_extra_point(), OVERLAY_shader_extra_wire(), OVERLAY_shader_facing(), OVERLAY_shader_gpencil_canvas(), OVERLAY_shader_grid(), OVERLAY_shader_grid_background(), OVERLAY_shader_grid_image(), OVERLAY_shader_image(), OVERLAY_shader_motion_path_line(), OVERLAY_shader_motion_path_vert(), OVERLAY_shader_outline_detect(), OVERLAY_shader_outline_prepass(), OVERLAY_shader_outline_prepass_curves(), OVERLAY_shader_outline_prepass_gpencil(), OVERLAY_shader_outline_prepass_pointcloud(), OVERLAY_shader_paint_face(), OVERLAY_shader_paint_point(), OVERLAY_shader_paint_texture(), OVERLAY_shader_paint_vertcol(), OVERLAY_shader_paint_weight(), OVERLAY_shader_paint_wire(), OVERLAY_shader_particle_dot(), OVERLAY_shader_particle_shape(), OVERLAY_shader_sculpt_curves_selection(), OVERLAY_shader_sculpt_mask(), OVERLAY_shader_uniform_color(), OVERLAY_shader_volume_gridlines(), OVERLAY_shader_volume_velocity(), OVERLAY_shader_wireframe(), OVERLAY_shader_wireframe_select(), OVERLAY_shader_xray_fade(), select_engine_init(), blender::eevee::ShaderModule::static_shader_get(), workbench_shader_antialiasing_accumulation_get(), workbench_shader_antialiasing_get(), workbench_shader_cavity_get(), workbench_shader_composite_get(), workbench_shader_depth_of_field_get(), workbench_shader_get_ex(), workbench_shader_merge_infront_get(), workbench_shader_outline_get(), workbench_shader_shadow_pass_get_ex(), workbench_shader_transparent_resolve_get(), and workbench_shader_volume_get().

◆ GPU_shader_create_from_python()

GPUShader* GPU_shader_create_from_python ( const char *  vertcode,
const char *  fragcode,
const char *  geomcode,
const char *  libcode,
const char *  defines,
const char *  name 
)

◆ GPU_shader_create_info_check_error()

bool GPU_shader_create_info_check_error ( const GPUShaderCreateInfo _info,
char  r_error[128] 
)

◆ GPU_shader_create_info_get()

const GPUShaderCreateInfo* GPU_shader_create_info_get ( const char *  info_name)

Definition at line 247 of file gpu_shader.cc.

References gpu_shader_create_info_get().

Referenced by blender::eevee::ShaderModule::ShaderModule().

◆ GPU_shader_free()

void GPU_shader_free ( GPUShader shader)

◆ GPU_shader_free_builtin_shaders()

void GPU_shader_free_builtin_shaders ( void  )

◆ GPU_shader_get_attribute()

int GPU_shader_get_attribute ( GPUShader shader,
const char *  name 
)

Definition at line 606 of file gpu_shader.cc.

References blender::gpu::ShaderInput::location.

Referenced by pygpu_shader_attr_from_name().

◆ GPU_shader_get_builtin_block()

int GPU_shader_get_builtin_block ( GPUShader shader,
int  builtin 
)

Definition at line 572 of file gpu_shader.cc.

References blender::gpu::ShaderInterface::ubo_builtin().

Referenced by drw_shgroup_init().

◆ GPU_shader_get_builtin_shader()

GPUShader* GPU_shader_get_builtin_shader ( eGPUBuiltinShader  shader)

◆ GPU_shader_get_builtin_shader_with_config()

GPUShader* GPU_shader_get_builtin_shader_with_config ( eGPUBuiltinShader  shader,
eGPUShaderConfig  sh_cfg 
)

◆ GPU_shader_get_builtin_uniform()

int GPU_shader_get_builtin_uniform ( GPUShader shader,
int  builtin 
)

◆ GPU_shader_get_name()

const char* GPU_shader_get_name ( GPUShader shader)

Definition at line 530 of file gpu_shader.cc.

References blender::gpu::unwrap().

Referenced by pygpu_shader_name().

◆ GPU_shader_get_program()

int GPU_shader_get_program ( GPUShader shader)

DEPRECATED: Kept only because of BGL API.

Definition at line 619 of file gpu_shader.cc.

References blender::gpu::unwrap().

Referenced by pygpu_shader_program_get().

◆ GPU_shader_get_ssbo()

int GPU_shader_get_ssbo ( GPUShader shader,
const char *  name 
)

◆ GPU_shader_get_texture_binding()

int GPU_shader_get_texture_binding ( GPUShader shader,
const char *  name 
)

◆ GPU_shader_get_uniform()

int GPU_shader_get_uniform ( GPUShader shader,
const char *  name 
)

◆ GPU_shader_get_uniform_block()

int GPU_shader_get_uniform_block ( GPUShader shader,
const char *  name 
)

DEPRECATED: Kept only because of Python GPU API.

Definition at line 585 of file gpu_shader.cc.

References blender::gpu::ShaderInput::location.

Referenced by pygpu_shader_uniform_block_from_name().

◆ GPU_shader_get_uniform_block_binding()

int GPU_shader_get_uniform_block_binding ( GPUShader shader,
const char *  name 
)

◆ GPU_shader_set_framebuffer_srgb_target()

void GPU_shader_set_framebuffer_srgb_target ( int  use_srgb_to_linear)

◆ GPU_shader_set_srgb_uniform()

void GPU_shader_set_srgb_uniform ( GPUShader shader)

◆ GPU_shader_transform_feedback_disable()

void GPU_shader_transform_feedback_disable ( GPUShader shader)

Definition at line 548 of file gpu_shader.cc.

References blender::gpu::unwrap().

Referenced by draw_shgroup().

◆ GPU_shader_transform_feedback_enable()

bool GPU_shader_transform_feedback_enable ( GPUShader shader,
struct GPUVertBuf vertbuf 
)

Returns true if transform feedback was successfully enabled.

Definition at line 543 of file gpu_shader.cc.

References blender::gpu::unwrap().

Referenced by draw_update_uniforms().

◆ GPU_shader_unbind()

void GPU_shader_unbind ( void  )

◆ GPU_shader_uniform_1b()

void GPU_shader_uniform_1b ( GPUShader sh,
const char *  name,
bool  value 
)

Definition at line 658 of file gpu_shader.cc.

References GPU_shader_uniform_1i(), and sh.

◆ GPU_shader_uniform_1f()

void GPU_shader_uniform_1f ( GPUShader sh,
const char *  name,
float  value 
)

Definition at line 681 of file gpu_shader.cc.

References GPU_shader_get_uniform(), GPU_shader_uniform_float(), and sh.

Referenced by immUniform1f().

◆ GPU_shader_uniform_1i()

void GPU_shader_uniform_1i ( GPUShader sh,
const char *  name,
int  value 
)

◆ GPU_shader_uniform_2f()

void GPU_shader_uniform_2f ( GPUShader sh,
const char *  name,
float  x,
float  y 
)

Definition at line 663 of file gpu_shader.cc.

References data, GPU_shader_uniform_2fv(), sh, x, and y.

Referenced by immUniform2f().

◆ GPU_shader_uniform_2fv()

void GPU_shader_uniform_2fv ( GPUShader sh,
const char *  name,
const float  data[2] 
)

Definition at line 687 of file gpu_shader.cc.

References data, GPU_shader_get_uniform(), GPU_shader_uniform_vector(), and sh.

Referenced by GPU_shader_uniform_2f(), and immUniform2fv().

◆ GPU_shader_uniform_2fv_array()

void GPU_shader_uniform_2fv_array ( GPUShader sh,
const char *  name,
int  len,
const float(*)  val[2] 
)

Definition at line 711 of file gpu_shader.cc.

References GPU_shader_get_uniform(), GPU_shader_uniform_vector(), len, and sh.

◆ GPU_shader_uniform_3f()

void GPU_shader_uniform_3f ( GPUShader sh,
const char *  name,
float  x,
float  y,
float  z 
)

Definition at line 669 of file gpu_shader.cc.

References data, GPU_shader_uniform_3fv(), sh, x, y, and z.

Referenced by immUniform3f().

◆ GPU_shader_uniform_3fv()

void GPU_shader_uniform_3fv ( GPUShader sh,
const char *  name,
const float  data[3] 
)

Definition at line 693 of file gpu_shader.cc.

References data, GPU_shader_get_uniform(), GPU_shader_uniform_vector(), and sh.

Referenced by GPU_shader_uniform_3f(), and immUniform3fv().

◆ GPU_shader_uniform_4f()

void GPU_shader_uniform_4f ( GPUShader sh,
const char *  name,
float  x,
float  y,
float  z,
float  w 
)

Definition at line 675 of file gpu_shader.cc.

References data, GPU_shader_uniform_4fv(), sh, w(), x, y, and z.

Referenced by button2d_draw_intern(), and immUniform4f().

◆ GPU_shader_uniform_4fv()

void GPU_shader_uniform_4fv ( GPUShader sh,
const char *  name,
const float  data[4] 
)

Definition at line 699 of file gpu_shader.cc.

References data, GPU_shader_get_uniform(), GPU_shader_uniform_vector(), and sh.

Referenced by GPU_shader_uniform_4f(), and immUniform4fv().

◆ GPU_shader_uniform_4fv_array()

void GPU_shader_uniform_4fv_array ( GPUShader sh,
const char *  name,
int  len,
const float(*)  val[4] 
)

Definition at line 717 of file gpu_shader.cc.

References GPU_shader_get_uniform(), GPU_shader_uniform_vector(), len, and sh.

Referenced by immUniformArray4fv().

◆ GPU_shader_uniform_float()

void GPU_shader_uniform_float ( GPUShader shader,
int  location,
float  value 
)

Definition at line 647 of file gpu_shader.cc.

References GPU_shader_uniform_vector().

Referenced by GPU_shader_uniform_1f().

◆ GPU_shader_uniform_int()

void GPU_shader_uniform_int ( GPUShader shader,
int  location,
int  value 
)

◆ GPU_shader_uniform_mat4()

void GPU_shader_uniform_mat4 ( GPUShader sh,
const char *  name,
const float  data[4][4] 
)

Definition at line 705 of file gpu_shader.cc.

References data, GPU_shader_get_uniform(), GPU_shader_uniform_vector(), and sh.

Referenced by immUniformMatrix4fv().

◆ GPU_shader_uniform_vector()

void GPU_shader_uniform_vector ( GPUShader shader,
int  location,
int  length,
int  arraysize,
const float value 
)

◆ GPU_shader_uniform_vector_int()

void GPU_shader_uniform_vector_int ( GPUShader shader,
int  location,
int  length,
int  arraysize,
const int *  value 
)

Variable Documentation

◆ GPU_shader_cfg_data

const GPUShaderConfigData GPU_shader_cfg_data[GPU_SHADER_CFG_LEN]
extern

Definition at line 89 of file gpu_shader_builtin.c.