88 return input_a->
type < input_b->
type ? 1 : 0;
99#define MAX_UBO_GPU_TYPE GPU_MAT4
126 if (
input->type == cur_type) {
130 inputs_lookup[
input->type] = link;
131 cur_type =
input->type;
135 if (inputs_lookup[
GPU_VEC3] ==
nullptr) {
149 if (inputs_lookup[
GPU_FLOAT] !=
nullptr) {
159#undef MAX_UBO_GPU_TYPE
164 size_t buffer_size = 0;
167 buffer_size += gputype *
sizeof(
float);
170 size_t alignment =
sizeof(
float[4]);
171 buffer_size =
divide_ceil_u(buffer_size, alignment) * alignment;
179 float *offset = (
float *)
data;
182 memcpy(offset,
input->vec,
input->type *
sizeof(
float));
193using namespace blender::gpu;
199 if (
data !=
nullptr) {
#define BLI_assert_msg(a, msg)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_insertlinkafter(ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_listbase_sort(ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
MINLINE uint divide_ceil_u(uint a, uint b)
char * STRNCPY(char(&dst)[N], const char *src)
size_t GPU_max_uniform_buffer_size()
GPUBackendType GPU_backend_get_type()
Read Guarded memory(de)allocation.
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
virtual void debug_unbind_all_ubo()=0
static GPUBackend * get()
virtual UniformBuf * uniformbuf_alloc(size_t size, const char *name)=0
void * MEM_mallocN(size_t len, const char *str)
static blender::bke::bNodeSocketTemplate inputs[]