Added a minimum tiles size of 16 to prevent down sampling from being overly aggressive.

This commit is contained in:
Robert Osfield
2010-03-19 17:09:30 +00:00
parent 04e4fa74cc
commit 5612a4640f

View File

@@ -242,14 +242,16 @@ void GeometryTechnique::generateGeometry(Locator* masterLocator, const osg::Vec3
// OSG_NOTICE<<"Sample ratio="<<sampleRatio<<std::endl;
if (sampleRatio!=1.0f)
unsigned int minimumNumColumns = 16u;
unsigned int minimumNumRows = 16u;
if ((sampleRatio!=1.0f) && (numColumns>minimumNumColumns) && (numRows>minimumNumRows))
{
unsigned int originalNumColumns = numColumns;
unsigned int originalNumRows = numRows;
numColumns = std::max((unsigned int) (float(originalNumColumns)*sqrtf(sampleRatio)), 4u);
numRows = std::max((unsigned int) (float(originalNumRows)*sqrtf(sampleRatio)),4u);
numColumns = std::max((unsigned int) (float(originalNumColumns)*sqrtf(sampleRatio)), minimumNumColumns);
numRows = std::max((unsigned int) (float(originalNumRows)*sqrtf(sampleRatio)),minimumNumRows);
i_sampleFactor = double(originalNumColumns-1)/double(numColumns-1);
j_sampleFactor = double(originalNumRows-1)/double(numRows-1);