Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/draw_view.cc
| Show First 20 Lines • Show All 252 Lines • ▼ Show 20 Lines | #endif | ||||
| if (do_visibility_) { | if (do_visibility_) { | ||||
| GPUShader *shader = DRW_shader_draw_visibility_compute_get(); | GPUShader *shader = DRW_shader_draw_visibility_compute_get(); | ||||
| GPU_shader_bind(shader); | GPU_shader_bind(shader); | ||||
| GPU_shader_uniform_1i(shader, "resource_len", resource_len); | GPU_shader_uniform_1i(shader, "resource_len", resource_len); | ||||
| GPU_shader_uniform_1i(shader, "view_len", view_len_); | GPU_shader_uniform_1i(shader, "view_len", view_len_); | ||||
| GPU_shader_uniform_1i(shader, "visibility_word_per_draw", word_per_draw); | GPU_shader_uniform_1i(shader, "visibility_word_per_draw", word_per_draw); | ||||
| GPU_storagebuf_bind(bounds, GPU_shader_get_ssbo(shader, "bounds_buf")); | GPU_storagebuf_bind(bounds, GPU_shader_get_ssbo(shader, "bounds_buf")); | ||||
| GPU_storagebuf_bind(visibility_buf_, GPU_shader_get_ssbo(shader, "visibility_buf")); | GPU_storagebuf_bind(visibility_buf_, GPU_shader_get_ssbo(shader, "visibility_buf")); | ||||
| GPU_uniformbuf_bind((frozen_) ? data_freeze_ : data_, DRW_VIEW_UBO_SLOT); | GPU_uniformbuf_bind(frozen_ ? data_freeze_ : data_, DRW_VIEW_UBO_SLOT); | ||||
| GPU_uniformbuf_bind(frozen_ ? culling_freeze_ : culling_, DRW_VIEW_CULLING_UBO_SLOT); | |||||
| GPU_compute_dispatch(shader, divide_ceil_u(resource_len, DRW_VISIBILITY_GROUP_SIZE), 1, 1); | GPU_compute_dispatch(shader, divide_ceil_u(resource_len, DRW_VISIBILITY_GROUP_SIZE), 1, 1); | ||||
| GPU_memory_barrier(GPU_BARRIER_SHADER_STORAGE); | GPU_memory_barrier(GPU_BARRIER_SHADER_STORAGE); | ||||
| } | } | ||||
| if (frozen_) { | if (frozen_) { | ||||
| /* Bind back the non frozen data. */ | /* Bind back the non frozen data. */ | ||||
| GPU_uniformbuf_bind(data_, DRW_VIEW_UBO_SLOT); | GPU_uniformbuf_bind(data_, DRW_VIEW_UBO_SLOT); | ||||
| GPU_uniformbuf_bind(culling_, DRW_VIEW_CULLING_UBO_SLOT); | |||||
| } | } | ||||
| GPU_debug_group_end(); | GPU_debug_group_end(); | ||||
| } | } | ||||
| } // namespace blender::draw | } // namespace blender::draw | ||||