From 36120106cdfe4610bd09620a5ae6006423e7f928 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 23 Feb 2024 14:33:26 -0800 Subject: [PATCH] Add new PBR Neutral tone mapper (#7597) This tone mapper was designed to preserve the color apperance of materials. It provides good saturation and contrast while controlling the highlights. --- NEW_RELEASE_NOTES.md | 1 + .../src/main/cpp/ToneMapper.cpp | 5 ++ .../google/android/filament/ToneMapper.java | 15 +++- filament/include/filament/ToneMapper.h | 20 ++++-- filament/src/ToneMapper.cpp | 68 +++++++++++++------ libs/viewer/include/viewer/Settings.h | 3 +- libs/viewer/src/Settings.cpp | 11 +-- libs/viewer/src/ViewerGui.cpp | 5 +- 8 files changed, 95 insertions(+), 33 deletions(-) diff --git a/NEW_RELEASE_NOTES.md b/NEW_RELEASE_NOTES.md index b9947d8a8e..7e1350a537 100644 --- a/NEW_RELEASE_NOTES.md +++ b/NEW_RELEASE_NOTES.md @@ -10,3 +10,4 @@ appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md). - android: NDK 26.1.10909125 is used by default - android: Minimum API level on Android is now API 21 instead of API 19. This allows the use of OpenGL ES 3.1 +- rendering: New PBR Neutral tone mapper, designed to preserve materials color appearance diff --git a/android/filament-android/src/main/cpp/ToneMapper.cpp b/android/filament-android/src/main/cpp/ToneMapper.cpp index 21c7e7ab24..860b95508b 100644 --- a/android/filament-android/src/main/cpp/ToneMapper.cpp +++ b/android/filament-android/src/main/cpp/ToneMapper.cpp @@ -47,6 +47,11 @@ Java_com_google_android_filament_ToneMapper_nCreateFilmicToneMapper(JNIEnv*, jcl return (jlong) new FilmicToneMapper(); } +extern "C" JNIEXPORT jlong JNICALL +Java_com_google_android_filament_ToneMapper_nCreatePBRNeutralToneMapper(JNIEnv*, jclass) { + return (jlong) new PBRNeutralToneMapper(); +} + extern "C" JNIEXPORT jlong JNICALL Java_com_google_android_filament_ToneMapper_nCreateAgxToneMapper(JNIEnv*, jclass, jint look) { return (jlong) new AgxToneMapper(AgxToneMapper::AgxLook(look)); 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 58ffc501ec..c3d3490441 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 @@ -16,12 +16,14 @@ package com.google.android.filament; *
  • Configurable tone mapping operators
  • * *
  • Fixed-aesthetic tone mapping operators
  • * *
  • Debug/validation tone mapping operators
  • *