Blender  V3.3
draw_instance_data.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2016 Blender Foundation. */
3 
8 #pragma once
9 
10 #include "BLI_compiler_attrs.h"
11 #include "BLI_sys_types.h"
12 
13 #include "GPU_batch.h"
14 
15 #define MAX_INSTANCE_DATA_SIZE 64 /* Can be adjusted for more */
16 
17 #define DRW_BUFFER_VERTS_CHUNK 128
18 
19 struct GHash;
20 struct GPUUniformAttrList;
21 
22 typedef struct DRWInstanceData DRWInstanceData;
25 
31 
42  int *vert_len);
48  GPUVertBuf *buf,
49  GPUBatch *instancer,
50  GPUBatch *geom);
55  GPUVertBuf *buf,
57 
62 
66 
67 /* Sparse chunked UBO manager. */
68 
73  unsigned int chunk_size);
93 void DRW_sparse_uniform_buffer_bind(DRWSparseUniformBuf *buffer, int chunk, int location);
102 
103 /* Uniform attribute UBO management. */
104 
105 struct GHash *DRW_uniform_attrs_pool_new(void);
106 void DRW_uniform_attrs_pool_flush_all(struct GHash *table);
107 void DRW_uniform_attrs_pool_clear_all(struct GHash *table);
109  struct GPUUniformAttrList *key);
unsigned int uint
Definition: BLI_sys_types.h:67
GPUBatch
Definition: GPU_batch.h:78
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
GPUPrimType
Definition: GPU_primitive.h:18
struct GPUVertBuf GPUVertBuf
void * DRW_instance_data_next(DRWInstanceData *idata)
void * DRW_sparse_uniform_buffer_ensure_item(DRWSparseUniformBuf *buffer, int chunk, int item)
void DRW_uniform_attrs_pool_clear_all(struct GHash *table)
void DRW_instance_data_list_free_unused(DRWInstanceDataList *idatalist)
bool DRW_sparse_uniform_buffer_is_empty(DRWSparseUniformBuf *buffer)
DRWInstanceData * DRW_instance_data_request(DRWInstanceDataList *idatalist, uint attr_size)
DRWSparseUniformBuf * DRW_sparse_uniform_buffer_new(unsigned int item_size, unsigned int chunk_size)
void DRW_instance_buffer_finish(DRWInstanceDataList *idatalist)
void DRW_sparse_uniform_buffer_free(DRWSparseUniformBuf *buffer)
GPUVertBuf * DRW_temp_buffer_request(DRWInstanceDataList *idatalist, GPUVertFormat *format, int *vert_len)
struct GHash * DRW_uniform_attrs_pool_new(void)
void DRW_uniform_attrs_pool_flush_all(struct GHash *table)
void DRW_sparse_uniform_buffer_unbind(DRWSparseUniformBuf *buffer, int chunk)
GPUBatch * DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, GPUVertBuf *buf, GPUBatch *instancer, GPUBatch *geom)
void DRW_sparse_uniform_buffer_bind(DRWSparseUniformBuf *buffer, int chunk, int location)
void DRW_instance_data_list_reset(DRWInstanceDataList *idatalist)
struct DRWSparseUniformBuf * DRW_uniform_attrs_pool_find_ubo(struct GHash *table, struct GPUUniformAttrList *key)
void DRW_sparse_uniform_buffer_clear(DRWSparseUniformBuf *buffer, bool free_all)
void DRW_sparse_uniform_buffer_flush(DRWSparseUniformBuf *buffer)
void DRW_instance_data_list_resize(DRWInstanceDataList *idatalist)
GPUBatch * DRW_temp_batch_request(DRWInstanceDataList *idatalist, GPUVertBuf *buf, GPUPrimType type)
static uint attr_size(const GPUVertAttr *a)
ccl_global float * buffer
format
Definition: logImageCore.h:38
static const int chunk_size