76 return input_a->
type < input_b->type ? 1 : 0;
87 #define MAX_UBO_GPU_TYPE GPU_MAT4
109 if (
input->type == cur_type) {
113 inputs_lookup[
input->type] = link;
114 cur_type =
input->type;
118 if (inputs_lookup[
GPU_VEC3] ==
nullptr) {
132 if (inputs_lookup[
GPU_FLOAT] !=
nullptr) {
142 #undef MAX_UBO_GPU_TYPE
147 size_t buffer_size = 0;
150 buffer_size += gputype *
sizeof(
float);
153 size_t alignment =
sizeof(
float[4]);
154 buffer_size =
divide_ceil_u(buffer_size, alignment) * alignment;
182 if (
data !=
nullptr) {
typedef float(TangentPoint)[2]
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE uint divide_ceil_u(uint a, uint b)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
Read Guarded memory(de)allocation.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static GPUBackend * get()
virtual UniformBuf * uniformbuf_alloc(int size, const char *name)=0
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ccl_global KernelShaderEvalInput * input
void *(* MEM_mallocN)(size_t len, const char *str)
static GPUContext * wrap(Context *ctx)
static Context * unwrap(GPUContext *ctx)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static bNodeSocketTemplate inputs[]