Add support for screen-space contact shadows (#2245)
* Add support for screen-space contact shadows This CL adds support and always enables it. toggles and setting in the next CL (same PR). * Plumb settings for screen-space contact shadows screen-space contact shadows is handled like a shadow option, parameters (including on/off) are set in the LightManager, using the existing ShadowOptions API. Additionally there is a per-renderable toggle. Both toggles are off by default. * Allow contact shadows when shadowing is auto-disabled Shadowing can be auto-disabled when for instance there are no shadow casters in the scene. We still allow contact shadows in that case. This would allow for instance, to make the vegetation on a terrain not shadow-casting, and still get some shadowing there by using contact shadows instead. * apply micro-shadowing after contact shadows also, don't compute contact shadows when we know we're fully shadowed.
This commit is contained in:
@@ -164,6 +164,13 @@ Java_com_google_android_filament_RenderableManager_nBuilderReceiveShadows(JNIEnv
|
||||
builder->receiveShadows(enabled);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_RenderableManager_nBuilderScreenSpaceContactShadows(JNIEnv*, jclass,
|
||||
jlong nativeBuilder, jboolean enabled) {
|
||||
RenderableManager::Builder *builder = (RenderableManager::Builder *) nativeBuilder;
|
||||
builder->screenSpaceContactShadows(enabled);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_RenderableManager_nBuilderSkinning(JNIEnv*, jclass,
|
||||
jlong nativeBuilder, jint boneCount) {
|
||||
@@ -275,6 +282,13 @@ Java_com_google_android_filament_RenderableManager_nSetReceiveShadows(JNIEnv*, j
|
||||
rm->setReceiveShadows((RenderableManager::Instance) i, enabled);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_RenderableManager_nSetScreenSpaceContactShadows(JNIEnv*, jclass,
|
||||
jlong nativeRenderableManager, jint i, jboolean enabled) {
|
||||
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
|
||||
rm->setScreenSpaceContactShadows((RenderableManager::Instance) i, enabled);
|
||||
}
|
||||
|
||||
extern "C" JNIEXPORT jboolean JNICALL
|
||||
Java_com_google_android_filament_RenderableManager_nIsShadowCaster(JNIEnv*, jclass,
|
||||
jlong nativeRenderableManager, jint i) {
|
||||
|
||||
Reference in New Issue
Block a user