Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/source/convertblender.c
| Show First 20 Lines • Show All 4,024 Lines • ▼ Show 20 Lines | static void set_material_lightgroups(Render *re) | ||||
| /* it's a bit too many loops in loops... but will survive */ | /* it's a bit too many loops in loops... but will survive */ | ||||
| /* hola! materials not in use...? */ | /* hola! materials not in use...? */ | ||||
| for (ma= re->main->mat.first; ma; ma=ma->id.next) { | for (ma= re->main->mat.first; ma; ma=ma->id.next) { | ||||
| if (ma->group && (ma->group->id.tag & LIB_TAG_DOIT)) | if (ma->group && (ma->group->id.tag & LIB_TAG_DOIT)) | ||||
| add_lightgroup(re, ma->group, ma->mode & MA_GROUP_NOLAY); | add_lightgroup(re, ma->group, ma->mode & MA_GROUP_NOLAY); | ||||
| } | } | ||||
| } | } | ||||
| static void set_renderlayer_lightgroups(Render *re, Scene *sce) | |||||
| { | |||||
| SceneRenderLayer *srl; | |||||
| for (srl= sce->r.layers.first; srl; srl= srl->next) { | |||||
| if (srl->light_override) | |||||
| add_lightgroup(re, srl->light_override, 0); | |||||
| } | |||||
| } | |||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| /* World */ | /* World */ | ||||
| /* ------------------------------------------------------------------------- */ | /* ------------------------------------------------------------------------- */ | ||||
| void init_render_world(Render *re) | void init_render_world(Render *re) | ||||
| { | { | ||||
| void *wrld_prev[2] = { | void *wrld_prev[2] = { | ||||
| re->wrld.aotables, | re->wrld.aotables, | ||||
| ▲ Show 20 Lines • Show All 893 Lines • ▼ Show 20 Lines | static void dupli_render_particle_set(Render *re, Object *ob, int timeoffset, int level, int enable) | ||||
| if (ob->dup_group==NULL) return; | if (ob->dup_group==NULL) return; | ||||
| group= ob->dup_group; | group= ob->dup_group; | ||||
| for (go= group->gobject.first; go; go= go->next) | for (go= group->gobject.first; go; go= go->next) | ||||
| dupli_render_particle_set(re, go->ob, timeoffset, level+1, enable); | dupli_render_particle_set(re, go->ob, timeoffset, level+1, enable); | ||||
| } | } | ||||
| static int get_vector_renderlayers(Scene *sce) | static int get_vector_renderlayers(Scene *UNUSED(sce)) | ||||
| { | { | ||||
| SceneRenderLayer *srl; | return 0; | ||||
| unsigned int lay= 0; | |||||
| for (srl= sce->r.layers.first; srl; srl= srl->next) | |||||
| if (srl->passflag & SCE_PASS_VECTOR) | |||||
| lay |= srl->lay; | |||||
| return lay; | |||||
| } | } | ||||
| static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, int onlyselected, Object *actob, int timeoffset, int level) | static void add_group_render_dupli_obs(Render *re, Group *group, int nolamps, int onlyselected, Object *actob, int timeoffset, int level) | ||||
| { | { | ||||
| GroupObject *go; | GroupObject *go; | ||||
| Object *ob; | Object *ob; | ||||
| /* simple preventing of too deep nested groups */ | /* simple preventing of too deep nested groups */ | ||||
| ▲ Show 20 Lines • Show All 209 Lines • ▼ Show 20 Lines | #endif | ||||
| if (!re->test_break(re->tbh)) | if (!re->test_break(re->tbh)) | ||||
| RE_makeRenderInstances(re); | RE_makeRenderInstances(re); | ||||
| } | } | ||||
| /* used to be 'rotate scene' */ | /* used to be 'rotate scene' */ | ||||
| void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view) | void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view) | ||||
| { | { | ||||
| Scene *sce; | |||||
| Object *camera; | Object *camera; | ||||
| float mat[4][4]; | float mat[4][4]; | ||||
| float amb[3]; | float amb[3]; | ||||
| re->main= bmain; | re->main= bmain; | ||||
| re->scene= scene; | re->scene= scene; | ||||
| re->lay= lay; | re->lay= lay; | ||||
| Show All 20 Lines | void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view) | ||||
| /* in localview, lamps are using normal layers, objects only local bits */ | /* in localview, lamps are using normal layers, objects only local bits */ | ||||
| if (re->lay & 0xFF000000) | if (re->lay & 0xFF000000) | ||||
| lay &= 0xFF000000; | lay &= 0xFF000000; | ||||
| /* applies changes fully */ | /* applies changes fully */ | ||||
| if ((re->r.scemode & (R_NO_FRAME_UPDATE|R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW))==0) { | if ((re->r.scemode & (R_NO_FRAME_UPDATE|R_BUTS_PREVIEW|R_VIEWPORT_PREVIEW))==0) { | ||||
| BKE_scene_graph_update_for_newframe(re->eval_ctx, re->depsgraph, re->main, re->scene, NULL); | BKE_scene_graph_update_for_newframe(re->eval_ctx, re->depsgraph, re->main, re->scene, NULL); | ||||
| render_update_anim_renderdata(re, &re->scene->r); | render_update_anim_renderdata(re, &re->scene->r, &re->scene->render_layers); | ||||
| } | } | ||||
| /* if no camera, viewmat should have been set! */ | /* if no camera, viewmat should have been set! */ | ||||
| if (use_camera_view && camera) { | if (use_camera_view && camera) { | ||||
| /* called before but need to call again in case of lens animation from the | /* called before but need to call again in case of lens animation from the | ||||
| * above call to BKE_scene_graph_update_for_newframe, fixes bug. [#22702]. | * above call to BKE_scene_graph_update_for_newframe, fixes bug. [#22702]. | ||||
| * following calls don't depend on 'RE_SetCamera' */ | * following calls don't depend on 'RE_SetCamera' */ | ||||
| RE_SetCamera(re, camera); | RE_SetCamera(re, camera); | ||||
| Show All 23 Lines | void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view) | ||||
| init_render_materials(re->main, re->r.mode, amb, (re->r.scemode & R_BUTS_PREVIEW) == 0); | init_render_materials(re->main, re->r.mode, amb, (re->r.scemode & R_BUTS_PREVIEW) == 0); | ||||
| set_node_shader_lamp_loop(shade_material_loop); | set_node_shader_lamp_loop(shade_material_loop); | ||||
| /* MAKE RENDER DATA */ | /* MAKE RENDER DATA */ | ||||
| database_init_objects(re, lay, 0, 0, NULL, 0); | database_init_objects(re, lay, 0, 0, NULL, 0); | ||||
| if (!re->test_break(re->tbh)) { | if (!re->test_break(re->tbh)) { | ||||
| set_material_lightgroups(re); | set_material_lightgroups(re); | ||||
| for (sce= re->scene; sce; sce= sce->set) | |||||
| set_renderlayer_lightgroups(re, sce); | |||||
| /* for now some clumsy copying still */ | /* for now some clumsy copying still */ | ||||
| re->i.totvert= re->totvert; | re->i.totvert= re->totvert; | ||||
| re->i.totface= re->totvlak; | re->i.totface= re->totvlak; | ||||
| re->i.totstrand= re->totstrand; | re->i.totstrand= re->totstrand; | ||||
| re->i.tothalo= re->tothalo; | re->i.tothalo= re->tothalo; | ||||
| re->i.totlamp= re->totlamp; | re->i.totlamp= re->totlamp; | ||||
| re->stats_draw(re->sdh, &re->i); | re->stats_draw(re->sdh, &re->i); | ||||
| ▲ Show 20 Lines • Show All 746 Lines • Show Last 20 Lines | |||||