[Bf-blender-cvs] [da94a70] viewport_experiments: Add initial compositing node API, compositing code already becomes too redundant and hard for prototyping. This will make things easier.
Antony Riakiotakis
noreply at git.blender.org
Fri Jan 9 16:49:15 CET 2015
Commit: da94a7005aa125d4b40809d5394f0bf8aaeb5052
Author: Antony Riakiotakis
Date: Fri Jan 9 16:48:59 2015 +0100
Branches: viewport_experiments
https://developer.blender.org/rBda94a7005aa125d4b40809d5394f0bf8aaeb5052
Add initial compositing node API, compositing code already becomes too
redundant and hard for prototyping. This will make things easier.
===================================================================
M source/blender/gpu/intern/gpu_compositing.c
M source/blender/gpu/intern/gpu_extensions.c
===================================================================
diff --git a/source/blender/gpu/intern/gpu_compositing.c b/source/blender/gpu/intern/gpu_compositing.c
index bc530d7..e46183f 100644
--- a/source/blender/gpu/intern/gpu_compositing.c
+++ b/source/blender/gpu/intern/gpu_compositing.c
@@ -35,6 +35,7 @@
#include "BLI_rect.h"
#include "BLI_math.h"
#include "BLI_rand.h"
+#include "BLI_listbase.h"
#include "DNA_vec_types.h"
#include "DNA_view3d_types.h"
@@ -109,6 +110,53 @@ struct GPUFX {
};
+/* compositing link between compostiting stages, */
+typedef struct GPUCompositingLink {
+ GPUTexture *texture;
+ char *inslot;
+ char *outslot;
+ int flag;
+} GPUCompositingLink;
+
+/* compositing node - it's different than material nodes because outputs are buffers - inputs can be
+ * uniforms or other beasts inputs*/
+typedef struct GPUCompositingNode {
+ GPUShader *shader;
+ int w, h;
+ ListBase inputs;
+ ListBase outputs;
+} GPUCompositingNode;
+
+
+static GPUCompositingNode *gpu_compositing_node_new(GPUShader *shader, int w, int h)
+{
+ GPUCompositingNode *node = MEM_callocN(sizeof(GPUCompositingNode), "GPUCompositingNode");
+ node->w = w;
+ node->h = h;
+ node->shader = shader;
+
+ return node;
+}
+
+static void gpu_compositing_nodes_link(GPUCompositingNode *nodei, GPUCompositingNode *nodeo, char *input, char *output)
+{
+ GPUCompositingLink *link = MEM_callocN(sizeof(GPUCompositingLink), "GPUCompositingNode");
+
+ link->inslot = input;
+ link->outslot = output;
+
+ BLI_addhead(&nodei->inputs, BLI_genericNodeN(link));
+ BLI_addhead(&nodeo->outputs, BLI_genericNodeN(link));
+}
+
+
+static void gpu_compositing_node_free(GPUCompositingNode *node)
+{
+ BLI_freelistN(&node->inputs);
+ BLI_freelistN(&node->outputs);
+}
+
+
/* generate a new FX compositor */
GPUFX *GPU_create_fx_compositor(void)
{
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c
index 9d559f8..676b615 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -1390,6 +1390,7 @@ struct GPUShader {
GLhandleARB fragment; /* handle for fragment shader */
GLhandleARB lib; /* handle for libment shader */
int totattrib; /* total number of attributes */
+ int uniforms; /* required uniforms */
};
static void shader_print_errors(const char *task, char *log, const char **code, int totcode)
More information about the Bf-blender-cvs
mailing list