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
path: root/source
diff options
context:
space:
mode:
authorIRIE Shinsuke <irieshinsuke@yahoo.co.jp>2014-02-11 12:06:21 +0400
committerIRIE Shinsuke <irieshinsuke@yahoo.co.jp>2014-02-11 12:06:21 +0400
commite2f9afbaabbdecc87c77261e40650da426baf168 (patch)
tree5cc11b5f91f48177da7b2154416698474e551f6e /source
parent2038eb10d069352cefa83abc6a6c6071807970ae (diff)
Blender Internal: Modify material property "Cast Buffer Shadows" to affect ray shadows also, and rename it to "Cast Shadows".
This allows us to make materials that don't cast ray shadows. Turning off this property can reduce the rendering time slightly. Note: RNA path is changed to "use_cast_shadows" as well. The older path "use_cast_buffer_shadows" still can be used as its alias, but it will be removed after updating some addons. Reviewed By: brecht Differential Revision: https://developer.blender.org/D272
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/material.c2
-rw-r--r--source/blender/blenloader/intern/versioning_legacy.c2
-rw-r--r--source/blender/editors/render/render_preview.c2
-rw-r--r--source/blender/editors/space_view3d/drawobject.c2
-rw-r--r--source/blender/makesdna/DNA_material_types.h2
-rw-r--r--source/blender/makesrna/intern/rna_material.c12
-rw-r--r--source/blender/render/intern/raytrace/rayobject.cpp2
-rw-r--r--source/blender/render/intern/source/convertblender.c2
-rw-r--r--source/blender/render/intern/source/shadbuf.c4
-rw-r--r--source/blender/render/intern/source/strand.c2
-rw-r--r--source/blender/render/intern/source/zbuf.c6
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp2
12 files changed, 23 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 5f6331315f8..40257141ffa 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -202,7 +202,7 @@ void init_material(Material *ma)
ma->game.alpha_blend = 0;
ma->game.face_orientation = 0;
- ma->mode = MA_TRACEBLE | MA_SHADBUF | MA_SHADOW | MA_RAYBIAS | MA_TANGENT_STR | MA_ZTRANSP;
+ ma->mode = MA_TRACEBLE | MA_CASTSHADOW | MA_SHADOW | MA_RAYBIAS | MA_TANGENT_STR | MA_ZTRANSP;
ma->shade_flag = MA_APPROX_OCCLUSION;
ma->preview = NULL;
}
diff --git a/source/blender/blenloader/intern/versioning_legacy.c b/source/blender/blenloader/intern/versioning_legacy.c
index 0283d9b04fb..e82e5b21e7f 100644
--- a/source/blender/blenloader/intern/versioning_legacy.c
+++ b/source/blender/blenloader/intern/versioning_legacy.c
@@ -2171,7 +2171,7 @@ void blo_do_versions_pre250(FileData *fd, Library *lib, Main *main)
ma->mode |= MA_TANGENT_STR;
}
if (ma->mode & MA_TRACEBLE)
- ma->mode |= MA_SHADBUF;
+ ma->mode |= MA_CASTSHADOW;
}
}
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 482c855f067..aecd4e1aa17 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -350,7 +350,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre
if (base->object->id.name[2] == 'c') {
Material *shadmat = give_current_material(base->object, base->object->actcol);
if (shadmat) {
- if (mat->mode & MA_SHADBUF) shadmat->septex = 0;
+ if (mat->mode & MA_CASTSHADOW) shadmat->septex = 0;
else shadmat->septex |= 1;
}
}
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 8a4714eeded..0a387af7e7e 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -3620,7 +3620,7 @@ static bool draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3
if (v3d->flag2 & V3D_RENDER_SHADOW) {
for (i = 0; i < ob->totcol; ++i) {
Material *ma = give_current_material(ob, i);
- if (ma && !(ma->mode & MA_SHADBUF)) {
+ if (ma && !(ma->mode & MA_CASTSHADOW)) {
return true;
}
}
diff --git a/source/blender/makesdna/DNA_material_types.h b/source/blender/makesdna/DNA_material_types.h
index a6478f2ae69..8dc46ec95d9 100644
--- a/source/blender/makesdna/DNA_material_types.h
+++ b/source/blender/makesdna/DNA_material_types.h
@@ -267,7 +267,7 @@ typedef struct Material {
#define MA_RAYBIAS 0x400000
#define MA_FULL_OSA 0x800000
#define MA_TANGENT_STR 0x1000000
-#define MA_SHADBUF 0x2000000
+#define MA_CASTSHADOW 0x2000000
/* note; we drop MA_TANGENT_STR later to become tangent_u */
#define MA_TANGENT_V 0x4000000
/* qdn: a bit clumsy this, tangents needed for normal maps separated from shading */
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index 807d9fc35e1..76c115c93d6 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -1937,10 +1937,16 @@ void RNA_def_material(BlenderRNA *brna)
"Force this material to render full shading/textures for all anti-aliasing samples");
RNA_def_property_update(prop, 0, "rna_Material_update");
+ prop = RNA_def_property(srna, "use_cast_shadows", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_CASTSHADOW);
+ RNA_def_property_ui_text(prop, "Cast Shadows",
+ "Allow this material to cast shadows");
+ RNA_def_property_update(prop, 0, "rna_Material_update");
+
prop = RNA_def_property(srna, "use_cast_buffer_shadows", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADBUF);
- RNA_def_property_ui_text(prop, "Cast Buffer Shadows",
- "Allow this material to cast shadows from shadow buffer lamps");
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_CASTSHADOW);
+ RNA_def_property_ui_text(prop, "Cast Shadows",
+ "This is obsolete RNA path, please use 'use_cast_shadows' instead");
RNA_def_property_update(prop, 0, "rna_Material_update");
prop = RNA_def_property(srna, "use_cast_approximate", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/render/intern/raytrace/rayobject.cpp b/source/blender/render/intern/raytrace/rayobject.cpp
index 9e639501fdd..fd3d2b5083b 100644
--- a/source/blender/render/intern/raytrace/rayobject.cpp
+++ b/source/blender/render/intern/raytrace/rayobject.cpp
@@ -118,7 +118,7 @@ MALWAYS_INLINE int vlr_check_intersect(Isect *is, ObjectInstanceRen *obi, VlakRe
if (is->mode == RE_RAY_MIRROR)
return !(vlr->mat->mode & MA_ONLYCAST);
else
- return (is->lay & obi->lay);
+ return (vlr->mat->mode & MA_CASTSHADOW) && (is->lay & obi->lay);
}
MALWAYS_INLINE int vlr_check_intersect_solid(Isect *UNUSED(is), ObjectInstanceRen *UNUSED(obi), VlakRen *vlr)
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index bcde98aea8f..56080357dce 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -746,7 +746,7 @@ static Material *give_render_material(Render *re, Object *ob, short nr)
if (ma->material_type == MA_TYPE_VOLUME) {
ma->mode |= MA_TRANSP;
- ma->mode &= ~MA_SHADBUF;
+ ma->mode &= ~MA_CASTSHADOW;
}
if ((ma->mode & MA_TRANSP) && (ma->mode & MA_ZTRANSP))
re->flag |= R_ZTRA;
diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c
index 0c3bf85cd24..676e0436bfd 100644
--- a/source/blender/render/intern/source/shadbuf.c
+++ b/source/blender/render/intern/source/shadbuf.c
@@ -660,7 +660,7 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar)
if (vlr->mat!= ma) {
ma= vlr->mat;
ok= 1;
- if ((ma->mode & MA_SHADBUF)==0) ok= 0;
+ if ((ma->mode & MA_CASTSHADOW)==0) ok= 0;
}
if (ok && (obi->lay & lay)) {
@@ -2013,7 +2013,7 @@ static void isb_bsp_fillfaces(Render *re, LampRen *lar, ISBBranch *root)
if (vlr->mat!= ma) {
ma= vlr->mat;
ok= 1;
- if ((ma->mode & MA_SHADBUF)==0) ok= 0;
+ if ((ma->mode & MA_CASTSHADOW)==0) ok= 0;
if (ma->material_type == MA_TYPE_WIRE) ok= 0;
zspanstrand.shad_alpha= zspan.shad_alpha= ma->shad_alpha;
}
diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c
index f2d4a7afd94..6c13bffdd17 100644
--- a/source/blender/render/intern/source/strand.c
+++ b/source/blender/render/intern/source/strand.c
@@ -860,7 +860,7 @@ int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBa
/* test if we should skip it */
ma = obr->strandbuf->ma;
- if (shadow && !(ma->mode & MA_SHADBUF))
+ if (shadow && !(ma->mode & MA_CASTSHADOW))
continue;
else if (!shadow && (ma->mode & MA_ONLYCAST))
continue;
diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c
index a8ccd1f362f..6885768261f 100644
--- a/source/blender/render/intern/source/zbuf.c
+++ b/source/blender/render/intern/source/zbuf.c
@@ -2368,7 +2368,7 @@ void zbuffer_shadow(Render *re, float winmat[4][4], LampRen *lar, int *rectz, in
if (vlr->mat!= ma) {
ma= vlr->mat;
ok= 1;
- if ((ma->mode & MA_SHADBUF)==0) ok= 0;
+ if ((ma->mode & MA_CASTSHADOW)==0) ok= 0;
}
if (ok && (obi->lay & lay) && !(vlr->flag & R_HIDDEN)) {
@@ -2421,7 +2421,7 @@ void zbuffer_shadow(Render *re, float winmat[4][4], LampRen *lar, int *rectz, in
if (sseg.buffer->ma!= ma) {
ma= sseg.buffer->ma;
ok= 1;
- if ((ma->mode & MA_SHADBUF)==0) ok= 0;
+ if ((ma->mode & MA_CASTSHADOW)==0) ok= 0;
}
if (ok && (sseg.buffer->lay & lay)) {
@@ -3349,7 +3349,7 @@ static int zbuffer_abuf(Render *re, RenderPart *pa, APixstr *APixbuf, ListBase *
if (vlr->mat!=ma) {
ma= vlr->mat;
if (shadow)
- dofill= (ma->mode & MA_SHADBUF);
+ dofill= (ma->mode & MA_CASTSHADOW);
else
dofill= (((ma->mode & MA_TRANSP) && (ma->mode & MA_ZTRANSP)) && !(ma->mode & MA_ONLYCAST));
}
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index b5d9c5b01dd..ebd9430401c 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -596,7 +596,7 @@ static bool ConvertMaterial(
material->ras_mode |= ( mat->game.flag & GEMAT_BACKCULL )?0:TWOSIDED;
// cast shadows?
- material->ras_mode |= ( mat->mode & MA_SHADBUF )?CAST_SHADOW:0;
+ material->ras_mode |= ( mat->mode & MA_CASTSHADOW )?CAST_SHADOW:0;
MTex *mttmp = 0;
int valid_index = 0;