/** Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠSe ang hay ĠY ath Ġ(@ se ang hay ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . se ang hay . studio . gles . transition Ċ Ċ import Ġcom . se ang hay . studio . gles . graphics . uniform . uniform 1 f Ċ Ċ open Ġclass ĠCross Zoom Transition Ġ: ĠTransition (" cross - zoom ", ĠSOURCE , Ġ 1 0 0 0 L ) Ġ{ ĊĊĠĠĠ Ġopen Ġvar Ġstrength : ĠFloat Ġ= Ġ 0 . 4 f ĊĠĠĠ Ġopen Ġvar Ġstrength Uniform Ġ= Ġuniform 1 f (" strength "). auto Init () ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Uniform s () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Update Uniform s () ĊĊĠĠĠĠĠĠĠ Ġstrength Uniform . setValue ( strength ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = glsl ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSOURCE Ġ= Ġ""" Ċ // ĠLicense : ĠMIT Ċ // ĠAuthor : Ġrect alog ic Ċ // Ġport ed Ġby Ġgre Ġfrom Ġhttps :// gist . github . com / rect alog ic / b 8 6 b 9 0 1 6 1 5 0 3 a 0 0 2 3 2 3 1 Ċ Ċ // ĠConvert ed Ġfrom Ġhttps :// github . com / rect alog ic / render mix - basic - effects / blob / master / assets / com / render mix / Cross Zoom / Cross Zoom . frag Ċ // ĠWhich Ġis Ġbased Ġon Ġhttps :// github . com / ev an w / g lf x . js / blob / master / src / filters / blur / zoom blur . js Ċ // ĠWith Ġadditional Ġeasing Ġfunctions Ġfrom Ġhttps :// github . com / rect alog ic / render mix - basic - effects / blob / master / assets / com / render mix / E asing / E asing . glsl lib Ċ Ċ uniform Ġfloat Ġstrength ; Ġ// Ġ= Ġ 0 . 4 Ċ Ċ const Ġfloat ĠPI Ġ= Ġ 3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 ; Ċ Ċ float ĠLinear _ ease ( in Ġfloat Ġbegin , Ġin Ġfloat Ġchange , Ġin Ġfloat Ġduration , Ġin Ġfloat Ġtime ) Ġ{ ĊĠĠĠ Ġreturn Ġchange Ġ* Ġtime Ġ/ Ġduration Ġ+ Ġbegin ; Ċ } Ċ Ċ float ĠExp onent ial _ ease InOut ( in Ġfloat Ġbegin , Ġin Ġfloat Ġchange , Ġin Ġfloat Ġduration , Ġin Ġfloat Ġtime ) Ġ{ ĊĠĠĠ Ġif Ġ( time Ġ== Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbegin ; ĊĠĠĠ Ġelse Ġif Ġ( time Ġ== Ġduration ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbegin Ġ+ Ġchange ; ĊĠĠĠ Ġtime Ġ= Ġtime Ġ/ Ġ( duration Ġ/ Ġ 2 . 0 ); ĊĠĠĠ Ġif Ġ( time Ġ< Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġchange Ġ/ Ġ 2 . 0 Ġ* Ġpow ( 2 . 0 , Ġ 1 0 . 0 Ġ* Ġ( time Ġ- Ġ 1 . 0 )) Ġ+ Ġbegin ; ĊĠĠĠ Ġreturn Ġchange Ġ/ Ġ 2 . 0 Ġ* Ġ(- pow ( 2 . 0 , Ġ- 1 0 . 0 Ġ* Ġ( time Ġ- Ġ 1 . 0 )) Ġ+ Ġ 2 . 0 ) Ġ+ Ġbegin ; Ċ } Ċ Ċ float ĠSin us oid al _ ease InOut ( in Ġfloat Ġbegin , Ġin Ġfloat Ġchange , Ġin Ġfloat Ġduration , Ġin Ġfloat Ġtime ) Ġ{ ĊĠĠĠ Ġreturn Ġ- change Ġ/ Ġ 2 . 0 Ġ* Ġ( cos ( PI Ġ* Ġtime Ġ/ Ġduration ) Ġ- Ġ 1 . 0 ) Ġ+ Ġbegin ; Ċ } Ċ Ċ float Ġrand Ġ( vec 2 Ġco ) Ġ{ ĊĠ Ġreturn Ġfr act ( sin ( dot ( co . xy Ġ, vec 2 ( 1 2 . 9 8 9 8 , 7 8 . 2 3 3 ))) Ġ* Ġ 4 3 7 5 8 . 5 4 5 3 ); Ċ } Ċ Ċ vec 3 Ġcross Fade ( in Ġvec 2 Ġuv , Ġin Ġfloat Ġdis solve ) Ġ{ ĊĠĠĠ Ġreturn Ġmix ( get From Color ( uv ). rgb , Ġget To Color ( uv ). rgb , Ġdis solve ); Ċ } Ċ Ċ vec 4 Ġtransition ( vec 2 Ġuv ) Ġ{ ĊĠĠĠ Ġvec 2 Ġtex Coord Ġ= Ġuv . xy Ġ/ Ġvec 2 ( 1 . 0 ). xy ; ĊĊĠĠĠ Ġ// ĠLinear Ġinterpolate Ġcenter Ġacross Ġcenter Ġhalf Ġof Ġthe Ġimage ĊĠĠĠ Ġvec 2 Ġcenter Ġ= Ġvec 2 ( Linear _ ease ( 0 . 2 5 , Ġ 0 . 5 , Ġ 1 . 0 , Ġprogress ), Ġ 0 . 5 ); ĊĠĠĠ Ġfloat Ġdis solve Ġ= ĠExp onent ial _ ease InOut ( 0 . 0 , Ġ 1 . 0 , Ġ 1 . 0 , Ġprogress ); ĊĊĠĠĠ Ġ// ĠMir rored Ġsin us oid al Ġloop . Ġ 0 -> strength Ġthen Ġstrength -> 0 ĊĠĠĠ Ġfloat Ġstrength Ġ= ĠSin us oid al _ ease InOut ( 0 . 0 , Ġstrength , Ġ 0 . 5 , Ġprogress ); ĊĊĠĠĠ Ġvec 3 Ġcolor Ġ= Ġvec 3 ( 0 . 0 ); ĊĠĠĠ Ġfloat Ġtotal Ġ= Ġ 0 . 0 ; ĊĠĠĠ Ġvec 2 Ġto Center Ġ= Ġcenter Ġ- Ġtex Coord ; ĊĊĠĠĠ Ġ/* Ġrandomize Ġthe Ġlookup Ġvalues Ġto Ġhide Ġthe Ġfixed Ġnumber Ġof Ġsamples Ġ*/ ĊĠĠĠ Ġfloat Ġoffset Ġ= Ġrand ( uv ); ĊĊĠĠĠ Ġfor Ġ( float Ġt Ġ= Ġ 0 . 0 ; Ġt Ġ<= Ġ 4 0 . 0 ; Ġt ++) Ġ{ ĊĠĠĠĠĠĠĠ Ġfloat Ġpercent Ġ= Ġ( t Ġ+ Ġoffset ) Ġ/ Ġ 4 0 . 0 ; ĊĠĠĠĠĠĠĠ Ġfloat Ġweight Ġ= Ġ 4 . 0 Ġ* Ġ( percent Ġ- Ġpercent Ġ* Ġpercent ); ĊĠĠĠĠĠĠĠ Ġcolor Ġ+= Ġcross Fade ( tex Coord Ġ+ Ġto Center Ġ* Ġpercent Ġ* Ġstrength , Ġdis solve ) Ġ* Ġweight ; ĊĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġweight ; ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġvec 4 ( color Ġ/ Ġtotal , Ġ 1 . 0 ); Ċ } ĊĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ} Ċ } Ċ