summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-05-11 20:05:21 +0200
committerGitHub <noreply@github.com>2022-05-11 20:05:21 +0200
commitae8dacba1c20b6e385f401d8e179f53ab23c1955 (patch)
tree60789b960d3601e6a1148065f650d2ebcb49ed06 /servers/rendering/renderer_rd/storage_rd/material_storage.cpp
parent2fd73bd32e0b0d153945bc28576b154af3342627 (diff)
parent9939cfc4c48e9f76fd11fa481481012077aad741 (diff)
downloadredot-engine-ae8dacba1c20b6e385f401d8e179f53ab23c1955.tar.gz
Merge pull request #60617 from BastiaanOlij/split_bokeh_effect
Diffstat (limited to 'servers/rendering/renderer_rd/storage_rd/material_storage.cpp')
-rw-r--r--servers/rendering/renderer_rd/storage_rd/material_storage.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/material_storage.cpp b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
index 9ca2973fd4..4d2ee738a4 100644
--- a/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
@@ -1420,6 +1420,25 @@ MaterialStorage::MaterialStorage() {
//custom sampler
sampler_rd_configure_custom(0.0f);
+ // buffers
+ { //create index array for copy shaders
+ Vector<uint8_t> pv;
+ pv.resize(6 * 4);
+ {
+ uint8_t *w = pv.ptrw();
+ int *p32 = (int *)w;
+ p32[0] = 0;
+ p32[1] = 1;
+ p32[2] = 2;
+ p32[3] = 0;
+ p32[4] = 2;
+ p32[5] = 3;
+ }
+ quad_index_buffer = RD::get_singleton()->index_buffer_create(6, RenderingDevice::INDEX_BUFFER_FORMAT_UINT32, pv);
+ quad_index_array = RD::get_singleton()->index_array_create(quad_index_buffer, 0, 6);
+ }
+
+ // Shaders
for (int i = 0; i < SHADER_TYPE_MAX; i++) {
shader_data_request_func[i] = nullptr;
}
@@ -1441,6 +1460,10 @@ MaterialStorage::~MaterialStorage() {
memdelete_arr(global_variables.buffer_dirty_regions);
RD::get_singleton()->free(global_variables.buffer);
+ // buffers
+
+ RD::get_singleton()->free(quad_index_buffer); //array gets freed as dependency
+
//def samplers
for (int i = 1; i < RS::CANVAS_ITEM_TEXTURE_FILTER_MAX; i++) {
for (int j = 1; j < RS::CANVAS_ITEM_TEXTURE_REPEAT_MAX; j++) {