Blender V4.5
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)
GPUShader * static_shader_get (eShaderType shader_type)

Detailed Description

Shader module. shared between instances.

Definition at line 171 of file eevee_shader.hh.

Constructor & Destructor Documentation

◆ ShaderModule()

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

◆ ~ShaderModule()

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

Definition at line 60 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.

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().

◆ material_shader_get()

◆ module_free()

◆ module_get()

Only to be used by Instance constructor.

Definition at line 33 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()

GPUShader * blender::eevee::ShaderModule::static_shader_get ( eShaderType shader_type)

Definition at line 554 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 229 of file eevee_shader.hh.

◆ static_shaders_wait_ready()

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

Definition at line 235 of file eevee_shader.hh.

◆ world_shader_get()

GPUMaterial * blender::eevee::ShaderModule::world_shader_get ( ::World * blender_world,
bNodeTree * nodetree,
eMaterialPipeline pipeline_type,
bool deferred_compilation )

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