Skip to content

Commit 4f61838

Browse files
committed
Merge remote-tracking branch 'origin/RB-2.3'
2 parents 18e5822 + 033dd1e commit 4f61838

20 files changed

+139
-98
lines changed

App/App.pro

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ TARGET = Natron
2121
# the list of currently maintained versions (those that have to be merged into the master branch)
2222
VERSION_21 = 2.1.10
2323
VERSION_22 = 2.2.10
24-
VERSION_23 = 2.3.4
24+
VERSION_23 = 2.3.5
2525
VERSION_30 = 3.0.0
2626

2727
# The version for this branch

CHANGELOG.md

+11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ Natron multiple times on the same computer, the different processes will share t
3232
- For convenience, a PyPlug may specify a list of the nodes inside its node graph that should have their viewer overlay displayed when the PyPlug setting panel is opened. For instance, imagine that the PyPlug uses a Transform node internally, it is possible to display the Transform node handle on the viewer when the PyPlug settings panel is opened, even if the Transform node panel itself is closed
3333

3434

35+
## Version 2.3.5
36+
37+
### Plugins
38+
39+
- DenoiseSharpen: fix a bug where the plugin would not abort processing when required.
40+
- ColorCorrect: fix luminance computation when applying saturation #1706
41+
42+
3543
## Version 2.3.4
3644

3745
- Binaries distributed through Natron's web site are now built with 8-bit x264. 10-bit x264 (introduced with 2.2.6) causes too many compatibility issues. There are other codecs that support 10-bit output (especially ProRes, vc2, libopenjpeg, libvpx-vp9, and x265 on some systems). In order to get 10-bit x264, it is recommended to encode a quasi-lossless using one of these codecs, and then transcode with a ffmpeg binary capable of encoding 10-bit x264.
@@ -43,6 +51,9 @@ Natron multiple times on the same computer, the different processes will share t
4351
- Upgrade SeExpr to version 2.11.
4452
- Grade: add a "Normalize" button to automatically compute the clack and white points.
4553
- Matrix3x3, Matrix5x5: new plugins, apply a 3x3 or 5x5 custom filter.
54+
- ColorCorrect: Fix wrong render for input values outside the [0-1] range #1703
55+
- ReadOIIO: Adjust Maximum Thr. (used when reading RAW camera files) should defaut to 0.0 #1705
56+
4657

4758

4859
## Version 2.3.3

Documentation/source/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
# the list of currently maintained versions (those that have to be merged into the master branch)
5252
version_21 = '2.1.10'
5353
version_22 = '2.2.10'
54-
version_23 = '2.3.4'
54+
version_23 = '2.3.5'
5555
version_30 = '3.0.0'
5656

5757
# The version for this branch

Documentation/source/devel/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
# the list of currently maintained versions (those that have to be merged into the master branch)
5858
version_21 = '2.1.10'
5959
version_22 = '2.2.10'
60-
version_23 = '2.3.4'
60+
version_23 = '2.3.5'
6161
version_30 = '3.0.0'
6262

6363
# The version for this branch

Documentation/source/guide/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
# the list of currently maintained versions (those that have to be merged into the master branch)
5252
version_21 = '2.1.10'
5353
version_22 = '2.2.10'
54-
version_23 = '2.3.4'
54+
version_23 = '2.3.5'
5555
version_30 = '3.0.0'
5656

5757
# The version for this branch

Documentation/source/plugins/net.sf.openfx.ColorCorrectPlugin.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ColorCorrect node
55

66
|pluginIcon| 
77
8-
*This documentation is for version 2.0 of ColorCorrect.*
8+
*This documentation is for version 2.1 of ColorCorrect.*
99

1010
Description
1111
-----------
@@ -89,6 +89,8 @@ Controls
8989
+---------------------------------------+------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+
9090
| Offset / ``HighlightsOffset`` | Color | r: 0 g: 0 b: 0 a: 0 |   |
9191
+---------------------------------------+------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+
92+
| Range / ``range`` | Double | min: 0 max: 1 | Expected range for input values. Within this range, a lookup table is used for faster computation. |
93+
+---------------------------------------+------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+
9294
| Tone Ranges / ``toneRanges`` | Parametric | Shadow:   Highlight:   | Tone ranges lookup table |
9395
+---------------------------------------+------------+------------------------+------------------------------------------------------------------------------------------------------------------------------------+
9496
| Luminance Math / ``luminanceMath`` | Choice | Rec. 709 | | Formula used to compute luminance from RGB values (used for saturation adjustments). |

Engine/Curve.cpp

