{'fraction_non_alphanumeric': 0.017391304347826087, 'fraction_numerical': 0.0, 'mean_word_length': 5.222972972972973, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Smooth Penumbra Transitions with Shadow Maps

We present a method for rendering aesthetically correct soft shadows that exhibit smooth inner and outer penumbrae and self-shadowing. Our approach is an extension of ordinary shadow mapping; in an additional step, occluder shadow silhouette edges, as seen from the center of an area light, are detected and extruded into so-called skirts. This step is done entirely in image space, and as such does not require the construction of extra geometric primitives. During final rendering, penumbra regions are identified using the depth information of the skirts and stochastic sampling of the shadow map. Our algorithm has been successfully implemented on programmable shader hardware, and interactive frame rates are obtained. We observe that the main bottleneck of our implementation lies in the rasterization stage; performance mainly depends on the size of the light source.