Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/drawmesh.c
| Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
| #include "BKE_scene.h" | #include "BKE_scene.h" | ||||
| #include "BIF_glutil.h" | #include "BIF_glutil.h" | ||||
| #include "UI_resources.h" | #include "UI_resources.h" | ||||
| #include "GPU_draw.h" | #include "GPU_draw.h" | ||||
| #include "GPU_material.h" | #include "GPU_material.h" | ||||
| #include "GPU_legacy_stubs.h" | |||||
| #include "GPU_basic_shader.h" | #include "GPU_basic_shader.h" | ||||
| #include "GPU_shader.h" | #include "GPU_shader.h" | ||||
| #include "GPU_matrix.h" | #include "GPU_matrix.h" | ||||
| #include "RE_engine.h" | #include "RE_engine.h" | ||||
| #include "ED_uvedit.h" | #include "ED_uvedit.h" | ||||
| ▲ Show 20 Lines • Show All 116 Lines • ▼ Show 20 Lines | void draw_mesh_face_select(RegionView3D *rv3d, Mesh *me, DerivedMesh *dm, bool draw_select_edges) | ||||
| dm->drawMappedEdges(dm, draw_mesh_face_select__setHiddenOpts, &data); | dm->drawMappedEdges(dm, draw_mesh_face_select__setHiddenOpts, &data); | ||||
| setlinestyle(0); | setlinestyle(0); | ||||
| /* Draw Selected Faces */ | /* Draw Selected Faces */ | ||||
| if (me->drawflag & ME_DRAWFACES) { | if (me->drawflag & ME_DRAWFACES) { | ||||
| glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||||
| glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||
| /* dull unselected faces so as not to get in the way of seeing color */ | /* dull unselected faces so as not to get in the way of seeing color */ | ||||
| glColor4ub(96, 96, 96, 64); | oldColor4ub(96, 96, 96, 64); | ||||
| dm->drawMappedFaces(dm, draw_mesh_face_select__drawFaceOptsInv, NULL, NULL, (void *)me, DM_DRAW_SKIP_HIDDEN); | dm->drawMappedFaces(dm, draw_mesh_face_select__drawFaceOptsInv, NULL, NULL, (void *)me, DM_DRAW_SKIP_HIDDEN); | ||||
| glDisable(GL_BLEND); | glDisable(GL_BLEND); | ||||
| } | } | ||||
| ED_view3d_polygon_offset(rv3d, 1.0); | ED_view3d_polygon_offset(rv3d, 1.0); | ||||
| /* Draw Stippled Outline for selected faces */ | /* Draw Stippled Outline for selected faces */ | ||||
| glColor3ub(255, 255, 255); | oldColor3ub(255, 255, 255); | ||||
| setlinestyle(1); | setlinestyle(1); | ||||
| dm->drawMappedEdges(dm, draw_mesh_face_select__setSelectOpts, &data); | dm->drawMappedEdges(dm, draw_mesh_face_select__setSelectOpts, &data); | ||||
| setlinestyle(0); | setlinestyle(0); | ||||
| ED_view3d_polygon_offset(rv3d, 0.0); /* resets correctly now, even after calling accumulated offsets */ | ED_view3d_polygon_offset(rv3d, 0.0); /* resets correctly now, even after calling accumulated offsets */ | ||||
| MEM_freeN(data.edge_flags); | MEM_freeN(data.edge_flags); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | static bool set_draw_settings_cached( | ||||
| /* ..or if settings inside texface were changed (if texface was used) */ | /* ..or if settings inside texface were changed (if texface was used) */ | ||||
| need_set_tpage |= (texpaint && c_ma != ma) || (texface && memcmp(&c_texface, texface, sizeof(c_texface))); | need_set_tpage |= (texpaint && c_ma != ma) || (texface && memcmp(&c_texface, texface, sizeof(c_texface))); | ||||
| if (need_set_tpage) { | if (need_set_tpage) { | ||||
| if (textured) { | if (textured) { | ||||
| if (texpaint) { | if (texpaint) { | ||||
| c_badtex = false; | c_badtex = false; | ||||
| if (GPU_verify_image(ima, NULL, GL_TEXTURE_2D, 0, 1, 0, false)) { | if (GPU_verify_image(ima, NULL, GL_TEXTURE_2D, 0, 1, 0, false)) { | ||||
| glEnable(GL_TEXTURE_2D); | oldEnable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE); | ||||
| glActiveTexture(GL_TEXTURE1); | glActiveTexture(GL_TEXTURE1); | ||||
| glEnable(GL_TEXTURE_2D); | oldEnable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | ||||
| glBindTexture(GL_TEXTURE_2D, ima->bindcode[TEXTARGET_TEXTURE_2D]); | glBindTexture(GL_TEXTURE_2D, ima->bindcode[TEXTARGET_TEXTURE_2D]); | ||||
| glActiveTexture(GL_TEXTURE0); | glActiveTexture(GL_TEXTURE0); | ||||
| } | } | ||||
| else { | else { | ||||
| glActiveTexture(GL_TEXTURE1); | glActiveTexture(GL_TEXTURE1); | ||||
| glDisable(GL_TEXTURE_2D); | oldDisable(GL_TEXTURE_2D); | ||||
| glBindTexture(GL_TEXTURE_2D, 0); | glBindTexture(GL_TEXTURE_2D, 0); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
| glActiveTexture(GL_TEXTURE0); | glActiveTexture(GL_TEXTURE0); | ||||
| c_badtex = true; | c_badtex = true; | ||||
| GPU_clear_tpage(true); | GPU_clear_tpage(true); | ||||
| glDisable(GL_TEXTURE_2D); | oldDisable(GL_TEXTURE_2D); | ||||
| glBindTexture(GL_TEXTURE_2D, 0); | glBindTexture(GL_TEXTURE_2D, 0); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| c_badtex = !GPU_set_tpage(texface, !texpaint, alphablend); | c_badtex = !GPU_set_tpage(texface, !texpaint, alphablend); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| GPU_set_tpage(NULL, 0, 0); | GPU_set_tpage(NULL, 0, 0); | ||||
| ▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) | ||||
| Gtexdraw.texpaint_material = (imapaint->mode == IMAGEPAINT_MODE_MATERIAL); | Gtexdraw.texpaint_material = (imapaint->mode == IMAGEPAINT_MODE_MATERIAL); | ||||
| Gtexdraw.canvas = (Gtexdraw.texpaint_material) ? NULL : imapaint->canvas; | Gtexdraw.canvas = (Gtexdraw.texpaint_material) ? NULL : imapaint->canvas; | ||||
| Gtexdraw.is_tex = is_tex; | Gtexdraw.is_tex = is_tex; | ||||
| /* naughty multitexturing hacks to quickly support stencil + shading + alpha blending | /* naughty multitexturing hacks to quickly support stencil + shading + alpha blending | ||||
| * in new texpaint code. The better solution here would be to support GLSL */ | * in new texpaint code. The better solution here would be to support GLSL */ | ||||
| if (Gtexdraw.is_texpaint) { | if (Gtexdraw.is_texpaint) { | ||||
| glActiveTexture(GL_TEXTURE1); | glActiveTexture(GL_TEXTURE1); | ||||
| glEnable(GL_TEXTURE_2D); | oldEnable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PRIMARY_COLOR); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | ||||
| /* load the stencil texture here */ | /* load the stencil texture here */ | ||||
| if (Gtexdraw.stencil != NULL) { | if (Gtexdraw.stencil != NULL) { | ||||
| glActiveTexture(GL_TEXTURE2); | glActiveTexture(GL_TEXTURE2); | ||||
| if (GPU_verify_image(Gtexdraw.stencil, NULL, GL_TEXTURE_2D, false, false, false, false)) { | if (GPU_verify_image(Gtexdraw.stencil, NULL, GL_TEXTURE_2D, false, false, false, false)) { | ||||
| float col[4] = {imapaint->stencil_col[0], imapaint->stencil_col[1], imapaint->stencil_col[2], 1.0f}; | float col[4] = {imapaint->stencil_col[0], imapaint->stencil_col[1], imapaint->stencil_col[2], 1.0f}; | ||||
| glEnable(GL_TEXTURE_2D); | oldEnable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_TEXTURE); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_TEXTURE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_TEXTURE); | oldTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_TEXTURE); | ||||
| glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, col); | oldTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, col); | ||||
| if ((imapaint->flag & IMAGEPAINT_PROJECT_LAYER_STENCIL_INV) == 0) { | if ((imapaint->flag & IMAGEPAINT_PROJECT_LAYER_STENCIL_INV) == 0) { | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_ONE_MINUS_SRC_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_ONE_MINUS_SRC_COLOR); | ||||
| } | } | ||||
| else { | else { | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| glActiveTexture(GL_TEXTURE0); | glActiveTexture(GL_TEXTURE0); | ||||
| } | } | ||||
| Gtexdraw.color_profile = BKE_scene_check_color_management_enabled(scene); | Gtexdraw.color_profile = BKE_scene_check_color_management_enabled(scene); | ||||
| Gtexdraw.use_game_mat = (RE_engines_find(scene->r.engine)->flag & RE_GAME) != 0; | Gtexdraw.use_game_mat = (RE_engines_find(scene->r.engine)->flag & RE_GAME) != 0; | ||||
| Gtexdraw.use_backface_culling = (v3d->flag2 & V3D_BACKFACE_CULLING) != 0; | Gtexdraw.use_backface_culling = (v3d->flag2 & V3D_BACKFACE_CULLING) != 0; | ||||
| Gtexdraw.two_sided_lighting = (me->flag & ME_TWOSIDED); | Gtexdraw.two_sided_lighting = (me->flag & ME_TWOSIDED); | ||||
| memcpy(Gtexdraw.obcol, obcol, sizeof(obcol)); | memcpy(Gtexdraw.obcol, obcol, sizeof(obcol)); | ||||
| set_draw_settings_cached(1, NULL, NULL, &Gtexdraw); | set_draw_settings_cached(1, NULL, NULL, &Gtexdraw); | ||||
| glCullFace(GL_BACK); | glCullFace(GL_BACK); | ||||
| } | } | ||||
| static void draw_textured_end(void) | static void draw_textured_end(void) | ||||
| { | { | ||||
| if (Gtexdraw.ob->mode & OB_MODE_TEXTURE_PAINT) { | if (Gtexdraw.ob->mode & OB_MODE_TEXTURE_PAINT) { | ||||
| glActiveTexture(GL_TEXTURE1); | glActiveTexture(GL_TEXTURE1); | ||||
| glDisable(GL_TEXTURE_2D); | oldDisable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
| glBindTexture(GL_TEXTURE_2D, 0); | glBindTexture(GL_TEXTURE_2D, 0); | ||||
| if (Gtexdraw.stencil != NULL) { | if (Gtexdraw.stencil != NULL) { | ||||
| glActiveTexture(GL_TEXTURE2); | glActiveTexture(GL_TEXTURE2); | ||||
| glDisable(GL_TEXTURE_2D); | oldDisable(GL_TEXTURE_2D); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | oldTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_COLOR); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
| glBindTexture(GL_TEXTURE_2D, 0); | glBindTexture(GL_TEXTURE_2D, 0); | ||||
| } | } | ||||
| glActiveTexture(GL_TEXTURE0); | glActiveTexture(GL_TEXTURE0); | ||||
| glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | oldTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); | ||||
| /* manual reset, since we don't use tpage */ | /* manual reset, since we don't use tpage */ | ||||
| glBindTexture(GL_TEXTURE_2D, 0); | glBindTexture(GL_TEXTURE_2D, 0); | ||||
| /* force switch off textures */ | /* force switch off textures */ | ||||
| GPU_clear_tpage(true); | GPU_clear_tpage(true); | ||||
| } | } | ||||
| else { | else { | ||||
| /* switch off textures */ | /* switch off textures */ | ||||
| GPU_set_tpage(NULL, 0, 0); | GPU_set_tpage(NULL, 0, 0); | ||||
| Show All 23 Lines | static DMDrawOption draw_tface__set_draw_legacy(MTexPoly *mtexpoly, const bool has_mcol, int matnr) | ||||
| bool invalidtexture = false; | bool invalidtexture = false; | ||||
| if (ma && (ma->game.flag & GEMAT_INVISIBLE)) | if (ma && (ma->game.flag & GEMAT_INVISIBLE)) | ||||
| return DM_DRAW_OPTION_SKIP; | return DM_DRAW_OPTION_SKIP; | ||||
| invalidtexture = set_draw_settings_cached(0, mtexpoly, ma, &Gtexdraw); | invalidtexture = set_draw_settings_cached(0, mtexpoly, ma, &Gtexdraw); | ||||
| if (mtexpoly && invalidtexture) { | if (mtexpoly && invalidtexture) { | ||||
| glColor3ub(0xFF, 0x00, 0xFF); | oldColor3ub(0xFF, 0x00, 0xFF); | ||||
| return DM_DRAW_OPTION_NO_MCOL; /* Don't set color */ | return DM_DRAW_OPTION_NO_MCOL; /* Don't set color */ | ||||
| } | } | ||||
| else if (!has_mcol) { | else if (!has_mcol) { | ||||
| if (mtexpoly) { | if (mtexpoly) { | ||||
| glColor3f(1.0, 1.0, 1.0); | oldColor3f(1.0, 1.0, 1.0); | ||||
| } | } | ||||
| else { | else { | ||||
| if (ma) { | if (ma) { | ||||
| if (ma->shade_flag & MA_OBCOLOR) { | if (ma->shade_flag & MA_OBCOLOR) { | ||||
| glColor3ubv(Gtexdraw.obcol); | oldColor3ubv(Gtexdraw.obcol); | ||||
| } | } | ||||
| else { | else { | ||||
| float col[3]; | float col[3]; | ||||
| if (Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r); | if (Gtexdraw.color_profile) linearrgb_to_srgb_v3_v3(col, &ma->r); | ||||
| else copy_v3_v3(col, &ma->r); | else copy_v3_v3(col, &ma->r); | ||||
| glColor3fv(col); | oldColor3fv(col); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| glColor3f(1.0, 1.0, 1.0); | oldColor3f(1.0, 1.0, 1.0); | ||||
| } | } | ||||
| } | } | ||||
| return DM_DRAW_OPTION_NORMAL; /* normal drawing (no mcols anyway, no need to turn off) */ | return DM_DRAW_OPTION_NORMAL; /* normal drawing (no mcols anyway, no need to turn off) */ | ||||
| } | } | ||||
| else { | else { | ||||
| return DM_DRAW_OPTION_NORMAL; /* Set color from mcol */ | return DM_DRAW_OPTION_NORMAL; /* Set color from mcol */ | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 304 Lines • ▼ Show 20 Lines | if (!(mode & GEMAT_INVISIBLE) && (mode & GEMAT_TEXT) && mp->totloop >= 3) { | ||||
| if (!BKE_image_has_ibuf(mtpoly->tpage, NULL)) | if (!BKE_image_has_ibuf(mtpoly->tpage, NULL)) | ||||
| characters = 0; | characters = 0; | ||||
| if (!mf_smooth) { | if (!mf_smooth) { | ||||
| float nor[3]; | float nor[3]; | ||||
| normal_tri_v3(nor, v_quad[0], v_quad[1], v_quad[2]); | normal_tri_v3(nor, v_quad[0], v_quad[1], v_quad[2]); | ||||
| glNormal3fv(nor); | oldNormal3fv(nor); | ||||
| } | } | ||||
| GPU_render_text( | GPU_render_text( | ||||
| mtpoly, mode, string, characters, | mtpoly, mode, string, characters, | ||||
| (unsigned int *)tmp_mcol_pt, | (unsigned int *)tmp_mcol_pt, | ||||
| v_quad, uv_quad, | v_quad, uv_quad, | ||||
| glattrib); | glattrib); | ||||
| } | } | ||||
| Show All 36 Lines | static void draw_mesh_textured_old(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, | ||||
| /* correct for negative scale */ | /* correct for negative scale */ | ||||
| if (ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW); | if (ob->transflag & OB_NEG_SCALE) glFrontFace(GL_CW); | ||||
| else glFrontFace(GL_CCW); | else glFrontFace(GL_CCW); | ||||
| /* draw the textured mesh */ | /* draw the textured mesh */ | ||||
| draw_textured_begin(scene, v3d, rv3d, ob); | draw_textured_begin(scene, v3d, rv3d, ob); | ||||
| glColor4f(1.0f, 1.0f, 1.0f, 1.0f); | oldColor4f(1.0f, 1.0f, 1.0f, 1.0f); | ||||
| if (ob->mode & OB_MODE_EDIT) { | if (ob->mode & OB_MODE_EDIT) { | ||||
| drawEMTFMapped_userData data; | drawEMTFMapped_userData data; | ||||
| data.em = me->edit_btmesh; | data.em = me->edit_btmesh; | ||||
| data.has_mcol = CustomData_has_layer(&me->edit_btmesh->bm->ldata, CD_MLOOPCOL); | data.has_mcol = CustomData_has_layer(&me->edit_btmesh->bm->ldata, CD_MLOOPCOL); | ||||
| data.cd_poly_tex_offset = CustomData_get_offset(&me->edit_btmesh->bm->pdata, CD_MTEXPOLY); | data.cd_poly_tex_offset = CustomData_get_offset(&me->edit_btmesh->bm->pdata, CD_MTEXPOLY); | ||||
| ▲ Show 20 Lines • Show All 159 Lines • ▼ Show 20 Lines | if (bindcode) { | ||||
| return; | return; | ||||
| } | } | ||||
| } | } | ||||
| /* disable texture material */ | /* disable texture material */ | ||||
| GPU_basic_shader_bind(GPU_SHADER_USE_COLOR); | GPU_basic_shader_bind(GPU_SHADER_USE_COLOR); | ||||
| if (data->shadeless) { | if (data->shadeless) { | ||||
| glColor3f(1.0f, 1.0f, 1.0f); | oldColor3f(1.0f, 1.0f, 1.0f); | ||||
| memset(gattribs, 0, sizeof(*gattribs)); | memset(gattribs, 0, sizeof(*gattribs)); | ||||
| } | } | ||||
| else { | else { | ||||
| glMatrixMode(GL_TEXTURE); | glMatrixMode(GL_TEXTURE); | ||||
| glLoadIdentity(); /* TEXTURE */ | glLoadIdentity(); /* TEXTURE */ | ||||
| glMatrixMode(GL_MODELVIEW); | glMatrixMode(GL_MODELVIEW); | ||||
| /* enable solid material */ | /* enable solid material */ | ||||
| ▲ Show 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | if (use_light) { | ||||
| flags |= DM_DRAW_NEED_NORMALS; | flags |= DM_DRAW_NEED_NORMALS; | ||||
| } | } | ||||
| if (me->mloopcol) { | if (me->mloopcol) { | ||||
| dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, | dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, | ||||
| DM_DRAW_USE_COLORS | flags); | DM_DRAW_USE_COLORS | flags); | ||||
| } | } | ||||
| else { | else { | ||||
| glColor3f(1.0f, 1.0f, 1.0f); | oldColor3f(1.0f, 1.0f, 1.0f); | ||||
| dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, flags); | dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, flags); | ||||
| } | } | ||||
| if (use_light) { | if (use_light) { | ||||
| draw_mesh_paint_light_end(); | draw_mesh_paint_light_end(); | ||||
| } | } | ||||
| } | } | ||||
| Show All 11 Lines | void draw_mesh_paint_weight_edges(RegionView3D *rv3d, DerivedMesh *dm, | ||||
| else { | else { | ||||
| glDisable(GL_DEPTH_TEST); | glDisable(GL_DEPTH_TEST); | ||||
| } | } | ||||
| if (use_alpha) { | if (use_alpha) { | ||||
| glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||||
| } | } | ||||
| glColor4ub(255, 255, 255, 96); | oldColor4ub(255, 255, 255, 96); | ||||
| GPU_basic_shader_bind_enable(GPU_SHADER_LINE | GPU_SHADER_STIPPLE); | GPU_basic_shader_bind_enable(GPU_SHADER_LINE | GPU_SHADER_STIPPLE); | ||||
| GPU_basic_shader_line_stipple(1, 0xAAAA); | GPU_basic_shader_line_stipple(1, 0xAAAA); | ||||
| dm->drawMappedEdges(dm, (DMSetDrawOptions)edgemask_cb, user_data); | dm->drawMappedEdges(dm, (DMSetDrawOptions)edgemask_cb, user_data); | ||||
| if (use_depth) { | if (use_depth) { | ||||
| ED_view3d_polygon_offset(rv3d, 0.0); | ED_view3d_polygon_offset(rv3d, 0.0); | ||||
| glDepthMask(1); | glDepthMask(1); | ||||
| ▲ Show 20 Lines • Show All 51 Lines • Show Last 20 Lines | |||||