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>2007-05-04 01:37:52 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2007-05-04 01:37:52 +0400
commit3a8c6c81d84f5ee6b7ae7fb8cfcba65736f08908 (patch)
tree4a2f46b430daa12522db27d465f392f79a6a2e2c /source/blender/blenkernel/intern/material.c
parent4ec6f1b4e4c5fd379559691307ff776bcda8e10f (diff)
Subsurface scattering:
Documentation on the settings, known limitations and implementation info can be found here: http://www.blender.org/development/current-projects/changes-since-243/subsurface-scattering/
Diffstat (limited to 'source/blender/blenkernel/intern/material.c')
-rw-r--r--source/blender/blenkernel/intern/material.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index d33cc7bd1c4..56b8307020a 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -144,6 +144,20 @@ void init_material(Material *ma)
ma->pr_lamp= 3; /* two lamps, is bits */
ma->pr_type= MA_SPHERE;
+ ma->sss_radius[0]= 1.0f;
+ ma->sss_radius[1]= 1.0f;
+ ma->sss_radius[2]= 1.0f;
+ ma->sss_col[0]= 0.8f;
+ ma->sss_col[1]= 0.8f;
+ ma->sss_col[2]= 0.8f;
+ ma->sss_error= 0.05f;
+ ma->sss_scale= 0.1f;
+ ma->sss_ior= 1.3f;
+ ma->sss_colfac= 1.0f;
+ ma->sss_texfac= 0.0f;
+ ma->sss_front= 1.0f;
+ ma->sss_back= 1.0f;
+
ma->mode= MA_TRACEBLE|MA_SHADBUF|MA_SHADOW|MA_RADIO|MA_RAYBIAS|MA_TANGENT_STR;
}
@@ -702,6 +716,33 @@ void end_render_materials(void)
end_render_material(ma);
}
+static int material_in_nodetree(bNodeTree *ntree, Material *mat)
+{
+ bNode *node;
+
+ for(node=ntree->nodes.first; node; node= node->next) {
+ if(node->id && GS(node->id->name)==ID_MA) {
+ if(node->id==(ID*)mat)
+ return 1;
+ }
+ else if(node->type==NODE_GROUP)
+ if(material_in_nodetree((bNodeTree*)node->id, mat))
+ return 1;
+ }
+
+ return 0;
+}
+
+int material_in_material(Material *parmat, Material *mat)
+{
+ if(parmat==mat)
+ return 1;
+ else if(parmat->nodetree && parmat->use_nodes)
+ return material_in_nodetree(parmat->nodetree, mat);
+ else
+ return 0;
+}
+
/* ****************** */
char colname_array[125][20]= {