[Bf-blender-cvs] [4dee938b517] temp-viewport-compositor-compiler: Merge branch 'viewport-compositor' into temp-viewport-compositor-compiler
Omar Emara
noreply at git.blender.org
Fri Feb 18 09:06:53 CET 2022
Commit: 4dee938b517e03767c33c0c49984dc5b95267ff2
Author: Omar Emara
Date: Fri Feb 18 10:06:35 2022 +0200
Branches: temp-viewport-compositor-compiler
https://developer.blender.org/rB4dee938b517e03767c33c0c49984dc5b95267ff2
Merge branch 'viewport-compositor' into temp-viewport-compositor-compiler
===================================================================
===================================================================
diff --cc source/blender/draw/engines/compositor/compositor_engine.cc
index 8eb570b0809,33f5ff42041..b9d507c46ef
--- a/source/blender/draw/engines/compositor/compositor_engine.cc
+++ b/source/blender/draw/engines/compositor/compositor_engine.cc
@@@ -16,83 -16,10 +16,83 @@@
* Copyright 2021, Blender Foundation.
*/
+ #include "BLT_translation.h"
+
+#include "DNA_scene_types.h"
+
#include "DRW_render.h"
+#include "IMB_colormanagement.h"
+
+#include "NOD_compositor_execute.hh"
+
+#include "GPU_texture.h"
+
- #include "compositor_shader.hh"
-
+namespace blender::viewport_compositor {
+
+class DRWTexturePool : public TexturePool {
+ public:
+ GPUTexture *allocate_texture(int width, int height, eGPUTextureFormat format) override
+ {
+ DrawEngineType *owner = (DrawEngineType *)this;
+ return DRW_texture_pool_query_2d(width, height, format, owner);
+ }
+};
+
+class DRWContext : public Context {
+ public:
+ using Context::Context;
+ GPUTexture *get_viewport_texture() override
+ {
+ return DRW_viewport_texture_list_get()->color;
+ }
+
+ GPUTexture *get_pass_texture(int view_layer, eScenePassType pass_type) override
+ {
+ return DRW_render_pass_find(DRW_context_state_get()->scene, view_layer, pass_type)->pass_tx;
+ }
+};
+
+/* Get the scene which includes the compositor node tree. */
+static const Scene *get_scene()
+{
+ return DRW_context_state_get()->scene;
+}
+
+/* It is sufficient to check for the scene node tree because the engine will not be enabled when
+ * the viewport shading option is disabled. */
+static bool is_compositor_enabled()
+{
+ const Scene *scene = get_scene();
+ if (scene->use_nodes && scene->nodetree) {
+ return true;
+ }
+ return false;
+}
+
+static void draw()
+{
+ if (!is_compositor_enabled()) {
+ return;
+ }
+
+ /* Reset default view. */
+ DRW_view_set_active(nullptr);
+
+ DRWTexturePool texture_pool;
+ DRWContext context(texture_pool);
+ const Scene *scene = get_scene();
+ Evaluator evaluator(context, scene->nodetree);
+ evaluator.evaluate();
+}
+
+} // namespace blender::viewport_compositor
+
+static void compositor_draw(void *UNUSED(data))
+{
+ blender::viewport_compositor::draw();
+}
+
extern "C" {
static const DrawEngineDataSize compositor_data_size = {};
More information about the Bf-blender-cvs
mailing list