39#define EXTERNAL_ENGINE "BLENDER_EXTERNAL"
114 stl->
g_data = MEM_cnew<EXTERNAL_PrivateData>(__func__);
158 GPU_ATTACHMENT_TEXTURE(txl->depth_buffer_tx),
169 if (v3d !=
nullptr) {
280 if (render_engine->
text[0] !=
'\0') {
284 data->info[0] =
'\0';
304 float view_matrix[4][4];
307 float projection_matrix[4][4];
318 const float width_inv = width ? 1.0f / width : 0.0f;
319 const float height_inv = height ? 1.0f / height : 0.0f;
388 if (draw_ctx->
v3d !=
nullptr) {
416 const float clear_col[4] = {0, 0, 0, 0};
493 if (space_data ==
nullptr) {
508 if (image->render_slot != image->last_render_slot) {
534#undef EXTERNAL_ENGINE
General operations, lookup, etc. for blender objects.
#define LISTBASE_FOREACH(type, var, list)
void unit_m4(float m[4][4])
void translate_m4(float mat[4][4], float Tx, float Ty, float Tz)
void scale_m4_fl(float R[4][4], float scale)
#define STRNCPY(dst, src)
@ eModifierType_ParticleSystem
void DRW_gpu_context_disable_ex(bool restore)
void DRW_gpu_context_enable_ex(bool restore)
#define DRW_SHADER_FREE_SAFE(shader)
#define DRW_shgroup_call_obmat(shgroup, geom, obmat)
#define DRW_VIEWPORT_DATA_SIZE(ty)
#define DRW_shgroup_call(shgroup, geom, ob)
void ED_space_image_get_size(SpaceImage *sima, int *r_width, int *r_height)
Image * ED_space_image(const SpaceImage *sima)
void ED_region_pixelspace(const ARegion *region)
void GPU_debug_group_end()
void GPU_debug_group_begin(const char *name)
void GPU_framebuffer_bind(GPUFrameBuffer *framebuffer)
void GPU_framebuffer_clear_color(GPUFrameBuffer *fb, const float clear_col[4])
#define GPU_framebuffer_ensure_config(_fb,...)
void GPU_framebuffer_clear_depth(GPUFrameBuffer *fb, float clear_depth)
void GPU_framebuffer_blit(GPUFrameBuffer *fb_read, int read_slot, GPUFrameBuffer *fb_write, int write_slot, eGPUFrameBufferBits blit_buffers)
void GPU_matrix_scale_2f(float x, float y)
#define GPU_matrix_set(x)
void GPU_matrix_push_projection()
void GPU_matrix_pop_projection()
#define GPU_matrix_projection_set(x)
void GPU_matrix_translate_2f(float x, float y)
GPUShader * GPU_shader_create_from_info_name(const char *info_name)
struct GPUShader GPUShader
blender::gpu::Batch * DRW_cache_object_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_particles_get_hair(Object *object, ParticleSystem *psys, ModifierData *md)
blender::gpu::Batch * DRW_cache_quad_get()
DefaultFramebufferList * DRW_viewport_framebuffer_list_get()
bool DRW_object_is_renderable(const Object *ob)
int DRW_object_visibility_in_active_context(const Object *ob)
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
const DRWContextState * DRW_context_state_get()
DRWShadingGroup * DRW_shgroup_create(GPUShader *shader, DRWPass *pass)
DRWPass * DRW_pass_create(const char *name, DRWState state)
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_view_viewmat_get(const DRWView *view, float mat[4][4], bool inverse)
void DRW_draw_pass(DRWPass *pass)
void DRW_state_reset_ex(DRWState state)
const DRWView * DRW_view_get_active()
void DRW_texture_ensure_fullscreen_2d(GPUTexture **tex, eGPUTextureFormat format, DRWTextureFlag flags)
@ DRW_STATE_DEPTH_LESS_EQUAL
static void external_cache_populate(void *vedata, Object *ob)
RenderEngineType DRW_engine_viewport_external_type
static void external_cache_finish(void *)
bool DRW_engine_external_acquire_for_image_editor()
static void external_draw_scene(void *vedata)
static void external_draw_scene_do_v3d(void *vedata)
char datatoc_common_view_lib_glsl[]
static void external_cache_image_add(DRWShadingGroup *grp)
char datatoc_basic_depth_vert_glsl[]
DrawEngineType draw_engine_external_type
static void external_engine_init(void *vedata)
static struct @199 e_data
void DRW_engine_external_free(RegionView3D *rv3d)
static void external_draw_scene_do_image(void *)
char datatoc_basic_depth_frag_glsl[]
static void external_image_space_matrix_set(const RenderEngine *engine)
static const DrawEngineDataSize external_data_size
static void external_draw_scene_do(void *vedata)
static void external_cache_init(void *vedata)
static void external_engine_free()
void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti *r_disprect)
void RE_engine_draw_release(Render *re)
RenderEngine * RE_view_engine_get(const ViewRender *view_render)
RenderEngine * RE_engine_get(const Render *re)
bool RE_engine_draw_acquire(Render *re)
ViewRender * RE_NewViewRender(RenderEngineType *engine_type)
Render * RE_GetSceneRender(const Scene *scene)
void RE_FreeViewRender(ViewRender *view_render)
RenderEngineType * engine_type
GPUFrameBuffer * depth_only_fb
GPUFrameBuffer * default_fb
EXTERNAL_FramebufferList * fbl
EXTERNAL_StorageList * stl
EXTERNAL_TextureList * txl
GPUFrameBuffer * depth_buffer_fb
DRWShadingGroup * depth_shgrp
struct EXTERNAL_PrivateData * g_data
EXTERNAL_Storage * storage
GPUTexture * depth_buffer_tx
struct ViewRender * view_render
void(* view_draw)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)
void(* view_update)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)
void(* draw)(struct RenderEngine *engine, const struct bContext *context, struct Depsgraph *depsgraph)