Blender
V3.3
|
#include <gl_shader.hh>
Public Member Functions | |
bool | is_compute () const |
Creation / Destruction | |
GLShader (const char *name) | |
~GLShader () | |
Create Info | |
std::string | resources_declare (const shader::ShaderCreateInfo &info) const override |
std::string | vertex_interface_declare (const shader::ShaderCreateInfo &info) const override |
std::string | fragment_interface_declare (const shader::ShaderCreateInfo &info) const override |
std::string | geometry_interface_declare (const shader::ShaderCreateInfo &info) const override |
std::string | geometry_layout_declare (const shader::ShaderCreateInfo &info) const override |
std::string | compute_layout_declare (const shader::ShaderCreateInfo &info) const override |
Transform feedback | |
TODO(fclem): Should be replaced by compute shaders. | |
void | transform_feedback_names_set (Span< const char * > name_list, eGPUShaderTFBType geom_type) override |
bool | transform_feedback_enable (GPUVertBuf *buf) override |
void | transform_feedback_disable () override |
Binding | |
void | bind () override |
void | unbind () override |
Uniforms setters | |
void | uniform_float (int location, int comp_len, int array_size, const float *data) override |
void | uniform_int (int location, int comp_len, int array_size, const int *data) override |
GPUVertFormat from Shader | |
void | vertformat_from_shader (GPUVertFormat *format) const override |
int | program_handle_get () const override |
![]() | |
std::string | defines_declare (const shader::ShaderCreateInfo &info) const |
const char *const | name_get () const |
Shader (const char *name) | |
virtual | ~Shader () |
Shader stage creation | |
void | vertex_shader_from_glsl (MutableSpan< const char * > sources) override |
void | geometry_shader_from_glsl (MutableSpan< const char * > sources) override |
void | fragment_shader_from_glsl (MutableSpan< const char * > sources) override |
void | compute_shader_from_glsl (MutableSpan< const char * > sources) override |
bool | finalize (const shader::ShaderCreateInfo *info=nullptr) override |
Additional Inherited Members | |
![]() | |
ShaderInterface * | interface = nullptr |
![]() | |
void | print_log (Span< const char * > sources, char *log, const char *stage, bool error, GPULogParser *parser) |
![]() | |
char | name [64] |
Implementation of shader compilation and uniforms handling using OpenGL.
Definition at line 23 of file gl_shader.hh.
GLShader::GLShader | ( | const char * | name | ) |
Definition at line 32 of file gl_shader.cc.
References BLI_assert, blender::gpu::GLContext::get(), blender::gpu::Shader::name, and blender::gpu::debug::object_label().
GLShader::~GLShader | ( | ) |
Definition at line 43 of file gl_shader.cc.
References BLI_assert, and blender::gpu::GLContext::get().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1017 of file gl_shader.cc.
References BLI_assert.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 700 of file gl_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::compute_layout_, blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_x, blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_y, and blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_z.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 969 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 974 of file gl_shader.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), geometry_shader_from_glsl(), blender::gpu::shader::ShaderCreateInfo::legacy_resource_location_, log(), new(), and blender::gpu::Shader::print_log().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 565 of file gl_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::builtins_, blender::gpu::shader::ShaderCreateInfo::depth_write_, blender::gpu::shader::ShaderCreateInfo::early_fragment_test_, blender::gpu::shader::ShaderCreateInfo::fragment_outputs_, blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_, blender::gpu::shader::ShaderCreateInfo::geometry_source_, blender::StringRefBase::is_empty(), main_function_wrapper(), blender::gpu::GLContext::native_barycentric_support, output, print_interface(), to_string(), and blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 964 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 678 of file gl_shader.cc.
References find_interface_by_name(), blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_, blender::gpu::shader::StageInterfaceInfo::instance_name, print_interface(), and blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 643 of file gl_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::geometry_layout_, blender::gpu::GLContext::geometry_shader_invocations, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::invocations, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::max_vertices, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::primitive_in, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::primitive_out, and to_string().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 959 of file gl_shader.cc.
Referenced by finalize().
|
inline |
Definition at line 75 of file gl_shader.hh.
|
overridevirtual |
DEPRECATED: Kept only because of BGL API.
Implements blender::gpu::Shader.
Definition at line 1241 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 459 of file gl_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::PushConst::array_size, blender::gpu::shader::ShaderCreateInfo::batch_resources_, blender::gpu::shader::ShaderCreateInfo::PushConst::name, blender::gpu::shader::ShaderCreateInfo::pass_resources_, print_resource(), print_resource_alias(), blender::gpu::shader::ShaderCreateInfo::push_constants_, to_string(), and blender::gpu::shader::ShaderCreateInfo::PushConst::type.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1074 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1046 of file gl_shader.cc.
References BLI_assert, GPU_SHADER_TFB_LINES, GPU_SHADER_TFB_NONE, GPU_SHADER_TFB_POINTS, GPU_SHADER_TFB_TRIANGLES, and blender::gpu::unwrap().
|
overridevirtual |
Should be called before linking.
Implements blender::gpu::Shader.
Definition at line 1038 of file gl_shader.cc.
References blender::Span< T >::data(), and blender::Span< T >::size().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1023 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1085 of file gl_shader.cc.
References BLI_assert, and data.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1112 of file gl_shader.cc.
References BLI_assert, and data.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 518 of file gl_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::builtins_, blender::gpu::GLContext::explicit_location_support, GPU_BACKEND_OPENGL, GPU_DEVICE_APPLE, GPU_DEVICE_ATI, GPU_DRIVER_ANY, GPU_DRIVER_OFFICIAL, GPU_OS_ANY, GPU_OS_MAC, GPU_type_matches(), GPU_type_matches_ex(), blender::gpu::shader::ShaderCreateInfo::VertIn::index, blender::gpu::GLContext::layered_rendering_support, main_function_wrapper(), blender::gpu::shader::ShaderCreateInfo::VertIn::name, blender::gpu::GLContext::native_barycentric_support, print_interface(), to_string(), blender::gpu::shader::ShaderCreateInfo::VertIn::type, blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, and blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_.
|
overridevirtual |
Return true on success.
Implements blender::gpu::Shader.
Definition at line 954 of file gl_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1213 of file gl_shader.cc.
References calc_component_size(), get_fetch_mode_and_comp_type(), GPU_vertformat_attr_add(), GPU_vertformat_clear(), blender::gpu::Shader::name, and size().