Blender V5.0
blender::eevee::ShaderModule Class Reference

#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
GPUMaterialmaterial_shader_get (::Material *blender_mat, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type, bool deferred_compilation, ::Material *default_mat)
GPUMaterialworld_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 ShaderModulemodule_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)
gpu::Shaderstatic_shader_get (eShaderType shader_type)

Detailed Description

Shader module. shared between instances.

Definition at line 205 of file eevee_shader.hh.

Constructor & Destructor Documentation

◆ ShaderModule()

blender::eevee::ShaderModule::ShaderModule ( )

◆ ~ShaderModule()

blender::eevee::ShaderModule::~ShaderModule ( )

Definition at line 62 of file eevee_shader.cc.

References GPU_shader_batch_specializations_cancel().

Member Function Documentation

◆ material_create_info_amend()

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.

Volume grid attributes come from 3D textures. Transfer attributes to samplers.

Definition at line 615 of file eevee_shader.cc.

References ShaderCreateInfo::additional_info(), ShaderCreateInfo::additional_infos_, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::eevee::ATOMIC_RASTER, 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, blender::eevee::CLOSURE_CLEARCOAT, blender::eevee::CLOSURE_DIFFUSE, blender::eevee::CLOSURE_REFLECTION, blender::eevee::CLOSURE_REFRACTION, blender::eevee::CLOSURE_SSS, blender::eevee::CLOSURE_TRANSLUCENT, GPUCodegenOutput::create_info, ShaderCreateInfo::define(), GPUGraphOutput::dependencies, GPUCodegenOutput::displacement, ELEM, GPUGraphOutput::empty(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), ShaderCreateInfo::generated_sources, 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_REFLECTION_MAYBE_COLORED, GPU_MATFLAG_REFRACT, GPU_MATFLAG_REFRACTION_MAYBE_COLORED, 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_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(), GPUGraphOutput::serialized, GPUGraphOutput::serialized_or_default(), blender::eevee::shader_closure_bits_from_flag(), blender::eevee::ShadowModule::shadow_technique, GPUCodegenOutput::surface, GPUCodegenOutput::thickness, blender::eevee::TILE_COPY, blender::eevee::to_gbuffer_bin_count(), blender::gpu::shader::ShaderCreateInfo::Resource::UNIFORM_BUFFER, ShaderCreateInfo::vertex_inputs_, ShaderCreateInfo::vertex_out_interfaces_, and GPUCodegenOutput::volume.

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

◆ material_shader_get()

◆ module_free()

◆ module_get()

Only to be used by Instance constructor.

Definition at line 35 of file eevee_shader.cc.

References ShaderModule().

◆ request_specializations()

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 )

◆ static_shader_get()

gpu::Shader * blender::eevee::ShaderModule::static_shader_get ( eShaderType shader_type)

Definition at line 565 of file eevee_shader.cc.

Referenced by request_specializations().

◆ static_shaders_load_async()

ShaderGroups blender::eevee::ShaderModule::static_shaders_load_async ( ShaderGroups request_bits)
inline

Definition at line 258 of file eevee_shader.hh.

◆ static_shaders_wait_ready()

ShaderGroups blender::eevee::ShaderModule::static_shaders_wait_ready ( ShaderGroups request_bits)
inline

Definition at line 264 of file eevee_shader.hh.

◆ world_shader_get()


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