Skip to content

Commit 9c325d0

Browse files
committed
Remove selective shader baking.
1 parent e0603ae commit 9c325d0

File tree

5 files changed

+6
-75
lines changed

5 files changed

+6
-75
lines changed

editor/export/shader_baker_export_plugin.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -397,14 +397,8 @@ void ShaderBakerExportPlugin::_customize_shader_version(ShaderRD *p_shader, RID
397397

398398
for (int64_t i = 0; i < variant_count; i++) {
399399
int group = p_shader->get_variant_to_group(i);
400-
if (p_shader->has_variant_bake_for(i)) {
401-
if (!p_shader->get_variant_bake_for(i, shader_cache_platform_name + "_" + shader_cache_renderer_name + "_" + shader_container_driver) || !groups_to_compile.has(group)) {
402-
continue;
403-
}
404-
} else {
405-
if (!p_shader->is_variant_enabled(i) || !groups_to_compile.has(group)) {
406-
continue;
407-
}
400+
if (!p_shader->is_variant_enabled(i) || !groups_to_compile.has(group)) {
401+
continue;
408402
}
409403

410404
WorkItem work_item;

servers/rendering/renderer_rd/cluster_builder_rd.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -136,26 +136,6 @@ ClusterBuilderSharedDataRD::ClusterBuilderSharedDataRD() {
136136
cluster_render.cluster_render_shader.set_variant_enabled(ClusterRender::SHADER_USE_ATTACHMENT_MOLTENVK, false);
137137
}
138138
#endif
139-
// Do not bake default (with "gl_HelperInvocation" and image atomics) variants for macOS/iOS Vulkan, but bake it for the rest of configs (including Metal).
140-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL, "macos_forward_clustered_vulkan", false, true);
141-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL, "ios_forward_clustered_vulkan", false, true);
142-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT, "macos_forward_clustered_vulkan", false, true);
143-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT, "ios_forward_clustered_vulkan", false, true);
144-
145-
// Bake no "gl_HelperInvocation" and no "image atomics" variants for macOS/iOS Vulkan only.
146-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL_MOLTENVK, "macos_forward_clustered_vulkan", true, false);
147-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL_MOLTENVK, "ios_forward_clustered_vulkan", true, false);
148-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT_MOLTENVK, "macos_forward_clustered_vulkan", true, false);
149-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT_MOLTENVK, "ios_forward_clustered_vulkan", true, false);
150-
151-
// Bake no "image atomics" variants for macOS/iOS/visionOS Metal only.
152-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL_NO_ATOMICS, "macos_forward_clustered_metal", true, false);
153-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL_NO_ATOMICS, "ios_forward_clustered_metal", true, false);
154-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_NORMAL_NO_ATOMICS, "visionos_forward_clustered_metal", true, false);
155-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT_NO_ATOMICS, "macos_forward_clustered_metal", true, false);
156-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT_NO_ATOMICS, "ios_forward_clustered_metal", true, false);
157-
cluster_render.cluster_render_shader.set_variants_bake_for(ClusterRender::SHADER_USE_ATTACHMENT_NO_ATOMICS, "visionos_forward_clustered_metal", true, false);
158-
159139
cluster_render.shader_version = cluster_render.cluster_render_shader.version_create();
160140
cluster_render.shader = cluster_render.cluster_render_shader.version_get_shader(cluster_render.shader_version, shader_variant);
161141
cluster_render.shader_pipelines[ClusterRender::PIPELINE_NORMAL] = RD::get_singleton()->render_pipeline_create(cluster_render.shader, fb_format, vertex_format, RD::RENDER_PRIMITIVE_TRIANGLES, rasterization_state, RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), blend_state, 0);

servers/rendering/renderer_rd/environment/fog.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,6 @@ void Fog::init_fog_shader(uint32_t p_max_directional_lights, int p_roughness_lay
222222
} else {
223223
volumetric_fog.shader.set_variant_enabled(0, false);
224224
}
225-
// Always bake default (with image atomics) variant.
226-
volumetric_fog.shader.set_variants_bake_for(0, "*", true, true);
227-
228-
// Bake no "image atomics" variant for macOS/iOS (Vulkan and Metal) and visionOS (Metal).
229-
volumetric_fog.shader.set_variants_bake_for(1, "macos_forward_clustered_vulkan", true, false);
230-
volumetric_fog.shader.set_variants_bake_for(1, "macos_forward_clustered_metal", true, false);
231-
volumetric_fog.shader.set_variants_bake_for(1, "ios_forward_clustered_vulkan", true, false);
232-
volumetric_fog.shader.set_variants_bake_for(1, "ios_forward_clustered_metal", true, false);
233-
volumetric_fog.shader.set_variants_bake_for(1, "visionos_forward_clustered_metal", true, false);
234225

