diff --git a/android/filamat-android/src/main/cpp/MaterialBuilder.cpp b/android/filamat-android/src/main/cpp/MaterialBuilder.cpp index 86f3e87515..17af1fd59e 100644 --- a/android/filamat-android/src/main/cpp/MaterialBuilder.cpp +++ b/android/filamat-android/src/main/cpp/MaterialBuilder.cpp @@ -123,22 +123,22 @@ Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderInterpo extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderUniformParameter( - JNIEnv* env, jclass, jlong nativeBuilder, jint uniformType, jstring name_, jint precision) { + JNIEnv* env, jclass, jlong nativeBuilder, jint uniformType, jint precision, jstring name_) { auto builder = (MaterialBuilder*) nativeBuilder; const char* name = env->GetStringUTFChars(name_, nullptr); - builder->parameter((MaterialBuilder::UniformType) uniformType, name, - (MaterialBuilder::ParameterPrecision) precision); + builder->parameter((MaterialBuilder::UniformType) uniformType, + (MaterialBuilder::ParameterPrecision) precision, name); env->ReleaseStringUTFChars(name_, name); } extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderUniformParameterArray( - JNIEnv* env, jclass, jlong nativeBuilder, jint uniformType, jint size, jstring name_, - jint precision) { + JNIEnv* env, jclass, jlong nativeBuilder, jint uniformType, jint size, jint precision, + jstring name_) { auto builder = (MaterialBuilder*) nativeBuilder; const char* name = env->GetStringUTFChars(name_, nullptr); - builder->parameter((MaterialBuilder::UniformType) uniformType, (size_t) size, name, - (MaterialBuilder::ParameterPrecision) precision); + builder->parameter((MaterialBuilder::UniformType) uniformType, (size_t) size, + (MaterialBuilder::ParameterPrecision) precision, name); env->ReleaseStringUTFChars(name_, name); } 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 81c063d7f1..5017f18fc5 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 @@ -247,30 +247,30 @@ public class MaterialBuilder { @NonNull public MaterialBuilder uniformParameter(@NonNull UniformType type, String name) { - nMaterialBuilderUniformParameter(mNativeObject, type.ordinal(), name, - ParameterPrecision.DEFAULT.ordinal()); + nMaterialBuilderUniformParameter(mNativeObject, type.ordinal(), + ParameterPrecision.DEFAULT.ordinal(), name); return this; } @NonNull - public MaterialBuilder uniformParameter(@NonNull UniformType type, String name, - ParameterPrecision precision) { - nMaterialBuilderUniformParameter(mNativeObject, type.ordinal(), name, precision.ordinal()); + public MaterialBuilder uniformParameter(@NonNull UniformType type, + ParameterPrecision precision, String name) { + nMaterialBuilderUniformParameter(mNativeObject, type.ordinal(), precision.ordinal(), name); return this; } @NonNull public MaterialBuilder uniformParameterArray(@NonNull UniformType type, int size, String name) { - nMaterialBuilderUniformParameterArray(mNativeObject, type.ordinal(), size, name, - ParameterPrecision.DEFAULT.ordinal()); + nMaterialBuilderUniformParameterArray(mNativeObject, type.ordinal(), size, + ParameterPrecision.DEFAULT.ordinal(), name); return this; } @NonNull - public MaterialBuilder uniformParameterArray(@NonNull UniformType type, int size, String name, - ParameterPrecision precision) { - nMaterialBuilderUniformParameterArray(mNativeObject, type.ordinal(), size, name, - precision.ordinal()); + public MaterialBuilder uniformParameterArray(@NonNull UniformType type, int size, + ParameterPrecision precision, String name) { + nMaterialBuilderUniformParameterArray(mNativeObject, type.ordinal(), size, + precision.ordinal(), name); return this; } @@ -552,9 +552,9 @@ public class MaterialBuilder { private static native void nMaterialBuilderShading(long nativeBuilder, int shading); private static native void nMaterialBuilderInterpolation(long nativeBuilder, int interpolation); private static native void nMaterialBuilderUniformParameter(long nativeBuilder, int type, - String name, int precision); + int precision, String name); private static native void nMaterialBuilderUniformParameterArray(long nativeBuilder, int type, - int size, String name, int precision); + int size, int precision, String name); private static native void nMaterialBuilderSamplerParameter(long nativeBuilder, int type, int format, int precision, String name); private static native void nMaterialBuilderVariable(long nativeBuilder, int variable, diff --git a/libs/filamat/include/filamat/MaterialBuilder.h b/libs/filamat/include/filamat/MaterialBuilder.h index e925f7d369..9416d530e8 100644 --- a/libs/filamat/include/filamat/MaterialBuilder.h +++ b/libs/filamat/include/filamat/MaterialBuilder.h @@ -244,12 +244,22 @@ public: MaterialBuilder& interpolation(Interpolation interpolation) noexcept; //! Add a parameter (i.e., a uniform) to this material. - MaterialBuilder& parameter(UniformType type, const char* name, - ParameterPrecision precision = ParameterPrecision::DEFAULT) noexcept; + MaterialBuilder& parameter(UniformType type, ParameterPrecision precision, + const char* name) noexcept; + + //! Add a parameter (i.e., a uniform) to this material. + MaterialBuilder& parameter(UniformType type, const char* name) noexcept { + return parameter(type, ParameterPrecision::DEFAULT, name); + } //! Add a parameter array to this material. - MaterialBuilder& parameter(UniformType type, size_t size, const char* name, - ParameterPrecision precision = ParameterPrecision::DEFAULT) noexcept; + MaterialBuilder& parameter(UniformType type, size_t size, + ParameterPrecision precision, const char* name) noexcept; + + //! Add a parameter array to this material. + MaterialBuilder& parameter(UniformType type, size_t size, const char* name) noexcept { + return parameter(type, size, ParameterPrecision::DEFAULT, name); + } /** * Add a sampler parameter to this material. diff --git a/libs/filamat/src/MaterialBuilder.cpp b/libs/filamat/src/MaterialBuilder.cpp index 5345c164ef..71c21d8181 100644 --- a/libs/filamat/src/MaterialBuilder.cpp +++ b/libs/filamat/src/MaterialBuilder.cpp @@ -181,14 +181,14 @@ MaterialBuilder& MaterialBuilder::variable(Variable v, const char* name) noexcep } MaterialBuilder& MaterialBuilder::parameter( - UniformType type, const char* name, ParameterPrecision precision) noexcept { + UniformType type, ParameterPrecision precision, const char* name) noexcept { ASSERT_POSTCONDITION(mParameterCount < MAX_PARAMETERS_COUNT, "Too many parameters"); mParameters[mParameterCount++] = { name, type, 1, precision }; return *this; } MaterialBuilder& MaterialBuilder::parameter( - UniformType type, size_t size, const char* name, ParameterPrecision precision) noexcept { + UniformType type, size_t size, ParameterPrecision precision, const char* name) noexcept { ASSERT_POSTCONDITION(mParameterCount < MAX_PARAMETERS_COUNT, "Too many parameters"); mParameters[mParameterCount++] = { name, type, size, precision }; return *this; diff --git a/tools/matc/src/matc/ParametersProcessor.cpp b/tools/matc/src/matc/ParametersProcessor.cpp index e1e5116c96..29e68a6b3f 100644 --- a/tools/matc/src/matc/ParametersProcessor.cpp +++ b/tools/matc/src/matc/ParametersProcessor.cpp @@ -180,9 +180,9 @@ static bool processParameter(MaterialBuilder& builder, const JsonishObject& json Enums::toEnum(precisionValue->toJsonString()->getString()); } if (arraySize == 0) { - builder.parameter(type, nameString.c_str(), precision); + builder.parameter(type, precision, nameString.c_str()); } else { - builder.parameter(type, arraySize, nameString.c_str(), precision); + builder.parameter(type, arraySize, precision, nameString.c_str()); } } else if (Enums::isValid(typeString)) { if (arraySize > 0) {