forked from bartvdbraak/blender
Revert "Cycles: Implement Mitchell-Netravali pixel filter"
As it appears we can't really use mitchell filter together with the current filter importance sampling, This reverts commit 742911314322e5dae3a07469d0ca53b61427f978.
This commit is contained in:
parent
7429113143
commit
553ec988e7
@ -54,7 +54,6 @@ enum_bvh_types = (
|
|||||||
enum_filter_types = (
|
enum_filter_types = (
|
||||||
('BOX', "Box", "Box filter"),
|
('BOX', "Box", "Box filter"),
|
||||||
('GAUSSIAN', "Gaussian", "Gaussian filter"),
|
('GAUSSIAN', "Gaussian", "Gaussian filter"),
|
||||||
('MITCHELL', "Mitchell-Netravali", "Mitchell-Netravali filter"),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
enum_aperture_types = (
|
enum_aperture_types = (
|
||||||
|
@ -198,29 +198,6 @@ static float filter_func_gaussian(float v, float width)
|
|||||||
return expf(-2.0f*v*v);
|
return expf(-2.0f*v*v);
|
||||||
}
|
}
|
||||||
|
|
||||||
static float filter_func_mitchell(float v, float width)
|
|
||||||
{
|
|
||||||
(void)width; /* Ignored. */
|
|
||||||
|
|
||||||
/* B = 1, C = 0 - cubic B-spline */
|
|
||||||
/* B = 1/3, C = 1/3 - recommended */
|
|
||||||
/* B = 0, C = 1/2 - Catmull-Rom spline */
|
|
||||||
const float B = 1.0f / 3.0f;
|
|
||||||
const float C = 1.0f / 3.0f;
|
|
||||||
|
|
||||||
const float ax = fabsf(v);
|
|
||||||
if (ax < 1.0f) {
|
|
||||||
return ((12.0f - 9.0f * B - 6 * C) * ax * ax * ax +
|
|
||||||
(-18.0f + 12.0f * B + 6.0f * C) * ax * ax +
|
|
||||||
(6.0f - 2.0f * B)) / 6.0f;
|
|
||||||
} else if ((ax >= 1.0f) && (ax < 2.0f)) {
|
|
||||||
return ((-B - 6.0f * C) * ax * ax * ax +
|
|
||||||
(6.0f * B + 30.0f * C) * ax * ax + (-12.0f * B - 48.0f * C) *
|
|
||||||
ax + (8.0f * B + 24.0f * C)) / 6.0f;
|
|
||||||
}
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
static vector<float> filter_table(FilterType type, float width)
|
static vector<float> filter_table(FilterType type, float width)
|
||||||
{
|
{
|
||||||
const int filter_table_size = FILTER_TABLE_SIZE-1;
|
const int filter_table_size = FILTER_TABLE_SIZE-1;
|
||||||
@ -236,9 +213,6 @@ static vector<float> filter_table(FilterType type, float width)
|
|||||||
case FILTER_GAUSSIAN:
|
case FILTER_GAUSSIAN:
|
||||||
filter_func = filter_func_gaussian;
|
filter_func = filter_func_gaussian;
|
||||||
break;
|
break;
|
||||||
case FILTER_MITCHELL:
|
|
||||||
filter_func = filter_func_mitchell;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,7 @@ class Scene;
|
|||||||
|
|
||||||
typedef enum FilterType {
|
typedef enum FilterType {
|
||||||
FILTER_BOX,
|
FILTER_BOX,
|
||||||
FILTER_GAUSSIAN,
|
FILTER_GAUSSIAN
|
||||||
FILTER_MITCHELL,
|
|
||||||
} FilterType;
|
} FilterType;
|
||||||
|
|
||||||
class Pass {
|
class Pass {
|
||||||
|
Loading…
Reference in New Issue
Block a user