49 if ((eevee_dd.
recalc & recalc_flags) != 0) {
65 if ((eevee_dd.
recalc & recalc_flags) != 0) {
82 bool use_instancing =
false)
91 else if (use_instancing) {
114 if (mat_geom ==
nullptr) {
118 bool is_shadow_caster =
false;
119 bool is_alpha_blend =
false;
122 if (geom ==
nullptr) {
130 is_shadow_caster = is_shadow_caster ||
material->shadow.shgrp !=
nullptr;
131 is_alpha_blend = is_alpha_blend ||
material->is_alpha_blend_transparent;
143 #define DO_BATCHING true
162 ob_, inst_.velocity.step_object_sync(
ob, ob_handle.object_key, ob_handle.recalc)))
170 if (iter.
geom !=
nullptr) {
283 if (matpass.
shgrp ==
nullptr) {
286 if (part_sys !=
nullptr) {
299 if (modifier_data !=
nullptr) {
310 mat_nr = part_settings->
omat;
void BKE_gpencil_visible_stroke_iter(struct bGPdata *gpd, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk)
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
General operations, lookup, etc. for blender objects.
float DEG_get_ctime(const Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define CURVES_MATERIAL_NR
@ GP_MATERIAL_STROKE_SHOW
#define DRW_shgroup_call(shgroup, geom, ob)
IndexRange index_range() const
A running instance of the engine.
bool gpencil_engine_enabled
Material & material_get(Object *ob, bool has_motion, int mat_nr, eMaterialGeometry geometry_type)
MaterialArray & material_array_get(Object *ob, bool has_motion)
ObjectHandle & sync_object(Object *ob)
void sync_gpencil(Object *ob, ObjectHandle &ob_handle)
WorldHandle & sync_world(::World *world)
void sync_mesh(Object *ob, ObjectHandle &ob_handle)
void sync_curves(Object *ob, ObjectHandle &ob_handle, ModifierData *modifier_data=nullptr)
bool step_object_sync(Object *ob, ObjectKey &object_key, int recalc=0)
GPUBatch ** DRW_cache_object_surface_material_get(struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len)
struct GPUBatch * DRW_cache_gpencil_strokes_get(struct Object *ob, int cfra)
struct GPUBatch * DRW_cache_gpencil_fills_get(struct Object *ob, int cfra)
struct DRWShadingGroup * DRW_shgroup_curves_create_sub(struct Object *object, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
struct DRWShadingGroup * DRW_shgroup_hair_create_sub(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md, struct DRWShadingGroup *shgrp, struct GPUMaterial *gpu_material)
DrawData * DRW_drawdata_ensure(ID *id, DrawEngineType *engine_type, size_t size, DrawDataInitCb init_cb, DrawDataFreeCb free_cb)
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
bool DRW_state_is_image_render(void)
void DRW_shgroup_call_instance_range(DRWShadingGroup *shgroup, Object *ob, struct GPUBatch *geom, uint i_sta, uint i_num)
void DRW_shgroup_call_range(DRWShadingGroup *shgroup, struct Object *ob, GPUBatch *geom, uint v_sta, uint v_num)
RenderEngineType DRW_engine_viewport_eevee_next_type
smooth(Type::VEC4, "color_mul") .smooth(Type gpFillTexture gpSceneDepthTexture materials[GPENCIL_MATERIAL_BUFFER_LEN]
static void draw_data_init_cb(struct DrawData *dd)
static void shgroup_geometry_call(DRWShadingGroup *grp, Object *ob, GPUBatch *geom, int v_first=-1, int v_count=-1, bool use_instancing=false)
static void gpencil_stroke_sync(bGPDlayer *UNUSED(gpl), bGPDframe *UNUSED(gpf), bGPDstroke *gps, void *thunk)
static void gpencil_drawcall_flush(gpIterData &iter)
static void shgroup_curves_call(MaterialPass &matpass, Object *ob, ParticleSystem *part_sys=nullptr, ModifierData *modifier_data=nullptr)
static void gpencil_drawcall_add(gpIterData &iter, GPUBatch *geom, Material *material, int v_first, int v_count, bool instancing)
bGPDstroke_Runtime runtime
Vector< Material * > materials
Vector< GPUMaterial * > gpu_materials
MaterialArray & material_array
gpIterData(Instance &inst_, Object *ob_, ObjectHandle &ob_handle)