Skip to main content

Overview

What is KraftShade?​

KraftShade is a modern, flexible GPU-accelerated graphics library for Android that enables developers to create complex visual effects, filters, and animations. Built on OpenGL ES, KraftShade provides a powerful yet intuitive API for implementing high-performance graphics processing in Android applications.

The library is designed to address the limitations of existing graphics libraries while providing a Kotlin-first approach that integrates seamlessly with modern Android development practices, including Jetpack Compose.

Key Features​

Flexible Pipeline Architecture​

KraftShade's core strength lies in its flexible pipeline architecture that allows for both simple serial processing and complex graph-based shader pipelines:

  • Serial Pipelines: Chain multiple effects in sequence
  • Graph Pipelines: Create non-linear processing flows with multiple branches
  • Nested Pipelines: Combine different pipeline types for complex effects

Kotlin-First Design​

KraftShade embraces modern Kotlin features to provide an intuitive and type-safe API:

// Creating a simple effect with KraftShade
pipeline(windowSurface) {
serialSteps(
inputTexture = bitmap.asTexture(),
targetBuffer = windowSurface,
) {
step(SaturationKraftShader()) {
saturation = 1.5f
}

step(ContrastKraftShader()) {
contrast = 1.2f
}
}
}

Comprehensive View Components​

KraftShade provides ready-to-use view components for both traditional Android Views and Jetpack Compose:

  • Android Views:

    • KraftTextureView: Base OpenGL rendering view
    • KraftEffectTextureView: Effect-enabled view
    • AnimatedKraftTextureView: Animation support
  • Jetpack Compose:

    • KraftShadeView: Compose wrapper for KraftTextureView
    • KraftShadeEffectView: Compose wrapper for KraftEffectTextureView
    • KraftShadeAnimatedView: Compose wrapper for AnimatedKraftTextureView

Built-in Shader Library​

KraftShade comes with a comprehensive set of built-in shaders for common visual effects:

  • Color manipulation (saturation, contrast, hue, etc.)
  • Blur and distortion effects
  • Edge detection and convolution operations
  • Blending modes
  • Artistic effects
  • Alpha and transparency handling

Animation Support​

Create dynamic, time-based animations with KraftShade's animation system:

// Animated saturation effect
val saturationInput = timeInput
.bounceBetween(0f, 2f)
.withDuration(2000)

pipeline(windowSurface) {
serialSteps(bitmap.asTexture(), windowSurface) {
step(SaturationKraftShader()) { shader ->
shader.saturation = saturationInput.get()
}
}
}

Efficient Resource Management​

KraftShade handles OpenGL resource management automatically:

  • Automatic buffer recycling
  • Texture reuse optimization
  • Proper cleanup of OpenGL resources
  • Thread-safe OpenGL context handling

Use Cases​

KraftShade is ideal for a wide range of applications:

  • Photo Editing Apps: Apply filters and effects to images
  • Video Processing: Real-time video effects and filters
  • Creative Tools: Drawing and artistic applications
  • UI Effects: Add visual flair to your app's interface
  • Augmented Reality: Enhance camera feeds with effects
  • Data Visualization: GPU-accelerated rendering of complex data

Getting Started​

Ready to start using KraftShade? Check out the Installation guide to add KraftShade to your project, then follow the Quick Start Guide to create your first effect.

For a deeper understanding of why KraftShade was created and how it compares to alternatives, see Why KraftShade.