Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-05-02 10:22:14 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-05-02 10:35:45 +0300
commit8ece0816d9ddf25c4fc695bf244ed2e261433ee2 (patch)
tree087bf6a6a1890609801bb71aecd100856c7ea44a /source/blender/draw/engines/eevee_next/eevee_instance.hh
parentf0f44fd92f1684552ee0275d14bb6dd72405c8fd (diff)
EEVEE: Rewrite: Implement nodetree support with every geometry types
This commit introduce back support for all geometry types and all nodetree support. Only the forward shading pipeline is implemented for now. Vertex Displacement is automatically enabled for now. Lighting & Shading is placeholder. Related Task: T93220 # Conflicts: # source/blender/draw/engines/eevee_next/eevee_engine.cc # source/blender/gpu/CMakeLists.txt
Diffstat (limited to 'source/blender/draw/engines/eevee_next/eevee_instance.hh')
-rw-r--r--source/blender/draw/engines/eevee_next/eevee_instance.hh94
1 files changed, 94 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee_next/eevee_instance.hh b/source/blender/draw/engines/eevee_next/eevee_instance.hh
new file mode 100644
index 00000000000..0f085b0952a
--- /dev/null
+++ b/source/blender/draw/engines/eevee_next/eevee_instance.hh
@@ -0,0 +1,94 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2021 Blender Foundation.
+ */
+
+/** \file
+ * \ingroup eevee
+ *
+ * An renderer instance that contains all data to render a full frame.
+ */
+
+#pragma once
+
+#include "BKE_object.h"
+#include "DEG_depsgraph.h"
+#include "DNA_lightprobe_types.h"
+#include "DRW_render.h"
+
+#include "eevee_material.hh"
+#include "eevee_pipeline.hh"
+#include "eevee_shader.hh"
+#include "eevee_sync.hh"
+#include "eevee_view.hh"
+#include "eevee_world.hh"
+
+namespace blender::eevee {
+
+/**
+ * \class Instance
+ * \brief A running instance of the engine.
+ */
+class Instance {
+ public:
+ ShaderModule &shaders;
+ SyncModule sync;
+ MaterialModule materials;
+ PipelineModule pipelines;
+ MainView main_view;
+ World world;
+
+ /** Input data. */
+ Depsgraph *depsgraph;
+ /** Evaluated IDs. */
+ Scene *scene;
+ ViewLayer *view_layer;
+ /** Only available when rendering for final render. */
+ const RenderLayer *render_layer;
+ RenderEngine *render;
+ /** Only available when rendering for viewport. */
+ const DRWView *drw_view;
+ const View3D *v3d;
+ const RegionView3D *rv3d;
+
+ /* Info string displayed at the top of the render / viewport. */
+ char info[64];
+
+ public:
+ Instance()
+ : shaders(*ShaderModule::module_get()),
+ sync(*this),
+ materials(*this),
+ pipelines(*this),
+ main_view(*this),
+ world(*this){};
+ ~Instance(){};
+
+ void init(const int2 &output_res,
+ const rcti *output_rect,
+ RenderEngine *render,
+ Depsgraph *depsgraph,
+ const LightProbe *light_probe_ = nullptr,
+ Object *camera_object = nullptr,
+ const RenderLayer *render_layer = nullptr,
+ const DRWView *drw_view = nullptr,
+ const View3D *v3d = nullptr,
+ const RegionView3D *rv3d = nullptr);
+
+ void begin_sync(void);
+ void object_sync(Object *ob);
+ void end_sync(void);
+
+ void render_sync(void);
+ void render_frame(RenderLayer *render_layer, const char *view_name);
+
+ void draw_viewport(DefaultFramebufferList *dfbl);
+
+ private:
+ void render_sample(void);
+
+ void mesh_sync(Object *ob, ObjectHandle &ob_handle);
+
+ void update_eval_members(void);
+};
+
+} // namespace blender::eevee