Face-Point is the first open-source real-time face filter app built using MediaPipe FaceMesh for high-performance, GPU-accelerated effects — and it’s blazing fast thanks to its pure OpenGL rendering pipeline.
No OpenCV. No fluff. Just raw OpenGL power.
# 🐞 Known Issues [FIXED]
## Shader Crash: sampler3D on Mali GPUs
### Issue Summary
On some Mali GPUs (often found with MediaTek CPUs), sampler3D isn’t supported.
As a result, when we fall back to using sampler2D for LUTs, the colours can appear slightly inaccurate.
- 18-09-2025 → Fixed
sampler3Dcrash on Mali GPUs by replacing it withsampler2Dfor both Mali and Adreno, keeping the same visual quality with manual slice interpolation. - 19-09-2025 → Fixed ** fixed Abstract screen glitch noise on last BW1.cube filter** by replacing it with original
BW1.cubefile. - 15-10-2025 → Fixed
glTexImage2DglError (0x502) on Mali GPUs glError (0x502) is now fixed on LUT filters. - ⭐ 25-05-2026 → Added audio recording support, restructured the rendering pipeline for decoupled, modular filters, fixed the resume bug (app now retains the active filter instead of resetting to index 0), and applied rotation fixes across most filters.
- MediaPipe FaceMesh for facial landmark detection
- Pure OpenGL for rendering — no OpenCV involved
- Optimized for Android with native performance
- Modular design for custom filters and effects
- Encoder Logic: Based on EncodeAndMuxTest.java from Bigflake — a robust reference implementation for MediaCodec + MediaMuxer workflows
- Offscreen Rendering: Uses
EglSurfaceBaseandEglCorefrom Google’s Grafika test app - Face Landmark Detection: Utilizes Google’s MediaPipe Face Landmarker — official model and API used for high-accuracy facial tracking
- 3D LUT Filter: Inspired by Svante Lindgren’s guide on creating GPU-accelerated 3D LUTs from
.CUBEfiles using OpenGLGL_TEXTURE_3D— enables DaVinci Resolve or Photoshop-style color grading directly in-app. LUTs can be embedded through code (for now), allowing custom cinematic looks and stylized filters with real-time performance.
- Audio recording is not supported yet
- Planned upgrade: voice changer integration
- MediaCodec logic will be migrated from Kotlin to C++ to eliminate processing overhead and boost performance
- Built from scratch with precision and performance in mind
- Designed for real-time responsiveness on mobile GPUs
- Ideal for developers who want full control over rendering and effects
| Filter Name | Preview |
|---|---|
1_default |
![]() |
| Filter Name | Preview | Filter Name | Preview |
|---|---|---|---|
2_monkey |
![]() |
❌3_eye_censor |
![]() |
4_googly_eyes |
![]() |
5_chad |
![]() |
❌6_glsses |
![]() |
7_invert |
![]() |
8_b&w |
![]() |
9_cine_still |
![]() |
10_sunset |
![]() |
11_sunset_2 |
![]() |
12_BW1 |
![]() |
Coming Soon... | ☁️☁️☁️☁️☁️☁️☁️ |
filters with ❌ are removed
Follow these steps to clone the repository and run the project in Android Studio.
- Android Studio (latest version recommended)
- An Android device with developer mode enabled
- Clone the repository: Open your terminal and run the following Git command:
git clone https://github.com/VoidYogendra/Face-Point.git










