|
Blender V4.5
|
#include <eevee_shader.hh>
Public Member Functions | |
| ShaderGroups | static_shaders_load_async (ShaderGroups request_bits) |
| ShaderGroups | static_shaders_wait_ready (ShaderGroups request_bits) |
GPU Materials | |
| GPUMaterial * | material_shader_get (::Material *blender_mat, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type, bool deferred_compilation, ::Material *default_mat) |
| GPUMaterial * | world_shader_get (::World *blender_world, bNodeTree *nodetree, eMaterialPipeline pipeline_type, bool deferred_compilation) |
| void | material_create_info_amend (GPUMaterial *mat, GPUCodegenOutput *codegen) |
Module | |
| ShaderModule () | |
| ~ShaderModule () | |
| static ShaderModule * | module_get () |
| static void | module_free () |
Static shaders | |
| bool | request_specializations (bool block_until_ready, int render_buffers_shadow_id, int shadow_ray_count, int shadow_ray_step_count, bool use_split_indirect, bool use_lightprobe_eval) |
| GPUShader * | static_shader_get (eShaderType shader_type) |
Shader module. shared between instances.
Definition at line 171 of file eevee_shader.hh.
| blender::eevee::ShaderModule::ShaderModule | ( | ) |
Definition at line 43 of file eevee_shader.cc.
References BLI_assert, BLI_assert_msg, GPU_shader_create_info_get(), i, and blender::eevee::MAX_SHADER_TYPE.
Referenced by module_get().
| blender::eevee::ShaderModule::~ShaderModule | ( | ) |
Definition at line 60 of file eevee_shader.cc.
References GPU_shader_batch_specializations_cancel().
| void blender::eevee::ShaderModule::material_create_info_amend | ( | GPUMaterial * | mat, |
| GPUCodegenOutput * | codegen ) |
Hair attributes come from sampler buffer. Transfer attributes to sampler.
NOTE: Orco is generated from strand position for now.
Only orco layer is supported by world and it is procedurally generated. These are here to make the attribs_load function calls valid.
Only one uv and one color attribute layer are supported by gpencil objects and they are already declared in another createInfo. These are here to make the attribs_load function calls valid.
Volume grid attributes come from 3D textures. Transfer attributes to samplers.
Definition at line 607 of file eevee_shader.cc.
References ShaderCreateInfo::additional_info(), ShaderCreateInfo::additional_infos_, blender::eevee::ATOMIC_RASTER, ATTR_FALLTHROUGH, GPUCodegenOutput::attr_load, blender::gpu::shader::BARYCENTRIC_COORD, blender::gpu::shader::BATCH, ShaderCreateInfo::batch_resources_, BLI_assert_unreachable, ShaderCreateInfo::builtins(), StringRefNull::c_str(), blender::gpu::shader::CLIP_CONTROL, count_bits_i(), GPUCodegenOutput::create_info, ShaderCreateInfo::define(), GPUCodegenOutput::displacement, ELEM, ShaderCreateInfo::fragment_source_generated, blender::eevee::geometry_type_has_surface(), blender::eevee::SamplerSlots::get(), GPU_ATTRIBUTE_UBO_BLOCK_NAME, GPU_material_flag_get(), GPU_material_uniform_attributes(), GPU_material_uuid_get(), GPU_MATFLAG_AO, GPU_MATFLAG_BARYCENTRIC, GPU_MATFLAG_COAT, GPU_MATFLAG_DIFFUSE, GPU_MATFLAG_GLOSSY, GPU_MATFLAG_REFRACT, GPU_MATFLAG_SHADER_TO_RGBA, GPU_MATFLAG_SUBSURFACE, GPU_MATFLAG_TRANSLUCENT, GPU_MATFLAG_TRANSPARENT, inout, StageInterfaceInfo::inouts, input, StageInterfaceInfo::instance_name, blender::eevee::MAT_DISPLACEMENT_BUMP, blender::eevee::MAT_GEOM_CURVES, blender::eevee::MAT_GEOM_GPENCIL, blender::eevee::MAT_GEOM_MESH, blender::eevee::MAT_GEOM_POINTCLOUD, blender::eevee::MAT_GEOM_VOLUME, blender::eevee::MAT_GEOM_WORLD, blender::eevee::MAT_PIPE_CAPTURE, blender::eevee::MAT_PIPE_DEFERRED, blender::eevee::MAT_PIPE_FORWARD, blender::eevee::MAT_PIPE_PREPASS_DEFERRED, blender::eevee::MAT_PIPE_PREPASS_DEFERRED_VELOCITY, blender::eevee::MAT_PIPE_PREPASS_FORWARD, blender::eevee::MAT_PIPE_PREPASS_FORWARD_VELOCITY, blender::eevee::MAT_PIPE_PREPASS_OVERLAP, blender::eevee::MAT_PIPE_PREPASS_PLANAR, blender::eevee::MAT_PIPE_SHADOW, blender::eevee::MAT_PIPE_VOLUME_MATERIAL, blender::eevee::MAT_PIPE_VOLUME_OCCUPANCY, blender::eevee::MAT_THICKNESS_SLAB, GPUCodegenOutput::material_functions, blender::eevee::material_type_from_shader_uuid(), StageInterfaceInfo::name, ShaderCreateInfo::name_, resource, blender::gpu::shader::ShaderCreateInfo::Resource::SAMPLER, ShaderCreateInfo::sampler(), blender::eevee::ShadowModule::shadow_technique, GPUCodegenOutput::surface, GPUCodegenOutput::thickness, blender::eevee::TILE_COPY, blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER, ShaderCreateInfo::vertex_inputs_, ShaderCreateInfo::vertex_out_interfaces_, ShaderCreateInfo::vertex_source_generated, and GPUCodegenOutput::volume.
Referenced by blender::eevee::codegen_callback().
| GPUMaterial * blender::eevee::ShaderModule::material_shader_get | ( | ::Material * | blender_mat, |
| bNodeTree * | nodetree, | ||
| eMaterialPipeline | pipeline_type, | ||
| eMaterialGeometry | geometry_type, | ||
| bool | deferred_compilation, | ||
| ::Material * | default_mat ) |
Definition at line 1141 of file eevee_shader.cc.
References Material::blend_flag, BLI_assert, blender::eevee::codegen_callback(), Material::displacement_method, GPU_MAT_EEVEE, GPU_material_from_nodetree(), Material::gpumaterial, Material::id, ID::name, blender::eevee::pass_replacement_cb(), blender::eevee::shader_uuid_from_material_type(), Material::thickness_mode, blender::eevee::to_displacement_type(), and blender::eevee::to_thickness_type().
Referenced by blender::eevee::pass_replacement_cb().
|
static |
Definition at line 38 of file eevee_shader.cc.
Referenced by blender::eevee::Engine::free_static().
Only to be used by Instance constructor.
Definition at line 33 of file eevee_shader.cc.
References ShaderModule().
| bool blender::eevee::ShaderModule::request_specializations | ( | bool | block_until_ready, |
| int | render_buffers_shadow_id, | ||
| int | shadow_ray_count, | ||
| int | shadow_ray_step_count, | ||
| bool | use_split_indirect, | ||
| bool | use_lightprobe_eval ) |
Definition at line 267 of file eevee_shader.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::eevee::DEFERRED_LIGHT_SINGLE, GPU_shader_batch_specializations(), GPU_shader_batch_specializations_is_ready(), GPU_shader_get_constant(), GPU_shader_get_default_constant_state(), i, lock, blender::gpu::shader::SpecializationConstants::set_value(), and static_shader_get().
| GPUShader * blender::eevee::ShaderModule::static_shader_get | ( | eShaderType | shader_type | ) |
Definition at line 554 of file eevee_shader.cc.
Referenced by request_specializations().
|
inline |
Definition at line 229 of file eevee_shader.hh.
|
inline |
Definition at line 235 of file eevee_shader.hh.
| GPUMaterial * blender::eevee::ShaderModule::world_shader_get | ( | ::World * | blender_world, |
| bNodeTree * | nodetree, | ||
| eMaterialPipeline | pipeline_type, | ||
| bool | deferred_compilation ) |
Definition at line 1171 of file eevee_shader.cc.
References blender::eevee::codegen_callback(), GPU_MAT_EEVEE, GPU_material_from_nodetree(), World::gpumaterial, World::id, blender::eevee::MAT_GEOM_WORLD, ID::name, and blender::eevee::shader_uuid_from_material_type().