Files
2026-08-12 04:47:48 -04:00

75 lines
2.0 KiB
C++

/* 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