From 68eb0ce3f17ee1ce2e60751212824b31afb1a8ec Mon Sep 17 00:00:00 2001 From: Lucas Leandro <66079160+lucasleandro1805@users.noreply.github.com> Date: Mon, 5 Jan 2026 16:44:54 -0300 Subject: [PATCH] Add java bindings for changing from default to screen-space reflection in real-time MaterialBuilder (#9548) --- .../filamat-android/src/main/cpp/MaterialBuilder.cpp | 7 +++++++ .../android/filament/filamat/MaterialBuilder.java | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/android/filamat-android/src/main/cpp/MaterialBuilder.cpp b/android/filamat-android/src/main/cpp/MaterialBuilder.cpp index c17505e284..31f1ad2010 100644 --- a/android/filamat-android/src/main/cpp/MaterialBuilder.cpp +++ b/android/filamat-android/src/main/cpp/MaterialBuilder.cpp @@ -335,6 +335,13 @@ Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderRefract builder->refractionMode((MaterialBuilder::RefractionMode) mode); } +extern "C" JNIEXPORT void JNICALL +Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderReflectionMode(JNIEnv* env, + jclass, jlong nativeBuilder, jint mode) { + auto builder = (MaterialBuilder*) nativeBuilder; + builder->reflectionMode((MaterialBuilder::ReflectionMode) mode); +} + extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderRefractionType(JNIEnv* env, jclass, jlong nativeBuilder, jint type) { diff --git a/android/filamat-android/src/main/java/com/google/android/filament/filamat/MaterialBuilder.java b/android/filamat-android/src/main/java/com/google/android/filament/filamat/MaterialBuilder.java index 2a3545131c..ec8a48b0e5 100644 --- a/android/filamat-android/src/main/java/com/google/android/filament/filamat/MaterialBuilder.java +++ b/android/filamat-android/src/main/java/com/google/android/filament/filamat/MaterialBuilder.java @@ -177,6 +177,11 @@ public class MaterialBuilder { SCREEN_SPACE } + public enum ReflectionMode { + DEFAULT, + SCREEN_SPACE + } + public enum RefractionType { SOLID, THIN @@ -403,6 +408,12 @@ public class MaterialBuilder { return this; } + @NonNull + public MaterialBuilder reflectionMode(ReflectionMode mode) { + nMaterialBuilderReflectionMode(mNativeObject, mode.ordinal()); + return this; + } + @NonNull public MaterialBuilder refractionType(RefractionType type) { nMaterialBuilderRefractionType(mNativeObject, type.ordinal()); @@ -604,6 +615,7 @@ public class MaterialBuilder { private static native void nMaterialBuilderSpecularAntiAliasingThreshold(long mNativeObject, float threshold); private static native void nMaterialBuilderRefractionMode(long nativeBuilder, int mode); + private static native void nMaterialBuilderReflectionMode(long nativeBuilder, int mode); private static native void nMaterialBuilderRefractionType(long nativeBuilder, int type); private static native void nMaterialBuilderClearCoatIorChange(long mNativeObject, boolean clearCoatIorChange);