[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28287] branches/render25: Render Branch: SSS scale can now be textured.
Brecht Van Lommel
brecht at blender.org
Mon Apr 19 19:53:01 CEST 2010
Revision: 28287
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28287
Author: blendix
Date: 2010-04-19 19:53:01 +0200 (Mon, 19 Apr 2010)
Log Message:
-----------
Render Branch: SSS scale can now be textured.
Modified Paths:
--------------
branches/render25/release/scripts/ui/properties_texture.py
branches/render25/source/blender/blenkernel/BKE_blender.h
branches/render25/source/blender/blenkernel/intern/texture.c
branches/render25/source/blender/blenloader/intern/readfile.c
branches/render25/source/blender/makesdna/DNA_material_types.h
branches/render25/source/blender/makesdna/DNA_texture_types.h
branches/render25/source/blender/makesrna/intern/rna_material.c
branches/render25/source/blender/render/extern/include/RE_shader_ext.h
branches/render25/source/blender/render/intern/include/sss.h
branches/render25/source/blender/render/intern/source/shadeinput.c
branches/render25/source/blender/render/intern/source/shadeoutput.c
branches/render25/source/blender/render/intern/source/sss.c
branches/render25/source/blender/render/intern/source/texture_stack.c
Modified: branches/render25/release/scripts/ui/properties_texture.py
===================================================================
--- branches/render25/release/scripts/ui/properties_texture.py 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/release/scripts/ui/properties_texture.py 2010-04-19 17:53:01 UTC (rev 28287)
@@ -370,6 +370,7 @@
factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit")
factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror")
factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror")
+ factor_but(col, tex.map_sss_scale, "map_sss_scale", "sss_scale_factor", "SSS Scale")
col.label(text="Geometry:")
factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal")
Modified: branches/render25/source/blender/blenkernel/BKE_blender.h
===================================================================
--- branches/render25/source/blender/blenkernel/BKE_blender.h 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/blenkernel/BKE_blender.h 2010-04-19 17:53:01 UTC (rev 28287)
@@ -45,7 +45,7 @@
struct Main;
#define BLENDER_VERSION 252
-#define BLENDER_SUBVERSION 12
+#define BLENDER_SUBVERSION 13
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: branches/render25/source/blender/blenkernel/intern/texture.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/texture.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/blenkernel/intern/texture.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -563,6 +563,7 @@
mtex->raymirrfac= 1.0f;
mtex->translfac= 1.0f;
mtex->ambfac= 1.0f;
+ mtex->sssscalefac= 1.0f;
mtex->colemitfac= 1.0f;
mtex->colreflfac= 1.0f;
mtex->coltransfac= 1.0f;
Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/blenloader/intern/readfile.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -6513,6 +6513,17 @@
tex->iuser.flag |= IMA_USECACHE;
}
+static void do_version_sss_scale_250(FileData *fd, Library *lib, Main *main)
+{
+ Material *ma;
+ int a;
+
+ for(ma= main->mat.first; ma; ma=ma->id.next)
+ for(a=0; a<MAX_MTEX; a++)
+ if(ma->mtex && ma->mtex[a])
+ ma->mtex[a]->sssscalefac= 1.0f;
+}
+
static void do_version_constraints_radians_degrees_250(ListBase *lb)
{
bConstraint *con;
@@ -10838,6 +10849,8 @@
do_version_subdivision_250(fd, lib, main);
if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 12))
do_version_image_cache_250(fd, lib, main);
+ if (main->versionfile < 252 || (main->versionfile == 252 && main->subversionfile < 13))
+ do_version_sss_scale_250(fd, lib, main);
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
Modified: branches/render25/source/blender/makesdna/DNA_material_types.h
===================================================================
--- branches/render25/source/blender/makesdna/DNA_material_types.h 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/makesdna/DNA_material_types.h 2010-04-19 17:53:01 UTC (rev 28287)
@@ -320,6 +320,7 @@
#define MAP_DISPLACE 4096
#define MAP_WARP 8192
#define MAP_LAYER 16384 /* unused */
+#define MAP_SSS_SCALE 32768
/* volume mapto - reuse definitions for now - a bit naughty! */
#define MAP_DENSITY 128
Modified: branches/render25/source/blender/makesdna/DNA_texture_types.h
===================================================================
--- branches/render25/source/blender/makesdna/DNA_texture_types.h 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/makesdna/DNA_texture_types.h 2010-04-19 17:53:01 UTC (rev 28287)
@@ -57,7 +57,7 @@
short texflag, colormodel, pmapto, pmaptoneg;
short normapspace, which_output;
- char brush_map_mode, pad[7];
+ char brush_map_mode, pad[3];
float r, g, b, k;
float def_var, rt;
@@ -70,7 +70,7 @@
float difffac, specfac, emitfac, hardfac;
float raymirrfac, translfac, ambfac;
float colemitfac, colreflfac, coltransfac;
- float densfac, scatterfac, reflfac;
+ float densfac, scatterfac, reflfac, sssscalefac;
/* particles */
float timefac, lengthfac, clumpfac;
Modified: branches/render25/source/blender/makesrna/intern/rna_material.c
===================================================================
--- branches/render25/source/blender/makesrna/intern/rna_material.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/makesrna/intern/rna_material.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -421,6 +421,11 @@
RNA_def_property_ui_text(prop, "Warp", "Let the texture warp texture coordinates of next channels");
RNA_def_property_update(prop, 0, "rna_Material_update");
+ prop= RNA_def_property(srna, "map_sss_scale", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_SSS_SCALE);
+ RNA_def_property_ui_text(prop, "SSS Scale", "Causes the texture to affect the value subsurface scattering scale");
+ RNA_def_property_update(prop, 0, "rna_Material_update");
+
prop= RNA_def_property(srna, "x_mapping", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "projx");
RNA_def_property_enum_items(prop, prop_x_mapping_items);
@@ -611,6 +616,12 @@
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Reflection Factor", "Amount texture affects brightness of out-scattered light");
RNA_def_property_update(prop, 0, "rna_Material_update");
+
+ prop= RNA_def_property(srna, "sss_scale_factor", PROP_FLOAT, PROP_UNSIGNED);
+ RNA_def_property_float_sdna(prop, NULL, "sssscalefac");
+ RNA_def_property_ui_range(prop, 0, 1, 10, 3);
+ RNA_def_property_ui_text(prop, "SSS Scale Factor", "Multiplier for subsurface scattering scale");
+ RNA_def_property_update(prop, 0, "rna_Material_update");
/* end volume material */
Modified: branches/render25/source/blender/render/extern/include/RE_shader_ext.h
===================================================================
--- branches/render25/source/blender/render/extern/include/RE_shader_ext.h 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/render/extern/include/RE_shader_ext.h 2010-04-19 17:53:01 UTC (rev 28287)
@@ -131,6 +131,7 @@
/* individual copies: */
int har; /* hardness */
+ float sss_scale;
float vcol[4];
float refcol[4];
Modified: branches/render25/source/blender/render/intern/include/sss.h
===================================================================
--- branches/render25/source/blender/render/intern/include/sss.h 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/render/intern/include/sss.h 2010-04-19 17:53:01 UTC (rev 28287)
@@ -47,7 +47,7 @@
/* Sample SSS at a give point */
-int sss_sample(struct Render *re, struct Material *mat, float *co, float *col);
+int sss_sample(struct Render *re, struct Material *mat, float *co, float *col, float scale);
/* Generic multiple scattering API */
@@ -64,7 +64,7 @@
ScatterTree *scatter_tree_new(ScatterSettings *ss[3], float scale, float error,
float (*co)[3], float (*color)[3], float *area, int totpoint);
void scatter_tree_build(ScatterTree *tree);
-void scatter_tree_sample(ScatterTree *tree, float *co, float *color);
+void scatter_tree_sample(ScatterTree *tree, float *co, float *color, float scale);
void scatter_tree_free(ScatterTree *tree);
#endif /*SSS_H*/
Modified: branches/render25/source/blender/render/intern/source/shadeinput.c
===================================================================
--- branches/render25/source/blender/render/intern/source/shadeinput.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/render/intern/source/shadeinput.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -86,6 +86,7 @@
/* note, keep this synced with render_types.h */
memcpy(&shi->material.r, &shi->material.mat->r, 21*sizeof(float));
shi->material.har= shi->material.mat->har;
+ shi->material.sss_scale= shi->material.mat->sss_scale;
}
/* **************************************************************************** */
Modified: branches/render25/source/blender/render/intern/source/shadeoutput.c
===================================================================
--- branches/render25/source/blender/render/intern/source/shadeoutput.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/render/intern/source/shadeoutput.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -768,8 +768,9 @@
if((ma->sss_flag & MA_DIFF_SSS) && (passflag & (SCE_PASS_COMBINED|SCE_PASS_DIFFUSE))) {
float sss[3], col[3], div, texfac= ma->sss_texfac;
+ float scale= shi->material.sss_scale;
- if(!sss_sample(re, ma, shi->geometry.co, sss)) {
+ if(!sss_sample(re, ma, shi->geometry.co, sss, scale)) {
/* preprocess stage */
copy_v3_v3(shr->sss, shr->diff);
shr->sss[3]= shr->alpha; // TODO NSHAD solve SSS + alpha
Modified: branches/render25/source/blender/render/intern/source/sss.c
===================================================================
--- branches/render25/source/blender/render/intern/source/sss.c 2010-04-19 15:20:33 UTC (rev 28286)
+++ branches/render25/source/blender/render/intern/source/sss.c 2010-04-19 17:53:01 UTC (rev 28287)
@@ -150,6 +150,8 @@
};
typedef struct ScatterResult {
+ float scalefac;
+
float rad[3];
float backrad[3];
float rdsum[3];
@@ -345,7 +347,12 @@
static void add_radiance(ScatterTree *tree, float *frontrad, float *backrad, float area, float backarea, float rr, ScatterResult *result)
{
float rd[3], frontrd[3], backrd[3];
+ float scalefac= result->scalefac;
+ rr *= scalefac;
+ area *= scalefac;
+ backarea *= scalefac;
+
approximate_Rd_rgb(tree->ss, rr, rd);
if(frontrad && area) {
@@ -378,7 +385,7 @@
static void traverse_octree(ScatterTree *tree, ScatterNode *node, float *co, int self, ScatterResult *result)
{
- float sub[3], dist;
+ float dist;
int i, index = 0;
if(node->totpoint > 0) {
@@ -386,8 +393,7 @@
for(i=0; i<node->totpoint; i++) {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list