Blender  V3.3
draw_view_info.hh
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
4 
5 /* -------------------------------------------------------------------- */
13 /* Standard way. Use gpu_InstanceIndex to index the object data. */
14 GPU_SHADER_CREATE_INFO(draw_resource_id).define("DYNAMIC_RESOURCE_ID");
15 
20 GPU_SHADER_INTERFACE_INFO(draw_resource_id_iface, "drw_ResourceID_iface")
21  .flat(Type::INT, "resource_index");
22 
24  .vertex_out(draw_resource_id_iface)
25  .geometry_out(draw_resource_id_iface); /* Used if needed. */
26 
27 /* Variation used when drawing multiple instances for one object. */
29  .define("UNIFORM_RESOURCE_ID")
30  .push_constant(Type::INT, "drw_ResourceID");
31 
37  .define("resource_handle (drw_resourceChunk * DRW_RESOURCE_CHUNK_LEN + resource_id)")
38  .push_constant(Type::INT, "drw_resourceChunk");
39 
42 /* -------------------------------------------------------------------- */
46 GPU_SHADER_CREATE_INFO(draw_view)
47  .uniform_buf(0, "ViewInfos", "drw_view", Frequency::PASS)
48  .typedef_source("draw_shader_shared.h");
49 
51  .uniform_buf(8, "ObjectMatrices", "drw_matrices[DRW_RESOURCE_CHUNK_LEN]", Frequency::BATCH)
52  .define("ModelMatrix", "(drw_matrices[resource_id].drw_modelMatrix)")
53  .define("ModelMatrixInverse", "(drw_matrices[resource_id].drw_modelMatrixInverse)")
54  .additional_info("draw_view");
55 
56 GPU_SHADER_CREATE_INFO(draw_modelmat_legacy)
57  .define("DRW_LEGACY_MODEL_MATRIX")
58  .push_constant(Type::MAT4, "ModelMatrix")
59  .push_constant(Type::MAT4, "ModelMatrixInverse")
60  .additional_info("draw_view");
61 
62 GPU_SHADER_CREATE_INFO(draw_modelmat_instanced_attr)
63  .push_constant(Type::MAT4, "ModelMatrix")
64  .push_constant(Type::MAT4, "ModelMatrixInverse")
65  .additional_info("draw_view");
66 
69 /* -------------------------------------------------------------------- */
73 GPU_SHADER_CREATE_INFO(drw_clipped).define("USE_WORLD_CLIP_PLANES");
74 
77 /* -------------------------------------------------------------------- */
82  .typedef_source("draw_common_shader_shared.h")
83  .uniform_buf(7, "GlobalsUboStorage", "globalsBlock", Frequency::PASS);
84 
87 /* -------------------------------------------------------------------- */
91 GPU_SHADER_CREATE_INFO(draw_mesh).additional_info("draw_modelmat", "draw_resource_id");
92 
93 GPU_SHADER_CREATE_INFO(draw_hair)
94  .sampler(15, ImageType::FLOAT_BUFFER, "hairPointBuffer")
95  /* TODO(@fclem): Pack these into one UBO. */
96  .push_constant(Type::INT, "hairStrandsRes")
97  .push_constant(Type::INT, "hairThicknessRes")
98  .push_constant(Type::FLOAT, "hairRadRoot")
99  .push_constant(Type::FLOAT, "hairRadTip")
100  .push_constant(Type::FLOAT, "hairRadShape")
101  .push_constant(Type::BOOL, "hairCloseTip")
102  .push_constant(Type::INT, "hairStrandOffset")
103  .push_constant(Type::MAT4, "hairDupliMatrix")
104  .additional_info("draw_modelmat", "draw_resource_id");
105 
106 GPU_SHADER_CREATE_INFO(draw_pointcloud)
107  .vertex_in(0, Type::VEC4, "pos")
108  .vertex_in(1, Type::VEC3, "pos_inst")
109  .vertex_in(2, Type::VEC3, "nor")
110  .additional_info("draw_modelmat_instanced_attr", "draw_resource_id_uniform");
111 
112 GPU_SHADER_CREATE_INFO(draw_volume).additional_info("draw_modelmat", "draw_resource_id_uniform");
113 
114 GPU_SHADER_CREATE_INFO(draw_gpencil)
115  .typedef_source("gpencil_shader_shared.h")
116  .define("DRW_GPENCIL_INFO")
117  .vertex_in(0, Type::IVEC4, "ma")
118  .vertex_in(1, Type::IVEC4, "ma1")
119  .vertex_in(2, Type::IVEC4, "ma2")
120  .vertex_in(3, Type::IVEC4, "ma3")
121  .vertex_in(4, Type::VEC4, "pos")
122  .vertex_in(5, Type::VEC4, "pos1")
123  .vertex_in(6, Type::VEC4, "pos2")
124  .vertex_in(7, Type::VEC4, "pos3")
125  .vertex_in(8, Type::VEC4, "uv1")
126  .vertex_in(9, Type::VEC4, "uv2")
127  .vertex_in(10, Type::VEC4, "col1")
128  .vertex_in(11, Type::VEC4, "col2")
129  .vertex_in(12, Type::VEC4, "fcol1")
130  /* Per Object */
131  .push_constant(Type::FLOAT, "gpThicknessScale") /* TODO(fclem): Replace with object info. */
132  .push_constant(Type::FLOAT, "gpThicknessWorldScale") /* TODO(fclem): Same as above. */
133  .define("gpThicknessIsScreenSpace", "(gpThicknessWorldScale < 0.0)")
134  /* Per Layer */
135  .push_constant(Type::FLOAT, "gpThicknessOffset")
136  .additional_info("draw_modelmat", "draw_resource_id_uniform", "draw_object_infos");
137 
GPU_SHADER_CREATE_INFO(draw_resource_id).define("DYNAMIC_RESOURCE_ID")
sampler(15, ImageType::FLOAT_BUFFER, "hairPointBuffer") .push_constant(Type pos_inst draw_resource_id_uniform
draw_resource_id
pos draw_resource_handle
pos draw_resource_id_varying
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
depthTex lineTex fragColor draw_globals
pos fragColor draw_modelmat
GPU_SHADER_INTERFACE_INFO(overlay_particle_iface, "").flat(Type sampler(0, ImageType::FLOAT_1D, "weightTex") .push_constant(Type fragColor draw_mesh
@ FLOAT