+19-18
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ KeyFrame::KeyFrame(double time,
9191
, _rightDerivative(rightDerivative)
9292
, _interpolation(interpolation)
9393
{
94-
assert( !boost::math::isnan(_time) && !boost::math::isinf(_time) );
95-
assert( !boost::math::isnan(_value) && !boost::math::isinf(_value) );
96-
assert( !boost::math::isnan(_leftDerivative) && !boost::math::isinf(_leftDerivative) );
97-
assert( !boost::math::isnan(_rightDerivative) && !boost::math::isinf(_rightDerivative) );
94+
assert( !(boost::math::isnan)(_time) && !(boost::math::isinf)(_time) );
95+
assert( !(boost::math::isnan)(_value) && !(boost::math::isinf)(_value) );
96+
assert( !(boost::math::isnan)(_leftDerivative) && !(boost::math::isinf)(_leftDerivative) );
97+
assert( !(boost::math::isnan)(_rightDerivative) && !(boost::math::isinf)(_rightDerivative) );
9898
}
9999

100100
KeyFrame::KeyFrame(const KeyFrame & other)
@@ -105,10 +105,10 @@ KeyFrame::KeyFrame(const KeyFrame & other)
105105
, _rightDerivative(other._rightDerivative)
106106
, _interpolation(other._interpolation)
107107
{
108-
assert( !boost::math::isnan(_time) && !boost::math::isinf(_time) );
109-
assert( !boost::math::isnan(_value) && !boost::math::isinf(_value) );
110-
assert( !boost::math::isnan(_leftDerivative) && !boost::math::isinf(_leftDerivative) );
111-
assert( !boost::math::isnan(_rightDerivative) && !boost::math::isinf(_rightDerivative) );
108+
assert( !(boost::math::isnan)(_time) && !(boost::math::isinf)(_time) );
109+
assert( !(boost::math::isnan)(_value) && !(boost::math::isinf)(_value) );
110+
assert( !(boost::math::isnan)(_leftDerivative) && !(boost::math::isinf)(_leftDerivative) );
111+
assert( !(boost::math::isnan)(_rightDerivative) && !(boost::math::isinf)(_rightDerivative) );
112112
}
113113

114114
void
@@ -120,10 +120,10 @@ KeyFrame::operator=(const KeyFrame & o)
120120
_leftDerivative = o._leftDerivative;
121121
_rightDerivative = o._rightDerivative;
122122
_interpolation = o._interpolation;
123-
assert( !boost::math::isnan(_time) && !boost::math::isinf(_time) );
124-
assert( !boost::math::isnan(_value) && !boost::math::isinf(_value) );
125-
assert( !boost::math::isnan(_leftDerivative) && !boost::math::isinf(_leftDerivative) );
126-
assert( !boost::math::isnan(_rightDerivative) && !boost::math::isinf(_rightDerivative) );
123+
assert( !(boost::math::isnan)(_time) && !(boost::math::isinf)(_time) );
124+
assert( !(boost::math::isnan)(_value) && !(boost::math::isinf)(_value) );
125+
assert( !(boost::math::isnan)(_leftDerivative) && !(boost::math::isinf)(_leftDerivative) );
126+
assert( !(boost::math::isnan)(_rightDerivative) && !(boost::math::isinf)(_rightDerivative) );
127127
}
128128

129129
KeyFrame::~KeyFrame()
@@ -134,28 +134,28 @@ void
134134
KeyFrame::setLeftDerivative(double leftDerivative)
135135
{
136136
_leftDerivative = leftDerivative;
137-
assert( !boost::math::isnan(_leftDerivative) && !boost::math::isinf(_leftDerivative) );
137+
assert( !(boost::math::isnan)(_leftDerivative) && !(boost::math::isinf)(_leftDerivative) );
138138
}
139139

140140
void
141141
KeyFrame::setRightDerivative(double rightDerivative)
142142
{
143143
_rightDerivative = rightDerivative;
144-
assert( !boost::math::isnan(_rightDerivative) && !boost::math::isinf(_rightDerivative) );
144+
assert( !(boost::math::isnan)(_rightDerivative) && !(boost::math::isinf)(_rightDerivative) );
145145
}
146146

147147
void
148148
KeyFrame::setValue(double value)
149149
{
150150
_value = value;
151-
assert( !boost::math::isnan(_value) && !boost::math::isinf(_value) );
151+
assert( !(boost::math::isnan)(_value) && !(boost::math::isinf)(_value) );
152152
}
153153

