From eb80ce4d7f24778e1edcc3c88a9b071dd2e25b4c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 25 Jul 2009 21:31:17 +0000 Subject: [PATCH] 2.5: Materials * Diffuse/specular ramps works again. * Wire is now a material type next to Surface and Halo. * Removed Volume material type option until it is actually there. * Some button layout tweaks. --- release/ui/buttons_material.py | 90 ++++++++----------- source/blender/blenloader/intern/readfile.c | 4 + source/blender/makesdna/DNA_material_types.h | 3 +- source/blender/makesrna/intern/rna_material.c | 52 ++++++++--- .../render/intern/source/convertblender.c | 12 +-- .../blender/render/intern/source/rayshade.c | 4 +- source/blender/render/intern/source/shadbuf.c | 4 +- .../blender/render/intern/source/shadeinput.c | 2 +- source/blender/render/intern/source/zbuf.c | 8 +- .../Converter/BL_BlenderDataConversion.cpp | 2 +- 10 files changed, 101 insertions(+), 80 deletions(-) diff --git a/release/ui/buttons_material.py b/release/ui/buttons_material.py index c6678d64c6e..9a28a74d0f7 100644 --- a/release/ui/buttons_material.py +++ b/release/ui/buttons_material.py @@ -75,40 +75,23 @@ class MATERIAL_PT_material(MaterialButtonsPanel): if mat: layout.itemR(mat, "type", expand=True) - if mat.type == 'SURFACE': + if mat.type in ('SURFACE', 'WIRE', 'VOLUME'): split = layout.split() sub = split.column() - sub.itemR(mat, "z_buffer") sub.itemR(mat, "alpha", slider=True) sub.itemR(mat, "ambient", slider=True) sub.itemR(mat, "emit") + sub.itemR(mat, "translucency", slider=True) sub = split.column() + sub.itemR(mat, "z_transparency") sub.itemR(mat, "shadeless") - sub.itemR(mat, "wireframe") - sub.itemR(mat, "tangent_shading") sub.itemR(mat, "cubic", slider=True) - elif mat.type == 'VOLUME': - split = layout.split() - - sub = split.column() - sub.itemR(mat, "z_buffer") - sub.itemR(mat, "alpha", slider=True) - sub.itemR(mat, "ambient", slider=True) - sub.itemR(mat, "emit") - - sub = split.column() - sub.itemR(mat, "shadeless") - sub.itemR(mat, "wireframe") - - sub.itemR(mat, "tangent_shading") - sub.itemR(mat, "cubic", slider=True) elif mat.type == 'HALO': layout.itemR(mat, "alpha", slider=True) - class MATERIAL_PT_strand(MaterialButtonsPanel): __idname__= "MATERIAL_PT_strand" @@ -158,17 +141,23 @@ class MATERIAL_PT_options(MaterialButtonsPanel): sub.itemR(mat, "full_oversampling") sub.itemR(mat, "sky") sub.itemR(mat, "exclude_mist") + sub.itemR(mat, "invert_z") + + col = sub.column(align=True) + col.itemL(text="Light Group:") + col.itemR(mat, "light_group", text="") + row = col.row() + row.active = mat.light_group + row.itemR(mat, "light_group_exclusive", text="Exclusive") + sub = split.column() sub.itemR(mat, "face_texture") colsub = sub.column() colsub.active = mat.face_texture colsub.itemR(mat, "face_texture_alpha") - sub.itemR(mat, "invert_z") - sub.itemR(mat, "light_group") - sub.itemR(mat, "light_group_exclusive") - - - + sub.itemR(mat, "vertex_color_paint") + sub.itemR(mat, "vertex_color_light") + sub.itemR(mat, "object_color") class MATERIAL_PT_shadows(MaterialButtonsPanel): __idname__= "MATERIAL_PT_shadows" @@ -201,7 +190,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type != "HALO") + return (mat and mat.type != 'HALO') def draw(self, context): layout = self.layout @@ -211,18 +200,14 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): sub = split.column() sub.itemR(mat, "diffuse_color", text="") - sub.itemR(mat, "vertex_color_paint") - sub.itemR(mat, "vertex_color_light") + row = sub.row() + row.active = mat.shadeless== False + row.itemR(mat, "diffuse_reflection", text="Intensity", slider=True) sub = split.column() sub.active = mat.shadeless== False - sub.itemR(mat, "diffuse_reflection", text="Intensity", slider=True) - sub.itemR(mat, "translucency", slider=True) - sub.itemR(mat, "object_color") - - row = layout.row() - row.active = mat.shadeless== False - row.itemR(mat, "diffuse_shader", text="Shader") + sub.itemR(mat, "diffuse_shader", text="") + sub.itemR(mat, "use_diffuse_ramp", text="Ramp") split = layout.split() split.active = mat.shadeless== False @@ -240,8 +225,8 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): sub = split.column() sub.itemR(mat, "diffuse_fresnel_factor", text="Factor") - layout.template_color_ramp(mat.diffuse_ramp, expand=True) - + if mat.use_diffuse_ramp: + layout.template_color_ramp(mat.diffuse_ramp, expand=True) class MATERIAL_PT_specular(MaterialButtonsPanel): __idname__= "MATERIAL_PT_specular" @@ -249,7 +234,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type != "HALO") + return (mat and mat.type != 'HALO') def draw(self, context): layout = self.layout @@ -261,29 +246,30 @@ class MATERIAL_PT_specular(MaterialButtonsPanel): sub = split.column() sub.itemR(mat, "specular_color", text="") - sub = split.column() sub.itemR(mat, "specular_reflection", text="Intensity", slider=True) - - layout.itemR(mat, "spec_shader", text="Shader") + + sub = split.column() + sub.itemR(mat, "specular_shader", text="") + sub.itemR(mat, "use_specular_ramp", text="Ramp") split = layout.split() sub = split.column() - if mat.spec_shader in ('COOKTORR', 'PHONG'): + if mat.specular_shader in ('COOKTORR', 'PHONG'): sub.itemR(mat, "specular_hardness", text="Hardness") - if mat.spec_shader == 'BLINN': + if mat.specular_shader == 'BLINN': sub.itemR(mat, "specular_hardness", text="Hardness") sub = split.column() sub.itemR(mat, "specular_ior", text="IOR") - if mat.spec_shader == 'WARDISO': + if mat.specular_shader == 'WARDISO': sub.itemR(mat, "specular_slope", text="Slope") - if mat.spec_shader == 'TOON': + if mat.specular_shader == 'TOON': sub.itemR(mat, "specular_toon_size", text="Size") sub = split.column() sub.itemR(mat, "specular_toon_smooth", text="Smooth") - layout.template_color_ramp(mat.specular_ramp, expand=True) - + if mat.use_specular_ramp: + layout.template_color_ramp(mat.specular_ramp, expand=True) class MATERIAL_PT_sss(MaterialButtonsPanel): __idname__= "MATERIAL_PT_sss" @@ -292,7 +278,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type == "SURFACE") + return (mat and (mat.type == 'SURFACE' or mat.type == 'WIRE')) def draw_header(self, context): layout = self.layout @@ -331,7 +317,7 @@ class MATERIAL_PT_raymir(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type == "SURFACE") + return (mat and (mat.type == 'SURFACE' or mat.type == 'WIRE')) def draw_header(self, context): layout = self.layout @@ -375,7 +361,7 @@ class MATERIAL_PT_raytransp(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type == "SURFACE") + return (mat and (mat.type == 'SURFACE' or mat.type == 'WIRE')) def draw_header(self, context): layout = self.layout @@ -419,7 +405,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel): def poll(self, context): mat = context.material - return (mat and mat.type == "HALO") + return (mat and mat.type == 'HALO') def draw(self, context): layout = self.layout diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 7551d902ad8..9d427778810 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9281,6 +9281,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } for(ma = main->mat.first; ma; ma = ma->id.next) { + if(ma->mode & MA_WIRE) { + ma->material_type= MA_TYPE_WIRE; + ma->mode &= ~MA_WIRE; + } if(ma->mode & MA_HALO) { ma->material_type= MA_TYPE_HALO; ma->mode &= ~MA_HALO; diff --git a/source/blender/makesdna/DNA_material_types.h b/source/blender/makesdna/DNA_material_types.h index 1f93bcf1317..5b566a244b4 100644 --- a/source/blender/makesdna/DNA_material_types.h +++ b/source/blender/makesdna/DNA_material_types.h @@ -148,6 +148,7 @@ typedef struct Material { #define MA_TYPE_SURFACE 0 #define MA_TYPE_HALO 1 #define MA_TYPE_VOLUME 2 +#define MA_TYPE_WIRE 3 /* flag */ /* for render */ @@ -159,7 +160,7 @@ typedef struct Material { #define MA_TRACEBLE 1 #define MA_SHADOW 2 #define MA_SHLESS 4 -#define MA_WIRE 8 +#define MA_WIRE 8 /* deprecated */ #define MA_VERTEXCOL 16 #define MA_HALO_SOFT 16 #define MA_HALO 32 /* deprecated */ diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index 2eab89e43b2..f8cead563ff 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -166,6 +166,28 @@ static void rna_MaterialTextureSlot_enabled_set(PointerRNA *ptr, int value) } } +static void rna_Material_use_diffuse_ramp_set(PointerRNA *ptr, int value) +{ + Material *ma= (Material*)ptr->data; + + if(value) ma->mode |= MA_RAMP_COL; + else ma->mode &= ~MA_RAMP_COL; + + if((ma->mode & MA_RAMP_COL) && ma->ramp_col == NULL) + ma->ramp_col= add_colorband(0); +} + +static void rna_Material_use_specular_ramp_set(PointerRNA *ptr, int value) +{ + Material *ma= (Material*)ptr->data; + + if(value) ma->mode |= MA_RAMP_SPEC; + else ma->mode &= ~MA_RAMP_SPEC; + + if((ma->mode & MA_RAMP_SPEC) && ma->ramp_spec == NULL) + ma->ramp_spec= add_colorband(0); +} + #else static void rna_def_material_mtex(BlenderRNA *brna) @@ -477,11 +499,23 @@ static void rna_def_material_colors(StructRNA *srna) RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL); /* Color bands */ + prop= RNA_def_property(srna, "use_diffuse_ramp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAMP_COL); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Material_use_diffuse_ramp_set"); + RNA_def_property_ui_text(prop, "Use Diffuse Ramp", "Toggle diffuse ramp operations."); + RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL); + prop= RNA_def_property(srna, "diffuse_ramp", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "ramp_col"); RNA_def_property_struct_type(prop, "ColorRamp"); RNA_def_property_ui_text(prop, "Diffuse Ramp", "Color ramp used to affect diffuse shading."); + prop= RNA_def_property(srna, "use_specular_ramp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAMP_SPEC); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Material_use_specular_ramp_set"); + RNA_def_property_ui_text(prop, "Use Specular Ramp", "Toggle specular ramp operations."); + RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING_DRAW, NULL); + prop= RNA_def_property(srna, "specular_ramp", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "ramp_spec"); RNA_def_property_struct_type(prop, "ColorRamp"); @@ -912,7 +946,7 @@ void rna_def_material_specularity(StructRNA *srna) { PropertyRNA *prop; - static EnumPropertyItem prop_spec_shader_items[] = { + static EnumPropertyItem prop_specular_shader_items[] = { {MA_SPEC_COOKTORR, "COOKTORR", 0, "CookTorr", ""}, {MA_SPEC_PHONG, "PHONG", 0, "Phong", ""}, {MA_SPEC_BLINN, "BLINN", 0, "Blinn", ""}, @@ -920,9 +954,9 @@ void rna_def_material_specularity(StructRNA *srna) {MA_SPEC_WARDISO, "WARDISO", 0, "WardIso", ""}, {0, NULL, 0, NULL, NULL}}; - prop= RNA_def_property(srna, "spec_shader", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "specular_shader", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "spec_shader"); - RNA_def_property_enum_items(prop, prop_spec_shader_items); + RNA_def_property_enum_items(prop, prop_specular_shader_items); RNA_def_property_ui_text(prop, "Specular Shader Model", ""); RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL); @@ -1042,7 +1076,8 @@ void RNA_def_material(BlenderRNA *brna) static EnumPropertyItem prop_type_items[] = { {MA_TYPE_SURFACE, "SURFACE", 0, "Surface", "Render object as a surface."}, - {MA_TYPE_VOLUME, "VOLUME", 0, "Volume", "Render object as a volume."}, + {MA_TYPE_WIRE, "WIRE", 0, "Wire", "Render the edges of faces as wires (not supported in ray tracing)."}, + // {MA_TYPE_VOLUME, "VOLUME", 0, "Volume", "Render object as a volume."}, {MA_TYPE_HALO, "HALO", 0, "Halo", "Render object as halo particles."}, {0, NULL, 0, NULL, NULL}}; @@ -1128,14 +1163,9 @@ void RNA_def_material(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Shadeless", "Makes this material insensitive to light or shadow."); RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL); - prop= RNA_def_property(srna, "wireframe", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_WIRE); - RNA_def_property_ui_text(prop, "Wireframe", "Render the edges of faces as wires (not supported in ray tracing)."); - RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL); - - prop= RNA_def_property(srna, "z_buffer", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "z_transparency", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ZTRA); - RNA_def_property_ui_text(prop, "Z Buffer", "Enable Z-buffering of transparent faces"); + RNA_def_property_ui_text(prop, "Z Transparency", "Enable alpha buffer for transparent faces."); RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL); prop= RNA_def_property(srna, "vertex_color_light", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 5853b51a6b1..2b06f164c12 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1250,7 +1250,7 @@ static void particle_curve(Render *re, ObjectRen *obr, DerivedMesh *dm, Material { HaloRen *har=0; - if(ma->mode&MA_WIRE) + if(ma->material_type == MA_TYPE_WIRE) static_particle_wire(obr, ma, loc, loc1, sd->first, sd->line); else if(ma->material_type == MA_TYPE_HALO) { har= RE_inithalo_particle(re, obr, dm, ma, loc, loc1, sd->orco, sd->uvco, sd->size, 1.0, seed); @@ -1627,7 +1627,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem path_nbr=(int)pow(2.0,(double) part->ren_step); if(path_nbr) { - if((ma->material_type != MA_TYPE_HALO) && (ma->mode & MA_WIRE)==0) { + if(!ELEM(ma->material_type, MA_TYPE_HALO, MA_TYPE_WIRE)) { sd.orco = MEM_mallocN(3*sizeof(float)*(totpart+totchild), "particle orcos"); set_object_orco(re, psys, sd.orco); } @@ -3124,7 +3124,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) } /* if wire material, and we got edges, don't do the faces */ - if(ma->mode & MA_WIRE) { + if(ma->material_type == MA_TYPE_WIRE) { end= dm->getNumEdges(dm); if(end) ok= 0; } @@ -3209,7 +3209,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) end= dm->getNumEdges(dm); mvert= dm->getVertArray(dm); ma= give_render_material(re, ob, 1); - if(end && (ma->mode & MA_WIRE)) { + if(end && (ma->material_type == MA_TYPE_WIRE)) { MEdge *medge; struct edgesort *edgetable; int totedge= 0; @@ -3834,7 +3834,7 @@ static void split_quads(ObjectRen *obr, int dir) vlr= RE_findOrAddVlak(obr, a); /* test if rendering as a quad or triangle, skip wire */ - if(vlr->v4 && (vlr->flag & R_STRAND)==0 && (vlr->mat->mode & MA_WIRE)==0) { + if(vlr->v4 && (vlr->flag & R_STRAND)==0 && (vlr->mat->material_type != MA_TYPE_WIRE)) { if(vlr->v4) { @@ -3884,7 +3884,7 @@ static void check_non_flat_quads(ObjectRen *obr) vlr= RE_findOrAddVlak(obr, a); /* test if rendering as a quad or triangle, skip wire */ - if(vlr->v4 && (vlr->flag & R_STRAND)==0 && (vlr->mat->mode & MA_WIRE)==0) { + if(vlr->v4 && (vlr->flag & R_STRAND)==0 && (vlr->mat->material_type != MA_TYPE_WIRE)) { /* check if quad is actually triangle */ v1= vlr->v1; diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index df74e88e87e..010930fcb85 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -133,7 +133,7 @@ void makeraytree(Render *re) else vlr++; /* baking selected to active needs non-traceable too */ if((re->flag & R_BAKE_TRACE) || (vlr->mat->mode & MA_TRACEBLE)) { - if((vlr->mat->mode & MA_WIRE)==0) { + if(vlr->mat->material_type != MA_TYPE_WIRE) { VECCOPY(co1, vlr->v1->co); VECCOPY(co2, vlr->v2->co); VECCOPY(co3, vlr->v3->co); @@ -194,7 +194,7 @@ void makeraytree(Render *re) else vlr++; if((re->flag & R_BAKE_TRACE) || (vlr->mat->mode & MA_TRACEBLE)) - if((vlr->mat->mode & MA_WIRE)==0) + if(vlr->mat->material_type != MA_TYPE_WIRE) RE_ray_tree_add_face(re->raytree, RAY_OBJECT_SET(re, obi), vlr); } } diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c index 71cd678233d..33085b98095 100644 --- a/source/blender/render/intern/source/shadbuf.c +++ b/source/blender/render/intern/source/shadbuf.c @@ -1557,7 +1557,7 @@ static void isb_bsp_fillfaces(Render *re, LampRen *lar, ISBBranch *root) ma= vlr->mat; ok= 1; if((ma->mode & MA_SHADBUF)==0) ok= 0; - if(ma->mode & MA_WIRE) ok= 0; + if(ma->material_type == MA_TYPE_WIRE) ok= 0; zspanstrand.shad_alpha= zspan.shad_alpha= ma->shad_alpha; } @@ -1589,7 +1589,7 @@ static void isb_bsp_fillfaces(Render *re, LampRen *lar, ISBBranch *root) c4= testclip(hoco[3]); /* ***** NO WIRE YET */ - if(ma->mode & MA_WIRE) { + if(ma->material_type == MA_TYPE_WIRE) { if(vlr->v4) zbufclipwire(&zspan, i, a+1, vlr->ec, hoco[0], hoco[1], hoco[2], hoco[3], c1, c2, c3, c4); else diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 6b1d11be6f3..c860e9ac5d1 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -617,7 +617,7 @@ void shade_input_calc_viewco(ShadeInput *shi, float x, float y, float z, float * /* returns not normalized, so is in viewplane coords */ calc_view_vector(view, x, y); - if(shi->mat->mode & MA_WIRE) { + if(shi->mat->material_type == MA_TYPE_WIRE) { /* wire cannot use normal for calculating shi->co, so * we reconstruct the coordinate less accurate */ if(R.r.mode & R_ORTHO) diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index 0d8f1be8c85..4436f3aa047 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -2154,7 +2154,7 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*, ma= vlr->mat; nofill= ma->mode & (MA_ZTRA|MA_ONLYCAST); env= (ma->mode & MA_ENV); - wire= (ma->mode & MA_WIRE); + wire= (ma->material_type == MA_TYPE_WIRE); for(zsample=0; zsamplemode & MA_ZINV || (zmaskpass && neg_zmask)) @@ -2341,7 +2341,7 @@ void zbuffer_shadow(Render *re, float winmat[][4], LampRen *lar, int *rectz, int c2= zbuf_shadow_project(cache, vlr->v2->index, obwinmat, vlr->v2->co, ho2); c3= zbuf_shadow_project(cache, vlr->v3->index, obwinmat, vlr->v3->co, ho3); - if((ma->mode & MA_WIRE) || (vlr->flag & R_STRAND)) { + if((ma->material_type == MA_TYPE_WIRE) || (vlr->flag & R_STRAND)) { if(vlr->v4) { c4= zbuf_shadow_project(cache, vlr->v4->index, obwinmat, vlr->v4->co, ho4); zbufclipwire(&zspan, 0, a+1, vlr->ec, ho1, ho2, ho3, ho4, c1, c2, c3, c4); @@ -2571,7 +2571,7 @@ void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(vo ma= vlr->mat; nofill= ma->mode & MA_ONLYCAST; env= (ma->mode & MA_ENV); - wire= (ma->mode & MA_WIRE); + wire= (ma->material_type == MA_TYPE_WIRE); } } else { @@ -3357,7 +3357,7 @@ static int zbuffer_abuf(RenderPart *pa, APixstr *APixbuf, ListBase *apsmbase, Re zspan= &zspans[zsample]; zspan->polygon_offset= polygon_offset; - if(ma->mode & (MA_WIRE)) { + if(ma->material_type == MA_TYPE_WIRE) { if(v4) zbufclipwire(zspan, i, zvlnr, vlr->ec, ho1, ho2, ho3, ho4, c1, c2, c3, c4); else diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 072889a530f..7f6a9966189 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -559,7 +559,7 @@ bool ConvertMaterial( material->ref = mat->ref; material->amb = mat->amb; - material->ras_mode |= (mat->mode & MA_WIRE)? WIRE: 0; + material->ras_mode |= (mat->material_type == MA_TYPE_WIRE)? WIRE: 0; } else { int valid = 0;