87 return input_a->
type < input_b->
type ? 1 : 0;
98#define MAX_UBO_GPU_TYPE GPU_MAT4
125 if (
input->type == cur_type) {
129 inputs_lookup[
input->type] = link;
130 cur_type =
input->type;
134 if (inputs_lookup[
GPU_VEC3] ==
nullptr) {
148 if (inputs_lookup[
GPU_FLOAT] !=
nullptr) {
158#undef MAX_UBO_GPU_TYPE
163 size_t buffer_size = 0;
166 buffer_size += gputype *
sizeof(float);
169 size_t alignment =
sizeof(
float[4]);
170 buffer_size =
divide_ceil_u(buffer_size, alignment) * alignment;
178 float *offset = (
float *)
data;
181 memcpy(offset,
input->vec,
input->type *
sizeof(
float));
192using namespace blender::gpu;
198 if (
data !=
nullptr) {
245 unwrap(ubo)->bind_as_ssbo(slot);
260 unwrap(ubo)->clear_to_zero();
#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)
eGPUBackendType 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 Context * unwrap(GPUContext *ctx)
static GPUContext * wrap(Context *ctx)
static blender::bke::bNodeSocketTemplate inputs[]