summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-20 23:59:27 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-20 23:59:27 +0100
commit292f4c7f9795dc9296710996ffa8510a02e92b2d (patch)
tree5b6a2279b994649bc4201bda75f20835d9a918fc /servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
parentdc2d1e3f479fb64e6da23c00d38ed030a085fb6c (diff)
parent5a98845655900a7884bf5a73c5406318f1106d77 (diff)
downloadredot-engine-292f4c7f9795dc9296710996ffa8510a02e92b2d.tar.gz
Merge pull request #80214 from BastiaanOlij/rendering_effect
Implement hooks into renderer
Diffstat (limited to 'servers/rendering/renderer_rd/uniform_set_cache_rd.cpp')
-rw-r--r--servers/rendering/renderer_rd/uniform_set_cache_rd.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp b/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
index 1f67d5e258..bcd8e78a71 100644
--- a/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
+++ b/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
@@ -32,6 +32,23 @@
UniformSetCacheRD *UniformSetCacheRD::singleton = nullptr;
+void UniformSetCacheRD::_bind_methods() {
+ ClassDB::bind_static_method("UniformSetCacheRD", D_METHOD("get_cache", "shader", "set", "uniforms"), &UniformSetCacheRD::get_cache_array);
+}
+
+RID UniformSetCacheRD::get_cache_array(RID p_shader, uint32_t p_set, const TypedArray<RDUniform> &p_uniforms) {
+ Vector<RD::Uniform> uniforms;
+
+ for (int i = 0; i < p_uniforms.size(); i++) {
+ Ref<RDUniform> uniform = p_uniforms[i];
+ if (uniform.is_valid()) {
+ uniforms.push_back(uniform->base);
+ }
+ }
+
+ return UniformSetCacheRD::get_singleton()->get_cache_vec(p_shader, p_set, uniforms);
+}
+
void UniformSetCacheRD::_invalidate(Cache *p_cache) {
if (p_cache->prev) {
p_cache->prev->next = p_cache->next;