forked from bartvdbraak/blender
Remove all instances of OBACT from drawobject.c and related changes
This commit is contained in:
parent
083bc48816
commit
209021a703
@ -52,6 +52,7 @@ class OffScreenDraw(bpy.types.Operator):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def _update_offscreen(context, offscreen):
|
def _update_offscreen(context, offscreen):
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
|
render_layer = context.render_layer
|
||||||
render = scene.render
|
render = scene.render
|
||||||
camera = scene.camera
|
camera = scene.camera
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ class OffScreenDraw(bpy.types.Operator):
|
|||||||
|
|
||||||
offscreen.draw_view3d(
|
offscreen.draw_view3d(
|
||||||
scene,
|
scene,
|
||||||
|
render_layer,
|
||||||
context.space_data,
|
context.space_data,
|
||||||
context.region,
|
context.region,
|
||||||
projection_matrix,
|
projection_matrix,
|
||||||
|
@ -421,7 +421,7 @@ struct Sequence *BKE_sequencer_add_movie_strip(struct bContext *C, ListBase *seq
|
|||||||
|
|
||||||
/* view3d draw callback, run when not in background view */
|
/* view3d draw callback, run when not in background view */
|
||||||
typedef struct ImBuf *(*SequencerDrawView)(
|
typedef struct ImBuf *(*SequencerDrawView)(
|
||||||
struct Scene *, struct Object *, int, int,
|
struct Scene *, struct SceneLayer *sl, struct Object *, int, int,
|
||||||
unsigned int, int, bool, bool, bool,
|
unsigned int, int, bool, bool, bool,
|
||||||
int, int, bool, const char *,
|
int, int, bool, const char *,
|
||||||
struct GPUFX *, struct GPUOffScreen *, char[256]);
|
struct GPUFX *, struct GPUOffScreen *, char[256]);
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
#include "BKE_depsgraph.h"
|
#include "BKE_depsgraph.h"
|
||||||
#include "BKE_global.h"
|
#include "BKE_global.h"
|
||||||
#include "BKE_image.h"
|
#include "BKE_image.h"
|
||||||
|
#include "BKE_layer.h"
|
||||||
#include "BKE_main.h"
|
#include "BKE_main.h"
|
||||||
#include "BKE_sequencer.h"
|
#include "BKE_sequencer.h"
|
||||||
#include "BKE_movieclip.h"
|
#include "BKE_movieclip.h"
|
||||||
@ -3304,7 +3305,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
|
|||||||
BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
|
BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
|
||||||
ibuf = sequencer_view3d_cb(
|
ibuf = sequencer_view3d_cb(
|
||||||
/* set for OpenGL render (NULL when scrubbing) */
|
/* set for OpenGL render (NULL when scrubbing) */
|
||||||
scene, camera, width, height, IB_rect,
|
scene, BKE_scene_layer_render_active(scene), camera, width, height, IB_rect,
|
||||||
context->scene->r.seq_prev_type,
|
context->scene->r.seq_prev_type,
|
||||||
(context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0,
|
(context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0,
|
||||||
use_gpencil, use_background, scene->r.alphamode,
|
use_gpencil, use_background, scene->r.alphamode,
|
||||||
|
@ -338,7 +338,7 @@ void *ED_view3d_mats_rv3d_backup(struct RegionView3D *rv3d);
|
|||||||
void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, void *rv3dmat_pt);
|
void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, void *rv3dmat_pt);
|
||||||
|
|
||||||
bool ED_view3d_context_activate(struct bContext *C);
|
bool ED_view3d_context_activate(struct bContext *C);
|
||||||
void ED_view3d_draw_offscreen_init(struct Scene *scene, struct View3D *v3d);
|
void ED_view3d_draw_offscreen_init(struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d);
|
||||||
void ED_view3d_draw_offscreen(
|
void ED_view3d_draw_offscreen(
|
||||||
struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
|
struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
|
||||||
float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
|
float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
|
||||||
@ -346,12 +346,12 @@ void ED_view3d_draw_offscreen(
|
|||||||
struct GPUOffScreen *ofs);
|
struct GPUOffScreen *ofs);
|
||||||
|
|
||||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf(
|
struct ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||||
struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey,
|
struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey,
|
||||||
unsigned int flag, bool draw_background,
|
unsigned int flag, bool draw_background,
|
||||||
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
||||||
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
|
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
|
||||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
||||||
struct Scene *scene, struct Object *camera, int width, int height,
|
struct Scene *scene, struct SceneLayer *sl, struct Object *camera, int width, int height,
|
||||||
unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
|
unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
|
||||||
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
||||||
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
|
struct GPUFX *fx, struct GPUOffScreen *ofs, char err_out[256]);
|
||||||
|
@ -92,6 +92,7 @@ typedef struct OGLRender {
|
|||||||
Main *bmain;
|
Main *bmain;
|
||||||
Render *re;
|
Render *re;
|
||||||
Scene *scene;
|
Scene *scene;
|
||||||
|
SceneLayer *scene_layer;
|
||||||
|
|
||||||
View3D *v3d;
|
View3D *v3d;
|
||||||
RegionView3D *rv3d;
|
RegionView3D *rv3d;
|
||||||
@ -277,6 +278,7 @@ static void screen_opengl_views_setup(OGLRender *oglrender)
|
|||||||
static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr)
|
static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr)
|
||||||
{
|
{
|
||||||
Scene *scene = oglrender->scene;
|
Scene *scene = oglrender->scene;
|
||||||
|
SceneLayer *sl = oglrender->scene_layer;
|
||||||
ARegion *ar = oglrender->ar;
|
ARegion *ar = oglrender->ar;
|
||||||
View3D *v3d = oglrender->v3d;
|
View3D *v3d = oglrender->v3d;
|
||||||
RegionView3D *rv3d = oglrender->rv3d;
|
RegionView3D *rv3d = oglrender->rv3d;
|
||||||
@ -358,7 +360,7 @@ static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr)
|
|||||||
|
|
||||||
if (view_context) {
|
if (view_context) {
|
||||||
ibuf_view = ED_view3d_draw_offscreen_imbuf(
|
ibuf_view = ED_view3d_draw_offscreen_imbuf(
|
||||||
scene, v3d, ar, sizex, sizey,
|
scene, sl, v3d, ar, sizex, sizey,
|
||||||
IB_rect, draw_bgpic,
|
IB_rect, draw_bgpic,
|
||||||
alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
|
alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
|
||||||
oglrender->fx, oglrender->ofs, err_out);
|
oglrender->fx, oglrender->ofs, err_out);
|
||||||
@ -370,7 +372,7 @@ static void screen_opengl_render_doit(OGLRender *oglrender, RenderResult *rr)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
|
ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
|
||||||
scene, scene->camera, oglrender->sizex, oglrender->sizey,
|
scene, sl, scene->camera, oglrender->sizex, oglrender->sizey,
|
||||||
IB_rect, OB_SOLID, false, true, true,
|
IB_rect, OB_SOLID, false, true, true,
|
||||||
alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
|
alpha_mode, oglrender->ofs_samples, oglrender->ofs_full_samples, viewname,
|
||||||
oglrender->fx, oglrender->ofs, err_out);
|
oglrender->fx, oglrender->ofs, err_out);
|
||||||
@ -650,6 +652,7 @@ static bool screen_opengl_render_init(bContext *C, wmOperator *op)
|
|||||||
oglrender->sizey = sizey;
|
oglrender->sizey = sizey;
|
||||||
oglrender->bmain = CTX_data_main(C);
|
oglrender->bmain = CTX_data_main(C);
|
||||||
oglrender->scene = scene;
|
oglrender->scene = scene;
|
||||||
|
oglrender->scene_layer = CTX_data_scene_layer(C);
|
||||||
oglrender->cfrao = scene->r.cfra;
|
oglrender->cfrao = scene->r.cfra;
|
||||||
|
|
||||||
oglrender->write_still = is_write_still && !is_animation;
|
oglrender->write_still = is_write_still && !is_animation;
|
||||||
|
@ -5439,6 +5439,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
|
|||||||
char filename[FILE_MAX];
|
char filename[FILE_MAX];
|
||||||
|
|
||||||
Scene *scene = CTX_data_scene(C);
|
Scene *scene = CTX_data_scene(C);
|
||||||
|
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||||
ToolSettings *settings = scene->toolsettings;
|
ToolSettings *settings = scene->toolsettings;
|
||||||
int w = settings->imapaint.screen_grab_size[0];
|
int w = settings->imapaint.screen_grab_size[0];
|
||||||
int h = settings->imapaint.screen_grab_size[1];
|
int h = settings->imapaint.screen_grab_size[1];
|
||||||
@ -5453,7 +5454,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
|
|||||||
if (h > maxsize) h = maxsize;
|
if (h > maxsize) h = maxsize;
|
||||||
|
|
||||||
ibuf = ED_view3d_draw_offscreen_imbuf(
|
ibuf = ED_view3d_draw_offscreen_imbuf(
|
||||||
scene, CTX_wm_view3d(C), CTX_wm_region(C),
|
scene, sl, CTX_wm_view3d(C), CTX_wm_region(C),
|
||||||
w, h, IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
|
w, h, IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
|
||||||
NULL, NULL, err_out);
|
NULL, NULL, err_out);
|
||||||
if (!ibuf) {
|
if (!ibuf) {
|
||||||
|
@ -1631,7 +1631,7 @@ static void draw_bone(const short dt, int armflag, int boneflag, short constflag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_custom_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob,
|
static void draw_custom_bone(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Object *ob,
|
||||||
const short dt, int armflag, int boneflag, unsigned int id, float length)
|
const short dt, int armflag, int boneflag, unsigned int id, float length)
|
||||||
{
|
{
|
||||||
if (ob == NULL) return;
|
if (ob == NULL) return;
|
||||||
@ -1647,7 +1647,7 @@ static void draw_custom_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obje
|
|||||||
GPU_select_load_id((GLuint) id | BONESEL_BONE);
|
GPU_select_load_id((GLuint) id | BONESEL_BONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_object_instance(scene, v3d, rv3d, ob, dt, armflag & ARM_POSEMODE, fcolor);
|
draw_object_instance(scene, sl, v3d, rv3d, ob, dt, armflag & ARM_POSEMODE, fcolor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1944,7 +1944,7 @@ static void bone_matrix_translate_y(float mat[4][4], float y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* assumes object is Armature with pose */
|
/* assumes object is Armature with pose */
|
||||||
static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *base,
|
static void draw_pose_bones(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base *base,
|
||||||
const short dt, const unsigned char ob_wire_col[4],
|
const short dt, const unsigned char ob_wire_col[4],
|
||||||
const bool do_const_color, const bool is_outline)
|
const bool do_const_color, const bool is_outline)
|
||||||
{
|
{
|
||||||
@ -2071,7 +2071,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *
|
|||||||
glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_custom_bone(scene, v3d, rv3d, pchan->custom,
|
draw_custom_bone(scene, sl, v3d, rv3d, pchan->custom,
|
||||||
OB_SOLID, arm->flag, flag, index, PCHAN_CUSTOM_DRAW_SIZE(pchan));
|
OB_SOLID, arm->flag, flag, index, PCHAN_CUSTOM_DRAW_SIZE(pchan));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2162,7 +2162,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *
|
|||||||
if (bone == arm->act_bone)
|
if (bone == arm->act_bone)
|
||||||
flag |= BONE_DRAW_ACTIVE;
|
flag |= BONE_DRAW_ACTIVE;
|
||||||
|
|
||||||
draw_custom_bone(scene, v3d, rv3d, pchan->custom,
|
draw_custom_bone(scene, sl, v3d, rv3d, pchan->custom,
|
||||||
OB_WIRE, arm->flag, flag, index, PCHAN_CUSTOM_DRAW_SIZE(pchan));
|
OB_WIRE, arm->flag, flag, index, PCHAN_CUSTOM_DRAW_SIZE(pchan));
|
||||||
|
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
@ -2665,7 +2665,7 @@ static void ghost_poses_tag_unselected(Object *ob, short unset)
|
|||||||
/* draw ghosts that occur within a frame range
|
/* draw ghosts that occur within a frame range
|
||||||
* note: object should be in posemode
|
* note: object should be in posemode
|
||||||
*/
|
*/
|
||||||
static void draw_ghost_poses_range(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *base)
|
static void draw_ghost_poses_range(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base *base)
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
||||||
@ -2710,7 +2710,7 @@ static void draw_ghost_poses_range(Scene *scene, View3D *v3d, ARegion *ar, BaseL
|
|||||||
|
|
||||||
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
||||||
BKE_pose_where_is(scene, ob);
|
BKE_pose_where_is(scene, ob);
|
||||||
draw_pose_bones(scene, v3d, ar, base, OB_WIRE, col, true, false);
|
draw_pose_bones(scene, sl, v3d, ar, base, OB_WIRE, col, true, false);
|
||||||
}
|
}
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
|
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
|
||||||
@ -2732,7 +2732,7 @@ static void draw_ghost_poses_range(Scene *scene, View3D *v3d, ARegion *ar, BaseL
|
|||||||
/* draw ghosts on keyframes in action within range
|
/* draw ghosts on keyframes in action within range
|
||||||
* - object should be in posemode
|
* - object should be in posemode
|
||||||
*/
|
*/
|
||||||
static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *base)
|
static void draw_ghost_poses_keys(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, BaseLegacy *base)
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
||||||
@ -2791,7 +2791,7 @@ static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, ARegion *ar, BaseLe
|
|||||||
|
|
||||||
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
||||||
BKE_pose_where_is(scene, ob);
|
BKE_pose_where_is(scene, ob);
|
||||||
draw_pose_bones(scene, v3d, ar, base, OB_WIRE, col, true, false);
|
draw_pose_bones(scene, sl, v3d, ar, base, OB_WIRE, col, true, false);
|
||||||
}
|
}
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
|
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
|
||||||
@ -2814,7 +2814,7 @@ static void draw_ghost_poses_keys(Scene *scene, View3D *v3d, ARegion *ar, BaseLe
|
|||||||
/* draw ghosts around current frame
|
/* draw ghosts around current frame
|
||||||
* - object is supposed to be armature in posemode
|
* - object is supposed to be armature in posemode
|
||||||
*/
|
*/
|
||||||
static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy *base)
|
static void draw_ghost_poses(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base *base)
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
AnimData *adt = BKE_animdata_from_id(&ob->id);
|
||||||
@ -2869,7 +2869,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy
|
|||||||
if (CFRA != cfrao) {
|
if (CFRA != cfrao) {
|
||||||
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
||||||
BKE_pose_where_is(scene, ob);
|
BKE_pose_where_is(scene, ob);
|
||||||
draw_pose_bones(scene, v3d, ar, base, OB_WIRE, col, true, false);
|
draw_pose_bones(scene, sl, v3d, ar, base, OB_WIRE, col, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2884,7 +2884,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, BaseLegacy
|
|||||||
if (CFRA != cfrao) {
|
if (CFRA != cfrao) {
|
||||||
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
BKE_animsys_evaluate_animdata(scene, &ob->id, adt, (float)CFRA, ADT_RECALC_ALL);
|
||||||
BKE_pose_where_is(scene, ob);
|
BKE_pose_where_is(scene, ob);
|
||||||
draw_pose_bones(scene, v3d, ar, base, OB_WIRE, col, true, false);
|
draw_pose_bones(scene, sl, v3d, ar, base, OB_WIRE, col, true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2969,14 +2969,14 @@ bool draw_armature(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base
|
|||||||
}
|
}
|
||||||
else if (ob->mode & OB_MODE_POSE) {
|
else if (ob->mode & OB_MODE_POSE) {
|
||||||
if (arm->ghosttype == ARM_GHOST_RANGE) {
|
if (arm->ghosttype == ARM_GHOST_RANGE) {
|
||||||
draw_ghost_poses_range(scene, v3d, ar, base);
|
draw_ghost_poses_range(scene, sl, v3d, ar, base);
|
||||||
}
|
}
|
||||||
else if (arm->ghosttype == ARM_GHOST_KEYS) {
|
else if (arm->ghosttype == ARM_GHOST_KEYS) {
|
||||||
draw_ghost_poses_keys(scene, v3d, ar, base);
|
draw_ghost_poses_keys(scene, sl, v3d, ar, base);
|
||||||
}
|
}
|
||||||
else if (arm->ghosttype == ARM_GHOST_CUR) {
|
else if (arm->ghosttype == ARM_GHOST_CUR) {
|
||||||
if (arm->ghostep)
|
if (arm->ghostep)
|
||||||
draw_ghost_poses(scene, v3d, ar, base);
|
draw_ghost_poses(scene, sl, v3d, ar, base);
|
||||||
}
|
}
|
||||||
if ((dflag & DRAW_SCENESET) == 0) {
|
if ((dflag & DRAW_SCENESET) == 0) {
|
||||||
if (ob == OBACT_NEW)
|
if (ob == OBACT_NEW)
|
||||||
@ -2989,7 +2989,7 @@ bool draw_armature(Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
draw_pose_bones(scene, v3d, ar, base, dt, ob_wire_col, (dflag & DRAW_CONSTCOLOR), is_outline);
|
draw_pose_bones(scene, sl, v3d, ar, base, dt, ob_wire_col, (dflag & DRAW_CONSTCOLOR), is_outline);
|
||||||
arm->flag &= ~ARM_POSEMODE;
|
arm->flag &= ~ARM_POSEMODE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1217,7 +1217,7 @@ void draw_mesh_textured(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D
|
|||||||
const int drawtype = view3d_effective_drawtype(v3d);
|
const int drawtype = view3d_effective_drawtype(v3d);
|
||||||
bool glsl = (drawtype == OB_MATERIAL) && !picking;
|
bool glsl = (drawtype == OB_MATERIAL) && !picking;
|
||||||
|
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl, NULL);
|
||||||
|
|
||||||
if (glsl || picking) {
|
if (glsl || picking) {
|
||||||
/* draw glsl or solid */
|
/* draw glsl or solid */
|
||||||
|
@ -304,13 +304,13 @@ static bool check_ob_drawface_dot(Scene *sce, View3D *vd, char dt)
|
|||||||
|
|
||||||
/* check for glsl drawing */
|
/* check for glsl drawing */
|
||||||
|
|
||||||
bool draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, const char dt)
|
bool draw_glsl_material(Scene *scene, SceneLayer *sl, Object *ob, View3D *v3d, const char dt)
|
||||||
{
|
{
|
||||||
if (G.f & G_PICKSEL)
|
if (G.f & G_PICKSEL)
|
||||||
return false;
|
return false;
|
||||||
if (!check_object_draw_texture(scene, v3d, dt))
|
if (!check_object_draw_texture(scene, v3d, dt))
|
||||||
return false;
|
return false;
|
||||||
if (ob == OBACT && (ob && ob->mode & OB_MODE_WEIGHT_PAINT))
|
if (ob == OBACT_NEW && (ob && ob->mode & OB_MODE_WEIGHT_PAINT))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (v3d->flag2 & V3D_SHOW_SOLID_MATCAP)
|
if (v3d->flag2 & V3D_SHOW_SOLID_MATCAP)
|
||||||
@ -324,7 +324,7 @@ bool draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, const char dt)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_alpha_pass(BaseLegacy *base)
|
static bool check_alpha_pass(Base *base)
|
||||||
{
|
{
|
||||||
if (base->flag_legacy & OB_FROMDUPLI)
|
if (base->flag_legacy & OB_FROMDUPLI)
|
||||||
return false;
|
return false;
|
||||||
@ -3835,7 +3835,7 @@ static void draw_em_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d
|
|||||||
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
||||||
}
|
}
|
||||||
else if (check_object_draw_texture(scene, v3d, dt)) {
|
else if (check_object_draw_texture(scene, v3d, dt)) {
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt)) {
|
||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
|
|
||||||
finalDM->drawMappedFacesGLSL(finalDM, GPU_object_material_bind,
|
finalDM->drawMappedFacesGLSL(finalDM, GPU_object_material_bind,
|
||||||
@ -4215,7 +4215,7 @@ static void draw_mesh_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v
|
|||||||
eWireDrawMode draw_wire = OBDRAW_WIRE_OFF;
|
eWireDrawMode draw_wire = OBDRAW_WIRE_OFF;
|
||||||
bool /* no_verts,*/ no_edges, no_faces;
|
bool /* no_verts,*/ no_edges, no_faces;
|
||||||
DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask);
|
DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask);
|
||||||
const bool is_obact = (ob == OBACT);
|
const bool is_obact = (ob == OBACT_NEW);
|
||||||
int draw_flags = (is_obact && BKE_paint_select_face_test(ob)) ? DRAW_FACE_SELECT : 0;
|
int draw_flags = (is_obact && BKE_paint_select_face_test(ob)) ? DRAW_FACE_SELECT : 0;
|
||||||
|
|
||||||
if (!dm)
|
if (!dm)
|
||||||
@ -4276,7 +4276,7 @@ static void draw_mesh_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v
|
|||||||
draw_mesh_object_outline(v3d, ob, dm);
|
draw_mesh_object_outline(v3d, ob, dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt) && !(draw_flags & DRAW_MODIFIERS_PREVIEW)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt) && !(draw_flags & DRAW_MODIFIERS_PREVIEW)) {
|
||||||
Paint *p;
|
Paint *p;
|
||||||
|
|
||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
@ -4522,9 +4522,9 @@ static bool draw_mesh_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *
|
|||||||
|
|
||||||
if (use_material) {
|
if (use_material) {
|
||||||
if (dt > OB_WIRE) {
|
if (dt > OB_WIRE) {
|
||||||
const bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
const bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
|
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4541,11 +4541,11 @@ static bool draw_mesh_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *
|
|||||||
/* ob->bb was set by derived mesh system, do NULL check just to be sure */
|
/* ob->bb was set by derived mesh system, do NULL check just to be sure */
|
||||||
if (me->totpoly <= 4 || (!ob->bb || ED_view3d_boundbox_clip(rv3d, ob->bb))) {
|
if (me->totpoly <= 4 || (!ob->bb || ED_view3d_boundbox_clip(rv3d, ob->bb))) {
|
||||||
if (dt > OB_WIRE) {
|
if (dt > OB_WIRE) {
|
||||||
const bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
const bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
|
|
||||||
if (dt == OB_SOLID || glsl) {
|
if (dt == OB_SOLID || glsl) {
|
||||||
const bool check_alpha = check_alpha_pass(base);
|
const bool check_alpha = check_alpha_pass(base);
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl,
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl,
|
||||||
(check_alpha) ? &do_alpha_after : NULL);
|
(check_alpha) ? &do_alpha_after : NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4631,7 +4631,7 @@ static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3
|
|||||||
eWireDrawMode draw_wire = OBDRAW_WIRE_OFF; /* could be bool draw_wire_overlay */
|
eWireDrawMode draw_wire = OBDRAW_WIRE_OFF; /* could be bool draw_wire_overlay */
|
||||||
bool no_edges, no_faces;
|
bool no_edges, no_faces;
|
||||||
DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask);
|
DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask);
|
||||||
const bool is_obact = (ob == OBACT);
|
const bool is_obact = (ob == OBACT_NEW);
|
||||||
int draw_flags = (is_obact && BKE_paint_select_face_test(ob)) ? DRAW_FACE_SELECT : 0;
|
int draw_flags = (is_obact && BKE_paint_select_face_test(ob)) ? DRAW_FACE_SELECT : 0;
|
||||||
|
|
||||||
if (!dm)
|
if (!dm)
|
||||||
@ -4752,10 +4752,10 @@ static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3
|
|||||||
!(G.f & G_PICKSEL || (draw_flags & DRAW_FACE_SELECT)) &&
|
!(G.f & G_PICKSEL || (draw_flags & DRAW_FACE_SELECT)) &&
|
||||||
(draw_wire == OBDRAW_WIRE_OFF))
|
(draw_wire == OBDRAW_WIRE_OFF))
|
||||||
{
|
{
|
||||||
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT));
|
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT_NEW));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt) && !(draw_flags & DRAW_MODIFIERS_PREVIEW)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt) && !(draw_flags & DRAW_MODIFIERS_PREVIEW)) {
|
||||||
Paint *p;
|
Paint *p;
|
||||||
|
|
||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
@ -4819,7 +4819,7 @@ static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3
|
|||||||
(draw_wire == OBDRAW_WIRE_OFF) &&
|
(draw_wire == OBDRAW_WIRE_OFF) &&
|
||||||
(ob->sculpt == NULL))
|
(ob->sculpt == NULL))
|
||||||
{
|
{
|
||||||
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT));
|
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT_NEW));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* materials arent compatible with vertex colors */
|
/* materials arent compatible with vertex colors */
|
||||||
@ -4844,7 +4844,7 @@ static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3
|
|||||||
(ob->sculpt == NULL))
|
(ob->sculpt == NULL))
|
||||||
{
|
{
|
||||||
/* TODO: move this into a separate pass */
|
/* TODO: move this into a separate pass */
|
||||||
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT));
|
draw_mesh_object_outline_new(v3d, rv3d, ob, me, (ob == OBACT_NEW));
|
||||||
}
|
}
|
||||||
|
|
||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
@ -4988,9 +4988,9 @@ static bool draw_mesh_object_new(Scene *scene, SceneLayer *sl, ARegion *ar, View
|
|||||||
DM_update_materials(cageDM, ob);
|
DM_update_materials(cageDM, ob);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
const bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
|
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_em_fancy_new(scene, ar, v3d, ob, me, em, cageDM, finalDM, dt);
|
draw_em_fancy_new(scene, ar, v3d, ob, me, em, cageDM, finalDM, dt);
|
||||||
@ -5006,11 +5006,11 @@ static bool draw_mesh_object_new(Scene *scene, SceneLayer *sl, ARegion *ar, View
|
|||||||
/* ob->bb was set by derived mesh system, do NULL check just to be sure */
|
/* ob->bb was set by derived mesh system, do NULL check just to be sure */
|
||||||
if (me->totpoly <= 4 || (!ob->bb || ED_view3d_boundbox_clip(rv3d, ob->bb))) {
|
if (me->totpoly <= 4 || (!ob->bb || ED_view3d_boundbox_clip(rv3d, ob->bb))) {
|
||||||
if (solid) {
|
if (solid) {
|
||||||
const bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
const bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
|
|
||||||
if (dt == OB_SOLID || glsl) {
|
if (dt == OB_SOLID || glsl) {
|
||||||
const bool check_alpha = check_alpha_pass(base);
|
const bool check_alpha = check_alpha_pass(base);
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl,
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl,
|
||||||
(check_alpha) ? &do_alpha_after : NULL);
|
(check_alpha) ? &do_alpha_after : NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5270,7 +5270,7 @@ static void drawCurveDMWired(Object *ob)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* return true when nothing was drawn */
|
/* return true when nothing was drawn */
|
||||||
static bool drawCurveDerivedMesh(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, const char dt)
|
static bool drawCurveDerivedMesh(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, const char dt)
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
DerivedMesh *dm = ob->derivedFinal;
|
DerivedMesh *dm = ob->derivedFinal;
|
||||||
@ -5284,8 +5284,8 @@ static bool drawCurveDerivedMesh(Scene *scene, View3D *v3d, RegionView3D *rv3d,
|
|||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
|
|
||||||
if (dt > OB_WIRE && dm->getNumPolys(dm)) {
|
if (dt > OB_WIRE && dm->getNumPolys(dm)) {
|
||||||
bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl, NULL);
|
||||||
|
|
||||||
if (!glsl)
|
if (!glsl)
|
||||||
dm->drawFacesSolid(dm, NULL, 0, GPU_object_material_bind);
|
dm->drawFacesSolid(dm, NULL, 0, GPU_object_material_bind);
|
||||||
@ -5306,7 +5306,7 @@ static bool drawCurveDerivedMesh(Scene *scene, View3D *v3d, RegionView3D *rv3d,
|
|||||||
* Only called by #drawDispList
|
* Only called by #drawDispList
|
||||||
* \return true when nothing was drawn
|
* \return true when nothing was drawn
|
||||||
*/
|
*/
|
||||||
static bool drawDispList_nobackface(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
|
static bool drawDispList_nobackface(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Base *base,
|
||||||
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
@ -5347,13 +5347,13 @@ static bool drawDispList_nobackface(Scene *scene, View3D *v3d, RegionView3D *rv3
|
|||||||
/* pass */
|
/* pass */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt)) {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 1, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 1, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 0, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
@ -5382,13 +5382,13 @@ static bool drawDispList_nobackface(Scene *scene, View3D *v3d, RegionView3D *rv3
|
|||||||
|
|
||||||
if (dl->nors == NULL) BKE_displist_normals_add(lb);
|
if (dl->nors == NULL) BKE_displist_normals_add(lb);
|
||||||
|
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt)) {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 1, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 1, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 0, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
@ -5407,13 +5407,13 @@ static bool drawDispList_nobackface(Scene *scene, View3D *v3d, RegionView3D *rv3
|
|||||||
|
|
||||||
if (solid) {
|
if (solid) {
|
||||||
|
|
||||||
if (draw_glsl_material(scene, ob, v3d, dt)) {
|
if (draw_glsl_material(scene, sl, ob, v3d, dt)) {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 1, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 1, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, true);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, 0, NULL);
|
||||||
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
drawDispListsolid(lb, ob, dflag, ob_wire_col, false);
|
||||||
GPU_end_object_materials();
|
GPU_end_object_materials();
|
||||||
}
|
}
|
||||||
@ -5427,7 +5427,7 @@ static bool drawDispList_nobackface(Scene *scene, View3D *v3d, RegionView3D *rv3
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static bool drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
|
static bool drawDispList(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Base *base,
|
||||||
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
||||||
{
|
{
|
||||||
bool retval;
|
bool retval;
|
||||||
@ -5443,7 +5443,7 @@ static bool drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLega
|
|||||||
ensure_curve_cache(scene, base->object);
|
ensure_curve_cache(scene, base->object);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (drawCurveDerivedMesh(scene, v3d, rv3d, base, dt) == false) {
|
if (drawCurveDerivedMesh(scene, sl, v3d, rv3d, base, dt) == false) {
|
||||||
retval = false;
|
retval = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -5459,7 +5459,7 @@ static bool drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLega
|
|||||||
|
|
||||||
glFrontFace(mode);
|
glFrontFace(mode);
|
||||||
|
|
||||||
retval = drawDispList_nobackface(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
retval = drawDispList_nobackface(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
|
|
||||||
if (mode != GL_CCW) {
|
if (mode != GL_CCW) {
|
||||||
glFrontFace(GL_CCW);
|
glFrontFace(GL_CCW);
|
||||||
@ -7076,7 +7076,7 @@ static void draw_editnurb_splines(Object *ob, Nurb *nurb, const bool sel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void draw_editnurb(
|
static void draw_editnurb(
|
||||||
Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, Nurb *nurb,
|
Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Base *base, Nurb *nurb,
|
||||||
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
||||||
{
|
{
|
||||||
ToolSettings *ts = scene->toolsettings;
|
ToolSettings *ts = scene->toolsettings;
|
||||||
@ -7091,7 +7091,7 @@ static void draw_editnurb(
|
|||||||
UI_GetThemeColor3ubv(TH_WIRE_EDIT, wire_col);
|
UI_GetThemeColor3ubv(TH_WIRE_EDIT, wire_col);
|
||||||
glColor3ubv(wire_col);
|
glColor3ubv(wire_col);
|
||||||
|
|
||||||
drawDispList(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
|
|
||||||
/* for shadows only show solid faces */
|
/* for shadows only show solid faces */
|
||||||
if (v3d->flag2 & V3D_RENDER_SHADOW)
|
if (v3d->flag2 & V3D_RENDER_SHADOW)
|
||||||
@ -7186,7 +7186,7 @@ static void draw_editfont_textcurs(RegionView3D *rv3d, float textcurs[4][2])
|
|||||||
ED_view3d_polygon_offset(rv3d, 0.0);
|
ED_view3d_polygon_offset(rv3d, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_editfont(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
|
static void draw_editfont(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Base *base,
|
||||||
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
@ -7200,11 +7200,11 @@ static void draw_editfont(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLeg
|
|||||||
if (cu->flag & CU_FAST) {
|
if (cu->flag & CU_FAST) {
|
||||||
cpack(0xFFFFFF);
|
cpack(0xFFFFFF);
|
||||||
set_inverted_drawing(1);
|
set_inverted_drawing(1);
|
||||||
drawDispList(scene, v3d, rv3d, base, OB_WIRE, dflag, ob_wire_col);
|
drawDispList(scene, sl, v3d, rv3d, base, OB_WIRE, dflag, ob_wire_col);
|
||||||
set_inverted_drawing(0);
|
set_inverted_drawing(0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
drawDispList(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cu->linewidth != 0.0f) {
|
if (cu->linewidth != 0.0f) {
|
||||||
@ -7498,7 +7498,7 @@ static void imm_drawcone(const float vec[3], float radius, float height, float t
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* return true if nothing was drawn */
|
/* return true if nothing was drawn */
|
||||||
static bool drawmball(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
|
static bool drawmball(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Base *base,
|
||||||
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
const char dt, const short dflag, const unsigned char ob_wire_col[4])
|
||||||
{
|
{
|
||||||
Object *ob = base->object;
|
Object *ob = base->object;
|
||||||
@ -7514,13 +7514,13 @@ static bool drawmball(Scene *scene, View3D *v3d, RegionView3D *rv3d, BaseLegacy
|
|||||||
UI_GetThemeColor4ubv(TH_WIRE_EDIT, wire_col);
|
UI_GetThemeColor4ubv(TH_WIRE_EDIT, wire_col);
|
||||||
glColor3ubv(wire_col);
|
glColor3ubv(wire_col);
|
||||||
|
|
||||||
drawDispList(scene, v3d, rv3d, base, dt, dflag, wire_col);
|
drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, wire_col);
|
||||||
}
|
}
|
||||||
ml = mb->editelems->first;
|
ml = mb->editelems->first;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ((base->flag_legacy & OB_FROMDUPLI) == 0) {
|
if ((base->flag_legacy & OB_FROMDUPLI) == 0) {
|
||||||
drawDispList(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
ml = mb->elems.first;
|
ml = mb->elems.first;
|
||||||
}
|
}
|
||||||
@ -8448,7 +8448,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
case OB_FONT:
|
case OB_FONT:
|
||||||
cu = ob->data;
|
cu = ob->data;
|
||||||
if (cu->editfont) {
|
if (cu->editfont) {
|
||||||
draw_editfont(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
draw_editfont(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
else if (dt == OB_BOUNDBOX) {
|
else if (dt == OB_BOUNDBOX) {
|
||||||
if ((render_override && v3d->drawtype >= OB_WIRE) == 0) {
|
if ((render_override && v3d->drawtype >= OB_WIRE) == 0) {
|
||||||
@ -8459,7 +8459,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ED_view3d_boundbox_clip(rv3d, ob->bb)) {
|
else if (ED_view3d_boundbox_clip(rv3d, ob->bb)) {
|
||||||
empty_object = drawDispList(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
empty_object = drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -8469,7 +8469,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
|
|
||||||
if (cu->editnurb) {
|
if (cu->editnurb) {
|
||||||
ListBase *nurbs = BKE_curve_editNurbs_get(cu);
|
ListBase *nurbs = BKE_curve_editNurbs_get(cu);
|
||||||
draw_editnurb(scene, v3d, rv3d, base, nurbs->first, dt, dflag, ob_wire_col);
|
draw_editnurb(scene, sl, v3d, rv3d, base, nurbs->first, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
else if (dt == OB_BOUNDBOX) {
|
else if (dt == OB_BOUNDBOX) {
|
||||||
if ((render_override && (v3d->drawtype >= OB_WIRE)) == 0) {
|
if ((render_override && (v3d->drawtype >= OB_WIRE)) == 0) {
|
||||||
@ -8480,7 +8480,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ED_view3d_boundbox_clip(rv3d, ob->bb)) {
|
else if (ED_view3d_boundbox_clip(rv3d, ob->bb)) {
|
||||||
empty_object = drawDispList(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
empty_object = drawDispList(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OB_MBALL:
|
case OB_MBALL:
|
||||||
@ -8488,7 +8488,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
MetaBall *mb = ob->data;
|
MetaBall *mb = ob->data;
|
||||||
|
|
||||||
if (mb->editelems)
|
if (mb->editelems)
|
||||||
drawmball(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
drawmball(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
else if (dt == OB_BOUNDBOX) {
|
else if (dt == OB_BOUNDBOX) {
|
||||||
if ((render_override && (v3d->drawtype >= OB_WIRE)) == 0) {
|
if ((render_override && (v3d->drawtype >= OB_WIRE)) == 0) {
|
||||||
#ifdef SEQUENCER_DAG_WORKAROUND
|
#ifdef SEQUENCER_DAG_WORKAROUND
|
||||||
@ -8498,7 +8498,7 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
empty_object = drawmball(scene, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
empty_object = drawmball(scene, sl, v3d, rv3d, base, dt, dflag, ob_wire_col);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case OB_EMPTY:
|
case OB_EMPTY:
|
||||||
@ -9251,7 +9251,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
|
|||||||
/* assumes all matrices/etc set OK */
|
/* assumes all matrices/etc set OK */
|
||||||
|
|
||||||
/* helper function for drawing object instances - meshes */
|
/* helper function for drawing object instances - meshes */
|
||||||
static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d,
|
static void draw_object_mesh_instance(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d,
|
||||||
Object *ob, const short dt, int outline)
|
Object *ob, const short dt, int outline)
|
||||||
{
|
{
|
||||||
Mesh *me = ob->data;
|
Mesh *me = ob->data;
|
||||||
@ -9277,8 +9277,8 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r
|
|||||||
draw_mesh_object_outline(v3d, ob, dm ? dm : edm);
|
draw_mesh_object_outline(v3d, ob, dm ? dm : edm);
|
||||||
|
|
||||||
if (dm) {
|
if (dm) {
|
||||||
bool glsl = draw_glsl_material(scene, ob, v3d, dt);
|
bool glsl = draw_glsl_material(scene, sl, ob, v3d, dt);
|
||||||
GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
|
GPU_begin_object_materials(v3d, rv3d, scene, sl, ob, glsl, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
glFrontFace((ob->transflag & OB_NEG_SCALE) ? GL_CW : GL_CCW);
|
||||||
@ -9297,7 +9297,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r
|
|||||||
if (dm) dm->release(dm);
|
if (dm) dm->release(dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, const char dt, int outline, float wire_col[4])
|
void draw_object_instance(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, Object *ob, const char dt, int outline, float wire_col[4])
|
||||||
{
|
{
|
||||||
if (ob == NULL)
|
if (ob == NULL)
|
||||||
return;
|
return;
|
||||||
@ -9306,7 +9306,7 @@ void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object
|
|||||||
|
|
||||||
switch (ob->type) {
|
switch (ob->type) {
|
||||||
case OB_MESH:
|
case OB_MESH:
|
||||||
draw_object_mesh_instance(scene, v3d, rv3d, ob, dt, outline);
|
draw_object_mesh_instance(scene, sl, v3d, rv3d, ob, dt, outline);
|
||||||
break;
|
break;
|
||||||
case OB_EMPTY:
|
case OB_EMPTY:
|
||||||
if (ob->empty_drawtype == OB_EMPTY_IMAGE) {
|
if (ob->empty_drawtype == OB_EMPTY_IMAGE) {
|
||||||
|
@ -1699,10 +1699,10 @@ void ED_view3d_mats_rv3d_restore(struct RegionView3D *rv3d, void *rv3dmat_pt)
|
|||||||
rv3d->pixsize = rv3dmat->pixsize;
|
rv3d->pixsize = rv3dmat->pixsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ED_view3d_draw_offscreen_init(Scene *scene, View3D *v3d)
|
void ED_view3d_draw_offscreen_init(Scene *scene, SceneLayer *sl, View3D *v3d)
|
||||||
{
|
{
|
||||||
/* shadow buffers, before we setup matrices */
|
/* shadow buffers, before we setup matrices */
|
||||||
if (draw_glsl_material(scene, NULL, v3d, v3d->drawtype))
|
if (draw_glsl_material(scene, sl, NULL, v3d, v3d->drawtype))
|
||||||
gpu_update_lamps_shadows_world(scene, v3d);
|
gpu_update_lamps_shadows_world(scene, v3d);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1832,7 +1832,7 @@ void ED_view3d_draw_offscreen(
|
|||||||
* (avoids re-creating when doing multiple GL renders).
|
* (avoids re-creating when doing multiple GL renders).
|
||||||
*/
|
*/
|
||||||
ImBuf *ED_view3d_draw_offscreen_imbuf(
|
ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||||
Scene *scene, View3D *v3d, ARegion *ar, int sizex, int sizey,
|
Scene *scene, SceneLayer *sl, View3D *v3d, ARegion *ar, int sizex, int sizey,
|
||||||
unsigned int flag, bool draw_background,
|
unsigned int flag, bool draw_background,
|
||||||
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
||||||
/* output vars */
|
/* output vars */
|
||||||
@ -1861,7 +1861,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ED_view3d_draw_offscreen_init(scene, v3d);
|
ED_view3d_draw_offscreen_init(scene, sl, v3d);
|
||||||
|
|
||||||
GPU_offscreen_bind(ofs, true);
|
GPU_offscreen_bind(ofs, true);
|
||||||
|
|
||||||
@ -1997,7 +1997,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
|||||||
* \note used by the sequencer
|
* \note used by the sequencer
|
||||||
*/
|
*/
|
||||||
ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
||||||
Scene *scene, Object *camera, int width, int height,
|
Scene *scene, SceneLayer *sl, Object *camera, int width, int height,
|
||||||
unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
|
unsigned int flag, int drawtype, bool use_solid_tex, bool use_gpencil, bool draw_background,
|
||||||
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
int alpha_mode, int samples, bool full_samples, const char *viewname,
|
||||||
GPUFX *fx, GPUOffScreen *ofs, char err_out[256])
|
GPUFX *fx, GPUOffScreen *ofs, char err_out[256])
|
||||||
@ -2051,7 +2051,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
|||||||
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
|
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
|
||||||
|
|
||||||
return ED_view3d_draw_offscreen_imbuf(
|
return ED_view3d_draw_offscreen_imbuf(
|
||||||
scene, &v3d, &ar, width, height, flag,
|
scene, sl, &v3d, &ar, width, height, flag,
|
||||||
draw_background, alpha_mode, samples, full_samples, viewname,
|
draw_background, alpha_mode, samples, full_samples, viewname,
|
||||||
fx, ofs, err_out);
|
fx, ofs, err_out);
|
||||||
}
|
}
|
||||||
@ -2295,7 +2295,7 @@ static void update_lods(Scene *scene, float camera_pos[3])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void view3d_main_region_draw_objects(const bContext *C, Scene *scene, View3D *v3d,
|
static void view3d_main_region_draw_objects(const bContext *C, Scene *scene, SceneLayer *sl, View3D *v3d,
|
||||||
ARegion *ar, const char **grid_unit)
|
ARegion *ar, const char **grid_unit)
|
||||||
{
|
{
|
||||||
wmWindow *win = CTX_wm_window(C);
|
wmWindow *win = CTX_wm_window(C);
|
||||||
@ -2306,7 +2306,7 @@ static void view3d_main_region_draw_objects(const bContext *C, Scene *scene, Vie
|
|||||||
bool do_compositing = false;
|
bool do_compositing = false;
|
||||||
|
|
||||||
/* shadow buffers, before we setup matrices */
|
/* shadow buffers, before we setup matrices */
|
||||||
if (draw_glsl_material(scene, NULL, v3d, v3d->drawtype))
|
if (draw_glsl_material(scene, sl, NULL, v3d, v3d->drawtype))
|
||||||
gpu_update_lamps_shadows_world(scene, v3d);
|
gpu_update_lamps_shadows_world(scene, v3d);
|
||||||
|
|
||||||
/* reset default OpenGL lights if needed (i.e. after preferences have been altered) */
|
/* reset default OpenGL lights if needed (i.e. after preferences have been altered) */
|
||||||
@ -2449,6 +2449,7 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
|
|||||||
void view3d_main_region_draw_legacy(const bContext *C, ARegion *ar)
|
void view3d_main_region_draw_legacy(const bContext *C, ARegion *ar)
|
||||||
{
|
{
|
||||||
Scene *scene = CTX_data_scene(C);
|
Scene *scene = CTX_data_scene(C);
|
||||||
|
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||||
View3D *v3d = CTX_wm_view3d(C);
|
View3D *v3d = CTX_wm_view3d(C);
|
||||||
const char *grid_unit = NULL;
|
const char *grid_unit = NULL;
|
||||||
rcti border_rect;
|
rcti border_rect;
|
||||||
@ -2460,7 +2461,7 @@ void view3d_main_region_draw_legacy(const bContext *C, ARegion *ar)
|
|||||||
|
|
||||||
/* draw viewport using opengl */
|
/* draw viewport using opengl */
|
||||||
if (v3d->drawtype != OB_RENDER || !view3d_main_region_do_render_draw(scene) || clip_border) {
|
if (v3d->drawtype != OB_RENDER || !view3d_main_region_do_render_draw(scene) || clip_border) {
|
||||||
view3d_main_region_draw_objects(C, scene, v3d, ar, &grid_unit);
|
view3d_main_region_draw_objects(C, scene, sl, v3d, ar, &grid_unit);
|
||||||
|
|
||||||
if (G.debug & G_DEBUG_SIMDATA)
|
if (G.debug & G_DEBUG_SIMDATA)
|
||||||
draw_sim_debug_data(scene, v3d, ar);
|
draw_sim_debug_data(scene, v3d, ar);
|
||||||
|
@ -147,8 +147,8 @@ void draw_motion_paths_cleanup(View3D *v3d);
|
|||||||
void draw_object(Scene *scene, struct SceneLayer *sl, struct ARegion *ar, View3D *v3d, BaseLegacy *base, const short dflag);
|
void draw_object(Scene *scene, struct SceneLayer *sl, struct ARegion *ar, View3D *v3d, BaseLegacy *base, const short dflag);
|
||||||
void draw_mesh_object_outline(View3D *v3d, Object *ob, struct DerivedMesh *dm);
|
void draw_mesh_object_outline(View3D *v3d, Object *ob, struct DerivedMesh *dm);
|
||||||
|
|
||||||
bool draw_glsl_material(Scene *scene, struct Object *ob, View3D *v3d, const char dt);
|
bool draw_glsl_material(Scene *scene, struct SceneLayer *sl, struct Object *ob, View3D *v3d, const char dt);
|
||||||
void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, struct Object *ob, const char dt, int outline, float wire_col[4]);
|
void draw_object_instance(Scene *scene, struct SceneLayer *sl, View3D *v3d, RegionView3D *rv3d, struct Object *ob, const char dt, int outline, float wire_col[4]);
|
||||||
void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, struct Object *ob);
|
void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, struct Object *ob);
|
||||||
|
|
||||||
void draw_object_wire_color(Scene *scene, struct SceneLayer *, Base *base, unsigned char r_ob_wire_col[4]);
|
void draw_object_wire_color(Scene *scene, struct SceneLayer *, Base *base, unsigned char r_ob_wire_col[4]);
|
||||||
|
@ -42,6 +42,7 @@ struct ImageUser;
|
|||||||
struct MTexPoly;
|
struct MTexPoly;
|
||||||
struct Object;
|
struct Object;
|
||||||
struct Scene;
|
struct Scene;
|
||||||
|
struct SceneLayer;
|
||||||
struct View3D;
|
struct View3D;
|
||||||
struct RegionView3D;
|
struct RegionView3D;
|
||||||
struct SmokeModifierData;
|
struct SmokeModifierData;
|
||||||
@ -74,7 +75,8 @@ void GPU_disable_program_point_size(void);
|
|||||||
* - after drawing, the material must be disabled again */
|
* - after drawing, the material must be disabled again */
|
||||||
|
|
||||||
void GPU_begin_object_materials(struct View3D *v3d, struct RegionView3D *rv3d,
|
void GPU_begin_object_materials(struct View3D *v3d, struct RegionView3D *rv3d,
|
||||||
struct Scene *scene, struct Object *ob, bool glsl, bool *do_alpha_after);
|
struct Scene *scene, struct SceneLayer *sl,
|
||||||
|
struct Object *ob, bool glsl, bool *do_alpha_after);
|
||||||
void GPU_end_object_materials(void);
|
void GPU_end_object_materials(void);
|
||||||
bool GPU_object_materials_check(void);
|
bool GPU_object_materials_check(void);
|
||||||
|
|
||||||
|
@ -1687,7 +1687,7 @@ void GPU_end_dupli_object(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GPU_begin_object_materials(
|
void GPU_begin_object_materials(
|
||||||
View3D *v3d, RegionView3D *rv3d, Scene *scene, Object *ob,
|
View3D *v3d, RegionView3D *rv3d, Scene *scene, SceneLayer *sl, Object *ob,
|
||||||
bool glsl, bool *do_alpha_after)
|
bool glsl, bool *do_alpha_after)
|
||||||
{
|
{
|
||||||
Material *ma;
|
Material *ma;
|
||||||
@ -1726,7 +1726,7 @@ void GPU_begin_object_materials(
|
|||||||
|
|
||||||
#ifdef WITH_GAMEENGINE
|
#ifdef WITH_GAMEENGINE
|
||||||
if (rv3d->rflag & RV3D_IS_GAME_ENGINE) {
|
if (rv3d->rflag & RV3D_IS_GAME_ENGINE) {
|
||||||
ob = BKE_object_lod_matob_get(ob, scene);
|
ob = BKE_object_lod_matob_get(ob, sl);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -192,12 +192,13 @@ PyDoc_STRVAR(pygpu_offscreen_draw_view3d_doc,
|
|||||||
);
|
);
|
||||||
static PyObject *pygpu_offscreen_draw_view3d(BPy_GPUOffScreen *self, PyObject *args, PyObject *kwds)
|
static PyObject *pygpu_offscreen_draw_view3d(BPy_GPUOffScreen *self, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
static const char *kwlist[] = {"scene", "view3d", "region", "projection_matrix", "modelview_matrix", NULL};
|
static const char *kwlist[] = {"scene", "render_layer", "view3d", "region", "projection_matrix", "modelview_matrix", NULL};
|
||||||
|
|
||||||
MatrixObject *py_mat_modelview, *py_mat_projection;
|
MatrixObject *py_mat_modelview, *py_mat_projection;
|
||||||
PyObject *py_scene, *py_region, *py_view3d;
|
PyObject *py_scene, *py_scene_layer, *py_region, *py_view3d;
|
||||||
|
|
||||||
Scene *scene;
|
Scene *scene;
|
||||||
|
SceneLayer *sl;
|
||||||
View3D *v3d;
|
View3D *v3d;
|
||||||
ARegion *ar;
|
ARegion *ar;
|
||||||
GPUFX *fx;
|
GPUFX *fx;
|
||||||
@ -207,11 +208,12 @@ static PyObject *pygpu_offscreen_draw_view3d(BPy_GPUOffScreen *self, PyObject *a
|
|||||||
BPY_GPU_OFFSCREEN_CHECK_OBJ(self);
|
BPY_GPU_OFFSCREEN_CHECK_OBJ(self);
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(
|
if (!PyArg_ParseTupleAndKeywords(
|
||||||
args, kwds, "OOOO&O&:draw_view3d", (char **)(kwlist),
|
args, kwds, "OOOOO&O&:draw_view3d", (char **)(kwlist),
|
||||||
&py_scene, &py_view3d, &py_region,
|
&py_scene, &py_scene_layer, &py_view3d, &py_region,
|
||||||
pygpu_offscreen_check_matrix, &py_mat_projection,
|
pygpu_offscreen_check_matrix, &py_mat_projection,
|
||||||
pygpu_offscreen_check_matrix, &py_mat_modelview) ||
|
pygpu_offscreen_check_matrix, &py_mat_modelview) ||
|
||||||
(!(scene = PyC_RNA_AsPointer(py_scene, "Scene")) ||
|
(!(scene = PyC_RNA_AsPointer(py_scene, "Scene")) ||
|
||||||
|
!(sl = PyC_RNA_AsPointer(py_scene_layer, "SceneLayer")) ||
|
||||||
!(v3d = PyC_RNA_AsPointer(py_view3d, "SpaceView3D")) ||
|
!(v3d = PyC_RNA_AsPointer(py_view3d, "SpaceView3D")) ||
|
||||||
!(ar = PyC_RNA_AsPointer(py_region, "Region"))))
|
!(ar = PyC_RNA_AsPointer(py_region, "Region"))))
|
||||||
{
|
{
|
||||||
@ -222,7 +224,7 @@ static PyObject *pygpu_offscreen_draw_view3d(BPy_GPUOffScreen *self, PyObject *a
|
|||||||
|
|
||||||
fx_settings = v3d->fx_settings; /* full copy */
|
fx_settings = v3d->fx_settings; /* full copy */
|
||||||
|
|
||||||
ED_view3d_draw_offscreen_init(scene, v3d);
|
ED_view3d_draw_offscreen_init(scene, sl, v3d);
|
||||||
|
|
||||||
rv3d_mats = ED_view3d_mats_rv3d_backup(ar->regiondata);
|
rv3d_mats = ED_view3d_mats_rv3d_backup(ar->regiondata);
|
||||||
|
|
||||||
|
@ -879,7 +879,7 @@ static void wm_history_file_update(void)
|
|||||||
|
|
||||||
|
|
||||||
/* screen can be NULL */
|
/* screen can be NULL */
|
||||||
static ImBuf *blend_file_thumb(Scene *scene, bScreen *screen, BlendThumbnail **thumb_pt)
|
static ImBuf *blend_file_thumb(Scene *scene, SceneLayer *sl, bScreen *screen, BlendThumbnail **thumb_pt)
|
||||||
{
|
{
|
||||||
/* will be scaled down, but gives some nice oversampling */
|
/* will be scaled down, but gives some nice oversampling */
|
||||||
ImBuf *ibuf;
|
ImBuf *ibuf;
|
||||||
@ -916,14 +916,14 @@ static ImBuf *blend_file_thumb(Scene *scene, bScreen *screen, BlendThumbnail **t
|
|||||||
/* gets scaled to BLEN_THUMB_SIZE */
|
/* gets scaled to BLEN_THUMB_SIZE */
|
||||||
if (scene->camera) {
|
if (scene->camera) {
|
||||||
ibuf = ED_view3d_draw_offscreen_imbuf_simple(
|
ibuf = ED_view3d_draw_offscreen_imbuf_simple(
|
||||||
scene, scene->camera,
|
scene, sl, scene->camera,
|
||||||
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||||
IB_rect, OB_SOLID, false, false, false, R_ALPHAPREMUL, 0, false, NULL,
|
IB_rect, OB_SOLID, false, false, false, R_ALPHAPREMUL, 0, false, NULL,
|
||||||
NULL, NULL, err_out);
|
NULL, NULL, err_out);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ibuf = ED_view3d_draw_offscreen_imbuf(
|
ibuf = ED_view3d_draw_offscreen_imbuf(
|
||||||
scene, v3d, ar,
|
scene, sl, v3d, ar,
|
||||||
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||||
IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
|
IB_rect, false, R_ALPHAPREMUL, 0, false, NULL,
|
||||||
NULL, NULL, err_out);
|
NULL, NULL, err_out);
|
||||||
@ -1019,7 +1019,7 @@ static int wm_file_write(bContext *C, const char *filepath, int fileflags, Repor
|
|||||||
/* Main now can store a .blend thumbnail, usefull for background mode or thumbnail customization. */
|
/* Main now can store a .blend thumbnail, usefull for background mode or thumbnail customization. */
|
||||||
main_thumb = thumb = CTX_data_main(C)->blen_thumb;
|
main_thumb = thumb = CTX_data_main(C)->blen_thumb;
|
||||||
if ((U.flag & USER_SAVE_PREVIEWS) && BLI_thread_is_main()) {
|
if ((U.flag & USER_SAVE_PREVIEWS) && BLI_thread_is_main()) {
|
||||||
ibuf_thumb = blend_file_thumb(CTX_data_scene(C), CTX_wm_screen(C), &thumb);
|
ibuf_thumb = blend_file_thumb(CTX_data_scene(C), CTX_data_scene_layer(C), CTX_wm_screen(C), &thumb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* operator now handles overwrite checks */
|
/* operator now handles overwrite checks */
|
||||||
|
Loading…
Reference in New Issue
Block a user