diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-03 18:32:26 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-03 18:32:26 +0400 |
commit | e02b23b81ab05579c0ee11ee3a1acb283643e528 (patch) | |
tree | 59b14c01bcb4c274d57c89a42e5a5d80c41ff06d /source/blender/render | |
parent | 615fe0295fe13c229d7376b02a50ac110b636c47 (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.h | 6 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 11 |
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 */ |