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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-03 18:32:26 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-03 18:32:26 +0400
commite02b23b81ab05579c0ee11ee3a1acb283643e528 (patch)
tree59b14c01bcb4c274d57c89a42e5a5d80c41ff06d /source/blender/render
parent615fe0295fe13c229d7376b02a50ac110b636c47 (diff)
Render API: shader script node for custom shaders.
* Shader script node added, which stores either a link to a text datablock or file on disk, and has functions to add and remove sockets. * Callback RenderEngine.update_script_node(self, node) added for render engines to compile the shader and update the node with new sockets. Thanks to Thomas, Lukas and Dalai for the implementation.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_engine.h6
-rw-r--r--source/blender/render/intern/source/external_engine.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 2376aeca55e..20024eab633 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -35,6 +35,8 @@
#include "DNA_listBase.h"
#include "RNA_types.h"
+struct bNode;
+struct bNodeTree;
struct Object;
struct Render;
struct RenderEngine;
@@ -75,6 +77,8 @@ typedef struct RenderEngineType {
void (*view_update)(struct RenderEngine *engine, const struct bContext *context);
void (*view_draw)(struct RenderEngine *engine, const struct bContext *context);
+ void (*update_script_node)(struct RenderEngine *engine, struct bNodeTree *ntree, struct bNode *node);
+
/* RNA integration */
ExtensionRNA ext;
} RenderEngineType;
@@ -94,6 +98,8 @@ typedef struct RenderEngine {
char *text;
int resolution_x, resolution_y;
+
+ struct ReportList *reports;
} RenderEngine;
RenderEngine *RE_engine_create(RenderEngineType *type);
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index 94146467145..076cad05c84 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -64,7 +64,7 @@
static RenderEngineType internal_render_type = {
NULL, NULL,
"BLENDER_RENDER", N_("Blender Render"), RE_INTERNAL,
- NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
{NULL, NULL, NULL}
};
@@ -73,7 +73,7 @@ static RenderEngineType internal_render_type = {
static RenderEngineType internal_game_type = {
NULL, NULL,
"BLENDER_GAME", N_("Blender Game"), RE_INTERNAL | RE_GAME,
- NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
{NULL, NULL, NULL}
};
@@ -292,7 +292,12 @@ void RE_engine_update_progress(RenderEngine *engine, float progress)
void RE_engine_report(RenderEngine *engine, int type, const char *msg)
{
- BKE_report(engine->re->reports, type, msg);
+ Render *re = engine->re;
+
+ if (re)
+ BKE_report(engine->re->reports, type, msg);
+ else if(engine->reports)
+ BKE_report(engine->reports, type, msg);
}
/* Render */