/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠA ur ora , ĠK ir ill ĠGro uch nik ov Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . push ing pixels . aur ora . demo . playground Ċ Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . draw Be hind Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . geometry . Size Ċ import Ġandroidx . compose . ui . graphics . Shader Brush Ċ import Ġandroidx . compose . ui . unit . Dp Size Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . window .* Ċ import Ġorg . jetbrains . sk ia . Data Ċ import Ġorg . jetbrains . sk ia . Runtime Effect Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ Ċ fun Ġmain () Ġ= Ġapplication Ġ{ ĊĠĠĠ Ġval Ġstate Ġ= Ġremember Window State ( ĊĠĠĠĠĠĠĠ Ġplacement Ġ= ĠWindow Placement . Floating , ĊĠĠĠĠĠĠĠ Ġposition Ġ= ĠWindow Position . Aligned ( Alignment . Center ), ĊĠĠĠĠĠĠĠ Ġsize Ġ= ĠD p Size ( 3 0 0 . dp , Ġ 3 0 0 . dp ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġsk sl Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuniform Ġfloat Ġtime ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġfloat Ġf ( vec 3 Ġp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . z Ġ-= Ġ 1 0 . Ġ+ Ġtime ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfloat Ġa Ġ= Ġp . z Ġ* Ġ. 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . xy Ġ*= Ġmat 2 ( cos ( a ), Ġsin ( a ), Ġ- sin ( a ), Ġcos ( a )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ. 1 Ġ- Ġlength ( cos ( p . xy ) Ġ+ Ġsin ( p . yz )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġhalf 4 Ġmain ( vec 2 Ġfrag coord ) Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvec 3 Ġd Ġ= Ġ. 5 Ġ- Ġfrag coord . xy 1 Ġ/ Ġ 5 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvec 3 Ġp = vec 3 ( 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< Ġ 3 2 ; Ġi ++) Ġp Ġ+= Ġf ( p ) Ġ* Ġd ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ(( sin ( p ) Ġ+ Ġvec 3 ( 2 , Ġ 5 , Ġ 9 )) Ġ/ Ġlength ( p )). xyz 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠ Ġval Ġruntime Effect Ġ= ĠRuntime Effect . make For Shader ( sk sl ) ĊĠĠĠ Ġval Ġbyte Buffer Ġ= Ġremember Ġ{ ĠByteBuffer . allocate ( 4 ). order ( Byte Order . LIT TLE _ ENDIAN ) Ġ} ĊĠĠĠ Ġvar Ġtime Uniform Ġby Ġremember Ġ{ Ġmutable State Of ( 0 . 0 f ) Ġ} ĊĠĠĠ Ġvar Ġprevious Nan os Ġby Ġremember Ġ{ Ġmutable State Of ( 0 L ) Ġ} ĊĊĠĠĠ ĠWindow ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Compose Ġ/ ĠSk ia Ġshader Ġdemo ", ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠ ĠonClose Request Ġ= Ġ:: exit Application , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Bits Ġ= Ġbyte Buffer . clear (). put Float ( time Uniform ). array () ĊĠĠĠĠĠĠĠ Ġval Ġshader Ġ= Ġruntime Effect . make Shader ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuniform s Ġ= ĠData . make From Bytes ( time Bits ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Matrix Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbrush Ġ= ĠShader Brush ( shader ) ĊĊĠĠĠĠĠĠĠ ĠBox ( modifier Ġ= ĠModifier . fill MaxSize (). draw Be hind Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrush Ġ= Ġbrush , Ġtop Left Ġ= ĠOffset ( 1 0 0 f , Ġ 6 5 f ), Ġsize Ġ= ĠSize ( 4 0 0 f , Ġ 4 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠLa unched Effect ( null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Frame Nan os Ġ{ Ġframe Time Nan os Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnan os Passed Ġ= Ġframe Time Nan os Ġ- Ġprevious Nan os ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ġ= Ġnan os Passed Ġ/ Ġ 1 0 0 0 0 0 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Nan os Ġ> Ġ 0 . 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Uniform Ġ-= Ġdelta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Nan os Ġ= Ġframe Time Nan os ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