SSCT optimizations and fixes
- Use lower depth LOD as the cone radius increases. This is the same technique we use for SAO. The better cache access significantly improve performance. On a test on Pixel4 at 585MHz, SAO pass improves by 30%. This also helps the algorithm scale with the shadow distance. - Shadow direction/length no longer dependent on aspect-ratio and camera orientation. This is fixed by doing all the computations in screen-space instead of normalized screen space. - Shadow parameters are no longer dependent on the field of view. - Also rename dominantLightShadowing.fs to ssct.fs - remove zoom parameter, it wasn't very useful.
This commit is contained in:
committed by
Mathias Agopian
parent
9e01348dd5
commit
583c1c07cf
@@ -217,7 +217,7 @@ extern "C" JNIEXPORT void JNICALL
|
||||
Java_com_google_android_filament_View_nSetSSCTOptions(JNIEnv *, jclass, jlong nativeView,
|
||||
jfloat ssctLightConeRad, jfloat ssctStartTraceDistance, jfloat ssctContactDistanceMax,
|
||||
jfloat ssctIntensity, jfloat ssctLightDirX, jfloat ssctLightDirY, jfloat ssctLightDirZ,
|
||||
jfloat ssctDepthBias, jfloat ssctDepthSlopeBias, jfloat ssctScale, jint ssctSampleCount,
|
||||
jfloat ssctDepthBias, jfloat ssctDepthSlopeBias, jint ssctSampleCount,
|
||||
jint ssctRayCount, jboolean ssctEnabled) {
|
||||
View* view = (View*) nativeView;
|
||||
View::AmbientOcclusionOptions options = view->getAmbientOcclusionOptions();
|
||||
@@ -228,7 +228,6 @@ Java_com_google_android_filament_View_nSetSSCTOptions(JNIEnv *, jclass, jlong na
|
||||
options.ssct.lightDirection = math::float3{ ssctLightDirX, ssctLightDirY, ssctLightDirZ };
|
||||
options.ssct.depthBias = ssctDepthBias;
|
||||
options.ssct.depthSlopeBias = ssctDepthSlopeBias;
|
||||
options.ssct.scale = ssctScale;
|
||||
options.ssct.sampleCount = (uint8_t)ssctSampleCount;
|
||||
options.ssct.rayCount = (uint8_t)ssctRayCount;
|
||||
options.ssct.enabled = (bool)ssctEnabled;
|
||||
|
||||
Reference in New Issue
Block a user