Contenu du post
🤖Kotlin DSL для AGSL-шейдеров на Android AGSL (Android Graphics Shading Language) появился в Android 13 как нативный язык шейдеров для GPU. Работает через RuntimeShader и RenderEffect, позволяет делать попиксельные эффекты на любом View или Composable. Но писать его больно: код живёт в строках, uniform-ы привязываются вручную, IDE не помогает. Библиотека RedByteFX оборачивает это в Kotlin DSL. Вот волновое смещение — сначала голый AGSL, потом то же самое через библиотеку: // Голый AGSL — строка в коде uniform shader content; uniform float wave_amplitude; uniform float wave_frequency; half4 main(float2 fragCoord) { float2 offset = float2( 0.0, sin(fragCoord.x * wave_frequency) * wave_amplitude ); return content.eval(fragCoord + offset); } // RedByteFX DSL val effect = redbytefx { val amplitude = uniformFloat(0f, "wave_amplitude") val frequency = uniformFloat(0.08f, "wave_frequency") val offset = let( float2(0f, sin(fragCoord.x * frequency) * amplitude), "wave_offset" ) sample(fragCoord + offset) } 🔗habr.com 🐱GitHub #Android