From 053093fb7a3643c2a1843749fb36477d2d165036 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jan 2010 13:56:30 +0000 Subject: displacement was crashing because of the improved bumpmap. now its skipped when the ShaderInput's verts are not set. --- source/blender/render/intern/source/convertblender.c | 8 ++++++++ source/blender/render/intern/source/texture.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'source/blender/render') diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 05153113a55..feac12d931f 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2284,6 +2284,14 @@ static void displace_render_face(Render *re, ObjectRen *obr, VlakRen *vlr, float shi.mat= vlr->mat; /* current input material */ shi.thread= 0; + /* TODO, assign these, displacement with new bumpmap is skipped without - campbell */ +#if 0 + /* order is not known ? */ + shi.v1= vlr->v1; + shi.v2= vlr->v2; + shi.v3= vlr->v3; +#endif + /* Displace the verts, flag is set when done */ if (!vlr->v1->flag) displace_render_vert(re, obr, &shi, vlr->v1,0, scale, mat, imat); diff --git a/source/blender/render/intern/source/texture.c b/source/blender/render/intern/source/texture.c index 9d03889a747..7bf349705cb 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -1737,7 +1737,8 @@ void do_material_tex(ShadeInput *shi) // (should not be here, dudnu, dudnv, dvdnu & dvdnv should probably be part of ShadeInputUV struct, // nu/nv in ShadeInput and this calculation should then move to shadeinput.c, shade_input_set_shade_texco() func.) // NOTE: test for shi->obr->ob here, since vlr/obr/obi can be 'fake' when called from fastshade(), another reason to move it.. - if ((mtex->texflag & MTEX_NEW_BUMP) && shi->obr && shi->obr->ob) { + // NOTE: shi->v1 is NULL when called from displace_render_vert, assigning verts in this case is not trivial because the shi quad face side is not know. + if ((mtex->texflag & MTEX_NEW_BUMP) && shi->obr && shi->obr->ob && shi->v1) { if(mtex->mapto & (MAP_NORM|MAP_DISPLACE|MAP_WARP)) { MTFace* tf = RE_vlakren_get_tface(shi->obr, shi->vlr, i, NULL, 0); int j1 = shi->i1, j2 = shi->i2, j3 = shi->i3; -- cgit v1.2.3