Files
test2/source/blender/draw/intern/draw_context_private.hh

99 lines
2.5 KiB
C++

/* SPDX-FileCopyrightText: 2016 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup draw
*/
/* Private functions / structs of the draw manager */
#pragma once
#include "DRW_engine.hh"
#include "DRW_render.hh"
#include "BLI_task.h"
#include "BLI_threads.h"
#include "BLI_vector_set.hh"
#include "GPU_batch.hh"
#include "GPU_context.hh"
#include "GPU_framebuffer.hh"
#include "GPU_viewport.hh"
struct DRWDebugModule;
struct DRWUniformChunk;
struct DRWViewData;
struct DRWTextStore;
struct DupliObject;
struct Object;
struct Mesh;
namespace blender::draw {
struct CurvesModule;
struct VolumeModule;
struct PointCloudModule;
struct DRW_MeshCDMask;
class CurveRefinePass;
class View;
} // namespace blender::draw
struct GPUMaterial;
struct GSet;
/* -------------------------------------------------------------------- */
/** \name Memory Pools
* \{ */
/** Contains memory pools information. */
struct DRWData {
/** Instance data. */
DRWInstanceDataList *idatalist;
/** List of smoke textures to free after drawing. */
ListBase smoke_textures;
/** Per stereo view data. Contains engine data and default frame-buffers. */
DRWViewData *view_data[2];
/** Module storage. */
blender::draw::CurvesModule *curves_module;
blender::draw::VolumeModule *volume_module;
blender::draw::PointCloudModule *pointcloud_module;
/** Default view that feeds every engine. */
blender::draw::View *default_view;
/* Ensure modules are created. */
void modules_init();
/* Callbacks before each sync cycle. */
void modules_begin_sync();
/* Callbacks after one draw to clear transient data. */
void modules_exit();
};
/** \} */
/* -------------------------------------------------------------------- */
/** \name Functions
* \{ */
/* Get thread local draw context. */
DRWContext &drw_get();
namespace blender::draw {
void drw_batch_cache_validate(Object *ob);
void drw_batch_cache_generate_requested(Object *ob, TaskGraph &task_graph);
/**
* \warning Only evaluated mesh data is handled by this delayed generation.
*/
void drw_batch_cache_generate_requested_delayed(Object *ob);
void drw_batch_cache_generate_requested_evaluated_mesh_or_curve(Object *ob, TaskGraph &task_graph);
void DRW_mesh_get_attributes(const Object &object,
const Mesh &mesh,
Span<const GPUMaterial *> materials,
VectorSet<std::string> *r_attrs,
DRW_MeshCDMask *r_cd_needed);
} // namespace blender::draw
/** \} */