Fix T48320: Freestyle renders wrong edges of objects which in the other RenderLayer.
FSAA sample files in EXR format are no longer always updated (after some changes between 2.73 and 2.74 releases), and the reported bug was caused by old samples from a previous frame that were being merged by mistake. The present revision addresses the documented issue by entirely skipping the rendering of auto-generated scenes when there are no Freestyle strokes to render, which suppresses sample merging of the render layers that were not rendered.
This commit is contained in:
parent
6f83710af9
commit
c8e9832be3
Notes:
blender-bot
2023-06-21 19:23:24 +02:00
Referenced by issue #48320, Freestyle renders wrong edges of objects which in the other RenderLayer
|
@ -864,10 +864,10 @@ bool Controller::getComputeSteerableViewMapFlag() const
|
|||
return _ComputeSteerableViewMap;
|
||||
}
|
||||
|
||||
void Controller::DrawStrokes()
|
||||
int Controller::DrawStrokes()
|
||||
{
|
||||
if (_ViewMap == 0)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
if (G.debug & G_DEBUG_FREESTYLE) {
|
||||
cout << "\n=== Stroke drawing ===" << endl;
|
||||
|
@ -875,12 +875,14 @@ void Controller::DrawStrokes()
|
|||
_Chrono.start();
|
||||
_Canvas->Draw();
|
||||
real d = _Chrono.stop();
|
||||
int strokeCount = _Canvas->getStrokeCount();
|
||||
if (G.debug & G_DEBUG_FREESTYLE) {
|
||||
cout << "Strokes generation : " << d << endl;
|
||||
cout << "Stroke count : " << _Canvas->getStrokeCount() << endl;
|
||||
cout << "Stroke count : " << strokeCount << endl;
|
||||
}
|
||||
resetModified();
|
||||
DeleteViewMap();
|
||||
return strokeCount;
|
||||
}
|
||||
|
||||
void Controller::ResetRenderCount()
|
||||
|
|
|
@ -75,7 +75,7 @@ public:
|
|||
void ComputeSteerableViewMap();
|
||||
void saveSteerableViewMapImages();
|
||||
void toggleEdgeTesselationNature(Nature::EdgeNature iNature);
|
||||
void DrawStrokes();
|
||||
int DrawStrokes();
|
||||
void ResetRenderCount();
|
||||
Render *RenderStrokes(Render *re, bool render);
|
||||
void SwapStyleModules(unsigned i1, unsigned i2);
|
||||
|
|
|
@ -628,15 +628,19 @@ Render *FRS_do_stroke_rendering(Render *re, SceneRenderLayer *srl, int render)
|
|||
re->stats_draw(re->sdh, &re->i);
|
||||
re->i.infostr = NULL;
|
||||
g_freestyle.scene = re->scene;
|
||||
controller->DrawStrokes();
|
||||
freestyle_render = controller->RenderStrokes(re, true);
|
||||
int strokeCount = controller->DrawStrokes();
|
||||
if (strokeCount > 0) {
|
||||
freestyle_render = controller->RenderStrokes(re, true);
|
||||
}
|
||||
controller->CloseFile();
|
||||
g_freestyle.scene = NULL;
|
||||
|
||||
// composite result
|
||||
FRS_composite_result(re, srl, freestyle_render);
|
||||
RE_FreeRenderResult(freestyle_render->result);
|
||||
freestyle_render->result = NULL;
|
||||
if (freestyle_render) {
|
||||
FRS_composite_result(re, srl, freestyle_render);
|
||||
RE_FreeRenderResult(freestyle_render->result);
|
||||
freestyle_render->result = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue