173 std::array<StaticShader, MAX_SHADER_TYPE> shaders_;
177 class SpecializationsKey {
182 SpecializationsKey(
int render_buffers_shadow_id,
183 int shadow_ray_count,
184 int shadow_ray_step_count,
185 bool use_split_indirect,
186 bool use_lightprobe_eval)
189 BLI_assert(shadow_ray_count >= 1 && shadow_ray_count <= 4);
190 BLI_assert(shadow_ray_step_count >= 1 && shadow_ray_step_count <= 16);
192 hash_value_ = render_buffers_shadow_id + 1;
193 hash_value_ = (hash_value_ << 2) | (shadow_ray_count - 1);
194 hash_value_ = (hash_value_ << 4) | (shadow_ray_step_count - 1);
195 hash_value_ = (hash_value_ << 1) |
uint64_t(use_split_indirect);
196 hash_value_ = (hash_value_ << 1) |
uint64_t(use_lightprobe_eval);
204 bool operator==(
const SpecializationsKey &k)
const
206 return hash_value_ == k.hash_value_;
209 bool operator<(
const SpecializationsKey &k)
const
211 return hash_value_ < k.hash_value_;
231 return static_shaders_load(request_bits,
false);
237 return static_shaders_load(request_bits,
true);
241 int render_buffers_shadow_id,
242 int shadow_ray_count,
243 int shadow_ray_step_count,
244 bool use_split_indirect,
245 bool use_lightprobe_eval);
252 bool deferred_compilation,
257 bool deferred_compilation);
266 const char *static_shader_create_info_name_get(
eShaderType shader_type);
unsigned long long int uint64_t
ShaderGroups static_shaders_wait_ready(ShaderGroups request_bits)
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)
static void module_free()
ShaderGroups static_shaders_load_async(ShaderGroups request_bits)
void material_create_info_amend(GPUMaterial *mat, GPUCodegenOutput *codegen)
GPUMaterial * material_shader_get(::Material *blender_mat, bNodeTree *nodetree, eMaterialPipeline pipeline_type, eMaterialGeometry geometry_type, bool deferred_compilation, ::Material *default_mat)
static ShaderModule * module_get()
GPUMaterial * world_shader_get(::World *blender_world, bNodeTree *nodetree, eMaterialPipeline pipeline_type, bool deferred_compilation)
GPUShader * static_shader_get(eShaderType shader_type)
@ DOF_GATHER_BACKGROUND_LUT
@ SHADOW_TILEMAP_TAG_USAGE_SURFELS
@ SHADOW_TILEMAP_RENDERMAP
@ LIGHTPROBE_IRRADIANCE_RAY
@ DOF_TILES_DILATE_MINABS
@ SHADOW_TILEMAP_FINALIZE
@ DOF_TILES_DILATE_MINMAX
@ MOTION_BLUR_TILE_FLATTEN_RGBA
@ DEFERRED_THICKNESS_AMEND
@ SHADOW_TILEMAP_TAG_USAGE_OPAQUE
@ VOLUME_SCATTER_WITH_LIGHTS
@ MOTION_BLUR_TILE_FLATTEN_RG
@ DOF_GATHER_FOREGROUND_LUT
@ SPHERE_PROBE_IRRADIANCE
@ SHADOW_TILEMAP_TAG_USAGE_TRANSPARENT
@ FILM_PASS_CONVERT_COMBINED
@ FILM_PASS_CONVERT_CRYPTOMATTE
@ LIGHTPROBE_IRRADIANCE_LOAD
@ VOLUME_OCCUPANCY_CONVERT
@ SHADOW_TILEMAP_TAG_USAGE_VOLUME
@ MOTION_BLUR_TILE_DILATE
@ FILM_PASS_CONVERT_COLOR
@ LIGHTPROBE_IRRADIANCE_OFFSET
@ SHADOW_TILEMAP_TAG_UPDATE
@ FILM_PASS_CONVERT_VALUE
@ LIGHTPROBE_IRRADIANCE_WORLD
@ LIGHTPROBE_IRRADIANCE_BOUNDS
@ FILM_PASS_CONVERT_DEPTH
gpu::StaticShader StaticShader
bool operator==(const CameraData &a, const CameraData &b)
constexpr bool operator<(StringRef a, StringRef b)