You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Rename shader parameter uniform setter/getter methods for consistency
`shader_uniform` is now consistenly used across both per-shader and per-instance shader uniform methods. This makes methods easier to find in the class reference when looking for them.
This commit is contained in:
@@ -1423,62 +1423,62 @@ void RendererSceneCull::instance_geometry_set_lod_bias(RID p_instance, float p_l
|
||||
}
|
||||
}
|
||||
|
||||
void RendererSceneCull::instance_geometry_set_shader_parameter(RID p_instance, const StringName &p_parameter, const Variant &p_value) {
|
||||
void RendererSceneCull::instance_geometry_set_shader_uniform(RID p_instance, const StringName &p_parameter, const Variant &p_value) {
|
||||
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||
ERR_FAIL_COND(!instance);
|
||||
|
||||
ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
|
||||
|
||||
HashMap<StringName, Instance::InstanceShaderParameter>::Iterator E = instance->instance_shader_parameters.find(p_parameter);
|
||||
HashMap<StringName, Instance::InstanceShaderParameter>::Iterator E = instance->instance_shader_uniforms.find(p_parameter);
|
||||
|
||||
if (!E) {
|
||||
Instance::InstanceShaderParameter isp;
|
||||
isp.index = -1;
|
||||
isp.info = PropertyInfo();
|
||||
isp.value = p_value;
|
||||
instance->instance_shader_parameters[p_parameter] = isp;
|
||||
instance->instance_shader_uniforms[p_parameter] = isp;
|
||||
} else {
|
||||
E->value.value = p_value;
|
||||
if (E->value.index >= 0 && instance->instance_allocated_shader_parameters) {
|
||||
if (E->value.index >= 0 && instance->instance_allocated_shader_uniforms) {
|
||||
//update directly
|
||||
RSG::material_storage->global_shader_uniforms_instance_update(p_instance, E->value.index, p_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Variant RendererSceneCull::instance_geometry_get_shader_parameter(RID p_instance, const StringName &p_parameter) const {
|
||||
Variant RendererSceneCull::instance_geometry_get_shader_uniform(RID p_instance, const StringName &p_parameter) const {
|
||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||
ERR_FAIL_COND_V(!instance, Variant());
|
||||
|
||||
if (instance->instance_shader_parameters.has(p_parameter)) {
|
||||
return instance->instance_shader_parameters[p_parameter].value;
|
||||
if (instance->instance_shader_uniforms.has(p_parameter)) {
|
||||
return instance->instance_shader_uniforms[p_parameter].value;
|
||||
}
|
||||
return Variant();
|
||||
}
|
||||
|
||||
Variant RendererSceneCull::instance_geometry_get_shader_parameter_default_value(RID p_instance, const StringName &p_parameter) const {
|
||||
Variant RendererSceneCull::instance_geometry_get_shader_uniform_default_value(RID p_instance, const StringName &p_parameter) const {
|
||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||
ERR_FAIL_COND_V(!instance, Variant());
|
||||
|
||||
if (instance->instance_shader_parameters.has(p_parameter)) {
|
||||
return instance->instance_shader_parameters[p_parameter].default_value;
|
||||
if (instance->instance_shader_uniforms.has(p_parameter)) {
|
||||
return instance->instance_shader_uniforms[p_parameter].default_value;
|
||||
}
|
||||
return Variant();
|
||||
}
|
||||
|
||||
void RendererSceneCull::instance_geometry_get_shader_parameter_list(RID p_instance, List<PropertyInfo> *p_parameters) const {
|
||||
void RendererSceneCull::instance_geometry_get_shader_uniform_list(RID p_instance, List<PropertyInfo> *p_parameters) const {
|
||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||
ERR_FAIL_COND(!instance);
|
||||
|
||||
const_cast<RendererSceneCull *>(this)->update_dirty_instances();
|
||||
|
||||
Vector<StringName> names;
|
||||
for (const KeyValue<StringName, Instance::InstanceShaderParameter> &E : instance->instance_shader_parameters) {
|
||||
for (const KeyValue<StringName, Instance::InstanceShaderParameter> &E : instance->instance_shader_uniforms) {
|
||||
names.push_back(E.key);
|
||||
}
|
||||
names.sort_custom<StringName::AlphCompare>();
|
||||
for (int i = 0; i < names.size(); i++) {
|
||||
PropertyInfo pinfo = instance->instance_shader_parameters[names[i]].info;
|
||||
PropertyInfo pinfo = instance->instance_shader_uniforms[names[i]].info;
|
||||
p_parameters->push_back(pinfo);
|
||||
}
|
||||
}
|
||||
@@ -3642,9 +3642,9 @@ void RendererSceneCull::render_particle_colliders() {
|
||||
}
|
||||
}
|
||||
|
||||
void RendererSceneCull::_update_instance_shader_parameters_from_material(HashMap<StringName, Instance::InstanceShaderParameter> &isparams, const HashMap<StringName, Instance::InstanceShaderParameter> &existing_isparams, RID p_material) {
|
||||
void RendererSceneCull::_update_instance_shader_uniforms_from_material(HashMap<StringName, Instance::InstanceShaderParameter> &isparams, const HashMap<StringName, Instance::InstanceShaderParameter> &existing_isparams, RID p_material) {
|
||||
List<RendererMaterialStorage::InstanceShaderParam> plist;
|
||||
RSG::material_storage->material_get_instance_shader_parameters(p_material, &plist);
|
||||
RSG::material_storage->material_get_instance_shader_uniforms(p_material, &plist);
|
||||
for (const RendererMaterialStorage::InstanceShaderParam &E : plist) {
|
||||
StringName name = E.info.name;
|
||||
if (isparams.has(name)) {
|
||||
@@ -3724,7 +3724,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
can_cast_shadows = false;
|
||||
}
|
||||
is_animated = RSG::material_storage->material_is_animated(p_instance->material_override);
|
||||
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, p_instance->material_override);
|
||||
_update_instance_shader_uniforms_from_material(isparams, p_instance->instance_shader_uniforms, p_instance->material_override);
|
||||
} else {
|
||||
if (p_instance->base_type == RS::INSTANCE_MESH) {
|
||||
RID mesh = p_instance->base;
|
||||
@@ -3746,7 +3746,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
is_animated = true;
|
||||
}
|
||||
|
||||
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
|
||||
_update_instance_shader_uniforms_from_material(isparams, p_instance->instance_shader_uniforms, mat);
|
||||
|
||||
RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
|
||||
}
|
||||
@@ -3777,7 +3777,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
is_animated = true;
|
||||
}
|
||||
|
||||
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
|
||||
_update_instance_shader_uniforms_from_material(isparams, p_instance->instance_shader_uniforms, mat);
|
||||
|
||||
RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
|
||||
}
|
||||
@@ -3815,7 +3815,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
is_animated = true;
|
||||
}
|
||||
|
||||
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
|
||||
_update_instance_shader_uniforms_from_material(isparams, p_instance->instance_shader_uniforms, mat);
|
||||
|
||||
RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
|
||||
}
|
||||
@@ -3831,7 +3831,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
if (p_instance->material_overlay.is_valid()) {
|
||||
can_cast_shadows = can_cast_shadows || RSG::material_storage->material_casts_shadows(p_instance->material_overlay);
|
||||
is_animated = is_animated || RSG::material_storage->material_is_animated(p_instance->material_overlay);
|
||||
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, p_instance->material_overlay);
|
||||
_update_instance_shader_uniforms_from_material(isparams, p_instance->instance_shader_uniforms, p_instance->material_overlay);
|
||||
}
|
||||
|
||||
if (can_cast_shadows != geom->can_cast_shadows) {
|
||||
@@ -3845,23 +3845,23 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
|
||||
}
|
||||
|
||||
geom->material_is_animated = is_animated;
|
||||
p_instance->instance_shader_parameters = isparams;
|
||||
p_instance->instance_shader_uniforms = isparams;
|
||||
|
||||
if (p_instance->instance_allocated_shader_parameters != (p_instance->instance_shader_parameters.size() > 0)) {
|
||||
p_instance->instance_allocated_shader_parameters = (p_instance->instance_shader_parameters.size() > 0);
|
||||
if (p_instance->instance_allocated_shader_parameters) {
|
||||
p_instance->instance_allocated_shader_parameters_offset = RSG::material_storage->global_shader_uniforms_instance_allocate(p_instance->self);
|
||||
geom->geometry_instance->set_instance_shader_parameters_offset(p_instance->instance_allocated_shader_parameters_offset);
|
||||
if (p_instance->instance_allocated_shader_uniforms != (p_instance->instance_shader_uniforms.size() > 0)) {
|
||||
p_instance->instance_allocated_shader_uniforms = (p_instance->instance_shader_uniforms.size() > 0);
|
||||
if (p_instance->instance_allocated_shader_uniforms) {
|
||||
p_instance->instance_allocated_shader_uniforms_offset = RSG::material_storage->global_shader_uniforms_instance_allocate(p_instance->self);
|
||||
geom->geometry_instance->set_instance_shader_uniforms_offset(p_instance->instance_allocated_shader_uniforms_offset);
|
||||
|
||||
for (const KeyValue<StringName, Instance::InstanceShaderParameter> &E : p_instance->instance_shader_parameters) {
|
||||
for (const KeyValue<StringName, Instance::InstanceShaderParameter> &E : p_instance->instance_shader_uniforms) {
|
||||
if (E.value.value.get_type() != Variant::NIL) {
|
||||
RSG::material_storage->global_shader_uniforms_instance_update(p_instance->self, E.value.index, E.value.value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
RSG::material_storage->global_shader_uniforms_instance_free(p_instance->self);
|
||||
p_instance->instance_allocated_shader_parameters_offset = -1;
|
||||
geom->geometry_instance->set_instance_shader_parameters_offset(-1);
|
||||
p_instance->instance_allocated_shader_uniforms_offset = -1;
|
||||
geom->geometry_instance->set_instance_shader_uniforms_offset(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3953,7 +3953,7 @@ bool RendererSceneCull::free(RID p_rid) {
|
||||
instance_geometry_set_material_overlay(p_rid, RID());
|
||||
instance_attach_skeleton(p_rid, RID());
|
||||
|
||||
if (instance->instance_allocated_shader_parameters) {
|
||||
if (instance->instance_allocated_shader_uniforms) {
|
||||
//free the used shader parameters
|
||||
RSG::material_storage->global_shader_uniforms_instance_free(instance->self);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user