235226
material_storage->shader_set_data_request_function(RendererRD::MaterialStorage::SHADER_TYPE_FOG, _create_fog_shader_funcs);
236227
material_storage->material_set_data_request_function(RendererRD::MaterialStorage::SHADER_TYPE_FOG, _create_fog_material_funcs);
@@ -333,15 +324,6 @@ ALBEDO = vec3(1.0);
333324
} else {
334325
volumetric_fog.process_shader.set_variant_enabled(i, false);
335326
}
336-
// Always bake default (with image atomics) variant.
337-
volumetric_fog.process_shader.set_variants_bake_for(i, "*", true, true);
338-
339-
// Bake no "image atomics" variant for macOS/iOS (Vulkan and Metal) and visionOS (Metal) only.
340-
volumetric_fog.process_shader.set_variants_bake_for(i + VolumetricFogShader::VOLUMETRIC_FOG_PROCESS_SHADER_MAX, "macos_forward_clustered_vulkan", true, false);
341-
volumetric_fog.process_shader.set_variants_bake_for(i + VolumetricFogShader::VOLUMETRIC_FOG_PROCESS_SHADER_MAX, "macos_forward_clustered_metal", true, false);
342-
volumetric_fog.process_shader.set_variants_bake_for(i + VolumetricFogShader::VOLUMETRIC_FOG_PROCESS_SHADER_MAX, "ios_forward_clustered_vulkan", true, false);
343-
volumetric_fog.process_shader.set_variants_bake_for(i + VolumetricFogShader::VOLUMETRIC_FOG_PROCESS_SHADER_MAX, "ios_forward_clustered_metal", true, false);
344-
volumetric_fog.process_shader.set_variants_bake_for(i + VolumetricFogShader::VOLUMETRIC_FOG_PROCESS_SHADER_MAX, "visionos_forward_clustered_metal", true, false);
345327
}
346328

347329
volumetric_fog.process_shader_version = volumetric_fog.process_shader.version_create();

servers/rendering/renderer_rd/shader_rd.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ void ShaderRD::_build_variant_code(StringBuilder &builder, uint32_t p_variant, c
262262
}
263263

264264
Vector<String> ShaderRD::_build_variant_stage_sources(uint32_t p_variant, CompileData p_data) {
265-
if (!variants_enabled[p_variant] && !variants_bake_for.has(p_variant)) {
265+
if (!variants_enabled[p_variant]) {
266266
return Vector<String>(); // Variant is disabled, return.
267267
}
268268

@@ -463,11 +463,7 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) {
463463
for (uint32_t i = 0; i < variant_count; i++) {
464464
int variant_id = group_to_variant_map[p_group][i];
465465
uint32_t variant_size = f->get_32();
466-
ERR_FAIL_COND_V(variant_size == 0 && variants_enabled[variant_id], false);
467-
if (!variants_enabled[variant_id] && !variants_bake_for.has(variant_id)) {
468-
continue;
469-
}
470-
if (variant_size == 0) {
466+
if (!variants_enabled[variant_id] || variant_size == 0) {
471467
continue;
472468
}
473469
Vector<uint8_t> variant_bytes;
@@ -482,7 +478,7 @@ bool ShaderRD::_load_from_cache(Version *p_version, int p_group) {
482478

483479
for (uint32_t i = 0; i < variant_count; i++) {
484480
int variant_id = group_to_variant_map[p_group][i];
485-
if ((!variants_enabled[variant_id] && !variants_bake_for.has(variant_id)) || p_version->variant_data[variant_id].is_empty()) {
481+
if (!variants_enabled[variant_id]) {
486482
p_version->variants.write[variant_id] = RID();
487483
continue;
488484
}
@@ -575,7 +571,7 @@ void ShaderRD::_compile_version_end(Version *p_version, int p_group) {
575571
if (!all_valid) {
576572
// Clear versions if they exist.
577573
for (int i = 0; i < variant_defines.size(); i++) {
578-
if ((!variants_enabled[i] && !variants_bake_for.has(i)) || !group_enabled[variant_defines[i].group]) {
574+
if (!variants_enabled[i] || !group_enabled[variant_defines[i].group]) {
579575
continue; // Disabled.
580576
}
581577
if (!p_version->variants[i].is_null()) {

servers/rendering/renderer_rd/shader_rd.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ class ShaderRD {
6060
CharString general_defines;
6161
Vector<VariantDefine> variant_defines;
6262
Vector<bool> variants_enabled;
63-
HashMap<int, HashMap<String, bool>> variants_bake_for;
64-
HashMap<int, bool> variants_bake_for_def;
6563
Vector<uint32_t> variant_to_group;
6664
HashMap<int, LocalVector<int>> group_to_variant_map;
6765
Vector<bool> group_enabled;
@@ -218,25 +216,6 @@ class ShaderRD {
218216
int64_t get_variant_count() const;
219217
int get_variant_to_group(int p_variant) const;
220218

221-
bool has_variant_bake_for(int p_variant) const {
222-
return variants_bake_for.has(p_variant);
223-
}
224-
225-
bool get_variant_bake_for(int p_variant, const String &p_name) const {
226-
if (!variants_bake_for.has(p_variant)) {
227-
return is_variant_enabled(p_variant);
228-
}
229-
if (!variants_bake_for[p_variant].has(p_name.to_lower())) {
230-
return variants_bake_for_def[p_variant];
231-
}
232-
return variants_bake_for[p_variant][p_name.to_lower()];
233-
}
234-
235-
void set_variants_bake_for(int p_variant, const String &p_name, bool p_enable, bool p_default) {
236-
variants_bake_for[p_variant][p_name.to_lower()] = p_enable;
237-
variants_bake_for_def[p_variant] = p_default;
238-
}
239-
240219
// Enable/disable groups for things that might be enabled at run time.
241220
void enable_group(int p_group);
242221
bool is_group_enabled(int p_group) const;

0 commit comments

Comments
 (0)