Blender
V4.5
source
blender
draw
engines
eevee
eevee_lookdev.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
12
#pragma once
13
14
#include <string>
15
16
#include "
DNA_image_types.h
"
17
#include "
DNA_vec_types.h
"
18
#include "
DNA_world_types.h
"
19
20
#include "
BLI_math_vector_types.hh
"
21
22
#include "
DRW_gpu_wrapper.hh
"
23
24
#include "
draw_manager.hh
"
25
#include "
draw_pass.hh
"
26
27
struct
bNode
;
28
struct
bNodeSocketValueFloat
;
29
struct
View3D
;
30
31
namespace
blender::eevee
{
32
33
class
Instance
;
34
class
LookdevView;
35
36
using
blender::draw::Framebuffer
;
37
using
blender::draw::PassSimple
;
38
using
blender::draw::ResourceHandle
;
39
using
blender::draw::Texture
;
40
using
blender::draw::View
;
41
42
/* -------------------------------------------------------------------- */
48
struct
LookdevParameters
{
49
std::string
hdri
;
50
float
rot_z
= 0.0f;
51
float
background_opacity
= 0.0f;
52
float
intensity
= 1.0f;
53
float
blur
= 0.0f;
54
bool
show_scene_world
=
true
;
55
56
LookdevParameters
();
57
LookdevParameters
(const ::View3D *v3d);
58
bool
operator==
(
const
LookdevParameters
&other)
const
;
59
bool
operator!=
(
const
LookdevParameters
&other)
const
;
60
};
61
64
/* -------------------------------------------------------------------- */
70
class
LookdevWorld
{
71
private
:
72
bNode
*environment_node_ =
nullptr
;
73
bNodeSocketValueFloat
*intensity_socket_ =
nullptr
;
74
bNodeSocketValueFloat
*angle_socket_ =
nullptr
;
75
::Image
*image =
nullptr
;
76
::World
*world =
nullptr
;
77
78
LookdevParameters
parameters_;
79
80
public
:
81
LookdevWorld
();
82
~LookdevWorld
();
83
84
/* Returns true if an update was detected. */
85
bool
sync
(
const
LookdevParameters
&new_parameters);
86
87
::World
*
world_get
()
88
{
89
return
world
;
90
}
91
92
float
background_opacity_get
()
const
93
{
94
return
parameters_.
background_opacity
;
95
}
96
97
float
background_blur_get
()
const
98
{
99
return
parameters_.
blur
;
100
}
101
102
float
intensity_get
()
const
103
{
104
return
parameters_.
intensity
;
105
}
106
};
107
110
/* -------------------------------------------------------------------- */
115
class
LookdevModule
{
116
private
:
117
Instance
&inst_;
118
119
bool
enabled_;
120
121
static
constexpr
int
num_spheres = 2;
122
126
enum
SphereLOD {
127
LOW = 0,
128
MEDIUM = 1,
129
HIGH = 2,
130
131
MAX,
/* Max number of level of detail */
132
};
133
134
std::array<gpu::Batch *, MAX> sphere_lod_ = {};
135
136
/* Size and position of the look-dev spheres in world space. */
137
float
sphere_radius_;
138
float3
sphere_position_;
139
140
rcti
visible_rect_;
141
142
/* Dummy textures: required to reuse forward mesh shader and avoid another shader variation. */
143
Texture
dummy_cryptomatte_tx_;
144
Texture
dummy_aov_color_tx_;
145
Texture
dummy_aov_value_tx_;
146
147
struct
Sphere {
148
Framebuffer
framebuffer = {
"Lookdev.Framebuffer"
};
149
Texture
color_tx_ = {
"Lookdev.Color"
};
150
PassSimple
pass = {
"Lookdev.Sphere"
};
151
};
152
153
Sphere spheres_[num_spheres];
154
PassSimple
display_ps_ = {
"Lookdev.Display"
};
155
156
public
:
157
LookdevModule
(
Instance
&inst);
158
~LookdevModule
();
159
160
void
init
(
const
rcti
*visible_rect);
161
void
sync
();
162
163
void
draw
(
View
&
view
);
164
165
void
display
();
166
167
private
:
168
void
sync_pass(
PassSimple
&pass, gpu::Batch *geom,
::Material
*mat,
ResourceHandle
res_handle);
169
void
sync_display();
170
171
float
calc_viewport_scale();
172
SphereLOD calc_level_of_detail(
const
float
viewport_scale);
173
blender::gpu::Batch *sphere_get(
const
SphereLOD level_of_detail);
174
175
friend
class
LookdevView
;
176
};
177
180
}
// namespace blender::eevee
BLI_math_vector_types.hh
DNA_image_types.h
DNA_vec_types.h
DNA_world_types.h
DRW_gpu_wrapper.hh
view
static AppView * view
Definition
FRS_freestyle.cpp:59
init
void init()
blender::draw::Framebuffer
Definition
DRW_gpu_wrapper.hh:1199
blender::draw::Texture
Definition
DRW_gpu_wrapper.hh:525
blender::draw::View
Definition
draw_view.hh:37
blender::draw::detail::Pass< command::DrawCommandBuf >
blender::eevee::Instance
A running instance of the engine.
Definition
eevee_instance.hh:75
blender::eevee::LookdevModule
Definition
eevee_lookdev.hh:115
blender::eevee::LookdevModule::display
void display()
Definition
eevee_lookdev.cc:364
blender::eevee::LookdevModule::sync
void sync()
Definition
eevee_lookdev.cc:256
blender::eevee::LookdevModule::~LookdevModule
~LookdevModule()
Definition
eevee_lookdev.cc:132
blender::eevee::LookdevModule::draw
void draw(View &view)
Definition
eevee_lookdev.cc:349
blender::eevee::LookdevModule::LookdevModule
LookdevModule(Instance &inst)
Definition
eevee_lookdev.cc:130
blender::eevee::LookdevView
Definition
eevee_view.hh:176
blender::eevee::LookdevWorld
Definition
eevee_lookdev.hh:70
blender::eevee::LookdevWorld::background_blur_get
float background_blur_get() const
Definition
eevee_lookdev.hh:97
blender::eevee::LookdevWorld::background_opacity_get
float background_opacity_get() const
Definition
eevee_lookdev.hh:92
blender::eevee::LookdevWorld::LookdevWorld
LookdevWorld()
Definition
eevee_lookdev.cc:32
blender::eevee::LookdevWorld::sync
bool sync(const LookdevParameters &new_parameters)
Definition
eevee_lookdev.cc:95
blender::eevee::LookdevWorld::~LookdevWorld
~LookdevWorld()
Definition
eevee_lookdev.cc:89
blender::eevee::LookdevWorld::world_get
::World * world_get()
Definition
eevee_lookdev.hh:87
blender::eevee::LookdevWorld::intensity_get
float intensity_get() const
Definition
eevee_lookdev.hh:102
world
World world
Definition
deg_eval_copy_on_write.cc:100
draw_manager.hh
draw_pass.hh
blender::bke::AttrDomain::Instance
@ Instance
blender::eevee
Definition
eevee_ambient_occlusion.cc:29
Image
Definition
DNA_image_types.h:128
Material
Definition
DNA_material_types.h:164
View3D
Definition
DNA_view3d_types.h:290
World
Definition
DNA_world_types.h:26
bNodeSocketValueFloat
Definition
DNA_node_types.h:979
bNode
Definition
DNA_node_types.h:415
blender::VecBase< float, 3 >
blender::draw::ResourceHandle
Definition
draw_handle.hh:30
blender::eevee::LookdevParameters
Definition
eevee_lookdev.hh:48
blender::eevee::LookdevParameters::show_scene_world
bool show_scene_world
Definition
eevee_lookdev.hh:54
blender::eevee::LookdevParameters::operator==
bool operator==(const LookdevParameters &other) const
Definition
eevee_lookdev.cc:405
blender::eevee::LookdevParameters::background_opacity
float background_opacity
Definition
eevee_lookdev.hh:51
blender::eevee::LookdevParameters::hdri
std::string hdri
Definition
eevee_lookdev.hh:49
blender::eevee::LookdevParameters::intensity
float intensity
Definition
eevee_lookdev.hh:52
blender::eevee::LookdevParameters::blur
float blur
Definition
eevee_lookdev.hh:53
blender::eevee::LookdevParameters::operator!=
bool operator!=(const LookdevParameters &other) const
Definition
eevee_lookdev.cc:412
blender::eevee::LookdevParameters::LookdevParameters
LookdevParameters()
blender::eevee::LookdevParameters::rot_z
float rot_z
Definition
eevee_lookdev.hh:50
rcti
Definition
DNA_vec_types.h:68
Generated on Fri Apr 3 2026 06:33:18 for Blender by
doxygen
1.11.0