|
Blender V4.3
|
#include <eevee_shader.hh>
Public Member Functions | |
GPU Materials | |
| GPUMaterial * | material_default_shader_get (eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type) |
| GPUMaterial * | material_shader_get (::Material *blender_mat, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type, bool deferred_compilation) |
| GPUMaterial * | world_shader_get (::World *blender_world, bNodeTree *nodetree, eMaterialPipeline pipeline_type) |
| GPUMaterial * | material_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 ShaderModule * | module_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) |
| GPUShader * | static_shader_get (eShaderType shader_type) |
Shader module. shared between instances.
Definition at line 167 of file eevee_shader.hh.
| blender::eevee::ShaderModule::ShaderModule | ( | ) |
Definition at line 50 of file eevee_shader.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, BLI_assert_msg, GPU_shader_batch_create_from_infos(), GPU_shader_create_info_get(), GPU_use_parallel_compilation(), blender::eevee::MAX_SHADER_TYPE, and blender::Vector< T, InlineBufferCapacity, Allocator >::reserve().
Referenced by module_get().
| blender::eevee::ShaderModule::~ShaderModule | ( | ) |
Definition at line 79 of file eevee_shader.cc.
References DRW_SHADER_FREE_SAFE.
| bool blender::eevee::ShaderModule::is_ready | ( | bool | block = false | ) |
Definition at line 124 of file eevee_shader.cc.
References GPU_shader_batch_finalize(), GPU_shader_batch_is_ready(), GPU_shader_batch_specializations_is_ready(), and blender::eevee::MAX_SHADER_TYPE.
Referenced by static_shader_get().
| 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.
| GPUMaterial * blender::eevee::ShaderModule::material_default_shader_get | ( | eMaterialPipeline | pipeline_type, |
| eMaterialGeometry | geometry_type ) |
Definition at line 941 of file eevee_shader.cc.
References BKE_material_default_surface(), BKE_material_default_volume(), ELEM, blender::eevee::MAT_PIPE_VOLUME_MATERIAL, blender::eevee::MAT_PIPE_VOLUME_OCCUPANCY, material_shader_get(), and Material::nodetree.
| GPUMaterial * blender::eevee::ShaderModule::material_shader_get | ( | ::Material * | blender_mat, |
| bNodeTree * | nodetree, | ||
| eMaterialPipeline | pipeline_type, | ||
| eMaterialGeometry | geometry_type, | ||
| bool | deferred_compilation ) |
Definition at line 952 of file eevee_shader.cc.
References BKE_material_default_surface(), BKE_material_default_volume(), Material::blend_flag, blender::eevee::codegen_callback(), Material::displacement_method, DRW_shader_from_material(), ELEM, GPU_MAT_EEVEE, blender::eevee::MAT_PIPE_VOLUME_MATERIAL, blender::eevee::MAT_PIPE_VOLUME_OCCUPANCY, 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 material_default_shader_get().
| 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().
|
static |
Definition at line 41 of file eevee_shader.cc.
Referenced by eevee_engine_free().
|
static |
Only to be used by Instance constructor.
Definition at line 32 of file eevee_shader.cc.
References ShaderModule().
| void blender::eevee::ShaderModule::precompile_specializations | ( | int | render_buffers_shadow_id, |
| int | shadow_ray_count, | ||
| int | shadow_ray_step_count ) |
Definition at line 93 of file eevee_shader.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, blender::eevee::DEFERRED_LIGHT_SINGLE, GPU_shader_batch_specializations(), GPU_use_parallel_compilation(), and static_shader_get().
| GPUShader * blender::eevee::ShaderModule::static_shader_get | ( | eShaderType | shader_type | ) |
Definition at line 378 of file eevee_shader.cc.
References BLI_assert, GPU_shader_create_from_info_name(), GPU_use_parallel_compilation(), and is_ready().
Referenced by blender::eevee::PlanarProbePipeline::begin_sync(), blender::eevee::ShadowModule::begin_sync(), blender::eevee::SphereProbeModule::begin_sync(), blender::eevee::ShadowModule::debug_end_sync(), blender::eevee::DeferredLayer::end_sync(), blender::eevee::DeferredProbePipeline::end_sync(), blender::eevee::ShadowModule::end_sync(), blender::eevee::SubsurfaceModule::end_sync(), blender::eevee::VolumeModule::end_sync(), blender::eevee::VelocityModule::geometry_steps_fill(), precompile_specializations(), blender::eevee::VolumeLayer::render(), blender::eevee::AmbientOcclusion::sync(), blender::eevee::BackgroundPipeline::sync(), blender::eevee::Film::sync(), blender::eevee::HiZBuffer::sync(), blender::eevee::MotionBlurModule::sync(), blender::eevee::RayTraceModule::sync(), blender::eevee::ShadowPipeline::sync(), blender::eevee::PlanarProbeModule::viewport_draw(), and blender::eevee::Film::write_viewport_compositor_passes().
| GPUMaterial * blender::eevee::ShaderModule::world_shader_get | ( | ::World * | blender_world, |
| bNodeTree * | nodetree, | ||
| eMaterialPipeline | pipeline_type ) |
Definition at line 982 of file eevee_shader.cc.
References blender::eevee::codegen_callback(), DRW_shader_from_world(), GPU_MAT_EEVEE, blender::eevee::MAT_GEOM_WORLD, blender::eevee::MAT_PIPE_VOLUME_MATERIAL, and blender::eevee::shader_uuid_from_material_type().
Referenced by blender::eevee::World::sync().