26 Advances in Real-Time Rendering CourseAnti-AliasingStore coverage information in the linked listResolve on per-sampleExecute a shader at each sample locationUse MSAA hardwareResolve per-pixelExecute a shader at each pixel locationAverage all sample contributions within the shaderSub-pixel intersectionsPros:Slightly faster than per-sample executionCan be done with a Compute ShaderCons:Destination Render Target is single sampleDepthstencil testing is not available for early rejection7/28/2010Advances in Real-Time Rendering CourseSiggraph 2010, Los Angeles, CA

38 Advances in Real-Time Rendering CourseReflective Shadow MapRSM is like a standard shadow map but with added information such as color, normal, flux, etc.Pixels in RSM considered as point light sources for 1 bounce indirect light.Create 1 RSM for each light source you want to contribute indirect light.7/28/2010Advances in Real-Time Rendering CourseSiggraph 2010, Los Angeles, CA

44 Advances in Real-Time Rendering CourseProblem!Too many samples per kernel will kill performance…but we need very large kernel to get good visual results.For decent results need >= 512x512 as well as big kernel >= 80x807/28/2010Advances in Real-Time Rendering CourseSiggraph 2010, Los Angeles, CA

45 Advances in Real-Time Rendering CourseSolution:Don’t use the full kernel for each screen pixel.Instead, use dithered pattern of pixels which only considers 1 out of NxN pixels each time in the light accumulation loop.Dithered pattern position uses scene pixel screen position modulo N.7/28/2010Advances in Real-Time Rendering CourseSiggraph 2010, Los Angeles, CA

46 Advances in Real-Time Rendering CourseIndirect LightingHowever, the dithered pattern used to calculate indirect light falling on screen pixel still won’t be smooth…Perform bilateral filter with up-sample to smooth things out and go to main scene image size.7/28/2010Advances in Real-Time Rendering CourseSiggraph 2010, Los Angeles, CA