24 .flat(Type::INT,
"resource_index");
27 .vertex_out(draw_resource_id_iface)
28 .geometry_out(draw_resource_id_iface);
32 .define(
"UNIFORM_RESOURCE_ID")
33 .push_constant(Type::INT,
"drw_ResourceID");
40 .define(
"resource_handle (drw_resourceChunk * DRW_RESOURCE_CHUNK_LEN + resource_id)")
41 .push_constant(Type::INT,
"drw_resourceChunk");
51 .define(
"DRAW_VIEW_CREATE_INFO")
52 .define(
"drw_view",
"drw_view_[drw_view_id]")
53 .typedef_source(
"draw_shader_shared.hh");
57 .define(
"DRW_VIEW_CULLING_INFO")
58 .define(
"drw_view_culling",
"drw_view_culling_[drw_view_id]")
59 .typedef_source(
"draw_shader_shared.hh");
64 "drw_matrices[DRW_RESOURCE_CHUNK_LEN]",
66 .define(
"ModelMatrix",
"(drw_matrices[resource_id].model)")
67 .define(
"ModelMatrixInverse",
"(drw_matrices[resource_id].model_inverse)")
68 .additional_info(
"draw_view");
71 .define(
"DRW_LEGACY_MODEL_MATRIX")
72 .push_constant(Type::MAT4,
"ModelMatrix")
73 .push_constant(Type::MAT4,
"ModelMatrixInverse")
74 .additional_info(
"draw_view");
77 .push_constant(Type::MAT4,
"ModelMatrix")
78 .push_constant(Type::MAT4,
"ModelMatrixInverse")
79 .additional_info(
"draw_view");
90 .define(
"USE_WORLD_CLIP_PLANES");
99 .typedef_source(
"draw_common_shader_shared.hh")
100 .uniform_buf(7,
"GlobalsUboStorage",
"globalsBlock", Frequency::PASS);
113 .define(
"HAIR_SHADER")
114 .define(
"DRW_HAIR_INFO")
115 .sampler(15, ImageType::FLOAT_BUFFER,
"hairPointBuffer")
117 .push_constant(Type::INT,
"hairStrandsRes")
118 .push_constant(Type::INT,
"hairThicknessRes")
119 .push_constant(Type::FLOAT,
"hairRadRoot")
120 .push_constant(Type::FLOAT,
"hairRadTip")
121 .push_constant(Type::FLOAT,
"hairRadShape")
122 .push_constant(Type::BOOL,
"hairCloseTip")
123 .push_constant(Type::INT,
"hairStrandOffset")
124 .push_constant(Type::MAT4,
"hairDupliMatrix")
125 .additional_info(
"draw_modelmat",
"draw_resource_id");
128 .define(
"HAIR_SHADER")
129 .define(
"DRW_HAIR_INFO")
130 .sampler(0, ImageType::FLOAT_BUFFER,
"hairPointBuffer")
132 .push_constant(Type::INT,
"hairStrandsRes")
133 .push_constant(Type::INT,
"hairThicknessRes")
134 .push_constant(Type::FLOAT,
"hairRadRoot")
135 .push_constant(Type::FLOAT,
"hairRadTip")
136 .push_constant(Type::FLOAT,
"hairRadShape")
137 .push_constant(Type::BOOL,
"hairCloseTip")
138 .push_constant(Type::INT,
"hairStrandOffset")
139 .push_constant(Type::MAT4,
"hairDupliMatrix");
142 .sampler(0, ImageType::FLOAT_BUFFER,
"ptcloud_pos_rad_tx", Frequency::BATCH)
143 .define(
"POINTCLOUD_SHADER")
144 .define(
"DRW_POINTCLOUD_INFO")
145 .additional_info(
"draw_modelmat_instanced_attr",
"draw_resource_id_uniform");
148 .sampler(0, ImageType::FLOAT_BUFFER,
"ptcloud_pos_rad_tx", Frequency::BATCH)
149 .define(
"POINTCLOUD_SHADER")
150 .define(
"DRW_POINTCLOUD_INFO");
155 .additional_info(
"draw_modelmat_new",
"draw_resource_handle_new");
158 .typedef_source(
"gpencil_shader_shared.h")
159 .define(
"DRW_GPENCIL_INFO")
160 .sampler(0, ImageType::FLOAT_BUFFER,
"gp_pos_tx")
161 .sampler(1, ImageType::FLOAT_BUFFER,
"gp_col_tx")
163 .push_constant(Type::FLOAT,
"gpThicknessScale")
164 .push_constant(Type::FLOAT,
"gpThicknessWorldScale")
165 .define(
"gpThicknessIsScreenSpace",
"(gpThicknessWorldScale < 0.0)")
167 .push_constant(Type::FLOAT,
"gpThicknessOffset")
168 .additional_info(
"draw_modelmat",
"draw_object_infos");
171 .typedef_source(
"gpencil_shader_shared.h")
172 .define(
"DRW_GPENCIL_INFO")
173 .sampler(0, ImageType::FLOAT_BUFFER,
"gp_pos_tx")
174 .sampler(1, ImageType::FLOAT_BUFFER,
"gp_col_tx")
176 .push_constant(Type::FLOAT,
"gpThicknessScale")
177 .push_constant(Type::FLOAT,
"gpThicknessWorldScale")
178 .define(
"gpThicknessIsScreenSpace",
"(gpThicknessWorldScale < 0.0)")
180 .push_constant(Type::FLOAT,
"gpThicknessOffset")
181 .additional_info(
"draw_resource_id_varying",
"draw_view",
"draw_object_infos_new");
190 .do_static_compilation(
true)
191 .typedef_source(
"draw_shader_shared.hh")
192 .define(
"DRAW_FINALIZE_SHADER")
194 .storage_buf(0, Qualifier::READ,
"ObjectMatrices",
"matrix_buf[]")
195 .storage_buf(1, Qualifier::READ_WRITE,
"ObjectBounds",
"bounds_buf[]")
196 .storage_buf(2, Qualifier::READ_WRITE,
"ObjectInfos",
"infos_buf[]")
197 .push_constant(Type::INT,
"resource_len")
198 .compute_source(
"draw_resource_finalize_comp.glsl");
201 .do_static_compilation(
true)
204 .storage_buf(0, Qualifier::READ_WRITE,
"ViewCullingData",
"view_culling_buf[DRW_VIEW_LEN]")
205 .compute_source(
"draw_view_finalize_comp.glsl")
206 .additional_info(
"draw_view");
209 .do_static_compilation(
true)
212 .storage_buf(0, Qualifier::READ,
"ObjectBounds",
"bounds_buf[]")
213 .storage_buf(1, Qualifier::READ_WRITE,
"uint",
"visibility_buf[]")
214 .push_constant(Type::INT,
"resource_len")
215 .push_constant(Type::INT,
"view_len")
216 .push_constant(Type::INT,
"visibility_word_per_draw")
217 .compute_source(
"draw_visibility_comp.glsl")
218 .additional_info(
"draw_view",
"draw_view_culling");
221 .do_static_compilation(
true)
222 .typedef_source(
"draw_shader_shared.hh")
223 .typedef_source(
"draw_command_shared.hh")
225 .storage_buf(0, Qualifier::READ_WRITE,
"DrawGroup",
"group_buf[]")
226 .storage_buf(1, Qualifier::READ,
"uint",
"visibility_buf[]")
227 .storage_buf(2, Qualifier::READ,
"DrawPrototype",
"prototype_buf[]")
228 .storage_buf(3, Qualifier::WRITE,
"DrawCommand",
"command_buf[]")
230 .push_constant(Type::INT,
"prototype_len")
231 .push_constant(Type::INT,
"visibility_word_per_draw")
232 .push_constant(Type::INT,
"view_shift")
233 .push_constant(Type::INT,
"view_len")
234 .push_constant(Type::BOOL,
"use_custom_ids")
235 .compute_source(
"draw_command_generate_comp.glsl");
245 .define(
"UNIFORM_RESOURCE_ID_NEW")
249 .define(
"drw_ResourceID",
"resource_id_buf[gpu_BaseInstance + gl_InstanceID]");
252 .define(
"UNIFORM_RESOURCE_ID_NEW")
253 .define(
"WITH_CUSTOM_IDS")
255 .define(
"drw_ResourceID",
"resource_id_buf[gpu_BaseInstance + gl_InstanceID].x")
256 .define(
"drw_CustomID",
"resource_id_buf[gpu_BaseInstance + gl_InstanceID].y");
262 .define(
"UNIFORM_RESOURCE_ID_NEW")
263 .vertex_in(15, Type::INT,
"drw_ResourceID");
266 .define(
"UNIFORM_RESOURCE_ID_NEW")
267 .define(
"WITH_CUSTOM_IDS")
268 .vertex_in(15, Type::IVEC2,
"vertex_in_drw_ResourceID")
269 .define(
"drw_ResourceID",
"vertex_in_drw_ResourceID.x")
270 .define(
"drw_CustomID",
"vertex_in_drw_ResourceID.y");
282 .typedef_source(
"draw_shader_shared.hh")
283 .storage_buf(
DRW_OBJ_MAT_SLOT, Qualifier::READ,
"ObjectMatrices",
"drw_matrix_buf[]")
284 .define(
"DRAW_MODELMAT_CREATE_INFO")
285 .define(
"drw_ModelMatrixInverse",
"drw_matrix_buf[resource_id].model_inverse")
286 .define(
"drw_ModelMatrix",
"drw_matrix_buf[resource_id].model")
288 .define(
"ModelMatrixInverse",
"drw_ModelMatrixInverse")
289 .define(
"ModelMatrix",
"drw_ModelMatrix");
292 .additional_info(
"draw_modelmat_new_common",
"draw_resource_id_new");
295 .additional_info(
"draw_modelmat_new_common",
"draw_resource_with_custom_id_new");
#define DRW_RESOURCE_ID_SLOT
#define DRW_VISIBILITY_GROUP_SIZE
#define DRW_FINALIZE_GROUP_SIZE
#define DRW_VIEW_CULLING_UBO_SLOT
#define DRW_COMMAND_GROUP_SIZE
#define DRW_CLIPPING_UBO_SLOT
#define DRW_OBJ_MAT_UBO_SLOT
#define DRW_VIEW_UBO_SLOT
hairPointBuffer push_constant(Type::INT, "hairStrandsRes") .push_constant(Type hairPointBuffer push_constant(Type::INT, "hairStrandsRes") .push_constant(Type draw_resource_id_uniform
direct_radiance_1_tx direct_radiance_3_tx indirect_radiance_2_tx radiance_feedback_img draw_fullscreen fragment_source("eevee_deferred_combine_frag.glsl") .specialization_constant(Type out_radiance draw_view
smooth(Type::VEC3, "P") .smooth(Type pos draw_resource_id_varying
SHADOW_DEPTH_SCAN_GROUP_SIZE tiles_buf[] draw_view_culling
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
#define GPU_SHADER_CREATE_INFO(_info)
depthTex lineTex fragColor draw_globals
pos draw_resource_handle_new
vertex_in(0, Type::VEC2, "pos") .push_constant(Type ratio draw_mesh
draw_resource_handle vertex_in(0, Type::VEC3, "pos") .define("USE_GEOM") .vertex_out(overlay_outline_prepass_wire_iface) .geometry_layout(PrimitiveIn draw_mesh_new
out_color attribute_tx draw_pointcloud
out_color color_tx draw_hair