Blender V4.3
blender::eevee::ShaderModule Class Reference

#include <eevee_shader.hh>

Public Member Functions

GPU Materials
GPUMaterialmaterial_default_shader_get (eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type)
 
GPUMaterialmaterial_shader_get (::Material *blender_mat, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type, bool deferred_compilation)
 
GPUMaterialworld_shader_get (::World *blender_world, bNodeTree *nodetree, eMaterialPipeline pipeline_type)
 
GPUMaterialmaterial_shader_get (const char *name, ListBase &materials, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type)
 
void material_create_info_amend (GPUMaterial *mat, GPUCodegenOutput *codegen)
 

Module

 ShaderModule ()
 
 ~ShaderModule ()
 
static ShaderModulemodule_get ()
 
static void module_free ()
 

Static shaders

bool is_ready (bool block=false)
 
void precompile_specializations (int render_buffers_shadow_id, int shadow_ray_count, int shadow_ray_step_count)
 
GPUShaderstatic_shader_get (eShaderType shader_type)
 

Detailed Description

Shader module. shared between instances.

Definition at line 167 of file eevee_shader.hh.

Constructor & Destructor Documentation

◆ ShaderModule()

◆ ~ShaderModule()

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

Definition at line 79 of file eevee_shader.cc.

References DRW_SHADER_FREE_SAFE.

Member Function Documentation

◆ is_ready()

bool blender::eevee::ShaderModule::is_ready ( bool block = false)

◆ 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 442 of file eevee_shader.cc.

References blender::gpu::shader::ShaderCreateInfo::additional_info(), blender::gpu::shader::ShaderCreateInfo::additional_infos_, blender::eevee::ATOMIC_RASTER, ATTR_FALLTHROUGH, GPUCodegenOutput::attr_load, blender::gpu::shader::ShaderCreateInfo::batch_resources_, BLI_assert_unreachable, blender::gpu::shader::ShaderCreateInfo::builtins(), count_bits_i(), GPUCodegenOutput::create_info, blender::gpu::shader::ShaderCreateInfo::define(), GPUCodegenOutput::displacement, ELEM, blender::gpu::shader::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, blender::gpu::shader::StageInterfaceInfo::inouts, blender::gpu::shader::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_POINT_CLOUD, 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(), blender::gpu::shader::StageInterfaceInfo::name, blender::gpu::shader::ShaderCreateInfo::sampler(), blender::eevee::ShadowModule::shadow_technique, GPUCodegenOutput::surface, GPUCodegenOutput::thickness, blender::eevee::TILE_COPY, blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, blender::gpu::shader::ShaderCreateInfo::vertex_source_generated, and GPUCodegenOutput::volume.

◆ material_default_shader_get()

◆ material_shader_get() [1/2]

◆ material_shader_get() [2/2]

GPUMaterial * blender::eevee::ShaderModule::material_shader_get ( const char * name,
ListBase & materials,
bNodeTree * nodetree,
eMaterialPipeline pipeline_type,
eMaterialGeometry geometry_type )

Variation to compile a material only with a nodetree. Caller needs to maintain the list of materials and call GPU_material_free on it to update the material.

Definition at line 1001 of file eevee_shader.cc.

References blender::eevee::codegen_callback(), DRW_shader_queue_optimize_material(), ELEM, GPU_MAT_CREATED, GPU_MAT_EEVEE, GPU_material_compile(), GPU_material_from_nodetree(), GPU_material_status_set(), blender::eevee::MAT_PIPE_VOLUME_MATERIAL, blender::eevee::MAT_PIPE_VOLUME_OCCUPANCY, and blender::eevee::shader_uuid_from_material_type().

◆ module_free()

void blender::eevee::ShaderModule::module_free ( )
static

Definition at line 41 of file eevee_shader.cc.

Referenced by eevee_engine_free().

◆ module_get()

ShaderModule * blender::eevee::ShaderModule::module_get ( )
static

Only to be used by Instance constructor.

Definition at line 32 of file eevee_shader.cc.

References ShaderModule().

◆ precompile_specializations()

void blender::eevee::ShaderModule::precompile_specializations ( int render_buffers_shadow_id,
int shadow_ray_count,
int shadow_ray_step_count )

◆ static_shader_get()

◆ world_shader_get()


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