154154
void
155155
KeyFrame::setTime(TimeValue time)
156156
{
157157
_time = time;
158-
assert( !boost::math::isnan(_time) && !boost::math::isinf(_time) );
158+
assert( !(boost::math::isnan)(_time) && !(boost::math::isinf)(_time) );
159159
}
160160

161161
void
@@ -582,9 +582,10 @@ Curve::setOrAddKeyframe(const KeyFrame& key, SetKeyFrameFlags flags, int *keyfra
582582
{
583583

584584
// check for NaN or infinity
585-
if ( (key.getValue() != key.getValue()) || boost::math::isinf(key.getValue()) ) {
585+
double val = key.getValue();
586+
if ( (boost::math::isnan)(val) || (boost::math::isinf)(val) ) {
586587
KeyFrame tmp = key;
587-
tmp.setValue(key.getValue());
588+
tmp.setValue(val);
588589
return setOrAddKeyframe(tmp, flags, keyframeIndex);
589590
}
590591

Engine/Image.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@
2929
#include <cstring> // for std::memcpy, std::memset
3030
#include <stdexcept>
3131

32+
#if !defined(SBK_RUN) && !defined(Q_MOC_RUN)
33+
GCC_DIAG_UNUSED_LOCAL_TYPEDEFS_OFF
34+
#include <boost/math/special_functions/fpclassify.hpp>
35+
GCC_DIAG_UNUSED_LOCAL_TYPEDEFS_ON
36+
#endif
37+
3238
#include <QtCore/QDebug>
3339
#include <QtCore/QThread>
3440

Engine/ImageConvert.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ convertToFormatInternal_sameComps(const RectI & renderWindow,
200200
DSTPIX* dst_pix = dstPixelPtrs[c];
201201
for (int x = renderWindow.x1; x < renderWindow.x2; ++x) {
202202
// They are of the same bitdepth since srcMaxValue == dstMaxValue was checked above
203-
assert(*src_pix == *src_pix); // check for NaNs
203+
assert( !(boost::math::isnan)(*src_pix) ); // check for NaNs
204204
*dst_pix = (DSTPIX)*src_pix;
205205
src_pix += srcPixelStride;
206206
dst_pix += dstPixelStride;
@@ -244,7 +244,7 @@ convertToFormatInternal_sameComps(const RectI & renderWindow,
244244
SRCPIX sourcePixel;
245245
if (srcPixelPtrs[k]) {
246246
sourcePixel = *srcPixelPtrs[k];
247-
assert(sourcePixel == sourcePixel); // check for NaNs
247+
assert( !(boost::math::isnan)(sourcePixel) ); // check for NaNs
248248
} else {
249249
sourcePixel = 0;
250250
}
@@ -283,9 +283,9 @@ convertToFormatInternal_sameComps(const RectI & renderWindow,
283283
}
284284
}
285285
*dstPixelPtrs[k] = pix;
286-
# ifdef DEBUG
287-
assert(pix == pix); // check for NaN
288-
# endif
286+
# ifdef DEBUG
287+
assert( !(boost::math::isnan)(pix) ); // check for NaN
288+
# endif
289289
}
290290

291291
if (backward) {
@@ -452,7 +452,7 @@ convertToFormatInternal(const RectI & renderWindow,
452452

453453
*dstPixelPtrs[k] = pix;
454454
# ifdef DEBUG
455-
assert(*dstPixelPtrs[k] == *dstPixelPtrs[k]); // check for NaN
455+
assert( !(boost::math::isnan)(*dstPixelPtrs[k]) ); // check for NaN
456456
# endif
457457

458458

@@ -566,7 +566,7 @@ convertToMonoImage(const RectI & renderWindow,
566566
break;
567567

568568
}
569-
assert(pix == pix); // Check for NaNs
569+
assert( !(boost::math::isnan)(pix) ); // Check for NaNs
570570
*dstPixelPtrs[0] = pix;
571571
dstPixelPtrs[0] += dstPixelStride;
572572
}
@@ -971,7 +971,7 @@ convertRGBAPackedCPUBufferToGLTextureInternal(const float* srcData,
971971
const float* srcLineData = (const float*)srcPixels;
972972
for (int x = roi.x1; x < roi.x2; ++x, dstLineData += 4, srcLineData += srcNComps) {
973973
for (int c = 0; c < 4; ++c) {
974-
assert(srcLineData[c] == srcLineData[c]); // Check for NaNs
974+
assert( !(boost::math::isnan)(srcLineData[c]) ); // Check for NaNs
975975
dstLineData[c] = srcLineData[c];
976976
}
977977
}

0 commit comments

Comments
 (0)