diff options
Diffstat (limited to 'source/blender/render/intern/include')
4 files changed, 31 insertions, 26 deletions
diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index 127fbce20eb..b124102f50b 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -55,6 +55,7 @@ struct RenderBuckets; struct ObjectInstanceRen; struct RayObject; struct RayFace; +struct Main; #define TABLEINITSIZE 1024 #define LAMPINITSIZE 256 @@ -170,7 +171,8 @@ struct Render /* shadow counter, detect shadow-reuse for shaders */ int shadowsamplenr[BLENDER_MAX_THREADS]; - /* scene, and its full copy of renderdata and world */ + /* main, scene, and its full copy of renderdata and world */ + struct Main *main; Scene *scene; RenderData r; World wrld; @@ -189,7 +191,8 @@ struct Render ListBase strandsurface; /* use this instead of R.r.cfra */ - float cfra; + float cfra; + float mblur_offs, field_offs; /* render database */ int totvlak, totvert, tothalo, totstrand, totlamp; @@ -234,8 +237,8 @@ struct Render void (*stats_draw)(void *handle, RenderStats *ri); void *sdh; - void (*timecursor)(void *handle, int i); - void *tch; + void (*progress)(void *handle, float i); + void *prh; int (*test_break)(void *handle); void *tbh; @@ -463,6 +466,7 @@ typedef struct VolPrecachePart struct RayObject *tree; struct ShadeInput *shi; struct ObjectInstanceRen *obi; + float viewmat[4][4]; int num; int minx, maxx; int miny, maxy; @@ -476,6 +480,7 @@ typedef struct VolPrecachePart typedef struct VolumePrecache { int res[3]; + float *bbmin, *bbmax; float *data_r; float *data_g; float *data_b; @@ -564,13 +569,6 @@ typedef struct LampRen { /* passes & node shader support: all shadow info for a pixel */ LampShadowSample *shadsamp; - - /* yafray: photonlight params */ - int YF_numphotons, YF_numsearch; - short YF_phdepth, YF_useqmc, YF_bufsize; - float YF_causticblur, YF_ltradius; - float YF_glowint, YF_glowofs; - short YF_glowtype; /* ray optim */ struct RayObject *last_hit[BLENDER_MAX_THREADS]; @@ -591,23 +589,21 @@ typedef struct LampRen { #define R_HALO 2 #define R_SEC_FIELD 4 #define R_LAMPHALO 8 -#define R_GLOB_NOPUNOFLIP 16 -#define R_NEED_TANGENT 32 -#define R_BAKE_TRACE 128 -#define R_BAKING 256 +#define R_NEED_TANGENT 16 +#define R_BAKE_TRACE 32 +#define R_BAKING 64 /* vlakren->flag (vlak = face in dutch) char!!! */ #define R_SMOOTH 1 #define R_HIDDEN 2 /* strand flag, means special handling */ #define R_STRAND 4 -#define R_NOPUNOFLIP 8 -#define R_FULL_OSA 16 -#define R_FACE_SPLIT 32 +#define R_FULL_OSA 8 +#define R_FACE_SPLIT 16 /* Tells render to divide face other way. */ -#define R_DIVIDE_24 64 +#define R_DIVIDE_24 32 /* vertex normals are tangent or view-corrected vector, for hair strands */ -#define R_TANGENT 128 +#define R_TANGENT 64 /* strandbuffer->flag */ #define R_STRAND_BSPLINE 1 diff --git a/source/blender/render/intern/include/renderdatabase.h b/source/blender/render/intern/include/renderdatabase.h index 2a0086b436c..4c80616665d 100644 --- a/source/blender/render/intern/include/renderdatabase.h +++ b/source/blender/render/intern/include/renderdatabase.h @@ -34,6 +34,7 @@ struct Object; struct VlakRen; struct VertRen; struct HaloRen; +struct Main; struct Material; struct Render; struct MCol; @@ -115,7 +116,7 @@ struct MCol *RE_vlakren_get_mcol(struct ObjectRen *obr, VlakRen *ren, int n, cha float *RE_vlakren_get_surfnor(struct ObjectRen *obr, VlakRen *ren, int verify); float *RE_vlakren_get_nmap_tangent(struct ObjectRen *obr, VlakRen *ren, int verify); RadFace **RE_vlakren_get_radface(struct ObjectRen *obr, VlakRen *ren, int verify); -int RE_vlakren_get_normal(struct Render *re, struct ObjectInstanceRen *obi, struct VlakRen *vlr, float *nor); +void RE_vlakren_get_normal(struct Render *re, struct ObjectInstanceRen *obi, struct VlakRen *vlr, float *nor); float *RE_strandren_get_surfnor(struct ObjectRen *obr, struct StrandRen *strand, int verify); float *RE_strandren_get_uv(struct ObjectRen *obr, struct StrandRen *strand, int n, char **name, int verify); @@ -137,7 +138,7 @@ void RE_set_customdata_names(struct ObjectRen *obr, struct CustomData *data); /* convertblender.c */ void init_render_world(Render *re); -void RE_Database_FromScene_Vectors(Render *re, struct Scene *sce, unsigned int lay); +void RE_Database_FromScene_Vectors(Render *re, struct Main *bmain, struct Scene *sce, unsigned int lay); #endif /* RENDERDATABASE_H */ diff --git a/source/blender/render/intern/include/texture.h b/source/blender/render/intern/include/texture.h index 3e6fc8c5677..fb941d1b7f3 100644 --- a/source/blender/render/intern/include/texture.h +++ b/source/blender/render/intern/include/texture.h @@ -40,7 +40,13 @@ if(texres->tr<0.0) texres->tr= 0.0; \ texres->tg= tex->gfac*((texres->tg-0.5)*tex->contrast+tex->bright-0.5); \ if(texres->tg<0.0) texres->tg= 0.0; \ texres->tb= tex->bfac*((texres->tb-0.5)*tex->contrast+tex->bright-0.5); \ -if(texres->tb<0.0) texres->tb= 0.0; +if(texres->tb<0.0) texres->tb= 0.0; \ +if(tex->saturation != 1.0f) { \ + float _hsv[3]; \ + rgb_to_hsv(texres->tr, texres->tg, texres->tb, _hsv, _hsv+1, _hsv+2); \ + _hsv[1] *= tex->saturation; \ + hsv_to_rgb(_hsv[0], _hsv[1], _hsv[2], &texres->tr, &texres->tg, &texres->tb); \ +} \ struct HaloRen; @@ -59,7 +65,7 @@ void do_lamp_tex(LampRen *la, float *lavec, struct ShadeInput *shi, float *colf, void do_volume_tex(struct ShadeInput *shi, float *xyz, int mapto_flag, float *col, float *val); void init_render_textures(Render *re); -void end_render_textures(void); +void end_render_textures(Render *re); void render_realtime_texture(struct ShadeInput *shi, struct Image *ima); diff --git a/source/blender/render/intern/include/volume_precache.h b/source/blender/render/intern/include/volume_precache.h index 73e0a3e0415..3ddf8380241 100644 --- a/source/blender/render/intern/include/volume_precache.h +++ b/source/blender/render/intern/include/volume_precache.h @@ -25,9 +25,11 @@ * * ***** END GPL LICENSE BLOCK ***** */ - + +void global_bounds_obi(Render *re, ObjectInstanceRen *obi, float *bbmin, float *bbmax); +int point_inside_volume_objectinstance(Render *re, ObjectInstanceRen *obi, float *co); + void volume_precache(Render *re); void free_volume_precache(Render *re); -int point_inside_volume_objectinstance(Render *re, ObjectInstanceRen *obi, float *co); #define VOL_MS_TIMESTEP 0.1f |