Depsgraph: remove engine type from evaluation context.
This was only used for viewport rendering, where we can just pass the engine type directly. There is no technical reason why we can't draw the same depsgrpah with different render engines. It also led to some weird things like requiring a render engine for snapping and raycast API functions. Differential Revision: https://developer.blender.org/D3145
This commit is contained in:
@@ -40,6 +40,7 @@ struct GPUFX;
|
||||
struct ImBuf;
|
||||
struct Main;
|
||||
struct Mask;
|
||||
struct RenderEngineType;
|
||||
struct Scene;
|
||||
struct Sequence;
|
||||
struct SequenceModifierData;
|
||||
@@ -435,7 +436,8 @@ enum {
|
||||
|
||||
typedef struct ImBuf *(*SequencerDrawView)(
|
||||
const struct EvaluationContext *eval_ctx, struct Scene *scene,
|
||||
struct ViewLayer *view_layer, struct Object *camera, int width, int height,
|
||||
struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
|
||||
struct Object *camera, int width, int height,
|
||||
unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
|
||||
int samples, const char *viewname,
|
||||
struct GPUOffScreen *ofs, char err_out[256]);
|
||||
|
||||
@@ -1273,9 +1273,8 @@ void CTX_data_eval_ctx(const bContext *C, EvaluationContext *eval_ctx)
|
||||
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
RenderEngineType *engine_type = CTX_data_engine_type(C);
|
||||
DEG_evaluation_context_init_from_scene(
|
||||
eval_ctx,
|
||||
scene, view_layer, engine_type,
|
||||
scene, view_layer,
|
||||
DAG_EVAL_VIEWPORT);
|
||||
}
|
||||
|
||||
@@ -3332,12 +3332,13 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
|
||||
context->scene->r.seq_prev_type = 3 /* == OB_SOLID */;
|
||||
|
||||
/* opengl offscreen render */
|
||||
context->eval_ctx->engine_type = RE_engines_find(scene->view_render.engine_id);
|
||||
RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
|
||||
depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer);
|
||||
ibuf = sequencer_view3d_cb(
|
||||
/* set for OpenGL render (NULL when scrubbing) */
|
||||
context->eval_ctx, scene, view_layer, camera, width, height, IB_rect,
|
||||
context->eval_ctx, scene, view_layer, engine_type,
|
||||
camera, width, height, IB_rect,
|
||||
draw_flags, context->scene->r.seq_prev_type,
|
||||
scene->r.alphamode, context->gpu_samples, viewname,
|
||||
context->gpu_offscreen, err_out);
|
||||
|
||||
@@ -86,7 +86,6 @@ typedef struct EvaluationContext {
|
||||
|
||||
struct Depsgraph *depsgraph;
|
||||
struct ViewLayer *view_layer;
|
||||
struct RenderEngineType *engine_type;
|
||||
} EvaluationContext;
|
||||
|
||||
/* DagNode->eval_flags */
|
||||
@@ -219,7 +218,6 @@ void DEG_evaluation_context_init_from_scene(
|
||||
struct EvaluationContext *eval_ctx,
|
||||
struct Scene *scene,
|
||||
struct ViewLayer *view_layer,
|
||||
struct RenderEngineType *engine_type,
|
||||
eEvaluationMode mode);
|
||||
|
||||
void DEG_evaluation_context_init_from_view_layer_for_render(
|
||||
|
||||
@@ -83,13 +83,11 @@ void DEG_evaluation_context_init_from_scene(
|
||||
EvaluationContext *eval_ctx,
|
||||
Scene *scene,
|
||||
ViewLayer *view_layer,
|
||||
RenderEngineType *engine_type,
|
||||
eEvaluationMode mode)
|
||||
{
|
||||
DEG_evaluation_context_init(eval_ctx, mode);
|
||||
eval_ctx->depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
|
||||
eval_ctx->view_layer = view_layer;
|
||||
eval_ctx->engine_type = engine_type;
|
||||
eval_ctx->ctime = BKE_scene_frame_get(scene);
|
||||
}
|
||||
|
||||
@@ -107,7 +105,6 @@ void DEG_evaluation_context_init_from_view_layer_for_render(
|
||||
eval_ctx->ctime = BKE_scene_frame_get(scene);
|
||||
eval_ctx->depsgraph = depsgraph;
|
||||
eval_ctx->view_layer = view_layer_original;
|
||||
eval_ctx->engine_type = NULL;
|
||||
}
|
||||
|
||||
void DEG_evaluation_context_init_from_depsgraph(
|
||||
@@ -120,7 +117,6 @@ void DEG_evaluation_context_init_from_depsgraph(
|
||||
eval_ctx->ctime = (float)scene->r.cfra + scene->r.subframe;
|
||||
eval_ctx->depsgraph = depsgraph;
|
||||
eval_ctx->view_layer = DEG_get_evaluated_view_layer(depsgraph);
|
||||
eval_ctx->engine_type = NULL;
|
||||
}
|
||||
|
||||
/* Free evaluation context. */
|
||||
|
||||
@@ -357,7 +357,6 @@ static void drw_state_eval_ctx_init(DRWManager *dst)
|
||||
&draw_ctx->eval_ctx,
|
||||
draw_ctx->scene,
|
||||
draw_ctx->view_layer,
|
||||
draw_ctx->engine_type,
|
||||
DST.options.is_scene_render ? DAG_EVAL_RENDER : DAG_EVAL_VIEWPORT);
|
||||
}
|
||||
|
||||
|
||||
@@ -998,7 +998,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S
|
||||
* the ideal would be to call this function only at the beginning of the snap operation,
|
||||
* or at the beginning of the operator itself */
|
||||
struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), CTX_data_engine_type(C), 0,
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), 0,
|
||||
CTX_wm_region(C), CTX_wm_view3d(C));
|
||||
|
||||
float mvalf[2] = {UNPACK2(dd->mval)};
|
||||
|
||||
@@ -5013,8 +5013,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
const float mval[2] = {UNPACK2(event->mval)};
|
||||
|
||||
struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), vc.scene, vc.view_layer, vc.engine_type, 0,
|
||||
vc.ar, vc.v3d);
|
||||
CTX_data_main(C), vc.scene, vc.view_layer, 0, vc.ar, vc.v3d);
|
||||
|
||||
ED_transform_snap_object_project_view3d_mixed(
|
||||
snap_context,
|
||||
|
||||
@@ -30,7 +30,6 @@ struct BMEdge;
|
||||
struct BMFace;
|
||||
|
||||
struct ListBase;
|
||||
struct RenderEngineType;
|
||||
struct Scene;
|
||||
struct ViewLayer;
|
||||
struct Main;
|
||||
@@ -76,9 +75,9 @@ struct SnapObjectParams {
|
||||
|
||||
typedef struct SnapObjectContext SnapObjectContext;
|
||||
SnapObjectContext *ED_transform_snap_object_context_create(
|
||||
struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct RenderEngineType *engine_type, int flag);
|
||||
struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, int flag);
|
||||
SnapObjectContext *ED_transform_snap_object_context_create_view3d(
|
||||
struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct RenderEngineType *engine_type, int flag,
|
||||
struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, int flag,
|
||||
/* extra args for view3d */
|
||||
const struct ARegion *ar, const struct View3D *v3d);
|
||||
void ED_transform_snap_object_context_destroy(SnapObjectContext *sctx);
|
||||
|
||||
@@ -383,10 +383,12 @@ void ED_draw_object_facemap(const struct EvaluationContext *eval_ctx, struct Sc
|
||||
bool ED_view3d_context_activate(struct bContext *C);
|
||||
void ED_view3d_draw_offscreen_init(
|
||||
const struct EvaluationContext *eval_ctx, struct Scene *scene,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d);
|
||||
struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
|
||||
struct View3D *v3d);
|
||||
void ED_view3d_draw_offscreen(
|
||||
const struct EvaluationContext *eval_ctx, struct Scene *scene,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
|
||||
struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
|
||||
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,
|
||||
struct GPUFXSettings *fx_settings,
|
||||
struct GPUOffScreen *ofs, struct GPUViewport *viewport);
|
||||
@@ -408,13 +410,15 @@ enum {
|
||||
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
const struct EvaluationContext *eval_ctx, struct Scene *scene,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d, struct ARegion *ar,
|
||||
struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
|
||||
struct View3D *v3d, struct ARegion *ar,
|
||||
int sizex, int sizey, unsigned int flag, unsigned int draw_flags,
|
||||
int alpha_mode, int samples, const char *viewname,
|
||||
struct GPUOffScreen *ofs, char err_out[256]);
|
||||
struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
||||
const struct EvaluationContext *eval_ctx, struct Scene *scene,
|
||||
struct ViewLayer *view_layer, struct Object *camera, int width, int height,
|
||||
struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
|
||||
struct Object *camera, int width, int height,
|
||||
unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
|
||||
int samples, const char *viewname,
|
||||
struct GPUOffScreen *ofs, char err_out[256]);
|
||||
|
||||
@@ -326,7 +326,7 @@ void EMBM_project_snap_verts(bContext *C, ARegion *ar, BMEditMesh *em)
|
||||
ED_view3d_init_mats_rv3d(obedit, ar->regiondata);
|
||||
|
||||
struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), CTX_data_engine_type(C), 0,
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), 0,
|
||||
ar, CTX_wm_view3d(C));
|
||||
|
||||
BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
|
||||
|
||||
@@ -353,6 +353,7 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
|
||||
char err_out[256] = "unknown";
|
||||
ImBuf *ibuf_view;
|
||||
const int alpha_mode = (draw_sky) ? R_ADDSKY : R_ALPHAPREMUL;
|
||||
struct RenderEngineType *engine_type = CTX_data_engine_type(C);
|
||||
|
||||
unsigned int draw_flags = V3D_OFSDRAW_NONE;
|
||||
draw_flags |= (oglrender->ofs_full_samples) ? V3D_OFSDRAW_USE_FULL_SAMPLE : 0;
|
||||
@@ -361,7 +362,8 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
|
||||
draw_flags |= (draw_bgpic) ? V3D_OFSDRAW_USE_BACKGROUND : 0;
|
||||
|
||||
ibuf_view = ED_view3d_draw_offscreen_imbuf(
|
||||
&eval_ctx, scene, view_layer, v3d, ar, sizex, sizey,
|
||||
&eval_ctx, scene, view_layer, engine_type,
|
||||
v3d, ar, sizex, sizey,
|
||||
IB_rectfloat, draw_flags, alpha_mode, oglrender->ofs_samples, viewname,
|
||||
oglrender->ofs, err_out);
|
||||
|
||||
@@ -373,7 +375,8 @@ static void screen_opengl_render_doit(const bContext *C, OGLRender *oglrender, R
|
||||
else {
|
||||
draw_flags |= (V3D_OFSDRAW_USE_GPENCIL | V3D_OFSDRAW_USE_BACKGROUND);
|
||||
ibuf_view = ED_view3d_draw_offscreen_imbuf_simple(
|
||||
&eval_ctx, scene, view_layer, scene->camera, oglrender->sizex, oglrender->sizey,
|
||||
&eval_ctx, scene, view_layer, engine_type,
|
||||
scene->camera, oglrender->sizex, oglrender->sizey,
|
||||
IB_rectfloat, draw_flags, OB_SOLID,
|
||||
alpha_mode, oglrender->ofs_samples, viewname,
|
||||
oglrender->ofs, err_out);
|
||||
|
||||
@@ -5459,6 +5459,7 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
|
||||
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
struct RenderEngineType *engine_type = CTX_data_engine_type(C);
|
||||
EvaluationContext eval_ctx;
|
||||
ToolSettings *settings = scene->toolsettings;
|
||||
int w = settings->imapaint.screen_grab_size[0];
|
||||
@@ -5476,7 +5477,8 @@ static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op)
|
||||
if (h > maxsize) h = maxsize;
|
||||
|
||||
ibuf = ED_view3d_draw_offscreen_imbuf(
|
||||
&eval_ctx, scene, view_layer, CTX_wm_view3d(C), CTX_wm_region(C),
|
||||
&eval_ctx, scene, view_layer, engine_type,
|
||||
CTX_wm_view3d(C), CTX_wm_region(C),
|
||||
w, h, IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL,
|
||||
NULL, err_out);
|
||||
if (!ibuf) {
|
||||
|
||||
@@ -1957,9 +1957,12 @@ static void view3d_stereo3d_setup_offscreen(
|
||||
}
|
||||
}
|
||||
|
||||
void ED_view3d_draw_offscreen_init(const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer, View3D *v3d)
|
||||
void ED_view3d_draw_offscreen_init(const EvaluationContext *eval_ctx,
|
||||
Scene *scene,
|
||||
ViewLayer *view_layer,
|
||||
RenderEngineType *engine_type,
|
||||
View3D *v3d)
|
||||
{
|
||||
RenderEngineType *engine_type = eval_ctx->engine_type;
|
||||
if (engine_type->flag & RE_USE_LEGACY_PIPELINE) {
|
||||
/* shadow buffers, before we setup matrices */
|
||||
if (draw_glsl_material(scene, view_layer, NULL, v3d, v3d->drawtype)) {
|
||||
@@ -1987,7 +1990,8 @@ static void view3d_main_region_clear(Scene *scene, View3D *v3d, ARegion *ar)
|
||||
* stuff like shadow buffers
|
||||
*/
|
||||
void ED_view3d_draw_offscreen(
|
||||
const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer,
|
||||
const EvaluationContext *eval_ctx, Scene *scene,
|
||||
ViewLayer *view_layer, RenderEngineType *engine_type,
|
||||
View3D *v3d, ARegion *ar, int winx, int winy,
|
||||
float viewmat[4][4], float winmat[4][4],
|
||||
bool do_bgpic, bool do_sky, bool UNUSED(is_persp), const char *viewname,
|
||||
@@ -2034,7 +2038,6 @@ void ED_view3d_draw_offscreen(
|
||||
Depsgraph *depsgraph = eval_ctx->depsgraph;
|
||||
|
||||
/* main drawing call */
|
||||
RenderEngineType *engine_type = eval_ctx->engine_type;
|
||||
if (engine_type->flag & RE_USE_LEGACY_PIPELINE) {
|
||||
VP_deprecated_view3d_draw_objects(NULL, eval_ctx, scene, v3d, ar, NULL, do_bgpic, true);
|
||||
|
||||
@@ -2053,7 +2056,7 @@ void ED_view3d_draw_offscreen(
|
||||
}
|
||||
else {
|
||||
DRW_draw_render_loop_offscreen(
|
||||
depsgraph, eval_ctx->engine_type, ar, v3d,
|
||||
depsgraph, engine_type, ar, v3d,
|
||||
do_sky, ofs, viewport);
|
||||
}
|
||||
|
||||
@@ -2077,7 +2080,8 @@ void ED_view3d_draw_offscreen(
|
||||
* (avoids re-creating when doing multiple GL renders).
|
||||
*/
|
||||
ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer,
|
||||
const EvaluationContext *eval_ctx, Scene *scene,
|
||||
ViewLayer *view_layer, RenderEngineType *engine_type,
|
||||
View3D *v3d, ARegion *ar, int sizex, int sizey,
|
||||
unsigned int flag, unsigned int draw_flags,
|
||||
int alpha_mode, int samples, const char *viewname,
|
||||
@@ -2112,7 +2116,7 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
}
|
||||
}
|
||||
|
||||
ED_view3d_draw_offscreen_init(eval_ctx, scene, view_layer, v3d);
|
||||
ED_view3d_draw_offscreen_init(eval_ctx, scene, view_layer, engine_type, v3d);
|
||||
|
||||
GPU_offscreen_bind(ofs, true);
|
||||
|
||||
@@ -2154,7 +2158,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
if ((samples && use_full_sample) == 0) {
|
||||
/* Single-pass render, common case */
|
||||
ED_view3d_draw_offscreen(
|
||||
eval_ctx, scene, view_layer, v3d, ar, sizex, sizey, NULL, winmat,
|
||||
eval_ctx, scene, view_layer, engine_type,
|
||||
v3d, ar, sizex, sizey, NULL, winmat,
|
||||
draw_background, draw_sky, !is_ortho, viewname,
|
||||
&fx_settings, ofs, NULL);
|
||||
|
||||
@@ -2178,7 +2183,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
|
||||
/* first sample buffer, also initializes 'rv3d->persmat' */
|
||||
ED_view3d_draw_offscreen(
|
||||
eval_ctx, scene, view_layer, v3d, ar, sizex, sizey, NULL, winmat,
|
||||
eval_ctx, scene, view_layer, engine_type,
|
||||
v3d, ar, sizex, sizey, NULL, winmat,
|
||||
draw_background, draw_sky, !is_ortho, viewname,
|
||||
&fx_settings, ofs, viewport);
|
||||
GPU_offscreen_read_pixels(ofs, GL_FLOAT, accum_buffer);
|
||||
@@ -2192,7 +2198,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
(jit_ofs[j][1] * 2.0f) / sizey);
|
||||
|
||||
ED_view3d_draw_offscreen(
|
||||
eval_ctx, scene, view_layer, v3d, ar, sizex, sizey, NULL, winmat_jitter,
|
||||
eval_ctx, scene, view_layer, engine_type,
|
||||
v3d, ar, sizex, sizey, NULL, winmat_jitter,
|
||||
draw_background, draw_sky, !is_ortho, viewname,
|
||||
&fx_settings, ofs, viewport);
|
||||
GPU_offscreen_read_pixels(ofs, GL_FLOAT, rect_temp);
|
||||
@@ -2255,7 +2262,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf(
|
||||
* \note used by the sequencer
|
||||
*/
|
||||
ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
||||
const EvaluationContext *eval_ctx, Scene *scene, ViewLayer *view_layer,
|
||||
const EvaluationContext *eval_ctx, Scene *scene,
|
||||
ViewLayer *view_layer, RenderEngineType *engine_type,
|
||||
Object *camera, int width, int height,
|
||||
unsigned int flag, unsigned int draw_flags, int drawtype,
|
||||
int alpha_mode, int samples, const char *viewname,
|
||||
@@ -2317,7 +2325,8 @@ ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
|
||||
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
|
||||
|
||||
return ED_view3d_draw_offscreen_imbuf(
|
||||
eval_ctx, scene, view_layer, &v3d, &ar, width, height, flag,
|
||||
eval_ctx, scene, view_layer, engine_type,
|
||||
&v3d, &ar, width, height, flag,
|
||||
draw_flags, alpha_mode, samples, viewname, ofs, err_out);
|
||||
}
|
||||
|
||||
|
||||
@@ -1420,9 +1420,12 @@ static void gpu_update_lamps_shadows_world(const EvaluationContext *eval_ctx, Sc
|
||||
mul_m4_m4m4(rv3d.persmat, rv3d.winmat, rv3d.viewmat);
|
||||
invert_m4_m4(rv3d.persinv, rv3d.viewinv);
|
||||
|
||||
RenderEngineType *engine_type = RE_engines_find(scene->view_render.engine_id);
|
||||
|
||||
/* no need to call ED_view3d_draw_offscreen_init since shadow buffers were already updated */
|
||||
ED_view3d_draw_offscreen(
|
||||
eval_ctx, scene, eval_ctx->view_layer, v3d, &ar, winsize, winsize, viewmat, winmat,
|
||||
eval_ctx, scene, eval_ctx->view_layer, engine_type,
|
||||
v3d, &ar, winsize, winsize, viewmat, winmat,
|
||||
false, false, true,
|
||||
NULL, NULL, NULL, NULL);
|
||||
GPU_lamp_shadow_buffer_unbind(shadow->lamp);
|
||||
|
||||
@@ -277,7 +277,7 @@ static void ruler_state_set(bContext *C, RulerInfo *ruler_info, int state)
|
||||
}
|
||||
else if (state == RULER_STATE_DRAG) {
|
||||
ruler_info->snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), CTX_data_engine_type(C), 0,
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), 0,
|
||||
ruler_info->ar, CTX_wm_view3d(C));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -282,7 +282,7 @@ static void ruler_state_set(bContext *C, RulerInfo *ruler_info, int state)
|
||||
}
|
||||
else if (state == RULER_STATE_DRAG) {
|
||||
ruler_info->snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), CTX_data_engine_type(C), 0,
|
||||
CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), 0,
|
||||
ruler_info->ar, CTX_wm_view3d(C));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -58,8 +58,6 @@
|
||||
|
||||
#include "GPU_immediate.h"
|
||||
|
||||
#include "RE_engine.h"
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
|
||||
#include "view3d_intern.h" /* own include */
|
||||
@@ -254,7 +252,6 @@ typedef struct WalkInfo {
|
||||
const struct Depsgraph *depsgraph;
|
||||
Scene *scene;
|
||||
ViewLayer *view_layer;
|
||||
RenderEngineType *engine_type;
|
||||
|
||||
wmTimer *timer; /* needed for redraws */
|
||||
|
||||
@@ -522,7 +519,6 @@ static bool initWalkInfo(bContext *C, WalkInfo *walk, wmOperator *op)
|
||||
walk->depsgraph = CTX_data_depsgraph(C);
|
||||
walk->scene = CTX_data_scene(C);
|
||||
walk->view_layer = CTX_data_view_layer(C);
|
||||
walk->engine_type = CTX_data_engine_type(C);
|
||||
|
||||
#ifdef NDOF_WALK_DEBUG
|
||||
puts("\n-- walk begin --");
|
||||
@@ -611,7 +607,7 @@ static bool initWalkInfo(bContext *C, WalkInfo *walk, wmOperator *op)
|
||||
walk->rv3d->rflag |= RV3D_NAVIGATING;
|
||||
|
||||
walk->snap_context = ED_transform_snap_object_context_create_view3d(
|
||||
CTX_data_main(C), walk->scene, walk->view_layer, walk->engine_type, 0,
|
||||
CTX_data_main(C), walk->scene, walk->view_layer, 0,
|
||||
walk->ar, walk->v3d);
|
||||
|
||||
walk->v3d_camera_control = ED_view3d_cameracontrol_acquire(
|
||||
|
||||
@@ -584,8 +584,7 @@ static void initSnappingMode(TransInfo *t)
|
||||
if (t->spacetype == SPACE_VIEW3D) {
|
||||
if (t->tsnap.object_context == NULL) {
|
||||
t->tsnap.object_context = ED_transform_snap_object_context_create_view3d(
|
||||
G.main, t->scene, t->view_layer, t->engine_type, 0,
|
||||
t->ar, t->view);
|
||||
G.main, t->scene, t->view_layer, 0, t->ar, t->view);
|
||||
|
||||
ED_transform_snap_object_context_set_editmesh_callbacks(
|
||||
t->tsnap.object_context,
|
||||
|
||||
@@ -2079,7 +2079,7 @@ static bool snapObjectsRay(
|
||||
* \{ */
|
||||
|
||||
SnapObjectContext *ED_transform_snap_object_context_create(
|
||||
Main *bmain, Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type, int flag)
|
||||
Main *bmain, Scene *scene, ViewLayer *view_layer, int flag)
|
||||
{
|
||||
SnapObjectContext *sctx = MEM_callocN(sizeof(*sctx), __func__);
|
||||
|
||||
@@ -2089,7 +2089,7 @@ SnapObjectContext *ED_transform_snap_object_context_create(
|
||||
sctx->scene = scene;
|
||||
|
||||
DEG_evaluation_context_init_from_scene(
|
||||
&sctx->eval_ctx, scene, view_layer, engine_type, DAG_EVAL_VIEWPORT);
|
||||
&sctx->eval_ctx, scene, view_layer, DAG_EVAL_VIEWPORT);
|
||||
|
||||
sctx->cache.object_map = BLI_ghash_ptr_new(__func__);
|
||||
sctx->cache.mem_arena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, __func__);
|
||||
@@ -2098,11 +2098,11 @@ SnapObjectContext *ED_transform_snap_object_context_create(
|
||||
}
|
||||
|
||||
SnapObjectContext *ED_transform_snap_object_context_create_view3d(
|
||||
Main *bmain, Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type, int flag,
|
||||
Main *bmain, Scene *scene, ViewLayer *view_layer, int flag,
|
||||
/* extra args for view3d */
|
||||
const ARegion *ar, const View3D *v3d)
|
||||
{
|
||||
SnapObjectContext *sctx = ED_transform_snap_object_context_create(bmain, scene, view_layer, engine_type, flag);
|
||||
SnapObjectContext *sctx = ED_transform_snap_object_context_create(bmain, scene, view_layer, flag);
|
||||
|
||||
sctx->use_v3d = true;
|
||||
sctx->v3d_data.ar = ar;
|
||||
|
||||
@@ -171,24 +171,15 @@ static void rna_SceneRender_get_frame_path(RenderData *rd, int frame, int previe
|
||||
}
|
||||
|
||||
static void rna_Scene_ray_cast(
|
||||
Scene *scene, ViewLayer *view_layer, const char *engine_id,
|
||||
Scene *scene, ViewLayer *view_layer,
|
||||
float origin[3], float direction[3], float ray_dist,
|
||||
int *r_success, float r_location[3], float r_normal[3], int *r_index,
|
||||
Object **r_ob, float r_obmat[16])
|
||||
{
|
||||
RenderEngineType *engine_type;
|
||||
|
||||
if (engine_id == NULL || engine_id[0] == '\0') {
|
||||
engine_type = RE_engines_find(scene->view_render.engine_id);
|
||||
}
|
||||
else {
|
||||
engine_type = RE_engines_find(engine_id);
|
||||
}
|
||||
|
||||
normalize_v3(direction);
|
||||
|
||||
SnapObjectContext *sctx = ED_transform_snap_object_context_create(
|
||||
G.main, scene, view_layer, engine_type, 0);
|
||||
G.main, scene, view_layer, 0);
|
||||
|
||||
bool ret = ED_transform_snap_object_project_ray_ex(
|
||||
sctx,
|
||||
@@ -322,7 +313,6 @@ void RNA_api_scene(StructRNA *srna)
|
||||
RNA_def_function_ui_description(func, "Cast a ray onto in object space");
|
||||
parm = RNA_def_pointer(func, "view_layer", "ViewLayer", "", "Scene Layer");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
parm = RNA_def_string(func, "engine", NULL, MAX_NAME, "Engine", "Render engine, use scene one by default");
|
||||
/* ray start and end */
|
||||
parm = RNA_def_float_vector(func, "origin", 3, NULL, -FLT_MAX, FLT_MAX, "", "", -1e4, 1e4);
|
||||
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
||||
|
||||
@@ -1052,16 +1052,18 @@ static ImBuf *blend_file_thumb(const bContext *C, Scene *scene, ViewLayer *view_
|
||||
}
|
||||
|
||||
/* gets scaled to BLEN_THUMB_SIZE */
|
||||
RenderEngineType *engine_type = CTX_data_engine_type(C);
|
||||
|
||||
if (scene->camera) {
|
||||
ibuf = ED_view3d_draw_offscreen_imbuf_simple(
|
||||
&eval_ctx, scene, view_layer, scene->camera,
|
||||
&eval_ctx, scene, view_layer, engine_type, scene->camera,
|
||||
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||
IB_rect, V3D_OFSDRAW_NONE, OB_SOLID, R_ALPHAPREMUL, 0, NULL,
|
||||
NULL, err_out);
|
||||
}
|
||||
else {
|
||||
ibuf = ED_view3d_draw_offscreen_imbuf(
|
||||
&eval_ctx, scene, view_layer, v3d, ar,
|
||||
&eval_ctx, scene, view_layer, engine_type, v3d, ar,
|
||||
BLEN_THUMB_SIZE * 2, BLEN_THUMB_SIZE * 2,
|
||||
IB_rect, V3D_OFSDRAW_NONE, R_ALPHAPREMUL, 0, NULL,
|
||||
NULL, err_out);
|
||||
|
||||
Reference in New Issue
Block a user