Skip to content

Commit 55c27ce

Browse files
committed
Signed <> Unsigned conversion for non Normals
Fix for missed Signed <> Unsigned conversion for non Normals textures. This conversion map [-1 +1] range to [0 +1] range and [0 +1] to [-1 +1]
1 parent f82271c commit 55c27ce

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

Solidify/src/UI.CPP

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -443,22 +443,22 @@ void MainWindow::rngSettings() {
443443
if (action == rng_Unsg) {
444444
settings.rangeMode = 0;
445445
emit updateTextSignal("Unsigned floats");
446-
qDebug() << "32/16 bit float Normals are in [0.0 ~ 1.0] range";
446+
qDebug() << "32/16 bit floats are in [0.0 ~ 1.0] range";
447447
}
448448
else if (action == rng_Sign) {
449449
settings.rangeMode = 1;
450450
emit updateTextSignal("Signed floats");
451-
qDebug() << "32/16 bit floats Normals are in [-1.0 ~ 1.0] range";
451+
qDebug() << "32/16 bit floats are in [-1.0 ~ 1.0] range";
452452
}
453-
else if (action == rng_SU) {
454-
settings.rangeMode = 2;
455-
emit updateTextSignal("Signed <> Unsigned");
456-
qDebug() << "32/16 bit floats Normals are in [-1.0 ~ 1.0] range converted to [0.0 ~ 1.0]";
457-
}
458453
else if (action == rng_US) {
459-
settings.rangeMode = 3;
454+
settings.rangeMode = 2;
460455
emit updateTextSignal("Unsigned <> Signed");
461-
qDebug() << "32/16 bit floats Normals are in [0.0 ~ 1.0] range converted to [-1.0 ~ 1.0]";
456+
qDebug() << "32/16 bit floats range [0.0 ~ 1.0] map to a [-1.0 ~ 1.0]";
457+
}
458+
else if (action == rng_SU) {
459+
settings.rangeMode = 3;
460+
emit updateTextSignal("Signed <> Unsigned");
461+
qDebug() << "32/16 bit floats range [-1.0 ~ 1.0] map to a [0.0 ~ 1.0]";
462462
}
463463
}
464464

Solidify/src/solidify.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,18 @@ bool solidify_main(const std::string& inputFileName, const std::string& outputFi
354354
LOG(info) << "Normalize skipped\n";
355355
}
356356

357+
// if not normalize and not repair and range conversion is needed
358+
if (settings.repairMode == 0 && !doNormalize && settings.rangeMode > 1) {
359+
switch (settings.rangeMode) {
360+
case 2: // 2 - unsigned -> signed
361+
out_buf = ImageBufAlgo::mad(out_buf, 2.0f, -1.0f);
362+
break;
363+
case 3: // 3 - signed -> unsigned
364+
out_buf = ImageBufAlgo::mad(out_buf, 0.5f, 0.5f);
365+
break;
366+
}
367+
}
368+
357369
ImageSpec& ospec = out_buf.specmod();
358370
if (settings.alphaMode == 1) {
359371
ospec.nchannels = grayscale ? 2 : 4; // Write RGB and alpha channels

Solidify/src/ui.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#include "processing.h"
4141

4242
#define VERSION_MAJOR 1
43-
#define VERSION_MINOR 38
43+
#define VERSION_MINOR 39
4444

4545
void setPBarColor(QProgressBar* progressBar, const QColor& color = QColor("#05B8CC"));
4646

0 commit comments

Comments
 (0)