package Ġcom . luck . picture . lib . instagram . filter Ċ Ċ import Ġandroid . content .* Ċ import Ġcom . luck . picture . lib . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsam Ġon Ġ 1 4 - 8 - 9 . Ċ Ġ*/ Ċ class ĠIF Val encia Filter ( param Context : ĠContext ) Ġ: ĠIF Image Filter ( param Context , ĠSH ADER ) Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġset Res () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Input Texture ( R . drawable . val encia _ map ) ĊĠĠĠĠĠĠĠ Ġadd Input Texture ( R . drawable . val encia _ gradient _ map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSH ADER Ġ= Ġ" precision Ġlo wp Ġfloat ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġvarying Ġhigh p Ġvec 2 Ġtexture Coordinate ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġuniform Ġsampler 2 D Ġinput Image Texture ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġuniform Ġsampler 2 D Ġinput Image Texture 2 ; Ġ// map \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġuniform Ġsampler 2 D Ġinput Image Texture 3 ; Ġ// grad Map \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġmat 3 Ġs atur ate Matrix Ġ= Ġmat 3 (\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 . 1 4 0 2 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 0 5 9 8 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 0 6 1 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 1 1 7 4 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 . 0 8 2 6 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 1 1 8 6 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 0 2 2 8 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 0 . 0 2 2 8 ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 . 1 7 7 2 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġvec 3 Ġl uma Coeff s Ġ= Ġvec 3 (. 3 , Ġ. 5 9 , Ġ. 1 1 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġvoid Ġmain ()\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġvec 3 Ġtex el Ġ= Ġtexture 2 D ( input Image Texture , Ġtexture Coordinate ). rgb ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġtex el Ġ= Ġvec 3 (\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 2 , Ġvec 2 ( tex el . r , Ġ. 1 6 6 6 6 6 6 )). r ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 2 , Ġvec 2 ( tex el . g , Ġ. 5 )). g ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 2 , Ġvec 2 ( tex el . b , Ġ. 8 3 3 3 3 3 3 )). b \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġtex el Ġ= Ġs atur ate Matrix Ġ* Ġtex el ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġfloat Ġl uma Ġ= Ġdot ( l uma Coeff s , Ġtex el );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġtex el Ġ= Ġvec 3 (\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 3 , Ġvec 2 ( l uma , Ġtex el . r )). r ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 3 , Ġvec 2 ( l uma , Ġtex el . g )). g ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D ( input Image Texture 3 , Ġvec 2 ( l uma , Ġtex el . b )). b );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġgl _ Frag Color Ġ= Ġvec 4 ( tex el , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ}\ n " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Res () ĊĠĠĠ Ġ} Ċ }