Blender  V3.3
Public Member Functions | Public Attributes | Protected Attributes | List of all members
blender::gpu::Shader Class Referenceabstract

#include <gpu_shader_private.hh>

Inheritance diagram for blender::gpu::Shader:
blender::gpu::GLShader

Public Member Functions

virtual void vertex_shader_from_glsl (MutableSpan< const char * > sources)=0
 
virtual void geometry_shader_from_glsl (MutableSpan< const char * > sources)=0
 
virtual void fragment_shader_from_glsl (MutableSpan< const char * > sources)=0
 
virtual void compute_shader_from_glsl (MutableSpan< const char * > sources)=0
 
virtual bool finalize (const shader::ShaderCreateInfo *info=nullptr)=0
 
virtual void transform_feedback_names_set (Span< const char * > name_list, eGPUShaderTFBType geom_type)=0
 
virtual bool transform_feedback_enable (GPUVertBuf *)=0
 
virtual void transform_feedback_disable ()=0
 
virtual void bind ()=0
 
virtual void unbind ()=0
 
virtual void uniform_float (int location, int comp_len, int array_size, const float *data)=0
 
virtual void uniform_int (int location, int comp_len, int array_size, const int *data)=0
 
virtual void vertformat_from_shader (GPUVertFormat *) const =0
 
std::string defines_declare (const shader::ShaderCreateInfo &info) const
 
virtual std::string resources_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual std::string vertex_interface_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual std::string fragment_interface_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual std::string geometry_interface_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual std::string geometry_layout_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual std::string compute_layout_declare (const shader::ShaderCreateInfo &info) const =0
 
virtual int program_handle_get () const =0
 
const char *const name_get () const
 
Creation / Destruction
 Shader (const char *name)
 
virtual ~Shader ()
 

Public Attributes

ShaderInterfaceinterface = nullptr
 

Protected Member Functions

Debug functions
void print_log (Span< const char * > sources, char *log, const char *stage, bool error, GPULogParser *parser)
 

Protected Attributes

char name [64]
 

Detailed Description

Implementation of shader compilation and uniforms handling. Base class which is then specialized for each implementation (GL, VK, ...).

Definition at line 28 of file gpu_shader_private.hh.

Constructor & Destructor Documentation

◆ Shader()

Shader::Shader ( const char *  name)

Definition at line 54 of file gpu_shader.cc.

References BLI_strncpy(), and name.

◆ ~Shader()

Shader::~Shader ( )
virtual

Definition at line 59 of file gpu_shader.cc.

References interface.

Member Function Documentation

◆ bind()

virtual void blender::gpu::Shader::bind ( )
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_bind().

◆ compute_layout_declare()

virtual std::string blender::gpu::Shader::compute_layout_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_create_from_info().

◆ compute_shader_from_glsl()

virtual void blender::gpu::Shader::compute_shader_from_glsl ( MutableSpan< const char * >  sources)
pure virtual

◆ defines_declare()

std::string Shader::defines_declare ( const shader::ShaderCreateInfo info) const

◆ finalize()

virtual bool blender::gpu::Shader::finalize ( const shader::ShaderCreateInfo info = nullptr)
pure virtual

◆ fragment_interface_declare()

virtual std::string blender::gpu::Shader::fragment_interface_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

◆ fragment_shader_from_glsl()

virtual void blender::gpu::Shader::fragment_shader_from_glsl ( MutableSpan< const char * >  sources)
pure virtual

◆ geometry_interface_declare()

virtual std::string blender::gpu::Shader::geometry_interface_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

◆ geometry_layout_declare()

virtual std::string blender::gpu::Shader::geometry_layout_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_create_from_info().

◆ geometry_shader_from_glsl()

virtual void blender::gpu::Shader::geometry_shader_from_glsl ( MutableSpan< const char * >  sources)
pure virtual

◆ name_get()

const char* const blender::gpu::Shader::name_get ( ) const
inline

Definition at line 71 of file gpu_shader_private.hh.

References name.

Referenced by blender::gpu::debug::check_gl_resources().

◆ print_log()

void Shader::print_log ( Span< const char * >  sources,
char *  log,
const char *  stage,
bool  error,
GPULogParser parser 
)
protected

◆ program_handle_get()

virtual int blender::gpu::Shader::program_handle_get ( ) const
pure virtual

Implemented in blender::gpu::GLShader.

◆ resources_declare()

virtual std::string blender::gpu::Shader::resources_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_create_from_info().

◆ transform_feedback_disable()

virtual void blender::gpu::Shader::transform_feedback_disable ( )
pure virtual

Implemented in blender::gpu::GLShader.

◆ transform_feedback_enable()

virtual bool blender::gpu::Shader::transform_feedback_enable ( GPUVertBuf )
pure virtual

Implemented in blender::gpu::GLShader.

◆ transform_feedback_names_set()

virtual void blender::gpu::Shader::transform_feedback_names_set ( Span< const char * >  name_list,
eGPUShaderTFBType  geom_type 
)
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_create_ex().

◆ unbind()

virtual void blender::gpu::Shader::unbind ( )
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_shader_unbind().

◆ uniform_float()

virtual void blender::gpu::Shader::uniform_float ( int  location,
int  comp_len,
int  array_size,
const float data 
)
pure virtual

Implemented in blender::gpu::GLShader.

◆ uniform_int()

virtual void blender::gpu::Shader::uniform_int ( int  location,
int  comp_len,
int  array_size,
const int *  data 
)
pure virtual

Implemented in blender::gpu::GLShader.

◆ vertex_interface_declare()

virtual std::string blender::gpu::Shader::vertex_interface_declare ( const shader::ShaderCreateInfo info) const
pure virtual

Implemented in blender::gpu::GLShader.

◆ vertex_shader_from_glsl()

virtual void blender::gpu::Shader::vertex_shader_from_glsl ( MutableSpan< const char * >  sources)
pure virtual

◆ vertformat_from_shader()

virtual void blender::gpu::Shader::vertformat_from_shader ( GPUVertFormat ) const
pure virtual

Implemented in blender::gpu::GLShader.

Referenced by GPU_vertformat_from_shader().

Member Data Documentation

◆ interface

ShaderInterface* blender::gpu::Shader::interface = nullptr

Uniform & attribute locations for shader.

Definition at line 31 of file gpu_shader_private.hh.

Referenced by blender::gpu::GLVaoCache::base_instance_vao_get(), blender::gpu::GLVaoCache::vao_get(), and ~Shader().

◆ name

char blender::gpu::Shader::name[64]
protected

The documentation for this class was generated from the following files: