Blender
V4.5
source
blender
draw
engines
eevee
eevee_view.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2021 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
16
17
#pragma once
18
19
#include "
DRW_render.hh
"
20
21
#include "
eevee_camera.hh
"
22
#include "
eevee_depth_of_field.hh
"
23
#include "
eevee_pipeline.hh
"
24
#include "
eevee_renderbuffers.hh
"
25
#include "
eevee_shader.hh
"
26
#include "
eevee_velocity.hh
"
27
28
namespace
blender::eevee
{
29
30
class
Instance
;
31
32
/* -------------------------------------------------------------------- */
37
38
class
ShadingView
{
39
private
:
40
Instance
&inst_;
42
const
char
*name_;
44
const
float4x4
&face_matrix_;
45
47
RayTraceBuffer
rt_buffer_opaque_;
48
RayTraceBuffer
rt_buffer_refract_;
49
DepthOfFieldBuffer
dof_buffer_;
50
51
Framebuffer
prepass_fb_ = {
"prepass_fb_"
};
52
Framebuffer
combined_fb_ = {
"combined_fb_"
};
53
Framebuffer
gbuffer_fb_ = {
"gbuffer_fb_"
};
54
Framebuffer
transparent_fb_ = {
"transparent"
};
55
TextureFromPool
postfx_tx_;
56
58
View
main_view_ = {
"main_view"
};
61
View
jitter_view_ = {
"jitter_view"
};
63
View
render_view_;
64
66
int2
extent_ = {-1, -1};
67
68
bool
is_enabled_ =
false
;
69
70
public
:
71
ShadingView
(
Instance
&inst,
const
char
*name,
const
float4x4
&face_matrix)
72
: inst_(inst), name_(name), face_matrix_(face_matrix), render_view_(name){};
73
74
~ShadingView
(){};
75
76
void
init
();
77
78
void
sync
();
79
80
void
render
();
81
82
private
:
83
void
render_transparent_pass(
RenderBuffers
&rbufs);
84
85
GPUTexture *render_postfx(GPUTexture *input_tx);
86
87
void
update_view();
88
};
89
91
92
/* -------------------------------------------------------------------- */
99
100
class
MainView
{
101
private
:
102
/* WORKAROUND: Defining this as an array does not seems to work on GCC < 9.4.
103
* It tries to use the copy constructor and fails because ShadingView is non-copyable and
104
* non-movable. */
105
ShadingView
shading_views_0;
106
ShadingView
shading_views_1;
107
ShadingView
shading_views_2;
108
ShadingView
shading_views_3;
109
ShadingView
shading_views_4;
110
ShadingView
shading_views_5;
111
#define shading_views_ (&shading_views_0)
112
113
public
:
114
MainView
(
Instance
&inst)
115
: shading_views_0(inst,
"posX_view"
,
cubeface_mat
(0)),
116
shading_views_1(inst,
"negX_view"
,
cubeface_mat
(1)),
117
shading_views_2(inst,
"posY_view"
,
cubeface_mat
(2)),
118
shading_views_3(inst,
"negY_view"
,
cubeface_mat
(3)),
119
shading_views_4(inst,
"posZ_view"
,
cubeface_mat
(4)),
120
shading_views_5(inst,
"negZ_view"
,
cubeface_mat
(5))
121
{
122
}
123
124
void
init
()
125
{
126
for
(
auto
i
:
IndexRange
(6)) {
127
shading_views_
[
i
].init();
128
}
129
}
130
131
void
sync
()
132
{
133
for
(
auto
i
:
IndexRange
(6)) {
134
shading_views_
[
i
].sync();
135
}
136
}
137
138
void
render
()
139
{
140
for
(
auto
i
:
IndexRange
(6)) {
141
shading_views_
[
i
].render();
142
}
143
}
144
145
#undef shading_views_
146
};
147
149
150
/* -------------------------------------------------------------------- */
155
156
class
CaptureView
{
157
private
:
158
Instance
&inst_;
159
Framebuffer
combined_fb_ = {
"Capture.Combined"
};
160
Framebuffer
gbuffer_fb_ = {
"Capture.Gbuffer"
};
161
162
public
:
163
CaptureView
(
Instance
&inst) : inst_(inst) {}
164
void
render_world
();
165
void
render_probes
();
166
};
167
169
170
/* -------------------------------------------------------------------- */
175
176
class
LookdevView
{
177
private
:
178
Instance
&inst_;
179
180
View
view_ = {
"Lookdev.View"
};
181
182
public
:
183
LookdevView
(
Instance
&inst) : inst_(inst) {}
184
void
render
();
185
};
186
188
189
}
// namespace blender::eevee
DRW_render.hh
blender::IndexRange
Definition
BLI_index_range.hh:50
blender::draw::Framebuffer
Definition
DRW_gpu_wrapper.hh:1199
blender::draw::TextureFromPool
Definition
DRW_gpu_wrapper.hh:1066
blender::draw::View
Definition
draw_view.hh:37
blender::eevee::CaptureView::CaptureView
CaptureView(Instance &inst)
Definition
eevee_view.hh:163
blender::eevee::CaptureView::render_probes
void render_probes()
Definition
eevee_view.cc:323
blender::eevee::CaptureView::render_world
void render_world()
Definition
eevee_view.cc:290
blender::eevee::Instance
A running instance of the engine.
Definition
eevee_instance.hh:75
blender::eevee::LookdevView::LookdevView
LookdevView(Instance &inst)
Definition
eevee_view.hh:183
blender::eevee::LookdevView::render
void render()
Definition
eevee_view.cc:392
blender::eevee::MainView::MainView
MainView(Instance &inst)
Definition
eevee_view.hh:114
blender::eevee::MainView::init
void init()
Definition
eevee_view.hh:124
blender::eevee::MainView::sync
void sync()
Definition
eevee_view.hh:131
blender::eevee::MainView::render
void render()
Definition
eevee_view.hh:138
blender::eevee::RenderBuffers
Definition
eevee_renderbuffers.hh:23
blender::eevee::ShadingView
Definition
eevee_view.hh:38
blender::eevee::ShadingView::~ShadingView
~ShadingView()
Definition
eevee_view.hh:74
blender::eevee::ShadingView::init
void init()
Definition
eevee_view.cc:32
blender::eevee::ShadingView::render
void render()
Definition
eevee_view.cc:76
blender::eevee::ShadingView::sync
void sync()
Definition
eevee_view.cc:34
blender::eevee::ShadingView::ShadingView
ShadingView(Instance &inst, const char *name, const float4x4 &face_matrix)
Definition
eevee_view.hh:71
eevee_camera.hh
eevee_depth_of_field.hh
eevee_pipeline.hh
eevee_renderbuffers.hh
eevee_shader.hh
eevee_velocity.hh
shading_views_
#define shading_views_
Definition
eevee_view.hh:111
blender::eevee
Definition
eevee_ambient_occlusion.cc:29
blender::eevee::cubeface_mat
float4x4 cubeface_mat(int face)
Definition
eevee_camera.hh:22
blender::float4x4
MatBase< float, 4, 4 > float4x4
Definition
BLI_math_matrix_types.hh:1012
blender::int2
VecBase< int32_t, 2 > int2
Definition
BLI_math_vector_types.hh:601
blender::eevee::DepthOfFieldBuffer
Definition
eevee_depth_of_field.hh:32
blender::eevee::RayTraceBuffer
Definition
eevee_raytrace.hh:33
i
i
Definition
text_draw.cc:230
Generated on
for Blender by
doxygen
1.16.1