[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21496] branches/soc-2009-yukishiro/source /blender: add lightenv node exec and add output and file output node preview
Jingyuan Huang
jingyuan.huang at gmail.com
Fri Jul 10 19:06:58 CEST 2009
Revision: 21496
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21496
Author: yukishiro
Date: 2009-07-10 19:06:58 +0200 (Fri, 10 Jul 2009)
Log Message:
-----------
add lightenv node exec and add output and file output node preview
Modified Paths:
--------------
branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h
branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_node.h
branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
branches/soc-2009-yukishiro/source/blender/editors/space_node/drawnode.c
branches/soc-2009-yukishiro/source/blender/nodes/CMakeLists.txt
branches/soc-2009-yukishiro/source/blender/nodes/SConscript
branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_lightenv.c
branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_output.c
branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_outputFile.c
branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_util.h
Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_lightenv.h 2009-07-10 17:06:58 UTC (rev 21496)
@@ -41,7 +41,7 @@
void init_def_lightenv(void);
void free_lightenv(struct LightEnv *env);
struct LightEnv* add_lightenv(char *name);
-void save_lightenv(struct LightEnv *env, char *image_name);
+void save_lightenv(struct LightEnv *env, char *image_name, int imtype);
void update_light_func(struct LightEnv *env);
Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_node.h 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/BKE_node.h 2009-07-10 17:06:58 UTC (rev 21496)
@@ -88,7 +88,7 @@
void (*copystoragefunc)(struct bNode *, struct bNode *);
/* for use with dynamic typedefs */
- ID *id;
+ struct ID *id;
void *pynode; /* holds pointer to python script */
void *pydict; /* holds pointer to python script dictionary (scope)*/
Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -37,9 +37,11 @@
#include "BKE_blender.h"
#include "BKE_displist.h"
#include "BKE_global.h"
+//#include "BKE_icons.h"
#include "BKE_image.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_node.h"
#include "DNA_lightenv_types.h"
#include "DNA_world_types.h"
@@ -50,7 +52,25 @@
#include "SH_api.h"
+static int convert_imtype_ftype(int imtype)
+{
+ switch (imtype) {
+ case R_RADHDR:
+ return RADHDR;
+ case R_PNG:
+ return PNG;
+ case R_RAWTGA:
+ return RAWTGA;
+ case R_BMP:
+ return BMP;
+ case R_TARGA:
+ return TGA;
+ default:
+ return JPG;
+ }
+}
+
// TODO: simple function to return value for 3 channels. needs improvement
void def_synthetic(float phi, float theta, float val[3], void *data)
{
@@ -96,11 +116,16 @@
SH_computeLightCoefficients(env);
}
-void save_lightenv(LightEnv *env, char *image_name)
+void save_lightenv(LightEnv *env, char *image_name, int imtype)
{
ImBuf * ibuf= IMB_allocImBuf(env->output_width, env->output_height, 32, IB_rectfloat, 0);
SH_reconstructLightProbe(env, ibuf);
- ibuf->ftype |= RADHDR; // must set to the correct file type
+
+ if (imtype == 0) {
+ ibuf->ftype |= RADHDR; // must set to the correct file type
+ } else {
+ ibuf->ftype |= convert_imtype_ftype(imtype);
+ }
IMB_saveiff(ibuf, image_name, 0);
IMB_freeImBuf(ibuf);
}
Modified: branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -643,7 +643,7 @@
char str[FILE_MAX];
RNA_string_get(op->ptr, "filename", str);
- save_lightenv(env, str);
+ save_lightenv(env, str, 0);
return OPERATOR_FINISHED;
}
Modified: branches/soc-2009-yukishiro/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/space_node/drawnode.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/editors/space_node/drawnode.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -58,6 +58,7 @@
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_library.h"
+#include "BKE_lightenv.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_node.h"
@@ -2473,6 +2474,34 @@
return 20;
}
+static int node_light_buts_output_file(uiBlock *block, bNodeTree *ntree, bNode *node, rctf *butr)
+{
+ if(block) {
+ NodeImageFile *nif= node->storage;
+ uiBut *bt;
+ short x= (short)butr->xmin;
+ short y= (short)butr->ymin;
+ short w= (short)butr->xmax - butr->xmin;
+ char str[320];
+
+ node_imagetype_string(str);
+
+ bt = uiDefIconBut(block, BUT, B_NODE_SETIMAGE, ICON_FILESEL,
+ x, y+60, 20, 20,
+ 0, 0, 0, 0, 0, "Open Fileselect to select image");
+ uiButSetFunc(bt, node_set_image_cb, ntree, node);
+
+ uiDefBut(block, TEX, B_NOP, "",
+ x+20, y+60, w-20, 20,
+ nif->name, 0.0f, 240.0f, 0, 0, "");
+
+ uiDefButS(block, MENU, B_NOP, str,
+ x, y+40, w, 20,
+ &nif->imtype, 0.0f, 1.0f, 0, 0, "");
+ }
+ return 80;
+}
+
static void node_light_set_butfunc(bNodeType *ntype)
{
switch(ntype->type) {
@@ -2483,10 +2512,12 @@
ntype->butfunc= node_light_buts_image;
break;
case LGT_NODE_OUTPUT_FILE:
+ ntype->butfunc= node_light_buts_output_file;
break;
}
}
+
/* ******* init draw callbacks for all tree types, only called in usiblender.c, once ************* */
void ED_init_node_butfuncs(void)
Modified: branches/soc-2009-yukishiro/source/blender/nodes/CMakeLists.txt
===================================================================
--- branches/soc-2009-yukishiro/source/blender/nodes/CMakeLists.txt 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/nodes/CMakeLists.txt 2009-07-10 17:06:58 UTC (rev 21496)
@@ -28,7 +28,7 @@
SET(INC
. ../../../intern/guardedalloc ../editors/include ../blenlib ../makesdna
../render/extern/include ../../../intern/decimation/extern
- ../imbuf ../avi ../../../intern/elbeem/extern
+ ../imbuf ../avi ../../../intern/elbeem/extern ../sh
../../../intern/iksolver/extern ../blenloader ../quicktime
../blenkernel ../../../extern/glew/include ../gpu
${SDL_INC}
Modified: branches/soc-2009-yukishiro/source/blender/nodes/SConscript
===================================================================
--- branches/soc-2009-yukishiro/source/blender/nodes/SConscript 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/nodes/SConscript 2009-07-10 17:06:58 UTC (rev 21496)
@@ -11,7 +11,7 @@
incs += '#/intern/guardedalloc ../editors/include ../blenlib ../makesdna'
incs += ' ../render/extern/include '
incs += ' ../imbuf ../avi '
-incs += ' ../blenloader'
+incs += ' ../blenloader ../sh'
incs += ' ../blenkernel ../renderconverter '
incs += ' ../gpu #/extern/glew/include '
Modified: branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_lightenv.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_lightenv.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_lightenv.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -36,16 +36,22 @@
static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
{
LightCallData * lcd = (LightCallData *)data;
- LightEnv * env = (LightEnv *)node->id;
+ LightEnv * env;
bNodePreview *preview;
+ env = (LightEnv *)node->id;
+ if (env == NULL) env = lcd->env;
+
+ /* set output */
+ out[0]->data = env;
+
+ /* preview */
if(!(node->typeinfo->flag & NODE_PREVIEW))
return;
init_preview(node);
preview = node->preview;
- if (env == NULL) env = lcd->env;
SH_lightProbePreview(env, preview->xsize, preview->ysize,
0, 0, preview->xsize, preview->ysize, preview->rect);
}
Modified: branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_output.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_output.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_output.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -30,12 +30,27 @@
#include "../LGT_util.h"
static bNodeSocketType inputs[]= {
- { SOCK_RGBA, 1, "Color", 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
- { -1, 0, "" }
+ {SOCK_RGBA, 1, "Color",0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f},
+ {-1, 0, ""}
};
static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
{
+ LightEnv * env;
+ bNodePreview *preview;
+
+ if (in[0]->data) {
+ env = (LightEnv*)in[0]->data;
+
+ /* preview */
+ if(!(node->typeinfo->flag & NODE_PREVIEW)) return;
+
+ init_preview(node);
+ preview = node->preview;
+
+ SH_lightProbePreview(env, preview->xsize, preview->ysize,
+ 0, 0, preview->xsize, preview->ysize, preview->rect);
+ }
}
bNodeType lgt_node_output= {
Modified: branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_outputFile.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_outputFile.c 2009-07-10 17:05:04 UTC (rev 21495)
+++ branches/soc-2009-yukishiro/source/blender/nodes/intern/LGT_nodes/LGT_outputFile.c 2009-07-10 17:06:58 UTC (rev 21496)
@@ -34,12 +34,71 @@
{-1, 0, ""}
};
+
+// XXX BKE_add_image_extension requires Scene...
+void add_image_extension(char * base, int imtype)
+{
+ char *extension="";
+
+ if(imtype==R_RADHDR) {
+ if(!BLI_testextensie(base, ".hdr"))
+ extension= ".hdr";
+ }
+ else if(imtype==R_PNG) {
+ if(!BLI_testextensie(base, ".png"))
+ extension= ".png";
+ }
+ else if(imtype==R_RAWTGA) {
+ if(!BLI_testextensie(base, ".tga"))
+ extension= ".tga";
+ }
+ else if(imtype==R_BMP) {
+ if(!BLI_testextensie(base, ".bmp"))
+ extension= ".bmp";
+ }
+ else if(imtype==R_TARGA) {
+ if(!BLI_testextensie(base, ".tga"))
+ extension= ".tga";
+ }
+ else {
+ if(!( BLI_testextensie(base, ".jpg") || BLI_testextensie(base, ".jpeg")))
+ extension= ".jpg";
+ }
+
+ strcat(base, extension);
+}
+
static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
{
+ if (in[0]->data) {
+ LightEnv *env = (LightEnv*)in[0]->data;
+ NodeImageFile *nif= node->storage;
+ bNodePreview *preview;
+ char filename[256];
+
+ /* save image */
+ if (!BLI_streq(nif->name, "")) {
+ BLI_strncpy(filename, nif->name, 256);
+ add_image_extension(filename, nif->imtype);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list