From 954f9112e43f8aacab36e24e12a58a08909a9a59 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 12 Jan 2022 09:55:35 -0800 Subject: [PATCH] Replace generic tonemap curve with a simpler one (#5041) * Replace generic tonemap curve with a simpler one This change removes the shoulder parameter which had inconsistent behaviors. The new curve is simpler and designed to still match by default the gray point and the contrast of ACES in a bright surround. * Fix build --- .../src/main/cpp/ToneMapper.cpp | 15 +---- .../google/android/filament/ToneMapper.java | 28 ++------ filament/include/filament/ToneMapper.h | 12 +--- filament/src/ColorGrading.cpp | 10 +-- filament/src/ColorSpace.h | 58 ++++++++++++----- filament/src/ToneMapper.cpp | 65 +++++-------------- libs/math/include/math/TVecHelpers.h | 7 ++ libs/viewer/include/viewer/Settings.h | 5 +- libs/viewer/src/Settings.cpp | 9 +-- libs/viewer/src/SimpleViewer.cpp | 2 - libs/viewer/tests/test_settings.cpp | 1 - 11 files changed, 82 insertions(+), 130 deletions(-) diff --git a/android/filament-android/src/main/cpp/ToneMapper.cpp b/android/filament-android/src/main/cpp/ToneMapper.cpp index 9318d450fd..ea040538cd 100644 --- a/android/filament-android/src/main/cpp/ToneMapper.cpp +++ b/android/filament-android/src/main/cpp/ToneMapper.cpp @@ -49,8 +49,8 @@ Java_com_google_android_filament_ToneMapper_nCreateFilmicToneMapper(JNIEnv*, jcl extern "C" JNIEXPORT jlong JNICALL Java_com_google_android_filament_ToneMapper_nCreateGenericToneMapper(JNIEnv*, jclass, - jfloat contrast, jfloat shoulder, jfloat midGrayIn, jfloat midGrayOut, jfloat hdrMax) { - return (jlong) new GenericToneMapper(contrast, shoulder, midGrayIn, midGrayOut, hdrMax); + jfloat contrast, jfloat midGrayIn, jfloat midGrayOut, jfloat hdrMax) { + return (jlong) new GenericToneMapper(contrast, midGrayIn, midGrayOut, hdrMax); } extern "C" JNIEXPORT jfloat JNICALL @@ -58,11 +58,6 @@ Java_com_google_android_filament_ToneMapper_nGenericGetContrast(JNIEnv*, jclass, return ((GenericToneMapper*) nativeObject)->getContrast(); } -extern "C" JNIEXPORT jfloat JNICALL -Java_com_google_android_filament_ToneMapper_nGenericGetShoulder(JNIEnv*, jclass, jlong nativeObject) { - return ((GenericToneMapper*) nativeObject)->getShoulder(); -} - extern "C" JNIEXPORT jfloat JNICALL Java_com_google_android_filament_ToneMapper_nGenericGetMidGrayIn(JNIEnv*, jclass, jlong nativeObject) { return ((GenericToneMapper*) nativeObject)->getMidGrayIn(); @@ -84,12 +79,6 @@ Java_com_google_android_filament_ToneMapper_nGenericSetContrast(JNIEnv*, jclass, ((GenericToneMapper*) nativeObject)->setContrast(contrast); } -extern "C" JNIEXPORT void JNICALL -Java_com_google_android_filament_ToneMapper_nGenericSetShoulder(JNIEnv*, jclass, - jlong nativeObject, jfloat shoulder) { - ((GenericToneMapper*) nativeObject)->setShoulder(shoulder); -} - extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_ToneMapper_nGenericSetMidGrayIn(JNIEnv*, jclass, jlong nativeObject, jfloat midGrayIn) { diff --git a/android/filament-android/src/main/java/com/google/android/filament/ToneMapper.java b/android/filament-android/src/main/java/com/google/android/filament/ToneMapper.java index 71264c2d49..15800562e3 100644 --- a/android/filament-android/src/main/java/com/google/android/filament/ToneMapper.java +++ b/android/filament-android/src/main/java/com/google/android/filament/ToneMapper.java @@ -109,7 +109,6 @@ public class ToneMapper { * The tone mapping curve is defined by 5 parameters: *