157 uint32_t &name_buffer_offset)
const;
178 return "ModelMatrix";
182 return "ModelViewMatrix";
184 return "ProjectionMatrix";
186 return "ViewProjectionMatrix";
188 return "ModelViewProjectionMatrix";
191 return "ModelMatrixInverse";
193 return "ViewMatrixInverse";
195 return "ModelViewMatrixInverse";
197 return "ProjectionMatrixInverse";
199 return "ViewProjectionMatrixInverse";
202 return "NormalMatrix";
204 return "WorldClipPlanes";
209 return "gpu_BaseInstance";
211 return "drw_resourceChunk";
213 return "drw_ResourceID";
235 return "drw_matrices";
239 return "drw_clipping_";
248 uint32_t name_len)
const
251 if (name[name_len - 1] ==
']') {
252 for (; name_len > 1; name_len--) {
253 if (name[name_len] ==
'[') {
254 name[name_len] =
'\0';
268 uint32_t &name_buffer_offset)
const
270 uint32_t name_len = name.
size();
272 memcpy(name_buffer + name_buffer_offset, name.
c_str(), name_len + 1);
277 const uint inputs_len,
282 for (
int i = inputs_len - 1;
i >= 0;
i--) {
283 if (
inputs[
i].name_hash == name_hash) {
286 for (;
i >= 0 &&
inputs[
i].name_hash == name_hash;
i--) {
305 const uint inputs_len,
306 const int binding)
const
309 for (
int i = inputs_len - 1;
i >= 0;
i--) {
310 if (
inputs[
i].binding == binding) {
318 const uint inputs_len)
const
321 int valid_bindings = 0;
322 for (
int i = inputs_len - 1;
i >= 0;
i--) {
327 return valid_bindings;
BLI_INLINE unsigned int BLI_hash_string(const char *str)
@ GPU_UNIFORM_VIEWPROJECTION_INV
@ GPU_UNIFORM_RESOURCE_ID
@ GPU_UNIFORM_VIEWPROJECTION
@ GPU_UNIFORM_SRGB_TRANSFORM
@ GPU_UNIFORM_BASE_INSTANCE
@ GPU_UNIFORM_PROJECTION_INV
@ GPU_UNIFORM_MODELVIEW_INV
@ GPU_UNIFORM_RESOURCE_CHUNK
@ GPU_UNIFORM_BLOCK_DRW_VIEW
@ GPU_UNIFORM_BLOCK_DRW_MODEL
@ GPU_UNIFORM_BLOCK_MODEL
@ GPU_UNIFORM_BLOCK_DRW_CLIPPING
@ GPU_UNIFORM_BLOCK_DRW_INFOS
unsigned long long int uint64_t
constexpr int64_t size() const
constexpr const char * c_str() const
void copy_input_name(ShaderInput *input, const StringRefNull &name, char *name_buffer, uint32_t &name_buffer_offset) const
uint16_t enabled_ssbo_mask_
int32_t uniform_builtin(const GPUUniformBuiltin builtin) const
uint64_t enabled_tex_mask_
const ShaderInput * attr_get(const StringRefNull name) const
const ShaderInput * uniform_get(const StringRefNull name) const
uint32_t set_input_name(ShaderInput *input, char *name, uint32_t name_len) const
const ShaderInput * texture_get(const int binding) const
const ShaderInput * ubo_get(const int binding) const
const char * input_name_get(const ShaderInput *input) const
static const char * builtin_uniform_block_name(GPUUniformBlockBuiltin u)
int32_t ubo_builtin(const GPUUniformBlockBuiltin builtin) const
uint8_t enabled_ima_mask_
const ShaderInput * ubo_get(const StringRefNull name) const
const ShaderInput * ssbo_get(const StringRefNull name) const
uint valid_bindings_get(const ShaderInput *const inputs, const uint inputs_len) const
int32_t builtin_blocks_[GPU_NUM_UNIFORM_BLOCKS]
const ShaderInput * attr_get(const int binding) const
int32_t builtins_[GPU_NUM_UNIFORMS]
uint16_t enabled_attr_mask_
uint16_t enabled_ubo_mask_
uint8_t attr_types_[GPU_VERT_ATTR_MAX_LEN]
const ShaderInput * constant_get(const StringRefNull name) const
const ShaderInput * ssbo_get(const int binding) const
static const char * builtin_uniform_name(GPUUniformBuiltin u)
virtual ~ShaderInterface()
static blender::bke::bNodeSocketTemplate inputs[]
Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correc...