DRW: Fix some overlapping UBO bindings
This shuffle around the UBO bindings of EEVEE-Next, Workbench-Next and DRW internal. This patch is based under the assumption that all the target hardwares have at least 12 UBO slots, which is already required by the GL 4.3 we aim.
This commit is contained in:
@@ -120,15 +120,15 @@
|
||||
#define GBUF_COLOR_SLOT 4
|
||||
|
||||
/* Uniform Buffers. */
|
||||
#define CAMERA_BUF_SLOT 0
|
||||
#define RBUFS_BUF_SLOT 1
|
||||
/* Only during surface shading (forward and deferred eval). */
|
||||
#define HIZ_BUF_SLOT 2
|
||||
#define IRRADIANCE_GRID_BUF_SLOT 3
|
||||
#define HIZ_BUF_SLOT 5
|
||||
/* Only during pre-pass. */
|
||||
#define VELOCITY_CAMERA_PREV_BUF 3
|
||||
#define VELOCITY_CAMERA_CURR_BUF 4
|
||||
#define VELOCITY_CAMERA_NEXT_BUF 5
|
||||
|
||||
#define CAMERA_BUF_SLOT 6
|
||||
#define RBUFS_BUF_SLOT 7
|
||||
#define VELOCITY_CAMERA_PREV_BUF 2
|
||||
#define VELOCITY_CAMERA_CURR_BUF 3
|
||||
#define VELOCITY_CAMERA_NEXT_BUF 4
|
||||
|
||||
/* Storage Buffers. */
|
||||
#define LIGHT_CULL_BUF_SLOT 0
|
||||
|
||||
@@ -12,7 +12,7 @@ GPU_SHADER_CREATE_INFO(eevee_transmittance_data)
|
||||
GPU_SHADER_CREATE_INFO(eevee_subsurface_eval)
|
||||
.do_static_compilation(true)
|
||||
.additional_info("eevee_shared", "eevee_render_pass_out")
|
||||
.uniform_buf(1, "SubsurfaceData", "sss_buf")
|
||||
.uniform_buf(0, "SubsurfaceData", "sss_buf")
|
||||
.sampler(0, ImageType::FLOAT_2D_ARRAY, "gbuffer_closure_tx")
|
||||
.sampler(1, ImageType::FLOAT_2D_ARRAY, "gbuffer_color_tx")
|
||||
.sampler(2, ImageType::FLOAT_2D, "radiance_tx")
|
||||
|
||||
@@ -108,7 +108,7 @@ GPU_SHADER_INTERFACE_INFO(workbench_material_iface, "")
|
||||
|
||||
GPU_SHADER_CREATE_INFO(workbench_material)
|
||||
.uniform_buf(WB_WORLD_SLOT, "WorldData", "world_data")
|
||||
.uniform_buf(5, "vec4", "materials_data[4096]")
|
||||
.uniform_buf(WB_MATERIAL_UBO_SLOT, "vec4", "materials_data[4096]")
|
||||
.push_constant(Type::INT, "materialIndex")
|
||||
.push_constant(Type::BOOL, "useMatcap")
|
||||
.vertex_out(workbench_material_iface);
|
||||
|
||||
@@ -2,11 +2,15 @@
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/* UBO. */
|
||||
#define WB_MATERIAL_UBO_SLOT 3
|
||||
#define WB_WORLD_SLOT 4
|
||||
/* SSBO. */
|
||||
#define WB_MATERIAL_SLOT 0
|
||||
/* Samplers. */
|
||||
#define WB_MATCAP_SLOT 0
|
||||
#define WB_TEXTURE_SLOT 1
|
||||
#define WB_TILE_ARRAY_SLOT 2
|
||||
#define WB_TILE_DATA_SLOT 3
|
||||
#define WB_MATERIAL_SLOT 0
|
||||
#define WB_WORLD_SLOT 4
|
||||
|
||||
#define WB_RESOLVE_GROUP_SIZE 8
|
||||
|
||||
@@ -11,17 +11,25 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define DRW_VIEW_UBO_SLOT 0
|
||||
#define DRW_VIEW_CULLING_UBO_SLOT 1
|
||||
#define DRW_CLIPPING_UBO_SLOT 2
|
||||
|
||||
#define DRW_LAYER_ATTR_UBO_SLOT 3
|
||||
/* We target hardware with at least 12 UBO slots (Guaranteed by GL 4.3). */
|
||||
#define DRW_VIEW_UBO_SLOT 11
|
||||
#define DRW_VIEW_CULLING_UBO_SLOT 10
|
||||
#define DRW_OBJ_DATA_INFO_UBO_SLOT 9
|
||||
#define DRW_OBJ_MAT_UBO_SLOT 8
|
||||
#define DRW_LAYER_ATTR_UBO_SLOT 7
|
||||
/* Slots 0-6 are reserved for engine use. */
|
||||
/* TODO(fclem): Legacy. To be removed once we remove the old DRW. */
|
||||
#define DRW_OBJ_INFOS_UBO_SLOT 6
|
||||
/* TODO(fclem): Remove in favor of engine-side clipping UBO. */
|
||||
#define DRW_CLIPPING_UBO_SLOT 5
|
||||
|
||||
/* We target hardware with at least 12 SSBO slots (NOT Guaranteed by GL 4.3). */
|
||||
#define DRW_RESOURCE_ID_SLOT 11
|
||||
#define DRW_OBJ_MAT_SLOT 10
|
||||
#define DRW_OBJ_INFOS_SLOT 9
|
||||
#define DRW_OBJ_ATTR_SLOT 8
|
||||
|
||||
/* Slots 0-7 are reserved for engine use. */
|
||||
/* Debug SSBOs are not counted in the limit [12 - 15+]. */
|
||||
#define DRW_DEBUG_PRINT_SLOT 15
|
||||
#define DRW_DEBUG_DRAW_SLOT 14
|
||||
|
||||
|
||||
@@ -11,15 +11,18 @@ GPU_SHADER_CREATE_INFO(draw_object_infos)
|
||||
.define("OrcoTexCoFactors", "(drw_infos[resource_id].orco_mul_bias)")
|
||||
.define("ObjectInfo", "(drw_infos[resource_id].infos)")
|
||||
.define("ObjectColor", "(drw_infos[resource_id].ob_color)")
|
||||
.uniform_buf(1, "ObjectInfos", "drw_infos[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH);
|
||||
.uniform_buf(DRW_OBJ_INFOS_UBO_SLOT,
|
||||
"ObjectInfos",
|
||||
"drw_infos[DRW_RESOURCE_CHUNK_LEN]",
|
||||
Frequency::BATCH);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(draw_volume_infos)
|
||||
.typedef_source("draw_shader_shared.h")
|
||||
.uniform_buf(3, "VolumeInfos", "drw_volume", Frequency::BATCH);
|
||||
.uniform_buf(DRW_OBJ_DATA_INFO_UBO_SLOT, "VolumeInfos", "drw_volume", Frequency::BATCH);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(draw_curves_infos)
|
||||
.typedef_source("draw_shader_shared.h")
|
||||
.uniform_buf(3, "CurvesInfos", "drw_curves", Frequency::BATCH);
|
||||
.uniform_buf(DRW_OBJ_DATA_INFO_UBO_SLOT, "CurvesInfos", "drw_curves", Frequency::BATCH);
|
||||
|
||||
GPU_SHADER_CREATE_INFO(draw_layer_attributes)
|
||||
.typedef_source("draw_shader_shared.h")
|
||||
|
||||
@@ -57,7 +57,10 @@ GPU_SHADER_CREATE_INFO(draw_view_culling)
|
||||
.typedef_source("draw_shader_shared.h");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(draw_modelmat)
|
||||
.uniform_buf(8, "ObjectMatrices", "drw_matrices[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH)
|
||||
.uniform_buf(DRW_OBJ_MAT_UBO_SLOT,
|
||||
"ObjectMatrices",
|
||||
"drw_matrices[DRW_RESOURCE_CHUNK_LEN]",
|
||||
Frequency::BATCH)
|
||||
.define("ModelMatrix", "(drw_matrices[resource_id].model)")
|
||||
.define("ModelMatrixInverse", "(drw_matrices[resource_id].model_inverse)")
|
||||
.additional_info("draw_view");
|
||||
|
||||
Reference in New Issue
Block a user