# Finger Shadows in Compose

DevFeed: [Finger Shadows in Compose](<https://devfeed.tech/articles/finger-shadows-in-compose-25611.md>)

Original publisher: [Read original article](<https://www.romainguy.dev/posts/2025/finger-shadows/>)

Author: Romain Guy

Published: 2025-11-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Romain Guy](<https://devfeed.tech/sources/posts-on-romain-guy.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [shaders](<https://devfeed.tech/topics/shaders.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [developer](<https://devfeed.tech/tags/developer.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [programming](<https://devfeed.tech/tags/programming.md>), [shaders](<https://devfeed.tech/tags/shaders.md>), [ui](<https://devfeed.tech/tags/ui.md>)

## AI overview

A tutorial on using Android 13's RuntimeShader API in Jetpack Compose to simulate soft shadows cast by a user's finger, stylus, or pointing device. It models the finger as an oriented capsule in 3D space and computes light visibility using cone and spherical-cap intersections.

## Source excerpt

I recently realized that I have never discussed graphics programming on this blog, and decided it was time to correct this. A few years ago, Android 13 introduced the RuntimeShader API that allows you to write custom GPU shaders and apply them to UI elements. In this blog post I will show you how this API can be used to simulate shadows projected by the user's finger (or stylus/pointing device) onto your UI.