[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