Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-19 16:26:20 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-19 16:26:20 +0400
commit9711a0034fc1d508e4e49b7cc991c377789a4499 (patch)
tree8a6ea11b1ee9b5efd26d00eb7318820253a9a5a1 /source/blender/freestyle
parent9da1a400fabccaa0dd3063eac39c181e1499bb4b (diff)
svn merge ^/trunk/blender -c56892 -c56894 -c56896 -c56897 -c56898 -c56901 -c56902 -c56905 -c56906 -c56912
Diffstat (limited to 'source/blender/freestyle')
-rw-r--r--source/blender/freestyle/intern/system/RenderMonitor.h15
-rw-r--r--source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp7
-rw-r--r--source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp22
3 files changed, 42 insertions, 2 deletions
diff --git a/source/blender/freestyle/intern/system/RenderMonitor.h b/source/blender/freestyle/intern/system/RenderMonitor.h
index 614513b3c56..3bb872cbdfb 100644
--- a/source/blender/freestyle/intern/system/RenderMonitor.h
+++ b/source/blender/freestyle/intern/system/RenderMonitor.h
@@ -44,6 +44,21 @@ public:
virtual ~RenderMonitor() {}
+ inline void setInfo(string info)
+ {
+ if (_re && !info.empty()) {
+ _re->i.infostr = info.c_str();
+ _re->stats_draw(_re->sdh, &_re->i);
+ _re->i.infostr = NULL;
+ }
+ }
+
+ inline void progress(float i)
+ {
+ if (_re)
+ _re->progress(_re->prh, i);
+ }
+
inline bool testBreak()
{
return _re && _re->test_break(_re->tbh);
diff --git a/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp b/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp
index 2d8d3b30f84..61ad78a8567 100644
--- a/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp
+++ b/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp
@@ -83,6 +83,13 @@ void AverageAreaGridDensityProvider::initialize(const real proscenium[4], real s
}
_cellSize = sqrt(cellArea);
+ unsigned maxCells = 931; // * 1.1 = 1024
+ if (std::max(prosceniumWidth, prosceniumHeight) / _cellSize > maxCells) {
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ cout << "Scene-dependent cell size (" << _cellSize << " square) is too small." << endl;
+ }
+ _cellSize = std::max(prosceniumWidth, prosceniumHeight) / maxCells;
+ }
// Now we know how many cells make each side of our grid
_cellsX = ceil(prosceniumWidth / _cellSize);
_cellsY = ceil(prosceniumHeight / _cellSize);
diff --git a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
index bbbf997b463..20b0f6576bb 100644
--- a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
+++ b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
@@ -28,6 +28,7 @@
#include <algorithm>
#include <memory>
#include <stdexcept>
+#include <sstream>
#include "FRS_freestyle.h"
@@ -412,13 +413,24 @@ static void computeCumulativeVisibility(ViewMap *ioViewMap, G& grid, real epsilo
int nSamples = 0;
vector<WFace*> wFaces;
WFace *wFace = NULL;
+ unsigned cnt = 0;
+ unsigned cntStep = (unsigned)ceil(0.01f * vedges.size());
unsigned tmpQI = 0;
unsigned qiClasses[256];
unsigned maxIndex, maxCard;
unsigned qiMajority;
for (vector<ViewEdge*>::iterator ve = vedges.begin(), veend = vedges.end(); ve != veend; ve++) {
- if (iRenderMonitor && iRenderMonitor->testBreak())
- break;
+ if (iRenderMonitor) {
+ if (iRenderMonitor->testBreak())
+ break;
+ if (cnt % cntStep == 0) {
+ stringstream ss;
+ ss << "Freestyle: Visibility computations " << (100 * cnt / vedges.size()) << "%";
+ iRenderMonitor->setInfo(ss.str());
+ iRenderMonitor->progress((float)cnt / vedges.size());
+ }
+ cnt++;
+ }
#if LOGGING
if (_global.debug & G_DEBUG_FREESTYLE) {
cout << "Processing ViewEdge " << (*ve)->getId() << endl;
@@ -583,6 +595,12 @@ static void computeCumulativeVisibility(ViewMap *ioViewMap, G& grid, real epsilo
wFaces.clear();
}
+ if (iRenderMonitor) {
+ stringstream ss;
+ ss << "Freestyle: Visibility computations " << (100 * cnt / vedges.size()) << "%";
+ iRenderMonitor->setInfo(ss.str());
+ iRenderMonitor->progress((float)cnt / vedges.size());
+ }
}
template <typename G, typename I>