You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-25 15:37:42 +00:00
Merge pull request #62972 from Chaosus/shader_groups
Implement shader uniform groups/subgroups
This commit is contained in:
@@ -393,7 +393,22 @@ void Fog::FogShaderData::get_param_list(List<PropertyInfo> *p_param_list) const
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
@@ -178,8 +178,22 @@ void SkyRD::SkyShaderData::get_param_list(List<PropertyInfo> *p_param_list) cons
|
||||
order[E.value.order] = E.key;
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
@@ -407,7 +407,22 @@ void SceneShaderForwardClustered::ShaderData::get_param_list(List<PropertyInfo>
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
@@ -364,7 +364,22 @@ void SceneShaderForwardMobile::ShaderData::get_param_list(List<PropertyInfo> *p_
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
@@ -2185,7 +2185,22 @@ void RendererCanvasRenderRD::CanvasShaderData::get_param_list(List<PropertyInfo>
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
@@ -1612,7 +1612,22 @@ void ParticlesStorage::ParticlesShaderData::get_param_list(List<PropertyInfo> *p
|
||||
}
|
||||
}
|
||||
|
||||
String last_group;
|
||||
for (const KeyValue<int, StringName> &E : order) {
|
||||
String group = uniforms[E.value].group;
|
||||
if (!uniforms[E.value].subgroup.is_empty()) {
|
||||
group += "::" + uniforms[E.value].subgroup;
|
||||
}
|
||||
|
||||
if (group != last_group) {
|
||||
PropertyInfo pi;
|
||||
pi.usage = PROPERTY_USAGE_GROUP;
|
||||
pi.name = group;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
last_group = group;
|
||||
}
|
||||
|
||||
PropertyInfo pi = ShaderLanguage::uniform_to_property_info(uniforms[E.value]);
|
||||
pi.name = E.value;
|
||||
p_param_list->push_back(pi);
|
||||
|
||||
Reference in New Issue
Block a user