Blender
V4.3
source
blender
compositor
realtime_compositor
cached_resources
COM_fog_glow_kernel.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2024 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#pragma once
6
7
#include <complex>
8
#include <cstdint>
9
#include <memory>
10
11
#include "
BLI_map.hh
"
12
#include "
BLI_math_vector_types.hh
"
13
14
#include "
COM_cached_resource.hh
"
15
16
namespace
blender::realtime_compositor
{
17
18
/* ------------------------------------------------------------------------------------------------
19
* Fog Glow Kernel Key.
20
*/
21
class
FogGlowKernelKey
{
22
public
:
23
int
kernel_size
;
24
int2
spatial_size
;
25
26
FogGlowKernelKey
(
int
kernel_size
,
int2
spatial_size
);
27
28
uint64_t
hash
()
const
;
29
};
30
31
bool
operator==
(
const
FogGlowKernelKey
&a,
const
FogGlowKernelKey
&
b
);
32
33
/* -------------------------------------------------------------------------------------------------
34
* Fog Glow Kernel.
35
*
36
* A cached resource that computes and caches a Fog Glow convolution kernel in the frequency domain
37
* using FFTW's real to complex transform. The kernel is computed within a specific kernel size but
38
* zero padded to match a certain spatial size. */
39
class
FogGlowKernel
:
public
CachedResource
{
40
private
:
41
/* The normalization factor that should be used to normalize the kernel frequencies. See the
42
* implementation for more information. */
43
float
normalization_factor_ = 1.0f;
44
45
/* The kernel in the frequency domain. See the implementation for more information. */
46
std::complex<float> *frequencies_ =
nullptr
;
47
48
public
:
49
FogGlowKernel
(
int
kernel_size,
int2
spatial_size);
50
51
~FogGlowKernel
();
52
53
std::complex<float> *
frequencies
()
const
;
54
55
float
normalization_factor
()
const
;
56
};
57
58
/* ------------------------------------------------------------------------------------------------
59
* Fog Glow Kernel Container.
60
*/
61
class
FogGlowKernelContainer
:
CachedResourceContainer
{
62
private
:
63
Map<FogGlowKernelKey, std::unique_ptr<FogGlowKernel>
> map_;
64
65
public
:
66
void
reset
()
override
;
67
68
/* Check if there is an available FogGlowKernel cached resource with the given parameters in the
69
* container, if one exists, return it, otherwise, return a newly created one and add it to the
70
* container. In both cases, tag the cached resource as needed to keep it cached for the next
71
* evaluation. */
72
FogGlowKernel
&
get
(
int
kernel_size,
int2
spatial_size);
73
};
74
75
}
// namespace blender::realtime_compositor
BLI_map.hh
BLI_math_vector_types.hh
COM_cached_resource.hh
blender::Map
Definition
BLI_map.hh:129
blender::realtime_compositor::CachedResourceContainer
Definition
COM_cached_resource.hh:43
blender::realtime_compositor::CachedResource
Definition
COM_cached_resource.hh:26
blender::realtime_compositor::FogGlowKernelContainer
Definition
COM_fog_glow_kernel.hh:61
blender::realtime_compositor::FogGlowKernelContainer::get
FogGlowKernel & get(int kernel_size, int2 spatial_size)
Definition
fog_glow_kernel.cc:169
blender::realtime_compositor::FogGlowKernelContainer::reset
void reset() override
Definition
fog_glow_kernel.cc:157
blender::realtime_compositor::FogGlowKernelKey
Definition
COM_fog_glow_kernel.hh:21
blender::realtime_compositor::FogGlowKernelKey::hash
uint64_t hash() const
Definition
fog_glow_kernel.cc:37
blender::realtime_compositor::FogGlowKernelKey::FogGlowKernelKey
FogGlowKernelKey(int kernel_size, int2 spatial_size)
Definition
fog_glow_kernel.cc:32
blender::realtime_compositor::FogGlowKernelKey::spatial_size
int2 spatial_size
Definition
COM_fog_glow_kernel.hh:24
blender::realtime_compositor::FogGlowKernelKey::kernel_size
int kernel_size
Definition
COM_fog_glow_kernel.hh:23
blender::realtime_compositor::FogGlowKernel
Definition
COM_fog_glow_kernel.hh:39
blender::realtime_compositor::FogGlowKernel::frequencies
std::complex< float > * frequencies() const
Definition
fog_glow_kernel.cc:143
blender::realtime_compositor::FogGlowKernel::~FogGlowKernel
~FogGlowKernel()
Definition
fog_glow_kernel.cc:136
blender::realtime_compositor::FogGlowKernel::FogGlowKernel
FogGlowKernel(int kernel_size, int2 spatial_size)
Definition
fog_glow_kernel.cc:71
blender::realtime_compositor::FogGlowKernel::normalization_factor
float normalization_factor() const
Definition
fog_glow_kernel.cc:148
b
local_group_size(16, 16) .push_constant(Type b
Definition
compositor_morphological_distance_info.hh:16
blender::realtime_compositor
Definition
BKE_node.hh:80
blender::realtime_compositor::operator==
bool operator==(const BokehKernelKey &a, const BokehKernelKey &b)
Definition
bokeh_kernel.cc:42
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:90
blender::VecBase< int32_t, 2 >
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0