29#define BASIC_ENGINE "BLENDER_BASIC"
80 for (
int i = 0; i < 2; i++) {
126 memset(gpumat_array, 0,
sizeof(*gpumat_array) * materials_len);
147 const short material_slot = part->omat;
177 DRW_shgroup_pointcloud_create_sub(
191 if (is_flat_object_viewed_from_side) {
203 const bool do_cull = (draw_ctx->
v3d &&
209 if (use_sculpt_pbvh) {
217 for (
int i = 0; i < materials_len; i++) {
218 if (geoms[i] ==
nullptr) {
221 const short material_slot_select_id = i + 1;
235 int debug_node_nr = 0;
General operations, lookup, etc. for blender objects.
bool BKE_object_supports_material_slots(Object *ob)
bool BKE_sculptsession_use_pbvh_draw(const Object *ob, const RegionView3D *rv3d)
void BKE_pbvh_draw_debug_cb(blender::bke::pbvh::Tree &pbvh, void(*draw_fn)(blender::bke::pbvh::Node *node, void *user_data, const float bmin[3], const float bmax[3], PBVHNodeFlags flag), void *user_data)
#define BLI_array_alloca(arr, realsize)
@ V3D_SHADING_BACKFACE_CULLING
char DRWViewportEmptyList
#define DRW_PASS_CREATE(pass, state)
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
#define DRW_VIEWPORT_DATA_SIZE(ty)
#define DRW_shgroup_call(shgroup, geom, ob)
static void basic_engine_free()
static void basic_cache_populate(void *vedata, Object *ob)
static const DrawEngineDataSize basic_data_size
static void basic_cache_finish(void *vedata)
static blender::gpu::Batch ** basic_object_surface_material_get(Object *ob)
DrawEngineType draw_engine_basic_type
static void basic_cache_init(void *vedata)
static void basic_draw_scene(void *vedata)
static void basic_cache_populate_particles(void *vedata, Object *ob)
GPUShader * BASIC_shaders_pointcloud_depth_conservative_sh_get(eGPUShaderConfig config)
void BASIC_shaders_free(void)
GPUShader * BASIC_shaders_depth_sh_get(eGPUShaderConfig config)
GPUShader * BASIC_shaders_depth_conservative_sh_get(eGPUShaderConfig config)
GPUShader * BASIC_shaders_pointcloud_depth_sh_get(eGPUShaderConfig config)
GPUShader * BASIC_shaders_curves_depth_sh_get(eGPUShaderConfig config)
struct GPUShader GPUShader
blender::gpu::Batch * DRW_cache_object_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_object_all_edges_get(Object *ob)
blender::gpu::Batch * DRW_cache_particles_get_hair(Object *object, ParticleSystem *psys, ModifierData *md)
blender::gpu::Batch ** DRW_cache_object_surface_material_get(Object *ob, GPUMaterial **gpumat_array, uint gpumat_array_len)
int DRW_cache_object_material_count_get(const Object *ob)
bool DRW_object_is_flat(Object *ob, int *r_axis)
bool DRW_object_axis_orthogonal_to_view(Object *ob, int axis)
void DRW_debug_modelmat(const float modelmat[4][4])
bool DRW_state_is_material_select()
bool DRW_object_is_renderable(const Object *ob)
bool DRW_state_is_image_render()
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
const DRWContextState * DRW_context_state_get()
bool DRW_state_is_select()
DRWShadingGroup * DRW_shgroup_create(GPUShader *shader, DRWPass *pass)
void DRW_shgroup_call_sculpt(DRWShadingGroup *shgroup, Object *ob, bool use_wire, bool use_mask, bool use_fset, bool use_color, bool use_uv)
void DRW_sculpt_debug_cb(blender::bke::pbvh::Node *node, void *user_data, const float bmin[3], const float bmax[3], PBVHNodeFlags flag)
void DRW_draw_pass(DRWPass *pass)
void DRW_select_load_id(uint id)
@ DRW_STATE_IN_FRONT_SELECT
@ DRW_STATE_DEPTH_LESS_EQUAL
void *(* MEM_callocN)(size_t len, const char *str)
pbvh::Tree * pbvh_get(Object &object)
DRWViewportEmptyList * fbl
DRWViewportEmptyList * txl
DRWPass * depth_pass_pointcloud[2]
DRWPass * depth_pass_cull[2]
DRWShadingGroup * depth_shgrp[2]
DRWShadingGroup * depth_hair_shgrp[2]
DRWShadingGroup * depth_shgrp_cull[2]
DRWShadingGroup * depth_pointcloud_shgrp[2]
bool use_material_slot_selection
DRWShadingGroup * depth_curves_shgrp[2]
struct BASIC_PrivateData * g_data
GPUUniformBuf * block_ubo
ObjectRuntimeHandle * runtime
struct SculptSession * sculpt
struct ParticleSystem * next