Switch specular AA to Tokuyoshi and Kaplanyan (#1218)

This replaces the previous "curvature to roughness" method. Both are related
and rely on the screen space variance of geometric normals but this new
solution offers more control (the screen space variance and the clamping
threshold can be controlled).
This commit is contained in:
Romain Guy
2019-05-23 12:56:26 -07:00
committed by GitHub
parent af559a1344
commit 0a5c068cb6
47 changed files with 649 additions and 412 deletions

View File

@@ -226,17 +226,24 @@ Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderShadowM
}
extern "C" JNIEXPORT void JNICALL
Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderCurvatureToRoughness(
JNIEnv*, jclass, jlong nativeBuilder, jboolean curvatureToRoughness) {
Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderSpecularAntiAliasing(
JNIEnv*, jclass, jlong nativeBuilder, jboolean specularAntiAliasing) {
auto builder = (MaterialBuilder*) nativeBuilder;
builder->curvatureToRoughness(curvatureToRoughness);
builder->specularAntiAliasing(specularAntiAliasing);
}
extern "C" JNIEXPORT void JNICALL
Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderLimitOverInterpolation(
JNIEnv*, jclass, jlong nativeBuilder, jboolean limitOverInterpolation) {
Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderSpecularAntiAliasingVariance(
JNIEnv*, jclass, jlong nativeBuilder, jfloat variance) {
auto builder = (MaterialBuilder*) nativeBuilder;
builder->limitOverInterpolation(limitOverInterpolation);
builder->specularAntiAliasingVariance(variance);
}
extern "C" JNIEXPORT void JNICALL
Java_com_google_android_filament_filamat_MaterialBuilder_nMaterialBuilderSpecularAntiAliasingThreshold(
JNIEnv*, jclass, jlong nativeBuilder, jfloat threshold) {
auto builder = (MaterialBuilder*) nativeBuilder;
builder->specularAntiAliasingThreshold(threshold);
}
extern "C" JNIEXPORT void JNICALL