summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
diff options
context:
space:
mode:
authorBastiaan Olij <mux213@gmail.com>2022-04-29 17:10:54 +1000
committerBastiaan Olij <mux213@gmail.com>2022-05-11 11:08:56 +1000
commit9939cfc4c48e9f76fd11fa481481012077aad741 (patch)
tree0255f768348292984d58843c6b9c738cad3f794e /servers/rendering/renderer_rd/storage_rd/material_storage.cpp
parent1eebf0d789f44870a32a1b36a6609a19647a836f (diff)
downloadredot-engine-9939cfc4c48e9f76fd11fa481481012077aad741.tar.gz
Split out bokeh_dof and copy effects
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++) {