Cleanup: DRW: Simplify resource id and custom id

This commit is contained in:
Clément Foucault
2025-03-04 00:20:52 +01:00
committed by Clément Foucault
parent edd3781584
commit 5916c39fa4
51 changed files with 127 additions and 187 deletions

View File

@@ -12,7 +12,6 @@
#endif
SHADER_LIBRARY_CREATE_INFO(draw_modelmat)
SHADER_LIBRARY_CREATE_INFO(draw_resource_handle_new)
SHADER_LIBRARY_CREATE_INFO(draw_hair)
#include "common_hair_lib.glsl" /* TODO rename to curve. */

View File

@@ -12,7 +12,6 @@
#endif
SHADER_LIBRARY_CREATE_INFO(draw_modelmat)
SHADER_LIBRARY_CREATE_INFO(draw_resource_handle_new)
SHADER_LIBRARY_CREATE_INFO(draw_pointcloud)
#include "draw_model_lib.glsl"

View File

@@ -45,7 +45,7 @@ void forward_lighting_eval(float thickness, out vec3 radiance, out vec3 transmit
/* TODO(fclem): If transmission (no SSS) is present, we could reduce LIGHT_CLOSURE_EVAL_COUNT
* by 1 for this evaluation and skip evaluating the transmission closure twice. */
ObjectInfos object_infos = drw_infos[resource_id];
ObjectInfos object_infos = drw_infos[drw_resource_id()];
uchar receiver_light_set = receiver_light_set_get(object_infos);
light_eval_reflection(stack, g_data.P, surface_N, V, vPz, receiver_light_set);

View File

@@ -17,7 +17,7 @@ VERTEX_SHADER_CREATE_INFO(eevee_geom_world)
void main()
{
/* (W)Intel drivers require all varying iface to be written to inside the Vertex shader. */
drw_ResourceID_iface.resource_index = 0;
drw_ResourceID_iface.resource_index = 0u;
/* Full-screen triangle. */
int v = gl_VertexID % 3;

View File

@@ -44,9 +44,9 @@ void inflate_bounds(vec3 ls_center, inout vec3 P, inout vec3 lP)
void main()
{
DRW_RESOURCE_ID_VARYING_SET
drw_ResourceID_iface.resource_index = drw_resource_id();
ObjectBounds bounds = bounds_buf[resource_id];
ObjectBounds bounds = bounds_buf[drw_resource_id()];
if (!drw_bounds_are_valid(bounds)) {
/* Discard. */
gl_Position = vec4(NAN_FLT);

View File

@@ -59,7 +59,7 @@ void main()
if (is_surface_view_aligned) {
uint surfel_id = atomicAdd(capture_info_buf.surfel_len, 1u);
if (capture_info_buf.do_surfel_output) {
ObjectInfos object_infos = drw_infos[resource_id];
ObjectInfos object_infos = drw_infos[drw_resource_id()];
surfel_buf[surfel_id].position = g_data.P;
surfel_buf[surfel_id].normal = gl_FrontFacing ? g_data.Ng : -g_data.Ng;
surfel_buf[surfel_id].albedo_front = albedo;

View File

@@ -62,7 +62,7 @@ void main()
float alpha_rcp = safe_rcp(alpha);
/* Object holdout. */
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
if (flag_test(ob_flag, OBJECT_HOLDOUT)) {
/* alpha is set from rejected pixels / dithering. */
g_holdout = 1.0;
@@ -81,7 +81,7 @@ void main()
/* Some render pass can be written during the gbuffer pass. Light passes are written later. */
if (imageSize(rp_cryptomatte_img).x > 1) {
vec4 cryptomatte_output = vec4(
cryptomatte_object_buf[resource_id], node_tree.crypto_hash, 0.0);
cryptomatte_object_buf[drw_resource_id()], node_tree.crypto_hash, 0.0);
imageStoreFast(rp_cryptomatte_img, out_texel, cryptomatte_output);
}
output_renderpass_color(uniform_buf.render_pass.position_id, vec4(g_data.P, 1.0));
@@ -98,10 +98,10 @@ void main()
#if CLOSURE_BIN_COUNT > 2
gbuf_data.closure[2] = g_closure_get_resolved(2, alpha_rcp);
#endif
ObjectInfos object_infos = drw_infos[resource_id];
ObjectInfos object_infos = drw_infos[drw_resource_id()];
gbuf_data.surface_N = g_data.N;
gbuf_data.thickness = thickness;
gbuf_data.object_id = resource_id;
gbuf_data.object_id = drw_resource_id();
gbuf_data.receiver_light_set = receiver_light_set_get(object_infos);
GBufferWriter gbuf = gbuffer_pack(gbuf_data);

View File

@@ -54,7 +54,7 @@ void main()
nodetree_surface(closure_rand);
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
if (flag_test(ob_flag, OBJECT_HOLDOUT)) {
g_holdout = 1.0 - average(g_transmittance);
}

View File

@@ -65,7 +65,7 @@ void main()
float alpha_rcp = safe_rcp(alpha);
/* Object holdout. */
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
if (flag_test(ob_flag, OBJECT_HOLDOUT)) {
/* alpha is set from rejected pixels / dithering. */
g_holdout = 1.0;
@@ -84,7 +84,7 @@ void main()
/* Some render pass can be written during the gbuffer pass. Light passes are written later. */
if (imageSize(rp_cryptomatte_img).x > 1) {
vec4 cryptomatte_output = vec4(
cryptomatte_object_buf[resource_id], node_tree.crypto_hash, 0.0);
cryptomatte_object_buf[drw_resource_id()], node_tree.crypto_hash, 0.0);
imageStoreFast(rp_cryptomatte_img, out_texel, cryptomatte_output);
}
output_renderpass_color(uniform_buf.render_pass.position_id, vec4(g_data.P, 1.0));
@@ -101,10 +101,10 @@ void main()
#if CLOSURE_BIN_COUNT > 2
gbuf_data.closure[2] = g_closure_get_resolved(2, alpha_rcp);
#endif
ObjectInfos object_infos = drw_infos[resource_id];
ObjectInfos object_infos = drw_infos[drw_resource_id()];
gbuf_data.surface_N = g_data.N;
gbuf_data.thickness = g_thickness;
gbuf_data.object_id = resource_id;
gbuf_data.object_id = drw_resource_id();
gbuf_data.receiver_light_set = receiver_light_set_get(object_infos);
GBufferWriter gbuf = gbuffer_pack(gbuf_data);

View File

@@ -125,7 +125,7 @@ void init_interface()
#ifdef GPU_VERTEX_SHADER
interp.P = vec3(0.0);
interp.N = vec3(0.0);
drw_ResourceID_iface.resource_index = resource_id;
drw_ResourceID_iface.resource_index = drw_resource_id();
#endif
}

View File

@@ -113,7 +113,7 @@ vec4 velocity_resolve(sampler2D vector_tx, ivec2 texel, float depth)
*/
void velocity_local_pos_get(vec3 lP, int vert_id, out vec3 lP_prev, out vec3 lP_next)
{
VelocityIndex vel = velocity_indirection_buf[resource_id];
VelocityIndex vel = velocity_indirection_buf[drw_resource_id()];
lP_next = lP_prev = lP;
if (vel.geo.do_deform) {
if (vel.geo.ofs[STEP_PREVIOUS] != -1) {
@@ -133,7 +133,7 @@ void velocity_local_pos_get(vec3 lP, int vert_id, out vec3 lP_prev, out vec3 lP_
void velocity_vertex(
vec3 lP_prev, vec3 lP, vec3 lP_next, out vec3 motion_prev, out vec3 motion_next)
{
VelocityIndex vel = velocity_indirection_buf[resource_id];
VelocityIndex vel = velocity_indirection_buf[drw_resource_id()];
mat4 obmat_prev = velocity_obj_prev_buf[vel.obj.ofs[STEP_PREVIOUS]];
mat4 obmat_next = velocity_obj_next_buf[vel.obj.ofs[STEP_NEXT]];
vec3 P_prev = transform_point(obmat_prev, lP_prev);

View File

@@ -78,7 +78,6 @@ FRAGMENT_SOURCE("gpencil_frag.glsl")
DEPTH_WRITE(DepthWrite::ANY)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_gpencil)
GPU_SHADER_CREATE_END()

View File

@@ -236,7 +236,6 @@ VERTEX_SOURCE("overlay_armature_stick_vert.glsl")
FRAGMENT_SOURCE("overlay_armature_stick_frag.glsl")
ADDITIONAL_INFO(overlay_frag_output)
ADDITIONAL_INFO(overlay_armature_common)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
STORAGE_BUF(0, READ, BoneStickData, data_buf[])
GPU_SHADER_CREATE_END()
@@ -278,7 +277,6 @@ VERTEX_SOURCE("overlay_armature_wire_vert.glsl")
FRAGMENT_SOURCE("overlay_armature_wire_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(overlay_frag_output)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
STORAGE_BUF(0, READ, VertexData, data_buf[])
GPU_SHADER_CREATE_END()

View File

@@ -22,7 +22,7 @@ UNIFORM_BUF_FREQ(OVERLAY_GLOBALS_SLOT, GlobalsUboStorage, globalsBlock, PASS)
GPU_SHADER_CREATE_END()
GPU_SHADER_INTERFACE_INFO(select_id_patch_iface)
FLAT(INT, select_id)
FLAT(UINT, select_id)
GPU_SHADER_INTERFACE_END()
/* Used to patch overlay shaders. */
@@ -33,7 +33,7 @@ VERTEX_OUT(select_id_patch_iface)
EARLY_FRAGMENT_TEST(true)
UNIFORM_BUF(SELECT_DATA, SelectInfoData, select_info_buf)
/* Select IDs for instanced draw-calls not using #PassMain. */
STORAGE_BUF(SELECT_ID_IN, READ, int, in_select_buf[])
STORAGE_BUF(SELECT_ID_IN, READ, uint, in_select_buf[])
/* Stores the result of the whole selection drawing. Content depends on selection mode. */
STORAGE_BUF(SELECT_ID_OUT, READ_WRITE, uint, out_select_buf[])
GPU_SHADER_CREATE_END()

View File

@@ -64,7 +64,6 @@ VERTEX_SOURCE("overlay_edit_mesh_depth_vert.glsl")
FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -88,7 +87,6 @@ FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(overlay_edit_mesh_common)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -123,7 +121,6 @@ VERTEX_SOURCE("overlay_edit_mesh_edge_vert.glsl")
FRAGMENT_SOURCE("overlay_edit_mesh_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(overlay_edit_mesh_common)
GPU_SHADER_CREATE_END()
@@ -141,7 +138,6 @@ FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(overlay_edit_mesh_common)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -158,7 +154,6 @@ VERTEX_OUT(overlay_edit_flat_color_iface)
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(overlay_edit_mesh_common)
GPU_SHADER_CREATE_END()
@@ -185,7 +180,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -201,7 +195,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -217,7 +210,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -233,7 +225,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -249,7 +240,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -264,7 +254,6 @@ DO_STATIC_COMPILATION()
ADDITIONAL_INFO(overlay_edit_mesh_normal)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(1, READ, float, pos[], GEOMETRY)
@@ -291,7 +280,6 @@ VERTEX_SOURCE("overlay_edit_mesh_analysis_vert.glsl")
FRAGMENT_SOURCE("overlay_edit_mesh_analysis_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -305,7 +293,6 @@ VERTEX_SOURCE("overlay_edit_mesh_skin_root_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
/* TODO(fclem): Use correct vertex format. For now we read the format manually. */
STORAGE_BUF_FREQ(0, READ, float, size[], GEOMETRY)
@@ -344,7 +331,6 @@ VERTEX_SOURCE("overlay_edit_uv_edges_vert.glsl")
FRAGMENT_SOURCE("overlay_edit_uv_edges_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -360,7 +346,6 @@ VERTEX_SOURCE("overlay_edit_uv_faces_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -375,7 +360,6 @@ VERTEX_SOURCE("overlay_edit_uv_face_dots_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -398,7 +382,6 @@ VERTEX_SOURCE("overlay_edit_uv_verts_vert.glsl")
FRAGMENT_SOURCE("overlay_edit_uv_verts_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -471,7 +454,6 @@ VERTEX_IN(1, FLOAT, ratio)
PUSH_CONSTANT(FLOAT, totalAreaRatio)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(overlay_edit_uv_stretching)
GPU_SHADER_CREATE_END()
@@ -483,7 +465,6 @@ VERTEX_IN(1, VEC2, uv_angles)
VERTEX_IN(2, FLOAT, angle)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(overlay_edit_uv_stretching)
GPU_SHADER_CREATE_END()
@@ -512,7 +493,6 @@ VERTEX_SOURCE("overlay_edit_curve_handle_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -532,7 +512,6 @@ VERTEX_SOURCE("overlay_edit_curve_point_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -551,7 +530,6 @@ VERTEX_SOURCE("overlay_edit_curve_wire_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -575,7 +553,6 @@ VERTEX_SOURCE("overlay_edit_curve_normals_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -604,7 +581,6 @@ VERTEX_SOURCE("overlay_edit_curves_handle_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -633,7 +609,6 @@ VERTEX_SOURCE("overlay_edit_particle_point_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -655,7 +630,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
VERTEX_SOURCE("overlay_edit_lattice_point_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -672,7 +646,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
VERTEX_SOURCE("overlay_edit_lattice_wire_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -697,7 +670,6 @@ VERTEX_SOURCE("overlay_edit_particle_strand_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -722,7 +694,6 @@ VERTEX_SOURCE("overlay_edit_particle_point_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -743,7 +714,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
VERTEX_SOURCE("overlay_edit_pointcloud_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -763,7 +733,6 @@ VERTEX_SOURCE("overlay_depth_only_vert.glsl")
FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_mesh, overlay_depth_mesh_base)
@@ -776,7 +745,6 @@ FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_mesh_conservative,
@@ -802,7 +770,6 @@ DEPTH_WRITE(DepthWrite::ANY)
PUSH_CONSTANT(BOOL, gpStrokeOrder3d) /* TODO(fclem): Move to a GPencil object UBO. */
PUSH_CONSTANT(VEC4, gpDepthPlane) /* TODO(fclem): Move to a GPencil object UBO. */
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_gpencil)
ADDITIONAL_INFO(draw_object_infos)
@@ -816,7 +783,6 @@ FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
ADDITIONAL_INFO(draw_pointcloud)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_pointcloud, overlay_depth_pointcloud_base)
@@ -827,7 +793,6 @@ FRAGMENT_SOURCE("overlay_depth_only_frag.glsl")
ADDITIONAL_INFO(draw_hair)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
OVERLAY_INFO_VARIATIONS_MODELMAT(overlay_depth_curves, overlay_depth_curves_base)
@@ -849,7 +814,6 @@ VERTEX_SOURCE("overlay_depth_only_vert.glsl")
FRAGMENT_SOURCE("overlay_uniform_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_modelmat)
GPU_SHADER_CREATE_END()

View File

@@ -71,7 +71,6 @@ FRAGMENT_OUT(0, VEC4, fragColor)
VERTEX_SOURCE("overlay_extra_lightprobe_grid_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -123,7 +122,6 @@ PUSH_CONSTANT(INT, colorid)
DEFINE_VALUE("pos", "data_buf[gl_VertexID].pos_.xyz")
DEFINE_VALUE("color", "data_buf[gl_VertexID].color_")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -141,7 +139,6 @@ VERTEX_SOURCE("overlay_extra_wire_vert.glsl")
FRAGMENT_SOURCE("overlay_extra_wire_frag.glsl")
DEFINE("OBJECT_WIRE")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -270,7 +267,6 @@ FRAGMENT_OUT(0, VEC4, fragColor)
VERTEX_SOURCE("overlay_image_vert.glsl")
FRAGMENT_SOURCE("overlay_image_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -331,7 +327,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
VERTEX_SOURCE("overlay_particle_vert.glsl")
FRAGMENT_SOURCE("overlay_particle_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -350,7 +345,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
VERTEX_SOURCE("overlay_particle_shape_vert.glsl")
FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -370,7 +364,6 @@ VERTEX_SOURCE("overlay_particle_hair_vert.glsl")
FRAGMENT_SOURCE("overlay_particle_shape_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -19,7 +19,6 @@ VERTEX_SOURCE("overlay_facing_vert.glsl")
FRAGMENT_SOURCE("overlay_facing_frag.glsl")
FRAGMENT_OUT(0, VEC4, fragColor)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -46,7 +46,6 @@ VERTEX_SOURCE("overlay_edit_uv_tiled_image_borders_vert.glsl")
FRAGMENT_SOURCE("overlay_grid_background_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
DEFINE_VALUE("tile_pos", "vec3(0.0)")
PUSH_CONSTANT(VEC3, tile_scale)
@@ -61,7 +60,6 @@ VERTEX_SOURCE("overlay_edit_uv_tiled_image_borders_vert.glsl")
FRAGMENT_SOURCE("overlay_uniform_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
STORAGE_BUF(0, READ, vec3, tile_pos_buf[])
DEFINE_VALUE("tile_pos", "tile_pos_buf[gl_InstanceID]")

View File

@@ -48,7 +48,6 @@ VERTEX_IN(0, VEC3, pos)
VERTEX_SOURCE("overlay_outline_prepass_vert.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(overlay_outline_prepass)
@@ -65,7 +64,6 @@ DO_STATIC_COMPILATION()
VERTEX_SOURCE("overlay_outline_prepass_curves_vert.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_hair)
ADDITIONAL_INFO(draw_object_infos)
@@ -80,7 +78,6 @@ ADDITIONAL_INFO(overlay_outline_prepass)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_mesh)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
STORAGE_BUF_FREQ(0, READ, float, pos[], GEOMETRY)
PUSH_CONSTANT(IVEC2, gpu_attr_0)
@@ -114,7 +111,6 @@ FRAGMENT_SOURCE("overlay_outline_prepass_gpencil_frag.glsl")
DEPTH_WRITE(DepthWrite::ANY)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_gpencil)
ADDITIONAL_INFO(draw_object_infos)
@@ -127,7 +123,6 @@ DO_STATIC_COMPILATION()
VERTEX_SOURCE("overlay_outline_prepass_pointcloud_vert.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_pointcloud)
ADDITIONAL_INFO(draw_object_infos)

View File

@@ -29,7 +29,6 @@ VERTEX_SOURCE("overlay_paint_face_vert.glsl")
FRAGMENT_SOURCE("overlay_uniform_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -57,7 +56,6 @@ VERTEX_SOURCE("overlay_paint_point_vert.glsl")
FRAGMENT_SOURCE("overlay_point_varying_color_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -90,7 +88,6 @@ VERTEX_SOURCE("overlay_paint_texture_vert.glsl")
FRAGMENT_SOURCE("overlay_paint_texture_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -125,7 +122,6 @@ VERTEX_SOURCE("overlay_paint_weight_vert.glsl")
FRAGMENT_SOURCE("overlay_paint_weight_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -164,7 +160,6 @@ VERTEX_SOURCE("overlay_paint_wire_vert.glsl")
FRAGMENT_SOURCE("overlay_varying_color.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -31,7 +31,6 @@ FRAGMENT_SOURCE("overlay_sculpt_curves_selection_frag.glsl")
FRAGMENT_OUT(0, VEC4, out_color)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
ADDITIONAL_INFO(draw_hair)
GPU_SHADER_CREATE_END()
@@ -56,7 +55,6 @@ VERTEX_SOURCE("overlay_sculpt_curves_cage_vert.glsl")
FRAGMENT_SOURCE("overlay_extra_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -32,7 +32,6 @@ FRAGMENT_SOURCE("overlay_sculpt_mask_frag.glsl")
FRAGMENT_OUT(0, VEC4, fragColor)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -45,7 +45,6 @@ FRAGMENT_OUT(1, VEC4, lineOutput)
DEPTH_WRITE(DepthWrite::ANY)
SPECIALIZATION_CONSTANT(BOOL, use_custom_depth_bias, true)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -66,7 +65,6 @@ FRAGMENT_SOURCE("overlay_wireframe_frag.glsl")
FRAGMENT_OUT(0, VEC4, fragColor)
FRAGMENT_OUT(1, VEC4, lineOutput)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -91,7 +89,6 @@ FRAGMENT_SOURCE("overlay_wireframe_frag.glsl")
FRAGMENT_OUT(0, VEC4, fragColor)
FRAGMENT_OUT(1, VEC4, lineOutput)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_object_infos)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()
@@ -122,7 +119,6 @@ VERTEX_SOURCE("overlay_edit_uv_edges_vert.glsl")
FRAGMENT_SOURCE("overlay_edit_uv_edges_frag.glsl")
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_globals)
GPU_SHADER_CREATE_END()

View File

@@ -14,7 +14,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_depth_curves)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
bool is_persp = (ProjectionMatrix[3][3] == 0.0);
float time, thick_time, thickness;

View File

@@ -36,5 +36,5 @@ void main()
view_clipping_distances(world_pos);
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
}

View File

@@ -99,7 +99,7 @@ void geometry_main(VertOut geom_in[3],
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
/* Triangle list primitive. */
const uint input_primitive_vertex_count = 3u;

View File

@@ -14,7 +14,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_depth_pointcloud)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
vec3 world_pos, world_nor;
float world_radius;

View File

@@ -13,7 +13,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_depth_mesh)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
vec3 world_pos = drw_point_object_to_world(pos);
gl_Position = drw_point_world_to_homogenous(world_pos);

View File

@@ -34,7 +34,7 @@ vec4 color_from_id(float color_id)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
mat4 model_mat = gridModelMatrix;
model_mat[0][3] = model_mat[1][3] = model_mat[2][3] = 0.0;
model_mat[3][3] = 1.0;

View File

@@ -20,7 +20,7 @@ vec2 screen_position(vec4 p)
void main()
{
#ifdef OBJECT_WIRE
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
#else
select_id_set(in_select_buf[gl_InstanceID]);
#endif

View File

@@ -14,7 +14,7 @@ VERTEX_SHADER_CREATE_INFO(draw_modelmat)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
vec3 world_pos = drw_point_object_to_world(pos);
if (isCameraBackground) {
/* Model matrix converts to view position to avoid jittering (see #91398). */

View File

@@ -15,7 +15,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_outline_prepass_curves)
uint outline_colorid_get()
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
#else
int flag = int(abs(ObjectInfo.w));
@@ -82,7 +82,7 @@ void main()
gl_Position.z -= 1e-3;
/* ID 0 is nothing (background) */
interp.ob_id = uint(resource_handle + 1);
interp.ob_id = uint(drw_resource_id() + 1);
/* Should be 2 bits only [0..3]. */
uint outline_id = outline_colorid_get();

View File

@@ -14,7 +14,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_outline_prepass_gpencil)
uint outline_colorid_get()
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
#else
int flag = int(abs(ObjectInfo.w));
@@ -62,7 +62,7 @@ void main()
gl_Position.z -= 1e-3;
/* ID 0 is nothing (background) */
interp.ob_id = uint(resource_handle + 1);
interp.ob_id = uint(drw_resource_id() + 1);
/* Should be 2 bits only [0..3]. */
uint outline_id = outline_colorid_get();

View File

@@ -15,7 +15,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_outline_prepass_pointcloud)
uint outline_colorid_get()
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
#else
int flag = int(abs(ObjectInfo.w));
@@ -50,7 +50,7 @@ void main()
gl_Position.z -= 1e-3;
/* ID 0 is nothing (background) */
interp.ob_id = uint(resource_handle + 1);
interp.ob_id = uint(drw_resource_id() + 1);
/* Should be 2 bits only [0..3]. */
uint outline_id = outline_colorid_get();

View File

@@ -14,7 +14,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_outline_prepass_mesh)
uint outline_colorid_get()
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
#else
int flag = int(abs(ObjectInfo.w));
@@ -52,7 +52,7 @@ void main()
gl_Position.z -= 1e-3;
/* ID 0 is nothing (background) */
interp.ob_id = uint(resource_handle + 1);
interp.ob_id = uint(drw_resource_id() + 1);
/* Should be 2 bits only [0..3]. */
uint outline_id = outline_colorid_get();

View File

@@ -15,7 +15,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_outline_prepass_wire)
uint outline_colorid_get()
{
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
if (isTransform) {
@@ -67,7 +67,7 @@ VertOut vertex_main(VertIn v_in)
vert_out.hs_P.z -= 1e-3;
/* ID 0 is nothing (background) */
vert_out.ob_id = uint(resource_handle + 1);
vert_out.ob_id = uint(drw_resource_id() + 1);
/* Should be 2 bits only [0..3]. */
uint outline_id = outline_colorid_get();

View File

@@ -22,7 +22,7 @@ VERTEX_SHADER_CREATE_INFO(overlay_particle_hair)
void wire_color_get(out vec3 rim_col, out vec3 wire_col)
{
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_selected = flag_test(ob_flag, OBJECT_SELECTED);
bool is_from_set = flag_test(ob_flag, OBJECT_FROM_SET);
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
@@ -85,7 +85,7 @@ void wire_object_color_get(out vec3 rim_col, out vec3 wire_col)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
vec3 ws_P = drw_point_object_to_world(pos);
vec3 ws_N = normalize(drw_normal_object_to_world(-nor));

View File

@@ -10,6 +10,7 @@
VERTEX_SHADER_CREATE_INFO(overlay_particle_shape)
#include "draw_model_lib.glsl"
#include "draw_view_clipping_lib.glsl"
#include "draw_view_lib.glsl"
#include "gpu_shader_math_matrix_lib.glsl"
@@ -29,7 +30,7 @@ vec2 circle_position(float angle)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
int particle_id = gl_VertexID;
int shape_vert_id = gl_VertexID;

View File

@@ -4,15 +4,16 @@
#include "infos/overlay_extra_info.hh"
VERTEX_SHADER_CREATE_INFO(overlay_particle_dot_base)
VERTEX_SHADER_CREATE_INFO(overlay_particle_dot)
#include "draw_model_lib.glsl"
#include "draw_view_clipping_lib.glsl"
#include "draw_view_lib.glsl"
#include "select_lib.glsl"
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
/* Draw-size packed in alpha. */
float draw_size = ucolor.a;

View File

@@ -24,7 +24,7 @@ bool is_edge_sharpness_visible(float wire_data)
void wire_color_get(out vec3 rim_col, out vec3 wire_col)
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_selected = flag_test(ob_flag, OBJECT_SELECTED);
bool is_from_set = flag_test(ob_flag, OBJECT_FROM_SET);
bool is_active = flag_test(ob_flag, OBJECT_ACTIVE);
@@ -67,7 +67,7 @@ vec3 hsv_to_rgb(vec3 hsv)
void wire_object_color_get(out vec3 rim_col, out vec3 wire_col)
{
#ifdef OBINFO_NEW
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[resource_id].infos.w));
eObjectInfoFlag ob_flag = eObjectInfoFlag(floatBitsToUint(drw_infos[drw_resource_id()].infos.w));
bool is_selected = flag_test(ob_flag, OBJECT_SELECTED);
#else
int flag = int(abs(ObjectInfo.w));
@@ -98,7 +98,7 @@ void wire_object_color_get(out vec3 rim_col, out vec3 wire_col)
void main()
{
select_id_set(drw_CustomID);
select_id_set(drw_custom_id());
/* If no attribute is available, use a fixed facing value depending on the coloring mode.
* This allow to keep most of the contrast between unselected and selected color

View File

@@ -11,7 +11,7 @@
#elif defined(GPU_VERTEX_SHADER)
void select_id_set(int id)
void select_id_set(uint id)
{
/* Declared in the create info. */
select_id = id;
@@ -19,7 +19,7 @@ void select_id_set(int id)
#elif defined(GPU_FRAGMENT_SHADER)
void select_id_output(int id)
void select_id_output(uint id)
{
if (id == -1) {
/* Invalid index */
@@ -28,7 +28,7 @@ void select_id_output(int id)
if (select_info_buf.mode == SELECT_ALL) {
/* Set the bit of the select id in the bitmap. */
atomicOr(out_select_buf[id / 32u], 1u << (uint(id) % 32u));
atomicOr(out_select_buf[id / 32u], 1u << (id % 32u));
}
else if (select_info_buf.mode == SELECT_PICK_ALL) {
/* Stores the nearest depth for this select id. */

View File

@@ -41,7 +41,6 @@ VERTEX_IN(2, VEC4, ac)
VERTEX_IN(3, VEC2, au)
VERTEX_SOURCE("workbench_prepass_vert.glsl")
ADDITIONAL_INFO(draw_modelmat_with_custom_id)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(workbench_curves)
@@ -50,14 +49,12 @@ SAMPLER_FREQ(WB_CURVES_UV_SLOT, FLOAT_BUFFER, au, BATCH)
PUSH_CONSTANT(INT, emitter_object_id)
VERTEX_SOURCE("workbench_prepass_hair_vert.glsl")
ADDITIONAL_INFO(draw_modelmat_with_custom_id)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_hair)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(workbench_pointcloud)
VERTEX_SOURCE("workbench_prepass_pointcloud_vert.glsl")
ADDITIONAL_INFO(draw_modelmat_with_custom_id)
ADDITIONAL_INFO(draw_resource_handle_new)
ADDITIONAL_INFO(draw_pointcloud)
GPU_SHADER_CREATE_END()

View File

@@ -37,7 +37,6 @@ TYPEDEF_SOURCE("workbench_shader_shared.h")
ADDITIONAL_INFO(gpu_index_buffer_load)
ADDITIONAL_INFO(draw_view)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(workbench_shadow_visibility_compute_common)

View File

@@ -80,7 +80,7 @@ void main()
normal_interp = normalize(drw_normal_world_to_view(nor));
workbench_material_data_get(int(drw_CustomID),
workbench_material_data_get(int(drw_custom_id()),
hair_get_customdata_vec3(ac),
color_interp,
alpha_interp,
@@ -93,7 +93,7 @@ void main()
workbench_hair_random_material(hair_rand, color_interp, _roughness, metallic);
object_id = int(uint(resource_handle) & 0xFFFFu) + 1;
object_id = int(uint(drw_resource_id()) & 0xFFFFu) + 1;
if (emitter_object_id != 0) {
object_id = int(uint(emitter_object_id) & 0xFFFFu) + 1;

View File

@@ -32,7 +32,7 @@ void main()
uv_interp = vec2(0.0);
workbench_material_data_get(
int(drw_CustomID), vec3(1.0), color_interp, alpha_interp, _roughness, metallic);
int(drw_custom_id()), vec3(1.0), color_interp, alpha_interp, _roughness, metallic);
object_id = int(uint(resource_handle) & 0xFFFFu) + 1;
object_id = int(uint(drw_resource_id()) & 0xFFFFu) + 1;
}

View File

@@ -27,8 +27,8 @@ void main()
normal_interp = normalize(drw_normal_object_to_view(nor));
object_id = int(uint(resource_id) & 0xFFFFu) + 1;
object_id = int(uint(drw_resource_id()) & 0xFFFFu) + 1;
workbench_material_data_get(
int(drw_CustomID), ac.rgb, color_interp, alpha_interp, _roughness, metallic);
int(drw_custom_id()), ac.rgb, color_interp, alpha_interp, _roughness, metallic);
}

View File

@@ -15,7 +15,7 @@ VERTEX_SHADER_CREATE_INFO(workbench_volume_smoke)
void main()
{
drw_ResourceID_iface.resource_index = resource_id;
drw_ResourceID_iface.resource_index = drw_resource_id();
#ifdef VOLUME_SLICE
if (sliceAxis == 0) {

View File

@@ -85,7 +85,7 @@ uint drw_view_id = 0;
(DRW_VIEW_LEN > 2) ? 2 : \
1)
# define DRW_VIEW_MASK ~(0xFFFFFFFFu << DRW_VIEW_SHIFT)
# define DRW_VIEW_FROM_RESOURCE_ID drw_view_id = (uint(drw_ResourceID) & DRW_VIEW_MASK)
# define DRW_VIEW_FROM_RESOURCE_ID drw_view_id = (drw_resource_id_raw() & DRW_VIEW_MASK)
#endif
struct FrustumCorners {

View File

@@ -12,38 +12,65 @@
# error Missing draw_modelmat additional create info on shader create info
#endif
#if defined(UNIFORM_RESOURCE_ID)
/* TODO(fclem): Legacy API. To remove. */
# define resource_id drw_ResourceID
# define DRW_RESOURCE_ID_VARYING_SET
#elif defined(GPU_VERTEX_SHADER)
#if defined(GPU_VERTEX_SHADER)
VERTEX_SHADER_CREATE_INFO(draw_resource_id_varying)
# if defined(UNIFORM_RESOURCE_ID_NEW)
# define resource_id (drw_ResourceID >> DRW_VIEW_SHIFT)
# else
# define resource_id gpu_InstanceIndex
# endif
# define DRW_RESOURCE_ID_VARYING_SET drw_ResourceID_iface.resource_index = resource_id;
#elif defined(GPU_GEOMETRY_SHADER)
# define resource_id drw_ResourceID_iface_in[0].resource_index
#elif defined(GPU_FRAGMENT_SHADER)
FRAGMENT_SHADER_CREATE_INFO(draw_resource_id_varying)
# define resource_id drw_ResourceID_iface.resource_index
#elif defined(GPU_LIBRARY_SHADER)
SHADER_LIBRARY_CREATE_INFO(draw_resource_id_varying)
# define resource_id drw_ResourceID_iface.resource_index
#endif
uint drw_resource_id_raw()
{
#if defined(GPU_VERTEX_SHADER)
# if defined(RESOURCE_ID_FALLBACK)
# ifdef WITH_CUSTOM_IDS
uint id = in_resource_id.x;
# else
uint id = in_resource_id;
# endif
# else
# ifdef WITH_CUSTOM_IDS
uint id = resource_id_buf[gpu_BaseInstance + gl_InstanceID].x;
# else
uint id = resource_id_buf[gpu_BaseInstance + gl_InstanceID];
# endif
# endif
return id;
#elif defined(GPU_FRAGMENT_SHADER) || defined(GPU_LIBRARY_SHADER)
return drw_ResourceID_iface.resource_index;
#endif
return 0;
}
uint drw_resource_id()
{
return drw_resource_id_raw() >> DRW_VIEW_SHIFT;
}
uint drw_custom_id()
{
#ifdef WITH_CUSTOM_IDS
# if defined(GPU_VERTEX_SHADER)
# if defined(RESOURCE_ID_FALLBACK)
return in_resource_id.y;
# else
uint inst_id = gpu_BaseInstance + gl_InstanceID;
return resource_id_buf[gpu_BaseInstance + gl_InstanceID].y;
# endif
# endif
#endif
return 0;
}
mat4x4 drw_modelmat()
{
return drw_matrix_buf[resource_id].model;
return drw_matrix_buf[drw_resource_id()].model;
}
mat4x4 drw_modelinv()
{
return drw_matrix_buf[resource_id].model_inverse;
return drw_matrix_buf[drw_resource_id()].model_inverse;
}
/**

View File

@@ -14,12 +14,12 @@
# define HAIR_SHADER
# define DRW_GPENCIL_INFO
# define OrcoTexCoFactors (drw_infos[resource_id].orco_mul_bias)
# define ObjectInfo (drw_infos[resource_id].infos)
# define ObjectColor (drw_infos[resource_id].ob_color)
# define OrcoTexCoFactors (drw_infos[drw_resource_id()].orco_mul_bias)
# define ObjectInfo (drw_infos[drw_resource_id()].infos)
# define ObjectColor (drw_infos[drw_resource_id()].ob_color)
# define ObjectAttributeStart (drw_infos[resource_id].orco_mul_bias[0].w)
# define ObjectAttributeLen (drw_infos[resource_id].orco_mul_bias[1].w)
# define ObjectAttributeStart (drw_infos[drw_resource_id()].orco_mul_bias[0].w)
# define ObjectAttributeLen (drw_infos[drw_resource_id()].orco_mul_bias[1].w)
#endif
#include "draw_defines.hh"
@@ -49,17 +49,17 @@ GPU_SHADER_CREATE_INFO(draw_object_infos)
TYPEDEF_SOURCE("draw_shader_shared.hh")
DEFINE("OBINFO_LIB")
DEFINE("OBINFO_NEW")
DEFINE_VALUE("OrcoTexCoFactors", "(drw_infos[resource_id].orco_mul_bias)")
DEFINE_VALUE("ObjectInfo", "(drw_infos[resource_id].infos)")
DEFINE_VALUE("ObjectColor", "(drw_infos[resource_id].ob_color)")
DEFINE_VALUE("OrcoTexCoFactors", "(drw_infos[drw_resource_id()].orco_mul_bias)")
DEFINE_VALUE("ObjectInfo", "(drw_infos[drw_resource_id()].infos)")
DEFINE_VALUE("ObjectColor", "(drw_infos[drw_resource_id()].ob_color)")
STORAGE_BUF(DRW_OBJ_INFOS_SLOT, READ, ObjectInfos, drw_infos[])
GPU_SHADER_CREATE_END()
/** \note Requires draw_object_infos. */
GPU_SHADER_CREATE_INFO(draw_object_attributes)
DEFINE("OBATTR_LIB")
DEFINE_VALUE("ObjectAttributeStart", "(drw_infos[resource_id].orco_mul_bias[0].w)")
DEFINE_VALUE("ObjectAttributeLen", "(drw_infos[resource_id].orco_mul_bias[1].w)")
DEFINE_VALUE("ObjectAttributeStart", "(drw_infos[drw_resource_id()].orco_mul_bias[0].w)")
DEFINE_VALUE("ObjectAttributeLen", "(drw_infos[drw_resource_id()].orco_mul_bias[1].w)")
STORAGE_BUF(DRW_OBJ_ATTR_SLOT, READ, ObjectAttribute, drw_attrs[])
ADDITIONAL_INFO(draw_object_infos)
GPU_SHADER_CREATE_END()
@@ -109,7 +109,6 @@ GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_volume)
ADDITIONAL_INFO(draw_modelmat)
ADDITIONAL_INFO(draw_resource_handle_new)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_gpencil)

View File

@@ -17,8 +17,8 @@
# define DRW_VIEW_CULLING_INFO
# define USE_WORLD_CLIP_PLANES
# define drw_ModelMatrix drw_matrix_buf[resource_id].model
# define drw_ModelMatrixInverse drw_matrix_buf[resource_id].model_inverse
# define drw_ModelMatrix drw_matrix_buf[drw_resource_id()].model
# define drw_ModelMatrixInverse drw_matrix_buf[drw_resource_id()].model_inverse
# define drw_view drw_view_[drw_view_id]
# define drw_view_culling drw_view_culling_[drw_view_id]
# define DRW_VIEW_LEN DRW_VIEW_MAX
@@ -39,7 +39,7 @@
* IMPORTANT: Vertex shader need to write `drw_ResourceID_iface.resource_index` in main().
*/
GPU_SHADER_NAMED_INTERFACE_INFO(draw_resource_id_iface, drw_ResourceID_iface)
FLAT(INT, resource_index)
FLAT(UINT, resource_index)
GPU_SHADER_NAMED_INTERFACE_END(drw_ResourceID_iface)
GPU_SHADER_CREATE_INFO(draw_resource_id_varying)
@@ -48,40 +48,26 @@ GEOMETRY_OUT(draw_resource_id_iface)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_resource_id)
DEFINE("UNIFORM_RESOURCE_ID_NEW")
/* TODO (Miguel Pozo): This is an int for compatibility.
* It should become uint once the "Next" ports are complete. */
STORAGE_BUF(DRW_RESOURCE_ID_SLOT, READ, int, resource_id_buf[])
DEFINE_VALUE("drw_ResourceID", "resource_id_buf[gpu_BaseInstance + gl_InstanceID]")
STORAGE_BUF(DRW_RESOURCE_ID_SLOT, READ, uint, resource_id_buf[])
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_resource_with_custom_id)
DEFINE("UNIFORM_RESOURCE_ID_NEW")
DEFINE("WITH_CUSTOM_IDS")
STORAGE_BUF(DRW_RESOURCE_ID_SLOT, READ, int2, resource_id_buf[])
DEFINE_VALUE("drw_ResourceID", "resource_id_buf[gpu_BaseInstance + gl_InstanceID].x")
DEFINE_VALUE("drw_CustomID", "resource_id_buf[gpu_BaseInstance + gl_InstanceID].y")
STORAGE_BUF(DRW_RESOURCE_ID_SLOT, READ, uint2, resource_id_buf[])
GPU_SHADER_CREATE_END()
/**
* Workaround the lack of gl_BaseInstance by binding the resource_id_buf as vertex buf.
*/
GPU_SHADER_CREATE_INFO(draw_resource_id_fallback)
DEFINE("UNIFORM_RESOURCE_ID_NEW")
VERTEX_IN(15, INT, drw_ResourceID)
DEFINE("RESOURCE_ID_FALLBACK")
VERTEX_IN(15, UINT, in_resource_id)
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_resource_with_custom_id_fallback)
DEFINE("UNIFORM_RESOURCE_ID_NEW")
DEFINE("RESOURCE_ID_FALLBACK")
DEFINE("WITH_CUSTOM_IDS")
VERTEX_IN(15, IVEC2, vertex_in_drw_ResourceID)
DEFINE_VALUE("drw_ResourceID", "vertex_in_drw_ResourceID.x")
DEFINE_VALUE("drw_CustomID", "vertex_in_drw_ResourceID.y")
GPU_SHADER_CREATE_END()
/** TODO mask view id bits. */
GPU_SHADER_CREATE_INFO(draw_resource_handle_new)
DEFINE_VALUE("resource_handle", "drw_ResourceID")
VERTEX_IN(15, UVEC2, in_resource_id)
GPU_SHADER_CREATE_END()
/** \} */
@@ -94,8 +80,8 @@ GPU_SHADER_CREATE_INFO(draw_modelmat_common)
TYPEDEF_SOURCE("draw_shader_shared.hh")
STORAGE_BUF(DRW_OBJ_MAT_SLOT, READ, ObjectMatrices, drw_matrix_buf[])
DEFINE("DRAW_MODELMAT_CREATE_INFO")
DEFINE_VALUE("ModelMatrixInverse", "drw_matrix_buf[resource_id].model_inverse")
DEFINE_VALUE("ModelMatrix", "drw_matrix_buf[resource_id].model")
DEFINE_VALUE("ModelMatrixInverse", "drw_matrix_buf[drw_resource_id()].model_inverse")
DEFINE_VALUE("ModelMatrix", "drw_matrix_buf[drw_resource_id()].model")
GPU_SHADER_CREATE_END()
GPU_SHADER_CREATE_INFO(draw_modelmat)
@@ -204,7 +190,5 @@ GPU_SHADER_CREATE_END()
/* Stub needs to be after all definitions to avoid conflict with legacy definitions. */
#ifdef GPU_SHADER
/* Make it work for both draw_resource_id and draw_resource_with_custom_id. */
# define drw_ResourceID vec2(resource_id_buf[gpu_BaseInstance + gl_InstanceID]).x
# define drw_CustomID drw_ResourceID
# define resource_handle drw_ResourceID
# define resource_id_buf vec2(0)
#endif