/* SPDX-FileCopyrightText: Blender Authors * * SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once /** \file * \ingroup bke * \brief General operations for probes. */ #include "BLI_sys_types.h" namespace blender { struct LightProbe; struct Main; struct BlendWriter; struct BlendDataReader; struct LightProbeObjectCache; struct LightProbeGridCacheFrame; struct Object; enum eLightProbeType : char; void BKE_lightprobe_type_set(struct LightProbe *probe, eLightProbeType lightprobe_type); struct LightProbe *BKE_lightprobe_add(struct Main *bmain, const char *name); void BKE_lightprobe_cache_blend_write(struct BlendWriter *writer, struct LightProbeObjectCache *cache); void BKE_lightprobe_cache_blend_read(struct BlendDataReader *reader, struct LightProbeObjectCache *cache); /** * Create a single empty irradiance grid cache. */ struct LightProbeGridCacheFrame *BKE_lightprobe_grid_cache_frame_create(); /** * Create a copy of a cache frame. * This does not include the in-progress baking data. */ LightProbeGridCacheFrame *BKE_lightprobe_grid_cache_frame_copy(LightProbeGridCacheFrame *src); /** * Free a single grid cache. */ void BKE_lightprobe_grid_cache_frame_free(struct LightProbeGridCacheFrame *cache); /** * Create the grid cache list depending on the lightprobe baking settings. * The list is left empty to be filled by the baking process. */ void BKE_lightprobe_cache_create(struct Object *object); /** * Create a copy of a whole cache. * This does not include the in-progress baking data. */ LightProbeObjectCache *BKE_lightprobe_cache_copy(LightProbeObjectCache *src_cache); /** * Free all irradiance grids allocated for the given object. */ void BKE_lightprobe_cache_free(struct Object *object); /** * Return the number of sample stored inside an irradiance cache. * This depends on the light cache type. */ int64_t BKE_lightprobe_grid_cache_frame_sample_count(const struct LightProbeGridCacheFrame *cache); } // namespace blender