Added parsing for dynamic_enable in lazy shader compilation.
This commit is contained in:
@@ -154,10 +154,10 @@ bool zgl::shader_program_compiler::parse_features_declaration(
|
||||
switch (metadata.geometry)
|
||||
{
|
||||
case shader_program::geometry::types::mesh:
|
||||
parse_feature_tokens(tokens, mesh_feature_lookup, metadata.features.mesh);
|
||||
parse_feature_tokens(tokens, mesh_feature_lookup, metadata.feature_set.mesh.features);
|
||||
break;
|
||||
case shader_program::geometry::types::point_cloud:
|
||||
parse_feature_tokens(tokens, point_cloud_feature_lookup, metadata.features.point_cloud);
|
||||
parse_feature_tokens(tokens, point_cloud_feature_lookup, metadata.feature_set.point_cloud.features);
|
||||
break;
|
||||
default:
|
||||
ztu::logger::warn("Internal error: Unknown geometry index %.", static_cast<int>(metadata.geometry));
|
||||
@@ -166,17 +166,36 @@ bool zgl::shader_program_compiler::parse_features_declaration(
|
||||
return true;
|
||||
}
|
||||
|
||||
bool zgl::shader_program_compiler::parse_feature_toggles_declaration(
|
||||
bool zgl::shader_program_compiler::parse_static_enable_declaration(
|
||||
std::span<const std::string_view> tokens,
|
||||
shader_program::metadata_type& metadata
|
||||
) {
|
||||
switch (metadata.geometry)
|
||||
{
|
||||
case shader_program::geometry::types::mesh:
|
||||
parse_feature_tokens(tokens, mesh_feature_lookup, metadata.static_enable.mesh);
|
||||
parse_feature_tokens(tokens, mesh_feature_lookup, metadata.feature_set.mesh.static_enable);
|
||||
break;
|
||||
case shader_program::geometry::types::point_cloud:
|
||||
parse_feature_tokens(tokens, point_cloud_feature_lookup, metadata.static_enable.point_cloud);
|
||||
parse_feature_tokens(tokens, point_cloud_feature_lookup, metadata.feature_set.point_cloud.static_enable);
|
||||
break;
|
||||
default:
|
||||
ztu::logger::warn("Internal error: Unknown geometry index %.", static_cast<int>(metadata.geometry));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool zgl::shader_program_compiler::parse_dynamic_enable_declaration(
|
||||
std::span<const std::string_view> tokens,
|
||||
shader_program::metadata_type& metadata
|
||||
) {
|
||||
switch (metadata.geometry)
|
||||
{
|
||||
case shader_program::geometry::types::mesh:
|
||||
parse_feature_tokens(tokens, mesh_feature_lookup, metadata.feature_set.mesh.dynamic_enable);
|
||||
break;
|
||||
case shader_program::geometry::types::point_cloud:
|
||||
parse_feature_tokens(tokens, point_cloud_feature_lookup, metadata.feature_set.point_cloud.dynamic_enable);
|
||||
break;
|
||||
default:
|
||||
ztu::logger::warn("Internal error: Unknown geometry index %.", static_cast<int>(metadata.geometry));
|
||||
@@ -199,7 +218,8 @@ std::optional<shader_program::metadata_type> zgl::shader_program_compiler::parse
|
||||
std::make_tuple(stage, "stage"sv, &parse_stage_declaration),
|
||||
std::make_tuple(geometry, "geometry"sv, &parse_geometry_declaration),
|
||||
std::make_tuple(features, "features"sv, &parse_features_declaration),
|
||||
std::make_tuple(feature_toggles, "feature_toggles"sv, &parse_feature_toggles_declaration)
|
||||
std::make_tuple(static_enable, "static_enable"sv, &parse_static_enable_declaration),
|
||||
std::make_tuple(dynamic_enable, "dynamic_enable"sv, &parse_dynamic_enable_declaration)
|
||||
}) {
|
||||
const auto index = declaration_type_indices[static_cast<std::size_t>(type)];
|
||||
|
||||
@@ -318,7 +338,7 @@ void zgl::shader_program_compiler::compile_shaders(
|
||||
|
||||
const auto& shader_source = *shader_source_it;
|
||||
|
||||
if (shader_source.source.empty() and requirements.stage == shader_program::stages::geometry)
|
||||
if (shader_source.source.empty() and requirements.stage == shader_program::stage::types::geometry)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user