/** Ċ Ġ* Ġ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 ĠPer lin Transition Ġ: ĠTransition (" per lin ", ĠSOURCE , Ġ 1 0 0 0 L ) Ġ{ ĊĊĠĠĠ Ġopen Ġvar Ġscale : ĠFloat Ġ= Ġ 4 f ĊĠĠĠ Ġopen Ġvar Ġscale Uniform Ġ= Ġuniform 1 f (" scale "). auto Init () ĊĠĠĠ Ġopen Ġvar Ġsmooth ness : ĠFloat Ġ= Ġ 0 . 0 1 f ĊĠĠĠ Ġopen Ġvar Ġsmooth ness Uniform Ġ= Ġuniform 1 f (" smooth ness "). auto Init () ĊĠĠĠ Ġopen Ġvar Ġseed : ĠFloat Ġ= Ġ 1 2 . 9 8 9 8 f ĊĠĠĠ Ġopen Ġvar Ġseed Uniform Ġ= Ġuniform 1 f (" seed "). auto Init () ĊĊĠĠĠ Ġoverride Ġfun ĠonUpdate Uniform s () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Update Uniform s () ĊĊĠĠĠĠĠĠĠ Ġscale Uniform . setValue ( scale ) ĊĠĠĠĠĠĠĠ Ġsmooth ness Uniform . setValue ( smooth ness ) ĊĠĠĠĠĠĠĠ Ġseed Uniform . setValue ( seed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = glsl ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSOURCE Ġ= Ġ""" Ċ // ĠAuthor : ĠRich ĠH arris Ċ // ĠLicense : ĠMIT Ċ Ċ # ifdef ĠGL _ ES Ċ precision Ġmedi ump Ġfloat ; Ċ # endif Ċ Ċ uniform Ġfloat Ġscale ; Ġ// Ġ= Ġ 4 . 0 Ċ uniform Ġfloat Ġsmooth ness ; Ġ// Ġ= Ġ 0 . 0 1 Ċ Ċ uniform Ġfloat Ġseed ; Ġ// Ġ= Ġ 1 2 . 9 8 9 8 Ċ Ċ // Ġhttp :// byte black smith . com / impro vements - to - the - canonical - one - liner - glsl - rand - for - opengl - es - 2 - 0 / Ċ float Ġrandom ( vec 2 Ġco ) Ċ { ĊĠĠĠ Ġhigh p Ġfloat Ġa Ġ= Ġseed ; ĊĠĠĠ Ġhigh p Ġfloat Ġb Ġ= Ġ 7 8 . 2 3 3 ; ĊĠĠĠ Ġhigh p Ġfloat Ġc Ġ= Ġ 4 3 7 5 8 . 5 4 5 3 ; ĊĠĠĠ Ġhigh p Ġfloat Ġdt = Ġdot ( co . xy Ġ, vec 2 ( a , b )); ĊĠĠĠ Ġhigh p Ġfloat Ġsn = Ġmod ( dt , 3 . 1 4 ); ĊĠĠĠ Ġreturn Ġfr act ( sin ( sn ) Ġ* Ġc ); Ċ } Ċ Ċ // Ġ 2 D ĠNo ise Ġbased Ġon ĠM organ ĠMc Gu ire Ġ@ m organ 3 d Ċ // Ġhttps :// www . shader toy . com / view / 4 d S 3 Wd Ċ float Ġnoise Ġ( in Ġvec 2 Ġst ) Ġ{ ĊĠĠĠ Ġvec 2 Ġi Ġ= Ġfloor ( st ); ĊĠĠĠ Ġvec 2 Ġf Ġ= Ġfr act ( st ); ĊĊĠĠĠ Ġ// ĠFour Ġcorners Ġin Ġ 2 D Ġof Ġa Ġtile ĊĠĠĠ Ġfloat Ġa Ġ= Ġrandom ( i ); ĊĠĠĠ Ġfloat Ġb Ġ= Ġrandom ( i Ġ+ Ġvec 2 ( 1 . 0 , Ġ 0 . 0 )); ĊĠĠĠ Ġfloat Ġc Ġ= Ġrandom ( i Ġ+ Ġvec 2 ( 0 . 0 , Ġ 1 . 0 )); ĊĠĠĠ Ġfloat Ġd Ġ= Ġrandom ( i Ġ+ Ġvec 2 ( 1 . 0 , Ġ 1 . 0 )); ĊĊĠĠĠ Ġ// ĠSm ooth ĠInterpol ation ĊĊĠĠĠ Ġ// ĠC ubic ĠH ermine ĠCurve . Ġ ĠSame Ġas ĠSm ooth Step () ĊĠĠĠ Ġvec 2 Ġu Ġ= Ġf * f *( 3 . 0 - 2 . 0 * f ); ĊĠĠĠ Ġ// Ġu Ġ= Ġsmooth step ( 0 ., 1 ., f ); ĊĊĠĠĠ Ġ// ĠMix Ġ 4 Ġco orners Ġpor cent ages ĊĠĠĠ Ġreturn Ġmix ( a , Ġb , Ġu . x ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( c Ġ- Ġa )* Ġu . y Ġ* Ġ( 1 . 0 Ġ- Ġu . x ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( d Ġ- Ġb ) Ġ* Ġu . x Ġ* Ġu . y ; Ċ } Ċ Ċ vec 4 Ġtransition Ġ( vec 2 Ġuv ) Ġ{ ĊĠ Ġvec 4 Ġfrom Ġ= Ġget From Color ( uv ); ĊĠ Ġvec 4 Ġto Ġ= Ġget To Color ( uv ); ĊĠ Ġfloat Ġn Ġ= Ġnoise ( uv Ġ* Ġscale ); ĊĊĠ Ġfloat Ġp Ġ= Ġmix (- smooth ness , Ġ 1 . 0 Ġ+ Ġsmooth ness , Ġprogress ); ĊĠ Ġfloat Ġlower Ġ= Ġp Ġ- Ġsmooth ness ; ĊĠ Ġfloat Ġhigher Ġ= Ġp Ġ+ Ġsmooth ness ; ĊĊĠ Ġfloat Ġq Ġ= Ġsmooth step ( lower , Ġhigher , Ġn ); ĊĊĠ Ġreturn Ġmix ( ĊĠĠĠ Ġfrom , ĊĠĠĠ Ġto , ĊĠĠĠĠ 1 . 0 Ġ- Ġq ĊĠ Ġ); Ċ } ĊĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ} Ċ } Ċ