|
Blender V5.0
|
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 blender::gpu::Shader. More...
#include <gpu_shader_create_info.hh>
Inherited by blender::gpu::shader::GPUCodegenCreateInfo.
Classes | |
| struct | ResourceString |
| struct | VertIn |
| struct | GeometryStageLayout |
| struct | ComputeStageLayout |
| struct | FragOut |
| struct | SubpassIn |
| struct | SharedVariable |
| struct | Sampler |
| struct | Image |
| struct | UniformBuf |
| struct | StorageBuf |
| struct | Resource |
| struct | PushConst |
Public Types | |
| using | Self = ShaderCreateInfo |
Public Member Functions | |
| Vector< Resource > & | resources_get_ (Frequency freq) |
| Vector< Resource > | resources_get_all_ () const |
| ShaderCreateInfo (const char *name) | |
| ~ShaderCreateInfo ()=default | |
Shaders in/outs (fixed function pipeline config) | |
| Self & | vertex_in (int slot, Type type, StringRefNull name) |
| Self & | vertex_out (StageInterfaceInfo &interface) |
| Self & | geometry_layout (PrimitiveIn prim_in, PrimitiveOut prim_out, int max_vertices, int invocations=-1) |
| Self & | local_group_size (int local_size_x, int local_size_y=1, int local_size_z=1) |
| Self & | early_fragment_test (bool enable) |
| Self & | geometry_out (StageInterfaceInfo &interface) |
| Self & | fragment_out (int slot, Type type, StringRefNull name, DualBlend blend=DualBlend::NONE, int raster_order_group=-1) |
| Self & | subpass_in (int slot, Type type, ImageType img_type, StringRefNull name, int raster_order_group=-1) |
| Self & | shared_resource_descriptor (void(*fn)(ShaderCreateInfo &)) |
Shader compilation constants | |
Compilation constants are constants defined in the create info. They cannot be changed after the shader is created. It is a replacement to macros with added type safety. | |
| Self & | compilation_constant (Type type, StringRefNull name, double default_value) |
Shader specialization constants | |
| Self & | specialization_constant (Type type, StringRefNull name, double default_value) |
Compute shader Shared variables | |
| Self & | shared_variable (Type type, StringRefNull name) |
Resources bindings points | |
| Self & | uniform_buf (int slot, StringRefNull type_name, StringRefNull name, Frequency freq=Frequency::PASS) |
| Self & | storage_buf (int slot, Qualifier qualifiers, StringRefNull type_name, StringRefNull name, Frequency freq=Frequency::PASS) |
| Self & | image (int slot, TextureFormat format, Qualifier qualifiers, ImageReadWriteType type, StringRefNull name, Frequency freq=Frequency::PASS) |
| Self & | sampler (int slot, ImageType type, StringRefNull name, Frequency freq=Frequency::PASS, GPUSamplerState sampler=GPUSamplerState::internal_sampler()) |
Shader Source | |
| Self & | vertex_source (StringRefNull filename) |
| Self & | fragment_source (StringRefNull filename) |
| Self & | compute_source (StringRefNull filename) |
| Self & | vertex_function (StringRefNull function_name) |
| Self & | fragment_function (StringRefNull function_name) |
| Self & | compute_function (StringRefNull function_name) |
Push constants | |
Data managed by blender::gpu::Shader. Can be set through uniform functions. Must be less than 128bytes. | |
| Self & | push_constant (Type type, StringRefNull name, int array_size=0) |
Defines | |
| Self & | define (StringRefNull name, StringRefNull value="") |
| Self & | do_static_compilation (bool value) |
| Self & | builtins (BuiltinBits builtin) |
| Self & | depth_write (DepthWrite value) |
| Self & | auto_resource_location (bool value) |
| Self & | metal_backend_only (bool flag) |
Additional Create Info | |
Used to share parts of the infos that are common to many shaders. | |
| Self & | additional_info (StringRefNull info_name) |
| template<typename... Args> | |
| Self & | additional_info (StringRefNull info_name, Args... args) |
Typedef Sources | |
Some resource declarations might need some special structure defined. Adding a file using typedef_source will include it before the resource and interface definitions. | |
| Self & | typedef_source (StringRefNull filename) |
mtl_max_total_threads_per_threadgroup | |
max_total_threads_per_threadgroup - Provides compiler hint for maximum threadgroup size up front. Maximum value is 1024. | |
| Self & | mtl_max_total_threads_per_threadgroup (ushort max_total_threads_per_threadgroup) |
Recursive evaluation. | |
Flatten all dependency so that this descriptor contains all the data from the additional descriptors. This avoids tedious traversal in shader source creation. | |
| void | finalize (const bool recursive=false) |
| void | resource_guard_defines (std::string &defines) const |
| std::string | check_error () const |
| bool | is_vulkan_compatible () const |
| void | validate_merge (const ShaderCreateInfo &other_info) |
| void | validate_vertex_attributes (const ShaderCreateInfo *other_info=nullptr) |
Operators. | |
| bool | operator== (const ShaderCreateInfo &b) const |
| bool | has_resource_type (Resource::BindType bind_type) const |
| bool | has_resource_image () const |
| std::ostream & | operator<< (std::ostream &stream, const ShaderCreateInfo &info) |
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 blender::gpu::Shader.
IMPORTANT: All strings are references only. Make sure all the strings used by a ShaderCreateInfo are not freed until it is consumed or deleted.
Definition at line 686 of file gpu_shader_create_info.hh.
Definition at line 1008 of file gpu_shader_create_info.hh.
|
inline |
Definition at line 1005 of file gpu_shader_create_info.hh.
Referenced by finalize(), blender::gpu::shader::GPUCodegenCreateInfo::GPUCodegenCreateInfo(), operator<<, operator==(), resource_guard_defines(), shared_resource_descriptor(), validate_merge(), and validate_vertex_attributes().
|
default |
|
inline |
Definition at line 1395 of file gpu_shader_create_info.hh.
References additional_infos_.
Referenced by additional_info(), blender::gpu::shader::GPUCodegen::generate_resources(), and blender::gpu::tests::gpu_shader_lib_test().
|
inline |
Definition at line 1401 of file gpu_shader_create_info.hh.
References additional_info().
|
inline |
Definition at line 1375 of file gpu_shader_create_info.hh.
References auto_resource_location_.
|
inline |
Definition at line 1362 of file gpu_shader_create_info.hh.
References builtins_.
Referenced by blender::gpu::tests::test_framebuffer_multi_viewport().
| std::string blender::gpu::shader::ShaderCreateInfo::check_error | ( | ) | const |
Definition at line 280 of file gpu_shader_create_info.cc.
References blender::gpu::shader::BARYCENTRIC_COORD, builtins_, compilation_constants_, compute_source_, error(), fragment_source_, G, G_DEBUG_GPU, geometry_source_, i, is_vulkan_compatible(), blender::gpu::shader::LAYER, name, name_, shared_variables_, specialization_constants_, vertex_out_interfaces_, vertex_source_, and blender::gpu::shader::VIEWPORT_INDEX.
Referenced by blender::gpu::ShaderCompiler::compile().
|
inline |
Definition at line 1116 of file gpu_shader_create_info.hh.
References BLI_assert_msg, blender::gpu::shader::bool_t, compilation_constants_, blender::gpu::shader::SpecializationConstant::Value::i, blender::gpu::shader::int_t, interface_names_size_, blender::gpu::shader::CompilationConstant::name, name, blender::gpu::shader::CompilationConstant::type, blender::gpu::shader::SpecializationConstant::Value::u, blender::gpu::shader::uint_t, and blender::gpu::shader::CompilationConstant::value.
|
inline |
Definition at line 1311 of file gpu_shader_create_info.hh.
References compute_entry_fn_.
|
inline |
Definition at line 1293 of file gpu_shader_create_info.hh.
References compute_source_.
Referenced by pygpu_shader_info_compute_source().
|
inline |
Definition at line 1344 of file gpu_shader_create_info.hh.
References defines_, and name.
Referenced by pygpu_shader_info_define(), and blender::gpu::tests::test_framebuffer_subpass_input().
|
inline |
Definition at line 1369 of file gpu_shader_create_info.hh.
References depth_write_.
Referenced by pygpu_shader_info_depth_write().
|
inline |
Definition at line 1356 of file gpu_shader_create_info.hh.
References do_static_compilation_.
|
inline |
Force fragment tests before fragment shader invocation. IMPORTANT: This is incompatible with using the gl_FragDepth output.
Definition at line 1051 of file gpu_shader_create_info.hh.
References early_fragment_test_.
| void blender::gpu::shader::ShaderCreateInfo::finalize | ( | const bool | recursive = false | ) |
Definition at line 115 of file gpu_shader_create_info.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), additional_infos_, auto_resource_location_, batch_resources_, BLI_assert, builtins_, compilation_constants_, compute_entry_fn_, compute_layout_, compute_source_, defines_, depth_write_, early_fragment_test_, error(), finalize(), finalized_, fragment_entry_fn_, fragment_outputs_, fragment_source_, geometry_entry_fn_, geometry_layout_, geometry_out_interfaces_, geometry_resources_, geometry_source_, gpu_shader_create_info_get(), blender::gpu::shader::ShaderCreateInfo::Resource::IMAGE, interface_names_size_, blender::StringRefBase::is_empty(), blender::gpu::shader::LAYER, blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_x, name_, pass_resources_, push_constants_, blender::gpu::shader::ShaderCreateInfo::Resource::SAMPLER, ShaderCreateInfo(), shared_variables_, specialization_constants_, blender::gpu::shader::ShaderCreateInfo::Resource::STORAGE_BUFFER, subpass_inputs_, typedef_sources_, blender::gpu::shader::UNCHANGED, blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER, validate_merge(), validate_vertex_attributes(), vertex_entry_fn_, vertex_inputs_, vertex_out_interfaces_, and vertex_source_.
Referenced by blender::compositor::CachedShader::CachedShader(), finalize(), and GPU_generate_pass().
|
inline |
Definition at line 1305 of file gpu_shader_create_info.hh.
References fragment_entry_fn_.
|
inline |
Definition at line 1069 of file gpu_shader_create_info.hh.
References blend(), fragment_outputs_, name, and blender::gpu::shader::NONE.
Referenced by pygpu_shader_info_fragment_out(), blender::gpu::tests::test_framebuffer_multi_viewport(), and blender::gpu::tests::test_framebuffer_subpass_input().
|
inline |
Definition at line 1287 of file gpu_shader_create_info.hh.
References fragment_source_.
Referenced by blender::gpu::tests::gpu_shader_lib_test(), pygpu_shader_info_fragment_source(), blender::gpu::tests::test_framebuffer_multi_viewport(), and blender::gpu::tests::test_framebuffer_subpass_input().
|
inline |
Definition at line 1027 of file gpu_shader_create_info.hh.
References geometry_layout_.
|
inline |
Only needed if geometry shader is enabled. IMPORTANT: Input and output instance name will have respectively "_in" and "_out" suffix appended in the geometry shader IF AND ONLY IF the vertex_out interface instance name matches the geometry_out interface instance name.
Definition at line 1063 of file gpu_shader_create_info.hh.
References geometry_out_interfaces_.
|
inline |
Definition at line 1566 of file gpu_shader_create_info.hh.
References has_resource_type(), and blender::gpu::shader::ShaderCreateInfo::Resource::IMAGE.
|
inline |
Definition at line 1546 of file gpu_shader_create_info.hh.
References batch_resources_, geometry_resources_, and pass_resources_.
Referenced by has_resource_image().
|
inline |
Definition at line 1241 of file gpu_shader_create_info.hh.
References blender::gpu::shader::ShaderCreateInfo::Image::format, blender::gpu::shader::ShaderCreateInfo::Resource::IMAGE, blender::gpu::shader::ShaderCreateInfo::Resource::image, interface_names_size_, blender::gpu::shader::ShaderCreateInfo::Image::name, name, blender::gpu::shader::PASS, blender::gpu::shader::ShaderCreateInfo::Image::qualifiers, resources_get_(), and blender::gpu::shader::ShaderCreateInfo::Image::type.
Referenced by pygpu_shader_info_image().
| bool blender::gpu::shader::ShaderCreateInfo::is_vulkan_compatible | ( | ) | const |
Definition at line 80 of file gpu_shader_create_info.cc.
References geometry_out_interfaces_, blender::gpu::shader::is_vulkan_compatible_interface(), and vertex_out_interfaces_.
Referenced by check_error().
|
inline |
Definition at line 1039 of file gpu_shader_create_info.hh.
References compute_layout_.
Referenced by pygpu_shader_info_local_group_size().
|
inline |
Definition at line 1381 of file gpu_shader_create_info.hh.
References flag, and metal_backend_only_.
|
inline |
Definition at line 1439 of file gpu_shader_create_info.hh.
References UNUSED_VARS.
|
inline |
Definition at line 1481 of file gpu_shader_create_info.hh.
References additional_infos_, b, batch_resources_, builtins_, compute_layout_, compute_source_, compute_source_generated, defines_, fragment_outputs_, fragment_source_, fragment_source_generated, geometry_layout_, geometry_out_interfaces_, geometry_resources_, geometry_source_, pass_resources_, push_constants_, ShaderCreateInfo(), subpass_inputs_, TEST_EQUAL, TEST_VECTOR_EQUAL, typedef_source_generated, typedef_sources_, vertex_inputs_, vertex_out_interfaces_, vertex_source_, and vertex_source_generated.
|
inline |
Definition at line 1326 of file gpu_shader_create_info.hh.
References BLI_assert, BLI_assert_msg, interface_names_size_, name, push_constants_, and blender::gpu::shader::uint_t.
Referenced by pygpu_shader_info_push_constant().
| void blender::gpu::shader::ShaderCreateInfo::resource_guard_defines | ( | std::string & | defines | ) | const |
Definition at line 99 of file gpu_shader_create_info.cc.
References additional_infos_, gpu_shader_create_info_get(), name_, resource_guard_defines(), and ShaderCreateInfo().
Referenced by blender::gpu::ShaderCompiler::compile(), and resource_guard_defines().
|
inline |
Definition at line 942 of file gpu_shader_create_info.hh.
References blender::gpu::shader::BATCH, batch_resources_, BLI_assert_unreachable, blender::gpu::shader::GEOMETRY, geometry_resources_, blender::gpu::shader::PASS, and pass_resources_.
Referenced by image(), sampler(), storage_buf(), and uniform_buf().
Definition at line 957 of file gpu_shader_create_info.hh.
References batch_resources_, blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), geometry_resources_, and pass_resources_.
Referenced by blender::gpu::GLShaderInterface::GLShaderInterface(), gpu_pass_validate(), gpu_shader_create_info_compile(), blender::gpu::MSLGeneratorInterface::prepare_from_createinfo(), and validate_merge().
|
inline |
Definition at line 1258 of file gpu_shader_create_info.hh.
References interface_names_size_, GPUSamplerState::internal_sampler(), blender::gpu::shader::ShaderCreateInfo::Sampler::name, name, blender::gpu::shader::PASS, resources_get_(), blender::gpu::shader::ShaderCreateInfo::Resource::SAMPLER, blender::gpu::shader::ShaderCreateInfo::Resource::sampler, sampler(), blender::gpu::shader::ShaderCreateInfo::Sampler::type, and UNUSED_VARS.
Referenced by blender::gpu::shader::GPUCodegen::generate_resources(), pygpu_shader_info_sampler(), and sampler().
|
inline |
Definition at line 1100 of file gpu_shader_create_info.hh.
References ShaderCreateInfo().
|
inline |
Definition at line 1201 of file gpu_shader_create_info.hh.
References name, and shared_variables_.
|
inline |
Definition at line 1166 of file gpu_shader_create_info.hh.
References BLI_assert_msg, blender::gpu::shader::bool_t, blender::gpu::shader::SpecializationConstant::Value::f, float, blender::gpu::shader::float_t, blender::gpu::shader::SpecializationConstant::Value::i, blender::gpu::shader::int_t, interface_names_size_, blender::gpu::shader::SpecializationConstant::name, name, specialization_constants_, blender::gpu::shader::SpecializationConstant::type, blender::gpu::shader::SpecializationConstant::Value::u, blender::gpu::shader::uint_t, and blender::gpu::shader::SpecializationConstant::value.
|
inline |
Definition at line 1226 of file gpu_shader_create_info.hh.
References interface_names_size_, blender::gpu::shader::ShaderCreateInfo::StorageBuf::name, name, blender::gpu::shader::PASS, blender::gpu::shader::ShaderCreateInfo::StorageBuf::qualifiers, resources_get_(), blender::gpu::shader::ShaderCreateInfo::Resource::STORAGE_BUFFER, blender::gpu::shader::ShaderCreateInfo::Resource::storagebuf, and blender::gpu::shader::ShaderCreateInfo::StorageBuf::type_name.
|
inline |
Allows to fetch frame-buffer values from previous render sub-pass.
On Apple Silicon, the additional raster_order_group is there to set the sub-pass dependencies. Any sub-pass input need to have the same raster_order_group defined in the shader writing them.
IMPORTANT: Currently emulated on all backend except Metal. This is only for debugging purpose as it is too slow to be viable.
TODO(fclem): Vulkan can implement that using subpassInput. However sub-pass boundaries might be difficult to inject implicitly and will require more high level changes. TODO(fclem): OpenGL can emulate that using GL_EXT_shader_framebuffer_fetch.
Definition at line 1093 of file gpu_shader_create_info.hh.
References name, and subpass_inputs_.
Referenced by blender::gpu::tests::test_framebuffer_subpass_input().
|
inline |
Definition at line 1418 of file gpu_shader_create_info.hh.
References typedef_sources_.
Referenced by pygpu_shader_info_typedef_source().
|
inline |
Definition at line 1213 of file gpu_shader_create_info.hh.
References interface_names_size_, blender::gpu::shader::ShaderCreateInfo::UniformBuf::name, name, blender::gpu::shader::PASS, resources_get_(), blender::gpu::shader::ShaderCreateInfo::UniformBuf::type_name, blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER, and blender::gpu::shader::ShaderCreateInfo::Resource::uniformbuf.
Referenced by blender::gpu::shader::GPUCodegen::generate_resources(), and pygpu_shader_info_uniform_buf().
| void blender::gpu::shader::ShaderCreateInfo::validate_merge | ( | const ShaderCreateInfo & | other_info | ) |
Error detection that some backend compilers do not complain about.
Definition at line 378 of file gpu_shader_create_info.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), auto_resource_location_, batch_resources_, blender::gpu::shader::ShaderCreateInfo::Resource::bind_type, geometry_resources_, blender::gpu::shader::ShaderCreateInfo::Resource::IMAGE, blender::gpu::shader::ShaderCreateInfo::Resource::image, blender::gpu::shader::ShaderCreateInfo::Image::name, blender::gpu::shader::ShaderCreateInfo::Sampler::name, blender::gpu::shader::ShaderCreateInfo::StorageBuf::name, blender::gpu::shader::ShaderCreateInfo::UniformBuf::name, name_, pass_resources_, resources_get_all_(), blender::gpu::shader::ShaderCreateInfo::Resource::SAMPLER, blender::gpu::shader::ShaderCreateInfo::Resource::sampler, ShaderCreateInfo(), blender::gpu::shader::ShaderCreateInfo::Resource::slot, blender::gpu::shader::ShaderCreateInfo::Resource::STORAGE_BUFFER, blender::gpu::shader::ShaderCreateInfo::Resource::storagebuf, blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER, and blender::gpu::shader::ShaderCreateInfo::Resource::uniformbuf.
Referenced by finalize().
| void blender::gpu::shader::ShaderCreateInfo::validate_vertex_attributes | ( | const ShaderCreateInfo * | other_info = nullptr | ) |
Definition at line 451 of file gpu_shader_create_info.cc.
References BLI_assert, blender::gpu::shader::float4x4_t, i, name_, ShaderCreateInfo(), and vertex_inputs_.
Referenced by finalize().
|
inline |
Definition at line 1299 of file gpu_shader_create_info.hh.
References vertex_entry_fn_.
|
inline |
Definition at line 1014 of file gpu_shader_create_info.hh.
References interface_names_size_, name, and vertex_inputs_.
Referenced by blender::gpu::shader::GPUCodegen::generate_attribs(), and pygpu_shader_info_vertex_in().
|
inline |
Definition at line 1021 of file gpu_shader_create_info.hh.
References vertex_out_interfaces_.
Referenced by blender::gpu::shader::GPUCodegen::generate_attribs(), and pygpu_shader_info_vertex_out().
|
inline |
Definition at line 1281 of file gpu_shader_create_info.hh.
References vertex_source_.
Referenced by pygpu_shader_info_vertex_source(), blender::gpu::tests::test_framebuffer_multi_viewport(), and blender::gpu::tests::test_framebuffer_subpass_input().
|
friend |
Debug print
Definition at line 1510 of file gpu_shader_create_info.hh.
References batch_resources_, geometry_resources_, blender::gpu::shader::ShaderCreateInfo::Resource::IMAGE, pass_resources_, blender::gpu::print_resource(), blender::gpu::shader::ShaderCreateInfo::Resource::SAMPLER, ShaderCreateInfo(), blender::gpu::shader::ShaderCreateInfo::Resource::STORAGE_BUFFER, and blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER.
| Vector<StringRefNull> blender::gpu::shader::ShaderCreateInfo::additional_infos_ |
Name of other infos to recursively merge with this one. No data slot must overlap otherwise we throw an error.
Definition at line 997 of file gpu_shader_create_info.hh.
Referenced by additional_info(), finalize(), operator==(), and resource_guard_defines().
| bool blender::gpu::shader::ShaderCreateInfo::auto_resource_location_ = false |
If true, all resources will have an automatic location assigned.
Definition at line 696 of file gpu_shader_create_info.hh.
Referenced by auto_resource_location(), finalize(), blender::gpu::GLShader::resources_declare(), and validate_merge().
Definition at line 940 of file gpu_shader_create_info.hh.
Referenced by finalize(), has_resource_type(), blender::gpu::VKShaderInterface::init(), operator<<, operator==(), blender::gpu::GLShader::resources_declare(), blender::gpu::MTLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), resources_get_(), resources_get_all_(), blender::gpu::ShaderInterface::set_image_formats_from_info(), and validate_merge().
| BuiltinBits blender::gpu::shader::ShaderCreateInfo::builtins_ = BuiltinBits::NONE |
Manually set builtins.
Definition at line 710 of file gpu_shader_create_info.hh.
Referenced by builtins(), check_error(), blender::gpu::MTLShader::finalize(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::VKShaderInterface::init(), operator==(), blender::gpu::GLShader::vertex_interface_declare(), and blender::gpu::VKShader::vertex_interface_declare().
| Vector<CompilationConstant, 0> blender::gpu::shader::ShaderCreateInfo::compilation_constants_ |
Definition at line 851 of file gpu_shader_create_info.hh.
Referenced by check_error(), compilation_constant(), finalize(), blender::gpu::generate_compilation_constant_declarations(), blender::gpu::GLShader::resources_declare(), and blender::gpu::VKShader::resources_declare().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::compute_entry_fn_ = "main" |
Definition at line 990 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), compute_function(), and finalize().
| ComputeStageLayout blender::gpu::shader::ShaderCreateInfo::compute_layout_ |
Definition at line 809 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::GLShader::compute_layout_declare(), blender::gpu::VKShader::compute_layout_declare(), blender::gpu::MTLShader::finalize(), finalize(), local_group_size(), and operator==().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::compute_source_ |
Definition at line 988 of file gpu_shader_create_info.hh.
Referenced by check_error(), blender::gpu::ShaderCompiler::compile(), compute_source(), finalize(), blender::gpu::VKShader::init(), blender::gpu::tests::ShaderSpecializationConst::init_shader(), and operator==().
| std::string blender::gpu::shader::ShaderCreateInfo::compute_source_generated |
Definition at line 714 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), blender::gpu::VKShader::init(), operator==(), and pygpu_shader_info_compute_source().
| Vector<std::array<StringRefNull, 2> > blender::gpu::shader::ShaderCreateInfo::defines_ |
Definition at line 992 of file gpu_shader_create_info.hh.
Referenced by define(), blender::gpu::Shader::defines_declare(), finalize(), and operator==().
| Vector<StringRefNull, 0> blender::gpu::shader::ShaderCreateInfo::dependencies_generated |
Manually set generated dependencies file names.
Definition at line 718 of file gpu_shader_create_info.hh.
| DepthWrite blender::gpu::shader::ShaderCreateInfo::depth_write_ = DepthWrite::UNCHANGED |
Allow optimization when fragment shader writes to gl_FragDepth.
Definition at line 700 of file gpu_shader_create_info.hh.
Referenced by depth_write(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), and blender::gpu::VKShader::fragment_interface_declare().
| bool blender::gpu::shader::ShaderCreateInfo::do_static_compilation_ = false |
True if the shader is static and can be pre-compiled at compile time.
Definition at line 690 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), do_static_compilation(), and blender::gpu::VKShader::init().
| bool blender::gpu::shader::ShaderCreateInfo::early_fragment_test_ = false |
If true, force depth and stencil tests to always happen before fragment shader invocation.
Definition at line 698 of file gpu_shader_create_info.hh.
Referenced by early_fragment_test(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), and blender::gpu::VKShader::fragment_interface_declare().
| bool blender::gpu::shader::ShaderCreateInfo::finalized_ = false |
If true, all additionally linked create info will be merged into this one.
Definition at line 694 of file gpu_shader_create_info.hh.
Referenced by finalize().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::fragment_entry_fn_ = "main" |
Definition at line 990 of file gpu_shader_create_info.hh.
Referenced by finalize(), and fragment_function().
Definition at line 829 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::MTLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), fragment_out(), and operator==().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::fragment_source_ |
Definition at line 988 of file gpu_shader_create_info.hh.
Referenced by check_error(), blender::gpu::ShaderCompiler::compile(), finalize(), blender::gpu::VKShader::fragment_interface_declare(), fragment_source(), and operator==().
| std::string blender::gpu::shader::ShaderCreateInfo::fragment_source_generated |
Definition at line 713 of file gpu_shader_create_info.hh.
Referenced by operator==(), and pygpu_shader_info_fragment_source().
| GeneratedSourceList blender::gpu::shader::ShaderCreateInfo::generated_sources |
Definition at line 720 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::geometry_entry_fn_ = "main" |
Definition at line 989 of file gpu_shader_create_info.hh.
Referenced by finalize().
| GeometryStageLayout blender::gpu::shader::ShaderCreateInfo::geometry_layout_ |
Definition at line 794 of file gpu_shader_create_info.hh.
Referenced by finalize(), blender::gpu::VKShader::geometry_interface_declare(), geometry_layout(), blender::gpu::GLShader::geometry_layout_declare(), and operator==().
| Vector<StageInterfaceInfo *> blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_ |
Definition at line 967 of file gpu_shader_create_info.hh.
Referenced by finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::GLShader::geometry_interface_declare(), blender::gpu::VKShader::geometry_layout_declare(), geometry_out(), is_vulkan_compatible(), and operator==().
Definition at line 940 of file gpu_shader_create_info.hh.
Referenced by finalize(), blender::gpu::GLShaderInterface::GLShaderInterface(), has_resource_type(), blender::gpu::VKShaderInterface::init(), operator<<, operator==(), blender::gpu::MTLShaderInterface::prepare_common_shader_inputs(), blender::gpu::GLShader::resources_declare(), blender::gpu::MTLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), resources_get_(), resources_get_all_(), blender::gpu::ShaderInterface::set_image_formats_from_info(), and validate_merge().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::geometry_source_ |
Definition at line 988 of file gpu_shader_create_info.hh.
Referenced by check_error(), blender::gpu::ShaderCompiler::compile(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), operator==(), blender::gpu::GLShader::vertex_interface_declare(), and blender::gpu::VKShader::vertex_interface_declare().
| std::string blender::gpu::shader::ShaderCreateInfo::geometry_source_generated |
Definition at line 715 of file gpu_shader_create_info.hh.
| size_t blender::gpu::shader::ShaderCreateInfo::interface_names_size_ = 0 |
Maximum length of all the resource names including each null terminator. Only for names used by #gpu::ShaderInterface.
Definition at line 708 of file gpu_shader_create_info.hh.
Referenced by compilation_constant(), finalize(), blender::gpu::GLShaderInterface::GLShaderInterface(), image(), blender::gpu::VKShaderInterface::init(), push_constant(), sampler(), specialization_constant(), storage_buf(), uniform_buf(), and vertex_in().
| bool blender::gpu::shader::ShaderCreateInfo::is_generated_ = true |
True if the shader is not part of gpu_shader_create_info_list.
Definition at line 692 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile().
| bool blender::gpu::shader::ShaderCreateInfo::metal_backend_only_ = false |
GPU Backend compatibility flag. Temporary requirement until Metal enablement is fully complete.
Definition at line 703 of file gpu_shader_create_info.hh.
Referenced by metal_backend_only().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::name_ |
Shader name for debugging.
Definition at line 688 of file gpu_shader_create_info.hh.
Referenced by check_error(), blender::gpu::ShaderCompiler::compile(), finalize(), gpu_shader_create_info_compile(), blender::gpu::shader::GPUCodegenCreateInfo::GPUCodegenCreateInfo(), resource_guard_defines(), ShaderCreateInfo(), validate_merge(), and validate_vertex_attributes().
Resources are grouped by frequency of change. Pass resources are meant to be valid for the whole pass. Batch resources can be changed in a more granular manner (per object/material). Geometry resources can be changed in a very granular manner (per draw-call). Misuse will only produce suboptimal performance.
Definition at line 940 of file gpu_shader_create_info.hh.
Referenced by blender::compositor::CachedShader::CachedShader(), finalize(), has_resource_type(), blender::gpu::VKShaderInterface::init(), operator<<, operator==(), blender::gpu::GLShader::resources_declare(), blender::gpu::MTLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), resources_get_(), resources_get_all_(), blender::gpu::ShaderInterface::set_image_formats_from_info(), and validate_merge().
Definition at line 983 of file gpu_shader_create_info.hh.
Referenced by constants_calc_size(), blender::gpu::VKPushConstants::Layout::determine_storage_type(), finalize(), blender::gpu::GLShaderInterface::GLShaderInterface(), blender::gpu::VKShaderInterface::init(), blender::gpu::init_struct(), operator==(), push_constant(), blender::gpu::GLShader::resources_declare(), and blender::gpu::VKShader::resources_declare().
| Vector<SharedVariable, 0> blender::gpu::shader::ShaderCreateInfo::shared_variables_ |
Definition at line 859 of file gpu_shader_create_info.hh.
Referenced by check_error(), finalize(), blender::gpu::MSLGeneratorInterface::generate_msl_compute_entry_stub(), blender::gpu::GLShader::resources_declare(), blender::gpu::MTLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), shared_variable(), blender::gpu::shared_variable_args(), blender::gpu::shared_variable_assign(), blender::gpu::shared_variable_declare(), and blender::gpu::shared_variable_pass().
| Vector<SpecializationConstant> blender::gpu::shader::ShaderCreateInfo::specialization_constants_ |
Definition at line 852 of file gpu_shader_create_info.hh.
Referenced by check_error(), finalize(), blender::gpu::generate_specialization_constant_declarations(), blender::gpu::GLShaderInterface::GLShaderInterface(), blender::gpu::GLShader::init(), blender::gpu::VKShaderInterface::init(), blender::gpu::GLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), specialization_constant(), and blender::gpu::Shader::specialization_constants_init().
Definition at line 849 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::MTLShader::finalize(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::MTLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::VKShaderInterface::init(), operator==(), and subpass_in().
| std::string blender::gpu::shader::ShaderCreateInfo::typedef_source_generated |
Definition at line 716 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), blender::gpu::shader::GPUCodegen::generate_resources(), operator==(), and pygpu_shader_info_typedef_source().
| Vector<StringRefNull> blender::gpu::shader::ShaderCreateInfo::typedef_sources_ |
Definition at line 986 of file gpu_shader_create_info.hh.
Referenced by blender::gpu::ShaderCompiler::compile(), finalize(), operator==(), pygpu_shader_info_typedef_source(), and typedef_source().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::vertex_entry_fn_ = "main" |
Definition at line 989 of file gpu_shader_create_info.hh.
Referenced by finalize(), and vertex_function().
Definition at line 776 of file gpu_shader_create_info.hh.
Referenced by finalize(), blender::gpu::GLShaderInterface::GLShaderInterface(), blender::gpu::VKShaderInterface::init(), operator==(), blender::gpu::MSLGeneratorInterface::prepare_from_createinfo(), validate_vertex_attributes(), vertex_in(), blender::gpu::GLShader::vertex_interface_declare(), blender::gpu::MTLShader::vertex_interface_declare(), and blender::gpu::VKShader::vertex_interface_declare().
| Vector<StageInterfaceInfo *> blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_ |
Definition at line 966 of file gpu_shader_create_info.hh.
Referenced by check_error(), finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::GLShader::geometry_interface_declare(), blender::gpu::VKShader::geometry_layout_declare(), is_vulkan_compatible(), operator==(), blender::gpu::GLShader::vertex_interface_declare(), blender::gpu::VKShader::vertex_interface_declare(), and vertex_out().
| StringRefNull blender::gpu::shader::ShaderCreateInfo::vertex_source_ |
Definition at line 988 of file gpu_shader_create_info.hh.
Referenced by check_error(), blender::gpu::ShaderCompiler::compile(), finalize(), operator==(), and vertex_source().
| std::string blender::gpu::shader::ShaderCreateInfo::vertex_source_generated |
Manually set generated code.
Definition at line 712 of file gpu_shader_create_info.hh.
Referenced by operator==(), and pygpu_shader_info_vertex_source().