RIVEÄÅÆËÔì¨øîš­¶ÇßàåæçèéêëìñòøŠŒ��¥Ð�’þ@€‚jÔ‘’ËweedsjÔÐ%4mathfloorfractclamp smoothstepsinhashminsqrtdepthAtceilanglenphasetableinsertxybladesplacepathspaintPaintnewColorrgbVectorxypointPathresetcosmoveTolineToclosefillstylefeathersrcOver blendModeGradientlinearpositioncolorgradientdrawPathstroke thicknessroundjoincapdraw I  €"€  ""$D. €#)G#€@@ )) ! )!I @€)I  @€" PüsÑ]å@fffffÆ_@33333{s@ÍÌÌÌ̬R@@€@€ ÷  &J €) " $() " $') , # ! I  €( *   D. ,€ # ) G # ) '  €{®Gáz´?à?{®Gáz¤?@š™™™™™é?  €®Gáz®ç?,€@n@@hÀ  ô é5*I €8Ý* I  €  8Ó))! ' I  € ) I  (€ "  Á '  ))!'I  €)I   (€" ) ! ) '  ))!'I  €)I   (€") ! ) '  ˜ '  • J  H€ ) " $ ( ) " $ ') ,#!I `€(*D. l€#)G#)'  Œ m ))!'!I  €)I   (€" ) ) 5  8 H6%'())!)!I  €)I   (€")(')&! ì"'*))!)!I  €)I   (€"))')<#)+))!'-I  €)I   (€"),!´$J4  0¼à‚9 ¸ÿ64 ™1 ˜2 ’3J4 0¼à‚ 9-ÿ9#ÿ5@e@ €PüsÑ]å@ÍÌÌÌ̬R@fffffÆ_@33333{s@ €(€à?š™™™™™É?333333ã?ÍÌÌÌ̬b@43333l@D@H€{®Gáz´?{®Gáz¤?@š™™™™™é? `€®Gáz®ç?l€@n@@hÀ-DTû! @ÍÌÌÌ̬r@  "#$ÍÌÌÌÌÌì?ð?$@H@4@ÍÌÌÌÌÌô?@Xw@¼à‚123"ï÷í÷ì÷ðô ë÷ æ÷#å÷$ä÷%ýÿòÿ  65ð 0€10€>?  €)'I  P€)'I  P€)'I  P€€à?ào@P€DEG ) ´!)"I @€) ###) ! I @€)!) G ) ' ( *   D. <@€# ) G  # # ##!  ™ #  ! #  "  ˜ #  ! #  ! J6 P0�)\�Âõ(Ì?ÍÌÌÌÌÌì?@@€@@ÍÌÌÌÌÌ@ð?š™™™™™é?{®Gáz”?{®Gáz´?<@€P0�]N°P$ Î1LÄ ’  L ½'ð M € @€ðŸìI   (�€ìI  0�€<FFFFF FF5 8 *ÿÿJ4 D�9õÿ ÿÿ8 *J4 D�9õÿ48 4%' ™˜#™ ˜# "!9îÿ4 4ÿÿ !8 Y9ûÿƒšª xÐ�56 # !! D"6!% ""!D"6"& ##"D"7 'Ç(')š D"*8+,»-,Š.Ç(: Bÿ:;ÿ/ð?@€  (�€0�€ $@D�!"#$%&'()*xÐ�+, !"ÿÿÿÿš™™™™™á? $"ÿÿÿÿ "ÿÿÿÿ-./š™™™™™é?0123M4ÿÿþÿýÆÿ>N .A5@@@@@@ï@  (�€3€ B  (�€\ ­ M  (�€ … Ñ W (�€  M ) @ FFFF  ´ (�€4 C ‘’ËlifejÔ­�}mathrandomrandColorrgbaclampfloorrgbVectorxymoveTocubicTocloseellipsebodyeyesstripeslineTowinghindWingcossinatan2abspetalcirclebuildDragonflysqrtxyzvxvytwrnewMotemindffallsfallTbubblesbubbleTmotestimeviewpainthtxtytzmodeawaytperchpxpydippedflyingshowPaintnewPathtableinsertrescaleunitw offscreen somewheredartdartTopadslanddipleavenextMovehoverdropupdateDragonflymaxstartlepadMovedgustrotvrtumblesizesinkwindXwindYremovedelayz0wobexpupdatesquashasnapshotfillstylegradientcolorfeathersrcOver blendModedrawPathstroke thicknessroundjoincapsaveMat2DwithTranslation withScale transformrestore drawUnder withRotation drawWingsGradientlinearposition drawAbove" €#!€TU ‚; €  <.  P€)'I   P€  <.   P€ ) 'I   P€  <.   P€ ) ' I   P€0   D. P€ ) ' I   P€ €à?ào@P€ P€ð?XüY  v!J6  €!) !  J6 €) !  ! J6  €! J6   € i) " ! J6 €" ) !  J6  €" J6   € i") "  J6 €) "  " J6  €" J6   € i) ! " J6 €! ) "  J6  €! J6   € iƒ  € ꕲ q¬á?  efz† „ ‘—¼Gi i   i iiƒxiiiiƒx !"#i$%&i'()i*+ iƒ8)-G,)/G.£03 J6   3ȃ £0J6   3ȃ Y49ãÿ‰56789i:;<i=>?i@A6iƒŠBCDEFiGHIiJK?iLMCiƒ8E*P)O)NI   SH…I  VT…)TI  VT… I   SH… J  X\… I  Zd… [  * [G ] ) \" O^€ _J6   3ȃ     _J6   3ȃ  Y4 9»ÿ_ƒ`abcdiefgihijiklaiƒm®Ga>®Ga= ÍÌÌ=ÍÌL=ÍÌ̽�Âõ<®¿X9´< …ë¿ ×£<…ë¿ ×£¼®¿X9´¼ÍÌ̽�Âõ¼ÍÌÌ=ÍÌL½®Ga>®Ga½š™™>š™™½\�Â>�Âu½\�Â>\�Â>�Âu=š™™>š™™= 33ó>ìQ8½33ó>ýj޼À—æ> ×£;= ×> ×£;»|Ç> ×£;Háº>ýj޼Háº>ìQ8½Háº>,·”½»|Ç>\�½= ×>\�½À—æ>\�½33ó>,·”½33ó>ìQ8=33ó>,·”=À—æ>\�Â== ×>\�Â=»|Ç>\�Â=Háº>,·”=Háº>ìQ8=Háº>ýjŽ<»|Ç> ×£»= ×> ×£»À—æ> ×£»33ó>ýjŽ<ìQ¸…ëÁ?Ãõ(\�µ? ×£p= §?ú~j¼t“h?  ȃ®Ga=€>®Ga=ıÆ>#Øø<??#Øø¼?®Ga½Ä±Æ>®Ga½€>®Ga½ï8å=#Øø¼#Øø<®Ga=ï8å=)\�=�Âu>)\�=#¿¾>ÿZ=�Âõ>�Âõ>ÿZ½�Âõ>)\�½#¿¾>)\�½�Âu>)\�½² Ü=ÿZ½ÿZ=)\�=² Ü=-DTû! @@8@H……ëQ¸å?T…\…d…š™™™™™Ù?{®GázÔ?ð?€?€?ˆc ?ˆc ?€?€?ˆc ¿€?€¿ˆc ?€¿€¿ˆc ¿ˆc ¿€¿€¿ˆc ?€¿€?ˆc ¿o ìëüãâö Ñ+f T €#!) €I €#6)"I   @€ # !™)I  L€ # !˜ s € # !› üÿ  € # !^ üÿ  € # !¿  € # !ô   € # !“ -DTû!@€š™™™™™Ù?€ !"# ¸…ëQ¸¾?@€š™™™™™¹?L€š™™™™™é?™™™™™™ñ?š$HµL´M³N²O±PU „J €66())˜ +¨€ # !•"©5„,- +¨€#!\5Ä +¨€#!Ÿ5~6.62©5„5Ä5~` 5Ð0ƒ1 7Ð`ƒ 7Ð`ƒ 7Ð`ƒG 7Ð`ƒx 7Ð`ƒ‰ 7Ð`ƒŠ 7Ð`ƒ£8 ~     J4 :䀃9óÿ ;%€&'()*+,-.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYÀN@/ !0123456789ÿÿÿÿ      !"ÿÿÿÿ# $ %  &'333333Ó?¨€à?ø?:;     /01'<=Ð0ƒ>Ð`ƒ?@䀃©=U§bõ—j•lüÿU P©™#™©˜#˜©X#X©¹#¹„L ™#™˜#˜:õÿÄL ™#™˜#˜:õÿ~L ™#™˜#˜:õÿ&01')+ÛAþþþÜ > €')O €3‰( € # !O€– !‰( € # !O €– ( €#!3– ( €#!‰! €T@Bð?/@C@ðDœa _¢]£[¥U')–"" 0€#!‰"" 0€#!€V@BC0€/ýE©VªVU  X¹-012F3‚G ° € '')–"" € # !‰"" € # !- € # !X¹   -  H\4 B €\4\  € # !—I   H€ “# )I  T€  “# )dE™d!˜ E! X¹   - -  '')–"" € # !‰"" € # !(X¹   - - c PX¹   - -  €áz®GáÚ?€V@BC/012F3ffffffæ?H-DTû!@6ÍÌÌÌÌÌÜ?H€#T€78I)\�Âõ(ì?J9KˆL´ôVªV® F¼ðéVªV®èU Å'•"•-P0€•* ™˜P›') –" "  (�€ # !  ‰ " "  (�€ # ! <X ¹--P>€\— M€-•™d!˜ E! ™˜›^¿•›<-  (�€ # !•-P€\— M™d!˜ E! X ¹X ¹-P€) I  t�€ ) #!)  I  "„�€ ) #!# -P €  ^™" # ^# " # !  ^ ¿˜" # ¿# " # !  ¿ ^ ^#  ¿¿# ! I  %��€ ) &  ^$ # ¿$  #  ^ ¿ ™ ^# !  ™ ˜ ¿# !  ˜ ››" )'J ) �€# !  ›) *   ¿ ^J  ,¬�€ ‰ " '-+ .( - ‰ )/J ) �€# !  ‰  X ™"  ¹˜" # # !)',0  -P€ -12  (�€#!•-P €• -P€ -  (�€#!•-P<3€ :› Dc4@c4‰ I  "„�€‰ I t�€«5™)6#"˜)6#")7ÿÿ7-89  (�€#!•-P:€ -  (�€#!•;B534€V@C(�€/012F6HMà?78 !333333Ó?I@ffffff@t�€@ffffffþ?„�€#@��€@€@@% �€9@¬�€-DTû! @-DTû!@(@@333333ã?ÌÌÌÌÌÌü?J9N2@ @š™™™™™Ù?™™™™™™é?K¡O"×ÿÿÿVÿÿÿªVÿÿÿ®'ÿÿÿèîþÿÿéþÿÿßþÿÿ"Ûþÿÿ& E©-P-P€™"˜"## !  ') ,  +# # ! I   (�€K  4�€ – ‰J  4�€ ™$ # !  ˜$ # !  Z X ¹   -&34K@€[@B(�€ð?P4�€C/012€Q�©-P€—-›<  p€#!•  &36M2333333Ó? p€5�R�Áþÿÿ@šj!j'–‰J @€ © j©‰ © - P  €&#!‰\  ß) ' #"\ \ j D@€ # !\  D@€ # !„6  D@€# ! # ) ' #  ™  D@€# ! # ) G ! #  ˜ ª Z D@€ # !  ›  " D@€ # !  õ þÿ  D@€ # !    D@€ # !  ­  # D@€# ! #    D@€ # !  ¨J4 &”@‚„4q„  ­) (I  *¤@€)'™ µ+ß)-',# õI  /¸@€# ! # # ! ™˜ø1ß)-',# õI *¤@€#! ' 0# # ! ˜› ¨# " ›õ # ! õ­) 2! ­›  J3 ™ ˜  õ«4 ™ ˜) 0 5 7Ø@‚ „ ' ‹ÿŸ8"Ÿ8Ÿ8/  D@€ # !Ÿ8 Ä9 : ; D@€ # !  –#  : ; D@€# !  ‰# D@€    Z< D@€# ! Ä94KÄ9 ¾< ¾<"¾<' :› ¤? ›" ) >' =# "›(@)A!(@™ (@I  *¤@€ ) B# # !™›«4™ ˜ “D' C#  E 7Ø@‚Ä9 ' ±ÿ~FLs ^Gÿÿ D@€#!)Hµ+ß#)I! # !  ^G ¿Jÿÿ D@€#!)Hø1ß#)I! # !  ¿J ^G3) KI  M0A€ #  ^G ¿J3) KI  M0A€ #  ¿J ™ ^G# # !  ™ ˜ ¿J# # !  ˜ ôN!  ôN ™–)O""  ˜)P" # # ! )R,Q   ~F –‰ :ŒÿS,BC/%@€&36(ð?@Sffffffö?š™™™™™@D@€'TUVWXš™™™™™©¿š™™™™™á?333333ã?à?333333ó?-DTû!@@?@”@‚,@ffffffæ?¤@€Y@€Q@¸@€@Zš™™™™™ @INп[Ø@‚*)š™™™™™É?433333ã?\€K@ffffffÖ?]^@"@ø?#ffffffÖ¿+ 2@N@!š™™™™™é?_0A€"¸…ëQ¸¾?š™™™™™¹?@¸…ëQ¸Þ?›`œ±þÿÿP°þÿÿR®þÿÿS­þÿÿT¬þÿÿU«þÿÿVªþÿÿW©þÿÿX¨þÿÿY§þÿÿZøÿÿÿ òÿÿÿŽþÿÿsŒþÿÿtŒþÿÿtŒþÿÿtòÿÿÿuþÿÿ‹tþÿÿŒöÿÿÿ  C8> Ä6  ýÿ  (�€#! !   ™ ýÿ  (�€#! !   ˜ › ¤   (�€# !  “   (�€# !  ((   (�€#! #  ¾J4  H�9Âÿ)]#^\(�€ffffffö?433333ó?ð?¸…ëQ¸¾?š™™™™™¹??@H�ï)ðdþÿÿ�cþÿÿž`þÿÿ¡_þÿÿ¢]þÿÿ£ùÿÿÿÿÿÿÿ Æ©`©©©©©™ ˜ › ‰ ‰™ ˜ › ‰ ‰©-P€© ©-P €¸ 5„ L#6  ™ ™ ˜ ˜ › › õ  õ  ­I  L �  ‹  J4   XP� :Üÿ„ 5ÄL% ¾  ! 6  ™ ™ ˜ ˜ › › “ › ¤$G)'#  “J4   XP� :ÚÿÄ5~L&6 ! ™ ™ ˜ ˜ › › “ “ ô%)$ “)&!I (œ �)#'" € J4   XP� :Ùÿ~)&-/36:4;'TaW VL �?@XP�)\#ð?ffffffæ?]+b š™™™™™á?ÍÌÌÌÌÌÜ?ÍÌÌÌÌÌ@""@œ �þcÿþÿÿ  ‚‡1šD00ª  Ç  .defghijk™d  1šD8»Š  ª  Ç  .lefgmnophijk£l$›`ÄL‘E 0€ ™ ˜  0€ “  “  # Á  8Ѐ Û ÷ÿM     1  š   D0  0  ª  Ç  8Ѐ ÿ ÿ ÿ Ù “ H   1  š   D 8  »  Š    ª   Ç  0€  !  0€ " " # Á  8Ѐ ÿ ÿÿò     1  š   D0  0  ª  Ç Ž#:nÿ$-)qrs0€t 0€#u8Ѐ.defghijkffffffæ?lmnop?ÆÜµÔ?%ušο{®GázÔ?v±w2$þÿÿüÿÿÿÁ#þÿÿüÿÿÿÝîÿÿÿ !þÿÿüÿÿÿÁùÿÿÿ  ñ) €  . @0D.  p€) ' I  (p€ ) €æ ÷ ÿ0D.  p€) ' I  (p€ ) € 3 R z0D.  p€)' I  (p€ ) € . 3 M0D.  p€)'I  (p€    ÿÿ 8–   8 ‘O €O €) !I Xp€)E! h��)  t��  G#Á O €‰!Š"1#$š%&D'()ª*Ç+I1#,š%&D'-8./»0/Š1()ª*Ç+E h��2 4Ì��56#Á 71#$š%&D'()ª*Ç+Ž8Ž89 oÿ9jÿ9{®GázÄ?€à?ào@ð? p€(p€š™™™™™á?333333ë?š™™™™™é?333333Ó?)\�Âõ(Ì?¸…ëQ¸¾¿ ×£p= Ç?ìQ¸…ëÑ?333333û?Xp€qrsh��¸…ëQ¸ž?xt��-DTû! @u.defghijklú~j¼t“ˆ?mnop…ëQ¸…Û?tÌ��{®Gáz”?ìQ¸…ë¡?v½y>þÿÿüÿÿÿåþÿÿüÿÿÿæþÿÿüÿÿÿçþÿÿüÿÿÿéÿÿÿÿÌÿÿÿ0Ôÿÿÿ%Æÿÿÿ5ìÿÿÿÿÿÿÿ §1`„L ›* '  #   ™ ˜  E    , € ™ ›)) " ˜ ›)) " @ € õ# L €   ‹I \`�K h`�## Á   ›*G)# "„‚ 3M0D. &”`�)$'#I  (œ`� ›**')1+š,-D.0/01ª2 Ç3 Ž4  E    , € ™ ˜ @ € õ# L €  ‹I \`�K55 h`�# # Á  + š,  0 1 ª2 ‹   8Ü`ƒ9:56<  "„‚òŒ­ÿ "„‚ÿž¿ÿD.6>  "„‚ú½Ñÿ "„‚ÿÖãÿD.6? "„‚ÿíòÿD.7-Ç3- "„‚Ûf�ÿH@ 1Aš,-D.8BC»DCŠE01ª2Ç3Ž4:åþ`©F¸GØ)H ›* I' # @ € ‰J L €   #  ™ ˜ E   , €™›)) " ˜›)) " #  Á  GK 5#  "„‚ .@0 D. &”`�)$'#I  (œ`�   ›* M' L 1 + š,  - D.0 / 0 1 ª2   Ç3     ‰N©O P   Ž4  E   , € ™˜ #  Á  ©O     ‰N Q     ‰N' R Q        + š,  0 1 ª2 8Ü`ƒ S T5 6 < "„‚Œžÿ D.6V "„‚)¸ÛÿD.6? "„‚M³ÿD.7   - GK  Ç3   - £W "„‚   MÌ  1 A š,  - D. X 8B C »D C ŠE  0 1 ª2   Ç3  xY "„‚.žkÿ     1+ š, - D.0 / 00 1 ª2  Ç3 GK "„‚   @ÿ  1 A š,  - D. Z 8B C »D C ŠE  0 1 ª2   Ç3  xY "„‚   @ÿ  1 A š,  - D. [ 8B C »D C ŠE  0 1 ª2   Ç3  E   , € \]  L €^^ #  Á  _ "„‚ÿÿÿæ     1+ š, - D.0 / 00 1 ª2  Ç3 Ž4  E   , € \`  L €^^ #  Á  _ "„‚ÿÿÿæ     1+ š, - D.0 / 00 1 ª2  Ç3 Ž4  Ž4 `~aL™  ™ ˜  b ‘  E    , € ™ ˜ L € “d)c “d)c# Á  _ €f)e# "„‚ÿò¿0D. &”`�)$'#I  (œ`� 1+š,- D.g01ª2 Ç3 Ž4  E    , € ™ ˜ L € “d “d# Á  _ €f)h# "„‚ÿúÛ0D. &”`�)$'#I  (œ`� 1+š,- D.U01ª2 Ç3 Ž4 :fÿi.-'ð?@z@Wqrs, €ÍÌÌÌÌÌì?ÙÎ÷Sãé?7‰A`åÐâ¿x@ €TtL €a\`�Ð?Ph`�u{®GázÄ?t@„‚à?ào@”`�œ`�š™™™™™Ù?i@defghijkv)\�Âõ(Ì?z{Ü`ƒ€¿€?|;/.ÿÿÿÿš™™™™™á?;=.ÿÿÿÿ;.ÿÿÿÿè?lmnop&;O@@@/{®Gáz”?ˆ£@:ffffffæ?333333ã?š™™™™™ù?33³>ÍÌ ¿333333Ó?;U.ÿÿÿÿú~j¼t“ˆ?;ßO�—n’?¸…ëQ¸Ž?…ëQ¸…Û?)\�Âõ(¬¿ü©ñÒMb�?ìQ¸…ë¡?+š™™™™™É?@#¸…ëQ¸¾?bš™™™™™é?333333ë?Þ}_ýÿÿÿîýÿÿüÿÿÿ¯ÿÿÿLýÿÿÿàýÿÿüÿÿÿüÿÿÿ ßýÿÿüÿÿÿüÿÿÿ!Þýÿÿüÿÿÿ"ýÿÿÿÚýÿÿüÿÿÿ&¥ÿÿÿSàÿÿÿ#Îýÿÿüÿÿÿ2�ÿÿÿl½ýÿÿüÿÿÿC¼ýÿÿüÿÿÿD»ýÿÿüÿÿÿEýÿÿÿ·ýÿÿüÿÿÿËv¶ýÿÿüÿÿÿÁ„µýÿÿüÿÿÿËx´ýÿÿüÿÿÿËz°ýÿÿüÿÿÿÁЬýÿÿüÿÿÿÁŽ ýÿÿüÿÿÿÁšœýÿÿüÿÿÿÁžöÿÿÿ 5A5@@@@@@FFï@‡@ @ @ @ F@ FF @  F@  .@ F FF Æ@  Ä@  @ @ @  =@ @F •=A    Q R`)cw}  H +2& _ UT  ^eï«Ã‘’ËkoijÔâ¶ZColorrgbamathclampfloorrgbfract smoothstepc3sinstreamsnrsrnseedtableinsertblobskindcolPathnewbasefinCollinepatchespathsmakeLook halfWidthampphasebendspineLxfxsxyfysyVectorxyatmoveTocubicToclose smoothClosedlineTopolyline buildBodyabs buildTailcosbuildFin buildBloblookspaintcirclePaintfillstylegradientcolorfeathersrcOver blendModedrawPathstroke thicknessroundjoincaphturnframeOfdepth shadowGapresetfinPhaseupdatesaveMat2DwithTranslation transformrestore drawShadowclipPath withScaledrawFish ‚; €  <.  P€)'I   P€  <.   P€ ) 'I   P€  <.   P€ ) ' I   P€0   D. P€ ) ' I   P€ €à?ào@P€ P€ð?2ü3I  €"€;<""$D. €#)G#€@@?@‚ K L ' ) )!I @€)I  @€" ð?PüsÑ]å@_)ËÇú)@ôýÔxéŽS@ @€@€Rè<FF P Q 258+6 "# !   ’( )  � #! #     #!  ±  )  »J4   8Ѐ 9Õÿ  ÍÌÌÌÌÌô?à?333333ã?š™™™™™é?š™™™™™Ù?š™™™™™á?$@8ЀZûÿ [Ý»)]!FF ]'I  @€ 5O^€    6  ( )  �  )  »J4 XP�6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û©J4 XP�¯OŒ!€6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û    " # $©J4 XP�6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û    % & '©J4 XP�"O�(€ 6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û    )  "©J4 XP�6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û    * + ,©J4 XP�”O-€ �O.€ ŒOE/€6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û56 37 ©J4 XP�F 6     p°�<.   |@€)'I  @€<.   |@€)'I  @€<.   |@€)'I  @€ÿ  Û    4 & ©J4 XP�5  8 7ØPƒ  9ûÿ6=    p°�<.   |@€)'I  @€ <.   |@€)'I  @€<.   |@€)'I  @€ÿ  N8 ) '  ) ' > ) ' ? p°�<.  |@€)' I  @€ <.   |@€)'I  @€ <.   |@€)'I  @€¸  ð9 ) *'  ) *' $ ) *'  p°�<.  |@€)' I  @€ <.   |@€)'I  @€ <.   |@€)'I  @€ÿ  É:j;ð<@= ×£p=@à?@€ ×£p= Ç?è? ×£p= ·?ffffffæ? š™™™™™¹? {®Gáz´? ÿÿÿÿ ÿÿÿÿš™™™™™Ù?$@XP�p°�ào@|@€ð?¸…ëQ¸¾? ×£p= ç?)\�Âõ(¼?Ð?š™™™™™é?ìQ¸…ë¡?@š™™™™™©?š™™™™™É?333333ë?¸…ëQ¸®?@@@¤p= ×£À?¤p= ×£°?×£p= ×ã? 012333333Ã?ØPƒ89:;<\�Âõ(\ß?®GázÞ?h6èÚçü?ØçüA×çüBÔçüEÓçüFÍçüLÊçüOÿÃçüV©üW¨üX3 *D. €,)G,#ÍÌÌÌÌÌì?€Ð?áz®GáÚ?è?ð?“” 2)#'G#)´"I P€#õ( #( #G) )   ´" ( I  P€#( *   D. ?@ABCDµ=6  1šD8»Š  ª  Ç  :E>?@FGHIABCD¿E@7‰I  €‰I €6™™˜˜nO 3[ º m m ´ ´ GGg)D. T€õJ6€ €$'%(&)# !  {®GázÄ?K333333Ó¿333333Ó?T€ÌLMG)'>@€V@ð?MÝN^$°Ô M€ ÔðL Ÿ :üÿ          ÏI P€ ) G )´ G I P€#õ ) ! ÿÿ8 )' #   )) 9éÿ[)º)! ÿÿ3)3) 5 8=) *'*!D. #ˆP€,%)$G&,##G'm(# !m(#™)!n*# !!  [# ! ˜+"O,#!"! !!º# !! J6 /¸Ð‚J4 2ă9Ãÿ ÿÿ8=) *'*!D. #ˆP€,%)$G&,##G'm(# !m(#™)!n*# !!  [# ! ˜+"O,#!"! !!º# !! J6 /¸Ð‚J4 2ă9Ãÿ 348  Y49ûÿ ƒ55 8>)8*7'6*! D. #ˆP€,%)$G &, ##)%G'm(#  !m(# ™)"n*#!"! !![# !! !˜+#O,#"#! !""º#!"! !J6 /¸Ð‚J4 2ă9Âÿ 348  Y49ûÿ580)'*:'9G'm(#  ';m(# ™)"n*#!"! !![# !! !˜+#O,#"#! !""º#!"! !J6 /¸Ð‚J4 2ă9Ðÿ 348  Y49ûÿj<L ©=L !"# :úÿ'&:ñÿ>9O)\�Âõ(Ì?P P€¸…ëQ¸¾?²�ï§ÆK÷? ¸…ëQ¸Ž?!…ëQ¸Õ?…ëQ¸Å?š™™™™™¹?š™™™™™©?è?ìQ¸…ëá?Ãõ(\�µ?)\�Âõ(¬?ÙÎ÷S㥛?333333ã?ÙÎ÷Sãé?&7‰A`åÐâ¿)ìQ¸…ëÑ?ÍÌÌÌÌÌô?{®Gáz”?(@…ëQ¸…ë?ÍÌÌÌÌÌì?ˆP€Ð?áz®GáÚ?ð?š™™™™™Ù?#$%'(*+¸Ð‚ă-1/333333Ã?$@�Âõ(\�â?{®GázÔ? @âQÐÿþÐþÔþDÿÀÜþ<ÿÈâáÿ6ÿÎÿû”¨Ô M£G)'* D.  $€€GE  4À€) ) Á)'ð T@�   0D.  $€€)' I  d€€  1  š   D0   ! " ª#   Ç$ ð) % T@�   0 D.  $€€)'I  d€€   1  š   D0   ! " ª#   Ç$ ð) % T@�   0 D.  $€€)'I  d€€   1  š   D0   ! " ª#   Ç$ Ž&'9>@€V@ð?Mš™™™™™á?@@š™™™™™É?$€€RST4À€ªñÒMbØ¿ð§ÆK7‰Ñ?UìQ¸…ë¡?T@�à?ào@d€€:=>?@ABCDš™™™™™Ù?V¤W¥¸ÿÿÿJ‡þÿÿüÿÿÿq†þÿÿüÿÿÿr…þÿÿüÿÿÿs¶Ô M1ð Eð1  š  D     ª    Ç  ð1  š  D     ª    Ç   8Ѐÿ ÿ ÿ Y1  š  D  8  »  Š     ª    Ç   8ЀM 8 M s1  š  D  8  »  Š     ª    Ç   8ЀM 8 M s1  š  D  8  »  Š     ª    Ç  N1  š  D     ª    Ç  EÆjL'    Û 1 š  D    ª   Ç :æÿ 8Ѐ ) . kB     1  š   D0   0  ª    Ç   8Ѐ   $ m)  1  š   D 8  »  Š     ª    Ç  1š 8Ѐÿ ÿ õ ³Dm)8Š»m)   ª   Ç Ž!É" 1  š   D # 8  »  Š     ª    Ç   ÿÿ8«) $ m) %G')&´)G(I ,¬ ‚#õ.)-)-G')/´)G0(I ,¬ ‚##!!! m# ™1n2# ![3# !˜4O5# !º6# !J6 9àpƒ  m) : E  =ð°ƒ ™1 ˜4 ?ø°ƒ  # Á@  A 8Ѐ$ÿ 1š D0 0 ª  Ç  =ð°ƒBC ?ø°ƒDD# Á@  A 8Ѐÿÿÿÿ 1š D0 0 ª  Ç  Ž! 9UÿŽ!E9R:=>?@ABCD8ЀEš™™™™™é?FGHIÍÌÌÌÌÌì?X@¸…ëQ¸ž?#ü©ñÒMb ?{®Gáz„?VÍÌÌÌÌÌô?V-²­?)\�Âõ(Ô?‰B˺,À?X9´ÈvÞ?  ¬ ‚áz®GáÒ¿!ffffffæ?gfffffä?$%&'()*+àpƒÛù~j¼t“?STð°ƒYø°ƒU;�1w-!Ò?€&†§WÊ¿R¸…ëQØ?´Zµwÿÿÿ„vÿÿÿ…rþÿÿüÿÿÿ yqþÿÿüÿÿÿ zpþÿÿüÿÿÿ }pÿÿÿ‹lÿÿÿ�gþÿÿüÿÿÿ‘fþÿÿüÿÿÿšsÿÿÿ…cþÿÿüÿÿÿžgÿÿÿ“Óþÿÿøÿÿÿ—ÿÿÿj,Rþÿÿüÿÿÿ¦Pþÿÿüÿÿÿ¨øÿÿÿ "®A5@@@57575 75  75   7 5    7 @ F@ @ @ FF FFFFF @@@F@@@FF5 575757575 !75"75 #75$75%75 &75 !'7 7 @(FFF@)FF@*FF@+ï,@-@.@/@0@1F FFFFFFÆ2@3d4@5F67\�Âõ(\ï?®Gázî?¸…ëQ¸î?ìQ¸…ëÑ?ìQ¸…ëÁ?�Âõ(\�â?¸…ëQ¸¾? ×£p= Ç?= ×£p=ê?333333Ó?ÍÌÌÌÌÌì?Ãõ(\�Âí?     š™™™™™é?{®Gáz”¿Ãõ(\�µ¿…ëQ¸ñ?Ãõ(\�ÂÅ¿\�Âõ(\ó?ö(\�ÂõÈ¿®Gázò?š™™™™™¹¿¤p= ×£ð?š™™™™™¹?ö(\�ÂõÈ?Ãõ(\�ÂÅ?Ãõ(\�µ?{®Gáz”?QWZ  %  +   B6ê‘’ËfloatersjÔ�µiColorrgbamathclampfloorrgbfracthash12vnoisefbm3 smoothstepminsqrtsincoscanopyVectorxymoveTocubicToclose addCirclelineToaddPolarseedr rockRadiuslumpyoutlinemidlightmossDarkmoss mossLightcracksspeckslapPathnewxy buildRock padRadiusattan petalRingnotchquadTotableinsertveinsbeadsflower flowerHalf flowerKindflowerRbuildPadatan2absrockspadspetalcirclepaintPaintfillstylegradientcolorfeathersrcOver blendModedrawPathstroke thicknessroundjoincapresetsaveclipPathrestore drawRockssunTone shadeTint clearTintMat2DwithTranslation withRotationrot withScalesize transformGradientlinearposition drawPetalradial drawFlowerrimdrawPadage drawPelletz drawDroplet" ‚; € #   D. P€)'I   P€ #    D. P€ ) 'I   P€ #    D. P€ ) ' I   P€0   D. P€ ) ' I   P€ €à?ào@P€ P€ð?GüHI  €"€ST ))I  €")I  €")I  €"'#' # !'#!!!!!#I   €"¢´7øÂdº?€ ×£p=ª@@WüüüùT/I  €I  €""#) G  # #) G  #    '     '   ' '  " # !  " #! " #! €@@ð?^ _ 8   #!) ) " ') ) ! ')9ïÿ*à?ÍÌÌÌÌL1@š™™™™™ù?333333ó?ì?k ýl""$D. €#)G#€@@u v VJ €$$) ' ' ## ! I  € ( * D. ,€ # ) G # G  I <€ ) )I  H€ )  )) !)) !  )) !) !)) !) !) ( )!()!(*D.  ,€#)G #)G €š™™™™™©?è?{®Gáz´?ð? €™™™™™™é?333333Ã?,€@@<€ffffffæ?H€ú~j¼t“x?¸…ëQ¸ž?Ð?ffffffò?333333ã?à?š™™™™™á?š™™™™™é?À…ëQ¸®?®GázÞ?|ö òv  o)!J6  €!! J6 €! ! J6  €! J6   € i"! J6 €" ! J6  €" J6   € i"" J6 €" " J6  €" J6   € i!" J6 €! " J6  €! J6   € iƒꕲ q¬á?€Š‹ -(8%$ ) )    I  0€ # !  I 0€#  !  J6  $€€ O €      Y  9Ûÿƒð?-DTû! @@0€0€$€€•ù – )») ! I 0€)) ) ! I  0€)!)  )  ! I 0€) !) ) ! I 0€) !“'#š™™™™™¹?@0€ìQ¸…ë±?@ffffff@ìQ¸…ë¡?@ffffff@¸…ëQ¸Ž?*@333333û?ð?¤¥  ¸¹   ) ) !I @€)'#…ëQ¸…ë?š™™™™™©?@ÍÌÌÌÌÌ@@€¼½  ) ) ! I @€)') ! I @€)!# à?{®Gáz´?@333333@@€š™™™™™©?@ÀÁ  ) ! I 0€)') ) ! I 0€)!# ð?{®GázÄ?@0€ìQ¸…ë±?@ÍÌÌÌÌÌ@ÌÍ  )  ! I @€)')  ) ! I @€)!#) š™™™™™á?ð?{®GázÄ?@@€ìQ¸…ë±?@ÍÌÌÌÌÌ@ÑÍ ú¨í6  , €@  , €Á  , €ï  , €ù  , €B  , €°  , €[  , €-  , €“» “ @™˜` FF Á™) ) !˜) ) ! H FFF ï™) ) !˜) ) ! < FF)I   `p� " )I  `p�'8Y) ) ! I  `p� " ) ) ! I  `p� " ) ) ! I  `p� " ) !) ) #' "#  ™I  %�p�# ! ˜I  '˜p�# !) )'(#)*!FF ù( +(,( B ( °))-! ))-! FF9§ÿ8\) .) /! I  `p� " ) !)  ™I  %�p�# ) "!  ˜I '˜p�# ) "! ' 0 [J6    3ȃ 4   8 +)7)8!)9!I  `p�"(6)5! I  %�p�#):! I  '˜p�#):! [J6    3ȃY;9 Õÿ9¤ÿ8;) <) ! I  `p� " ) !) ) =)>)?! I  `p�" I  Aq� #  - ™I  %�p�# ! ˜I '˜p�# ! )C!I  `p�")B'= 9ÅÿD !"#$% &', €()¸…ëQ¸¾?ÙÎ÷Sãé?7‰A`åÐâ¿ ×£p= ×?@…ëQ¸…@`p�š™™™™™ @-²�ï§Æã?ffffff@P�—nƒØ?ffffffþ?Ház®GÑ?-DTû! @@333333Ã?š™™™™™Ù?�p�˜p�ìQ¸…ëÁ?{®GázÄ?333333û?š»–�zü?аá镲ô¿333333Ó?ffffff@= ×£p=Ú?-DTû!ù?Èƒš™™™™™ñ?à?333333"@ffffff @¤p= ×£è? ×£p= ·?ÍÌÌÌÌÌ@š™™™™™é?333333@åÐ"Ûù~Ú? q�ÍÌÌÌÌÌì?®Gáz®×? «*X�pŽrŽrŽsô}„x‰üû p‘o‘n’ýT “)  »! I P€)')   ») ! I P€)!# ð?ºI +‡–?@P€ú~j¼t“ˆ?.@@ë+ì # #" # #!J6 €€÷,øÖ € €HI P€#)(8Ã$ ! ) ) I  (P€  I  0P€  F F ) ) ") ) !J6 @ð€  )3)# # "# # !J6 @ð€)3)# # "# # !J6 @ð€# ) "# ) !J6 @ð€ i ))# # "# # !J6 @ð€))# # "# # !J6 @ð€) ) ") ) !J6 @ð€ i  ƒ ) ) ") ) !J6 @ð€  # ) "# ) !J6 @ð€ Y ))# # "# # !J6 @ð€))# # "# # !J6 @ð€) ) ") ) !J6 @ð€ i  ƒ 9=ÿ&'€ÍÌÌÌÌÌð?-DTû! @-P€ð?@(P€0P€@ð€333333Ó?ÍÌÌÌÌÌì?ö(\�Âõè?333333ë?ñ.üüûûúù÷ ÷ òò• €"“)K6  p€ Z82)  G # * !“)»! I  L � ) ' )») ! I  L � ) ! # I   \ � # I L � # J6  p€ Y9Îÿƒ € 8Y' * ) )' RG (  N “)  “)  »! I  L � ) I  \ �#I L �#J6 p€    ! I  \ �“#)! I L �“#)J6 p€ I  \ �# I L �# J6  p€ ¹! 9§ÿ5 ») #I  %� � " ) "I  %� �' 8D' &») ')(! I  %� � " ) G ( )# !  “»)+),!I  %� �" ) ' *# 5 I  \ �#  I L �# )/»!I  %� �").'-7 J4   2ă 9¼ÿ6;@34¯5(6 9“)<6:(6 ~6:55  )  »'  J4   2ă J4   2ă   ) = »' > J4   2ă J4   2ă   ) ? »' @ J4   2ă J4   2ă  €     )A J4   2ă  €    8 * B) )  I  \ �#)CI L �#)C)D9 êÿJ4   2ă (6Ò8E&'€/{®Gáz¤? p€€V@-DTû!@@ð?ºI +‡–?@L �ú~j¼t“ˆ?.@\ �-DTû! @&@à?¸…ëQ¸¾?…ëQ¸…ë?{®Gáz´?0@ffffff @� �š™™™™™Ù?333333û?-²�ï§Æã?š™™™™™é?333333Ó?333333@åÐ"Ûù~Ú?ffffffö?š™™™™™ù?¸…ëQ¸æ?12ă3456783ÿÿÿÿ4ÿÿÿÿ5ÿÿÿÿ67879ÿÿÿÿ:ÿÿÿÿq= ×£pÝ?®Gáz®ç?š™™™™™©?¸…ëQ¸Þ?À?š™™™™™É?,@¤p= ×£À?yé&1¬œ?‡9´Þ$ýþú 0Ð/Ñ.Ó-ÓýþþþT ‡ €8<*))I   `€I   (`€) I  (`€ I   `€ J  0`€ I  8`€   * G  ) " J6   P0� O€     Y 9Äÿƒ €i !i"#$i%&iƒ6,5o'5\()* .Ђ1+L o'    :ùÿ/&'€-DTû! @@<@`€…ëQ¸å?(`€:0`€;8`€š™™™™™Ù?{®GázÔ?ð?P0�€?€?ˆc ?ˆc ?€?€?ˆc ¿€?€¿ˆc ?€¿€¿ˆc ¿ˆc ¿€¿€¿ˆc ?€¿€?ˆc ¿<=>?@'()*+AЂÉ'¾õ0ÍÿŒ  ‚1šD0ª Ç  @BCDEFGHIíBn  ‚1šD8»Š0   ª   Ç @JCDEKLMNFGHI÷Jx   ') ) ! »!I P€)!) ) "I P€! @ø?"@š™™™™™ù?P€@š™™™™™ñ?�Ž ›L” o M ’ “ Ÿ    ™˜`FFF  P€ ) D.  0°€) ' I  8°€  )D.  0°€) 'I  8°€  )D.  0°€) 'I  8°€@  1  š   D  8  »  Š    ª   Ç  P€ )D.  0°€) ' I  8°€  )D.  0°€) 'I  8°€  )D.  0°€) 'I  8°€Ù  1  š   D  8  »  Š    ª   Ç  @! P€ )"D.  0°€) 'I  8°€ )#D.  0°€) 'I  8°€ )$D.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç E'  @! Æ(  Á) P€ )*D.  0°€) 'I  8°€ )+D.  0°€) 'I  8°€ ),D.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç ï- P€ ).D.  0°€) 'I  8°€ )/D.  0°€) 'I  8°€ )0D.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç -1 P€ )D.  0°€) 'I  8°€ )D.  0°€) 'I  8°€ )2D.  0°€) 'I  8°€Y  1%š D0 &ª Ç [3 P€ )4D.  0°€) 'I  8°€  )5D.  0°€) 'I  8°€ )6D.  0°€) 'I  8°€Ì  1 š  D7 8 » Š  ª  Ç ù8 P€ )9D.  0°€) 'I  8°€ )6D.  0°€) 'I  8°€ ):D.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç B; P€ )4D.  0°€) 'I  8°€ )<D.  0°€) 'I  8°€ )=D.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç °> P€ )?D.  0°€) 'I  8°€ )@D.  0°€) 'I  8°€ )AD.  0°€) 'I  8°€ÿ  1%š D0 &ª Ç @! P€ )BD.  0°€) 'I  8°€  )CD.  0°€) 'I  8°€ )6D.  0°€) 'I  8°€G  1 š  D  8 » Š  ª  Ç ŽD  @! P€ ):D.  0°€) 'I  8°€  ):D.  0°€) 'I  8°€ )ED.  0°€) 'I  8°€ÿ  1 š  DF 8 » Š  ª  Ç:küG<%O()P€à?ào@333333ë?0°€8°€¸…ëQ¸î?@JCDEKLMNFGHI ×£p= ï?ð?š™™™™™ù?)\�Âõ(Ü?q= ×£pÝ?333333ã?BPQffffffæ?…ëQ¸å?×£p= ×ã?Ãõ(\�Âí?)\�Âõ(ì?®Gáz®ç?$ÍÌÌÌÌÌì?#333333Ó?�Âõ(\�Ò? ×£p= ×?š™™™™™ñ? Ãõ(\�ÂÅ?š™™™™™É?!š™™™™™á?)\�Âõ(Ì?"ìQ¸…ëá?š™™™™™é?ìQ¸…ëÑ? ×£p= Ç?¤p= ×£Ð?RHáz®GÑ?ÍÌÌÌÌÌü?„S…»þÿÿüÿÿÿ0Çþÿÿüÿÿÿ0´þÿÿüÿÿÿ&!±þÿÿüÿÿÿ&$°þÿÿüÿÿÿ&%¯þÿÿüÿÿÿ&&®þÿÿüÿÿÿ0­þÿÿüÿÿÿ&(¬þÿÿüÿÿÿ&)«þÿÿüÿÿÿ&+©þÿÿüÿÿÿ0§þÿÿüÿÿÿ0   G   ( *   D. 0€#) G  # ˜™™™™™É?à?0€@@¦T§Ïþÿÿ )')')'   ×£p= ×ã?R¸…ëQØ? ×£p= ç?ìQ¸…ëÑ?= ×£p=ê? ×£p= Ç?¬U­  °V± ¬™˜  G     ( *   D. P€ # ) G  # , € ™ ˜  4 € õ # @ €   # E , €   # Á)  h�� )D. P€)' I  xP€  ) D. P€)'I  xP€  )!D. P€)'I  xP€0 "D. P€)'I  xP€   1# $ š%  & D' ! ( ) ª*   Ç+ Ž,E Á) .' -) 0' /) ' 1   1# $ š%  ( ) ª* 4Ì ƒ 5 65 6 9 h�� )"D. P€)'I  xP€ )-D. P€)'I  xP€ ):D. P€)'I  xP€ÿ D'6< h�� )"D. P€)'I  xP€ )1D. P€)'I  xP€ )=D. P€)'I  xP€ÿD'6> h�� )"D. P€)'I  xP€ )?D. P€)'I  xP€ )@D. P€)'I  xP€ÿD'7   &   Ç+   &  h�� )AD. P€) ' I  xP€  )BD. P€)' I  xP€  )CD. P€)'I  xP€ ÿ  H :  1# D š%  & D' 8E F »G F ŠH  ( ) ª*   Ç+  Ž,    I()˜™™™™™É?à?P€@@WX, €Y4 €Z[@ €\P®Gáz.À…ëQ¸…÷?]> ×£p= Ç?h��ào@š™™™™™©?xP€š™™™™™É?333333Ó?ð?@BCDEFGHIR×£p= ×ã?R¸…ëQØ? ×£p= ç?ìQ¸…ëÑ?= ×£p=ê?^_Ì ƒ€¿€?`78'ÿÿÿÿè?š™™™™™á?7;'ÿÿÿÿ)\�Âõ(ì?7"'ÿÿÿÿÃõ(\�Âí?ffffffî?…ëQ¸…ë?š™™™™™Ù?ìQ¸…ëá?JKLMN´a¶ñÿÿÿÏþÿÿ@�þÿÿüÿÿÿ&Hïÿÿÿƒþÿÿüÿÿÿ}‚þÿÿüÿÿÿ~�þÿÿüÿÿÿýÿÿÿ}þÿÿüÿÿÿƒ­ÿÿÿKåÿÿÿ( ¸(ÒMM€  ' I  @€  D. @€      6  1 8»( ) G # ( )'  š  ª T@�56 # # # tÀ� "#!""#D. @€ ) 'I  @€ ##"##$D. !@€!) !' I  @€ $##$$%D. "@€")!"' !I  @€ ÿD6  # # # tÀ� ##"##$D. !@€!) !' I  @€ $##$$%D. "@€")!"' !I  @€ %#$%%&D. #@€#)"#'!"I ! @€ !ÿD6! # # # tÀ� $##$$%D. "@€")!"' !I  @€ %#$%%&D. #@€#)"#'!"I ! @€  &#%&&'D. $@€$)#$'"#I " !@€!"ÿD7 "  Ç# "  tÀ� )$D. @€)'I  @€ )%D. @€)'I  @€ )&D. @€)'I  @€)1 š"D0ªÇ#     tÀ� #D. @€)'I  @€ # D. @€)'I  @€ #  !D. @€)'I  @€ÿ1 'š"D(8)*»+*Š,ªÇ# VE- 0¼à‚3)13)1Á2'  tÀ� )%D. @€)'I  @€ )3D. @€)'I  @€ )D. @€)'I  @€$1 š"DªÇ#Ž49Eþ tÀ� ) D. @€)'I  @€ )(D. @€)'I  @€ )5D. @€)'I  @€ÿ1 š"D0ªÇ# tÀ� )6D. @€)'I  @€ )7D. @€)'I  @€ )8D. @€)'I  @€ÿ1 š"D0ªÇ# tÀ� ) D. @€)'I  @€ )9D. @€)'I  @€ ):D. @€)'I  @€ÿ1 'š"D(8)*»+*Š,ªÇ#;56à?7@€@€8@ð?¤p= ×£Ð?ÍÌÌÌÌÌì?¸…ëQ¸®?BCFGH^bT@�`EÿÿÿÿtÀ�ào@ÿÿÿÿ ÿÿÿÿDIÍÌÌÌÌÌÜ?š™™™™™Ù?×£p= ×ã?Jš™™™™™é?KLMNPWX¼à‚@]333333Ó?R ×£p= Ç?¸…ëQ¸î?š™™™™™á?{®Gáz´?¤p= ×£à?š™™™™™¹?ØcÙ^þÿÿüÿÿÿ¢]þÿÿüÿÿÿ£\þÿÿüÿÿÿ¤ýÿÿÿWþÿÿüÿÿÿ&~Vþÿÿüÿÿÿ0sQþÿÿüÿÿÿ&„ëÿÿÿLþÿÿüÿÿÿ&‰Kþÿÿüÿÿÿ&ŠJþÿÿüÿÿÿ0~" ì \ M€ \™ ˜  G    ( *  D. `€ # ) G #  õ 3 I  0`€   õ 3 I  8`€ ) ) " ) ) !  “ E  T@�™˜ \@�õ # Á  @ p°� )D. `€)'I  !€`€ )"D. `€)'I  !€`€ )#D. `€)'I  !€`€Y1$%š&'D(8)*»+*Š,-.ª/ Ç0)2' 1)4'3)6'5    Ä7@ 0 p°� )8D. `€)'I  !€`€ )9D. `€)'I  !€`€ ):D. `€)'I  !€`€ÿ. p°� );D. `€)'I  !€`€ )<D. `€)'I  !€`€ )=D. `€)'I  !€`€ÿ1$>š&'D(-.ª/Ç0E@Æ?E T@�# )@# )@Á@ 0 p°� )1D. `€)'I  !€`€ )AD. `€)'I  !€`€ ):D. `€)'I  !€`€ÿ. p°� )BD. `€)'I  !€`€ )CD. `€)'I  !€`€ )4D. `€)'I  !€`€ÿ1$>š&'D(-.ª/Ç0ŽDE T@�# )E# )E GA�) H) I#ÁJ)L'=)K p°� )MD. `€)'I  !€`€ )"D. `€)'I  !€`€ )ND. `€)'I  !€`€0"D. `€)'I  !€`€1$>š&'D(0O-.ª/Ç0ŽDP p°� )QD. `€)'I  !€`€ )2D. `€)'I  !€`€ )6D. `€)'I  !€`€€1$%š&'D(8)*»+*Š,-.ª/Ç01$%š&R8)-*»+*Š,.ª/ 0 p°� )5D. `€)'I  !€`€ )SD. `€)'I  !€`€ );D. `€)'I  !€`€ÿ. p°� )TD. `€)'I  !€`€ )UD. `€)'I  !€`€ )D. `€)'I  !€`€ÿ X\a…3 # 3 # J6 [h‘…# # J6 [h‘…56]   p°� )TD. `€)'I  !€`€ )UD. `€)'I  !€`€ ) D. `€)'I  !€`€0" !D. `€)'I  !€`€D(6_ p°� )TD. `€)'I  !€`€ )UD. `€)'I  !€`€ )D. `€)'I  !€`€D(6`D(7'@Ç0'¯aLÿE T@� GA�#ÁJ p°� )1D. `€)'I  !€`€ )b D. `€)'I  !€`€ ) c !D. `€)'I  !€`€ÿ1$>š&'D(0O-.ª/Ç0J p°� )dD. `€)'I  !€`€ )ED. `€)'I  !€`€ )HD. `€)'I  !€`€™He1$%š&'D(8)*»+*Š,-.ª/Ç0 T@�) K) K GA�SS#ÁJ p°� )"D. `€)'I  !€`€ )" D. `€)'I  !€`€ ) " !D. `€)'I  !€`€ÿ1$>š&'D(0O-.ª/Ç0ŽD:ÿ(fM_3 )6E T@�) g"3 )g \@�»h#Á(f p°� )iD. `€)'I  !€`€ )jD. `€)'I  !€`€ )HD. `€)'I  !€`€Y1$>š&'D(-.ª/Ç0ŽDŽD@ p°� )kD. `€)'I  !€`€ )=D. `€)'I  !€`€ )dD. `€)'I  !€`€ÿ1$%š&'D(l8)*»+*Š,-.ª/Ç0(fM0E T@�3 )6 \@�»h#Á»h3I   0`€»h3I 8`€ # # "# # !ŽDŽD   m=()˜™™™™™É?à?`€@@Z0`€8`€ÙÎ÷Sãé?7‰A`åÐâ¿PWXT@�Y\@�]p°�ào@ÍÌÌÌÌÌì?€`€ð?\�Âõ(\ï?@JCDEKLMNFGHI×£p= ×ã?R¸…ëQØ? ×£p= ç?ìQ¸…ëÑ?= ×£p=ê? ×£p= Ç?d ×£p= ×?¤p= ×£à?¤p= ×£Ð?)\�Âõ(Ì?Ház®Gá?333333Ó?BQìQ¸…ëÁ?®Gáz®ç?)\�Âõ(Ü?ö(\�Âõè?Ráz®GáÚ?[A�š™™™™™É?¤p= ×£À??ffffffÖ?ffffffæ?q= ×£pí?333333ë?3¸…ëQ¸¾?š™™™™™ @{®GázÔ?š™™™™™é?®Gázî?^_\a…h‘…`\O(ÿÿÿÿš™™™™™á?\^(ÿÿÿÿ\"(ÿÿÿÿ4…ëQ¸…ë?¸…ëQ¸Þ?{®GázÄ?333333ã?5"@{®Gáz´?Ð?š™™™™™¹?ffffffö?�eŸÿÿÿÏþÿÿ“7þÿÿüÿÿÿ0,i1þÿÿüÿÿÿüÿÿÿ&¤,þÿÿüÿÿÿüÿÿÿ&©'þÿÿüÿÿÿ&®%þÿÿüÿÿÿ0¤þÿÿüÿÿÿüÿÿÿåþÿÿüÿÿÿæþÿÿüÿÿÿçýÿÿÿþÿÿüÿÿÿ&Åþÿÿüÿÿÿñ?ÿÿÿ¹ þÿÿüÿÿÿ&Èùÿÿÿ þÿÿüÿÿÿ&Ñÿýÿÿüÿÿÿ0É`ÿÿÿ£ ”™˜  G     ( *   D. P€ # ) G  #   *   D. P€E  8Ѐ ™( ˜(   HЀ ““ # Á)  d€� )D. P€)' I  tP€  )D. P€)'I  tP€  ) D. P€)'I  tP€0 !D. P€)'I  tP€   1" # š$  % D&  ' ( ª)   Ç* Ž+E  8Ѐ ™ ˜  HЀ ““ # Á) -' ,) /' .) 1' 0   ) 2G!  ) ,) 3)4 d€� # D. P€)'I  tP€ # D. P€)'I  tP€ #D. P€)'I  tP€ÿ   1" # š$  % D&0 5 ' ( ª)   Ç*  E   8Ѐ 67  HЀ88 #  Á  ) 9) :); d€� # D. P€)'I  tP€ # D. P€)'I  tP€ #D. P€)'I  tP€ÿ   1" # š$  % D&0 5 ' ( ª)   Ç*  Ž+   d€� )2D. P€) ' I  tP€  )1D. P€)' I  tP€  )<D. P€)'I  tP€ ÿ  “H =  1" > š$  % D& 8? @ »A @ ŠB  ' ( ª)   Ç*  8Ѐ CD  HЀ// #  Á  G !) = d€� )!D. P€)'I  tP€ )ED. P€)'I  tP€ )FD. P€)'I  tP€0 !D. P€)'I  tP€    1" # š$  % D&0 5 ' ( ª)   Ç*  Ž+       G()˜™™™™™É?à?P€@@9@fPWX8ЀÑ"Ûù~jó?ÒMbX9ì¿[HЀ]?Ð?d€�ào@š™™™™™©?tP€š™™™™™É?333333Ó?ð?@BCDEFGHIR×£p= ×ã?R¸…ëQØ? ×£p= ç?ìQ¸…ëÑ?= ×£p=ê? ×£p= Ç?ffffffÖ? ×£p= ×?{®GázÄ?Ý^Ò­£Â?ÔÏ›ŠT»¿ö(\�Âõè?…ëQ¸…ë?ìQ¸…ëá?¤p= ×£Ð?{®Gáz´?ÍÌÌÌÌÌì?JKLMN­nõœô¾Õ?Íǵ¡bœÏ¿ffffffî?333333ë?×gXOÿÿÿÏþÿÿâìýÿÿüÿÿÿ&éNÿÿÿ´æýÿÿüÿÿÿ&ïãýÿÿüÿÿÿ&òáýÿÿüÿÿÿÿÿÿçßýÿÿüÿÿÿ&öGÿÿÿ»ìE €™ ›) ) "  ˜ ›) ) "   (€“  “ #Á  @ð€ )   D. XP�)'I  `P� )   D. XP� ) 'I  `P� )   D. XP� ) ' I  `P�@1šD !"#ª$ Ç%Ž&E €™˜  (€“  “ #Á  @ð€ ) '  D. XP� ) ' I  `P� ) ( D. XP� ) ' I  `P� ) )D. XP� ) ' I  `P�  ÿ1šD 0*"#ª$  Ç% @ð€ ) +  D. XP�)'I  `P� ) ,  D. XP� ) 'I  `P� ) -  D. XP� ) ' I  `P�ÿ“ H.1/šD 801»21Š3"#ª$  Ç% €45  (€+ +#Á  @ð€ ) )  D. XP� ) ' I  `P� ) ) D. XP� ) ' I  `P� ) )D. XP� ) ' I  `P�  ÿ1šD 0*"#ª$  Ç%Ž&6PWX€(ffffffæ?ÙÎ÷Sãé?h)7‰A`åÐâ¿[(€]?@ð€à?ào@š™™™™™©?XP�`P�š™™™™™É?333333Ó?@BCDEš™™™™™Ù?FGHIR…ëQ¸…ë? ×£p= ï?ð?ffffffÖ?×£p= ×ã?ö(\�Âõè?š™™™™™é?JKLMN�1w-!Ò?€&†§WÊ¿îiqÕýÿÿüÿÿÿ&Ñýÿÿüÿÿÿ&Ðýÿÿüÿÿÿ0ÿÿÿøÎýÿÿüÿÿÿ& ®A5FFF@@@F@F@ @ F G@ @ @ @ F F F @ @ @ FF @F ï@@F F FFF'@F¡FFFFFFFFFFF5557575775575757755 !75"75#$777FFFFFFFFFF‰%FFFFÑ&FFF~' ( 'STaÍÌÌÌÌÌì?ffffffî?à?ffffffæ?ö(\�Âõè?¤p= ×£Ð?q= ×£pÝ?š™™™™™é?\�Âõ(\ï?×£p= ×ã? ×£p= ï? ×£p= ç?…ëQ¸…ë?š™™™™™á?¸…ëQ¸¾?egi   8  – @nB$ "aòáÿÿ)V~t’Ÿ‚!‘þù&ËpondjÔ›´printpond: failed: tostringreportmathrandomrand wrapAnglerocksxyrinRockwhunitfreeSpotminseed placeRockspadsrotvxvyvrnotchflowerrimwakeTtableinsertpetalssizefishspeedcruiseLphasefinPhaseampturndepthdepthTkindtxtyretargetmodewandermodeTcxcykissTplaceAllrescaledropssattimeaddDropcossinsqrtmaxfleewaitstartleringst0dropletszvzsplashpelletsfeedfeedWaitfindremovelifebubblescomekissabsatan2clampsteerringPushcurrentgrabgrabTXgrabTYgrabOXgrabOYwindXgustwindYexp updatePads updatePetalssinkTsize0age updatePelletsgustAgegustTgustDurgustPXgustPYgustAccsway updateWindupdateDropletsbufferwritef32put4 frameDatascaleceil writeFrame dummyViewslotview GPUBindGroupnewlayoutubostexturessamplerssampler makeBindGrouplayout1artGroupfloorcanvascontextwidthheight gpuCanvasresize koiCanvaskoiShadowCanvas weedCanvasweedAtimage GPUTexture renderTargetlabellight lightView floorViewground groundViewneedBake simFormatsimWsimHsimViewsformatripples needClearcuruboQuietbgBakebgArtbgNoArtbgLightbgSimbgFloorbgWateruboPoolallocatepondshaderpond.wgsl is missingGPUBindGroupLayout groupIndexpond art GPUSamplerlinearmagwrapU clamp-to-edgewrapVunused rgba16float GPUPipelinevertexfragment vertexLayoutbindGroupLayouts colorTargetsmodule entryPointvs_fullfs_simsimPipe fs_ground rgba8unorm groundPipefs_bedbedPipefs_water waterPipefs_light lightPipeoksetuppcallinit deviceScalegpuCapplacedartplacetufts forceDraw resizePondslowT adaptQualitydroplandsimAccstepsctxupdateambientTanimAccnewFrame advancePond shownTime shownSway shownPelletssnapshot shownPadsclone shownPetals shownDropletssunTonewritecolor bake floorloadOpclearstoreOpstore clearColorbeginRenderPass setPipeline setBindGroupdrawfinish clear ripples beginFrameMat2D withScale transformweedArtendFramekoiArtsort drawShadowdrawFish drawUnder pond floorsurfacesave imageSamplersrcOver drawImagerestore drawRocks drawPetal drawPelletdrawPad drawDroplet drawAbovedrawPondadvancepositionlastXlastYhitgrabDXgrabDY grabMovedlastTapTlastTapXlastTapYdragging pointerDownpadMoved pointerMoverelease pointerUp pointerExit GPUBufferusageuniform frame drops ImageSamplerbilinear frame quietcreaterequirefloaterskoiweeds/     @I? @@1@@@" €#!€ßà'+(-DTû! @-DTû!@ã ä oL ™"   ˜"  # # ! “)! ,     :íÿ   @ffffffò? ëýì '–)‰)8–""  0€ # !‰""  0€ # !    ') 9äÿà?0€D@õèçýà 0–‰J  €56 ) ™) ˜) “6)™)˜)“6)™)˜)“7o €   ÍÌÌÌÌÌô?ÿÿÿÿÿÿÿÿÿÿÿÿ š™™™™™©?ÍÌÌÌÌÌì?333333Ã?ÍÌÌÌÌÌ@ÿÿÿÿÿÿÿÿÿÿÿÿÃõ(\�Âí?333333ã?333333³?ffffff @ÿÿÿÿÿÿÿÿÿÿÿÿ\�Âõ(\ë?¸…ëQ¸æ?{®Gáz¤? �ý –‰J  € 5\ L@ \6  #  ™ #  ˜ #  “  T €#!  õ   T €#!     T €#!  "  ()  » T €     ÄJ4  xÐ� :¿ÿ5^ 89^ 6 " (  T €# !  ™ (  T €# !  ˜   T €# !  õ   T €# !  '##  ! $  T €# !   J4 xÐ�9Çÿ5ˆ% L|   '#) &  \5 T €#!  '##  '#)& ˆ%6; ™ ˜< T €#!‰'#)=Ì' T €#!'##Â( m) T €#!´* T €#!Ï+>? T €#!/>? T €#!¹0]1)@ T €#!!» X2 ¹3 T €#!‘4J4 xÐ�:ƒÿA €    ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ -DTû!@T €¸…ëQ¸ž¿¸…ëQ¸®?ìQ¸…ëÁ?z®Gáz´?ÙÎ÷Sãù?š™™™™™Ù? xÐ�!"ÿÿÿÿÿÿÿÿ ÿÿÿÿ!ÿÿÿÿ ÿÿÿÿš™™™™™É¿#Y@$%&'()š™™™™™©?*+,-./0123456ÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿÿÿ(ÿÿÿÿ)ÿÿÿÿ*ÿÿÿÿ+ÿÿÿÿ,-. /ÿÿÿÿ0ÿÿÿÿ1ÿÿÿÿÿÿÿÿ2ÿÿÿÿ3ÿÿÿÿ4ÿÿÿÿ567 8 9 :  -DTû! À4@333333Ã?ÌÌÌÌÌÌÜ?1¬Zdç?™7:¾C½FºGõÿ°Q¯R®S­T¬Wùÿ ¤]Ÿb�d›fšg™j–k“m‘pïüà AˆL™#™˜#˜X#X¹#¹:ëÿ\L ™#™˜#˜:õÿ^L ™#™˜#˜:õÿ #  ./!Ü8üþþ]  s4ð s6™˜“’ j!  øJ4  $€€ 9   :;< $€€ð=q ¹ˆL± ‰I   €   ‰I   €  ™)  m #!  ˜ )  m #! " " ##!I  , € )G # m )! RK H €$K H €$ - \ €#! O k J ™)'#! X ˜ )'#! ¹–'#$)G# Ì J H € Ì !" \ €#! ¹#10 -P- \ €$ '% -  \ €#! Oçÿ2 \ €#!'#! kçÿ2 \ €#!'#! J:Nÿ&#> €? € š™™™™™É?& @, €333333ó?à?+š™™™™™Ù?ð?AH €B1š™™™™™é?\ €345y@./$ffffffæ?Ð?,333333ã?C÷D˜_¢Y¨U¬T­S®êàã' € # !# € # !s4ð s6 ™˜“ ’  j'  ø J4 @ð€8P   € # !    € # ! # I   L€ # !  I  T€ # !    €#! #  ýÿ €#!  €#! s4ð s6  ™ ˜ “  ’ j! ø J4 @ð€9°ÿ €#!I   L€)#!I  T€ ) #!   € # ! #   € # !    € # !  s4  ð   s6  ™ ˜ “  ’ j!   ø J4  @ð€ )  € # !s4ð s6 ! ™ ˜ “  j!  ø J4 @ð€ù"6%™˜j¢#J4 @ð€ €  8V ®&4   Q   € # !  ( n €# ! #  ®&6 +I  L€),#!  ™I T€),#!  ˜I  L€#   ^(I T€#   ¿)–– €#!#  *-. €#!#  “ J4  @ð€ 9ªÿ ) / 0€#À@9   :; < @ð€-DTû!@>L€?T€{®Gáz¤?@@ø? ×£p= ·?¸…ëQ¸ž?@ ×£p= Ç?¸…ëQ¸®?Àÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿEFð?ÿÿÿÿÿÿÿÿ#ÿÿÿÿ $GHIÿÿÿÿÿÿÿÿ'(ÿÿÿÿ)ÿÿÿÿ*ÿÿÿÿ ÿÿÿÿ@ÍÌÌÌÌÌô?gfffffþ?Àb@“J´L‘%G»E‘%G¾B‘+A‘,>Ç4Í3Îùúà&¢ '–‰™ ‰I  P€ )  m# ! ˜  ‰I  (P€ )  m# !      L ™",˜ ",!   : òÿM" -P  -P  -P   -I  PP€ )$ '   `P€#! !  O -P € O"  O O  ª   -¥ -P È€M€  -   `P€# !  ¹  ‘�  ™™"  ˜ ˜ " # # !I PP€K !€P€ m)) "J $ŒP€ ™$ #" ˜ $ #"X%¹&'¹ “(m))!, U ,¬ ‚  M .´ ‚  ™ ˜ )/s04ð s064™˜ “(j6'5ø3J4 8Ü ‚ ™ ˜ )9s04ð s06;™˜ “(j6'<ø3J4 8Ü ‚ù=6? ™™ ˜ ˜ j6¢>J4 8Ü ‚Y@Mñ `P€ ë ÄA™˜ `P€Ú -P € O"  O O  Í   -  B `P€# !  ¹  ‘¼ -P C€ O"  O O  ¯  D -  O§ -P CD€ O"  O kE JF X% ¹& kE ™"  JF ˜ " # # ! m)G,    H -  `P€#!  O I ¹ J `P€#!  xKj O  f   -a -P #H€ O"  O kE JF X% ¹& O  L   -   `P€# !  ¹  ‘; ‘"  ‘ X% ™"  ¹& ˜ "  ‘   # # ! )L,  !  )M  X% ¹&  `P€#!  ‘ `P€    NO `P€#!  ¹ ‰I  P€   ‰I  (P€ X%™" ¹&˜ " # # !I PP€K !€P€$ $ )Pm)G™# !˜ # ! "$)Q!" ""$)Q" "$)Q!" ""$)Q"oRL$™"˜ "##!I PP€“()S")T K5#$5 "!€P€"$!"G !) 9$!# !! $!# !! :ÛÿˆULONVV"I X\Q€ B™™"˜ ˜ "##!I PP€m m! )J Y  $ G )Z$ # !$ # !)Q -P€-P€ ‰I  P€)N! ‰I   (P€)N!:°ÿJ \lQ€‰"']+^(]-P€ -P€-PH€:_)`3<. b„Q€gcgc")dJ $ŒP€#!gc‰gc#!']+^(]‰Âe j6) !»h) !g! I  (P€)'f#-P€Âe)-PD€Âe)i-P€Âem)", Jj#-PH€)kÌl Z-P€"ÌlÌl"# J $ŒP€#!Ìl‰I  P€ ‰I  (P€ ™Ìl# #!™˜ Ìl# #!˜ Ìlm$´m)o'n#!´m)q'p!gcI! X\Q€ ) I!prD. b„Q€Gs Gs" !)"9J!" $ŒP€ # !GsÏt -P H€u#!ÏtV ¹!V" !!$-P$€##J#"#J!" $ŒP€ # !VVr CÌl)v >ow"owow4Now™) x!m# !"˜ )! x"m# !"" )/#V)"#dG!") !y"s04!""ð "!"s06#z#™#˜ #“( #’1%j6'$%5$#ø3J4"# !8Ü ‚!-PmH€V< hxK"xKxK^G { !`P€!# !!xK™)! "m# !"! ˜ )! "m# !"! )k!s04 !!ð ! !s06"}"™"˜ "“($j6'#$5#"ø3J4!" 8Ü ‚ )9!s04 !!ð ! !s06"~"™"˜ "“($j6'#$<#"ø3J4!" 8Ü ‚  ù=6!!™!˜ "j6"!¢>J4 ! 8Ü ‚€ š™™™™™Ù?>P€& ?(P€ðK@1BLMš™™™™™¹?@PP€ Œ@ffffffÖ?`P€32333333Ó?,0ð?A€P€ÍÌÌÌÌÌì?ŒP€./¸…ëQ¸ž? {®GázÄ?N¬ ‚O´ ‚@9:ø¿;ÿÿÿÿ ÿÿÿÿ(ÿÿÿÿ123ÿÿÿÿ< Ü ‚@š™™™™™é?ÿÿÿÿ ÿÿÿÿ(ÿÿÿÿ1:3ÿÿÿÿ{®Gáz´?EFÿÿÿÿ ÿÿÿÿ>ÿÿÿÿ1PQgfffffÖ?CR45333333ã?S{®Gáz”?à?6€Q@€V@¸…ëQ¸¾?�Âõ(\�â?€[@@ š™™™™™ñ?T@#+T\Q€{®Gáz„?š™™™™™ù?UlQ€-DTû! @-DTû!@ffffffö?š™™™™™@V„Q€*@%è?@ÍÌÌÌÌÌü?ffffff@@$'333333@"@ìQ¸…ë¡?333333³?š™™™™™É?)(ÍÌÌÌÌÌ@(@š™™™™™á?п (13™™™™™™é?š™™™™™ñ¿ÿÿÿÿ ÿÿÿÿ(ÿÿÿÿ1|3ÿÿÿÿÿÿÿÿ ÿÿÿÿ(ÿÿÿÿ1G3ÿÿÿÿÿÿÿÿ ÿÿÿÿ>ÿÿÿÿ1r¶W·ýÿÿÿÿÿÿçÿÿÿóŽÿÿÿp�ÿÿÿqñþÿÿâþÿÿàþÿÿ!×þÿÿ*Ïþÿÿ2Íþÿÿ4øÿÿÿ ôÿÿÿœþÿÿe˜þÿÿhÿÿÿünþÿÿ“üþÿÿûþÿÿ @ù L6 j ¢"  ™"  ˜"# #!I P€)"K   (P€) " )    ’)'#')$'$$ #!$#!:ÉÿE<F  @P€333333ã?A(P€…AÙE¦f@à?€Q@:ð?d@ÿX÷ € –)‰)""'3 ) ) ! ) ) ! à?ú~j¼t“x?@š™™™™™é?’Y“à'\LVD9 t ™" )  � ˜" )  ) J  (�€ ^ " # ¿ " #  ^ !  ^  ¿ !  ¿  €# # "““#$)!   ^  ^ #  ¿  ¿ # ! I  L�€)   ^ $ #  ¿ $ #  ^  ¿  )  F o"  o o  <   o ™^ $ “# !  ˜¿ $“# ! ) )$K  (�€) s4ð s6  ™ ˜ “ ’j"'!øJ4 %�0‚ ^ µ&ß'#) # # !  ^  ¿ ø(ß'#) # # !  ¿   ™ ˜“  ^ !  ^  ¿ !  ¿  ) *) +"“K,, .´�€$) )!  ™˜–/))‰0))""'3)1)2! )1)3! ^ ) ^ "#)4!^ ¿ ) ¿ "#)4!¿ ',\48y\ ™™"˜˜"##!I L�€““!)5" [6 X)))7J  (�€#™$#"™˜$#"˜™$#!™˜$#!˜^ ^ "#$¿ ¿ "#$! !^ $#))!^ ¿ $#))!¿ ^ $#))"^ ¿ $#))"¿ 9‡ÿo8LG™™"˜˜"##!I L�€“)9“):!" ,6 )™$#);J  (�€#!™˜$#);J  (�€#!˜^ ):^ ¿ ):¿ :¸ÿ“3)*™  ^ ™"#)ô�€^ #^ ¿ #¿ 3)?I  >ô�€#™^ #!™˜¿ #!˜õ@#!õ@:©ýAZ,@[ \ 4@(�€ffffffÖ?]^ @L�€à…@D@{®Gáz¤?@ÍÌÌÌÌÌÜ¿Àr@ø?9:;< �0‚_`aà?333333Ó?š™™™™™É?ð?A´�€ú~j¼t“x?@š™™™™™é?Ð?R¸…ëQð?{®Gáz„? @ ÍÌÌÌÌÌð?ÍÌÌÌÌÌì?@@bô�€333333ã?™cÿþÿÿþÿÿÿÿÿþÿÿ%ÛþÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿVªYšÀþÿÿ@Ùÿÿÿ%ðÿÿÿøÿÿÿ ªÿÿÿå')^LZ   ™ ˜   ^) !  ^ ¿) !  ¿ "  ) !   ™ ˜– ) ‰ ) " " '3) )! ) )!  ^^" #) !  ^ ¿¿" #) !  ¿ ^µß#)'## !  ^ ¿øß#)'## !  ¿ \ L 7™™"˜˜"##!I \`�“!   “!")J p`�#™$#!™˜$#!˜: Èÿ o L 9™™"˜˜"##!I \`�“)! ! “)!")J p`�#™$#!™˜$#!˜: Æÿ3)  I  "„`�  ^#  ^ ¿#  ¿ 3)I  "„`�#   ™^#!  ™ ˜¿#!  ˜ õ##!  õ#^4 A  ™– !  3  ™‰ ($ &”`�#!  ˜  ™3 – !  ™ ˜‰ !  3  ˜– ($ &”`�#!  ™  ˜3 ‰ !  ˜:¥þ'>@!  š™™™™™ù?{®Gáz„?à?ú~j¼t“x?@š™™™™™é?š™™™™™Ù?I@_`a@\`� "@p`� ÍÌÌÌÌÌð?333333ó?b„`�”`�öd÷–ÿÿÿhúÿÿÿ úÿÿÿ ¾ýÿÿB¸ýÿÿHÎÿÿÿ5²'^4H^ )ùM!ùi* G  K   (�€ # M^4  ™ 3™  – !  ˜3˜ ‰!   D�^ '´ÿ4Ý  ™ ˜  ^) µß# ) # # ! !^¿) øß# ) # # ! !¿ ™  ˜ – )  ‰) " " '3))!) )! ^ ^"  # ) !  ^ ¿ ¿"  # ) !  ¿ \   L 7™  ™ "˜ ˜"##!I "„�€ “#“#!    “#“#!")$J &”�€#™ $#!™ ˜$#!˜: Èÿ3 ) I  (œ�€  ^#  ^ ¿#  ¿ ™  ^# !  ™  ˜ ¿# !  ˜ )!  ) )    ™  ìÿ   ™  – ' *  ˜ ìÿ   ˜ ‰' *  D�   'ÿ+!>@ef"ð?@{®Gáz„?A(�€  OD�Kffffffö?D@_`aà?ú~j¼t“x?@š™™™™™é?š™™™™™Ù?@„�€ @”�€bœ�€g4@¯h�ôL²ú å“ö': Rß–"––Ø: P€#!  P€#!I   ,P€I 4P€µø  P€ # !–#µ)#"ô  P€ # !‰#ø)#""“:!::$  <.   hP€#I 4P€,ßôµ)##!ô"ø)##!"p)ß#!ppHp(pÿÿ  P€ # ! )#ÿÿ  P€ # ! ) #ô µ# !  ø# " " ø# !  µ# ! )! s"4  ð   s"6 ) ™# ˜$ “% j+' * ø(J4  .´À‚ ´ÿ ÿÿ:  P€#!–c/ß)1'0#!c/2i`j@P€kš™™™™™É?ffffffæ?>,P€?4P€_aš™™™™™©?š™™™™™Ù?Àb@lm@-DTû! @VhP€@e@nT@ð?€Q@š™™™™™@9   :ìQ¸…ëÁ¿;#ÿÿÿÿ$ÿÿÿÿ%ÿÿÿÿ&'(ÿÿÿÿ< ´À‚offffffÖ?ffffffö?åpfuýÿÿŒtýÿÿŽrýÿÿ�qýÿÿ�fýÿÿžñýÿÿ Zýÿÿ§ˆ' € 8|4(w   € # !    € # ! # I   € # !  I  € # !   6  ™  ˜ I  € €#!## ^ I  € €#!## ¿  €#!# “J4  T@� )   €#! s4 ð  s6 ™  ˜  “j! øJ4 T@� 9„ÿ€K-DTû!@>€? €   g ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿ@ÌÌÌÌÌÌì? T@�¸…ëQ¸¾?9:ffffffÖ¿; ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ<ŽL�OýÿÿµGýÿÿ¹FýÿÿºFýÿÿ»ûÿÿÿBýÿÿ‘g')®4^® #"™^#!™˜¿#!˜›#!››6 1™˜ “ '  '#  “ )  s 4  ð   s 6  ™ ˜ “  ’  j'  øJ4  L �  T �®'žÿ0‘@GI  H@ ffffffÖ¿9:; < L �OT �ð?¢q£Äýÿÿ:õÿÿÿ   ")+5657á,º6 '`‚6-61 .š(68 .É)5Ì*5 7>+56:7á,; '`‚6-61 .š(6= .É)5Ì*5 7>+56:7á,Ô> '`‚6-61 .š(6@ .É)5Ì*5 7>+56:7á,iA '`‚6-61 .š(6C .É)5Ì*5 7>+56:7á,ÈDEFˆ­®0@¯°}`€±”ÿÿÿÿ ~ð?²ÿÿÿÿ  „³ �´µ¶·¸‚’À�‰Š¹ {yº›»`‚¼½¾¿À()*+,ÁÂÃ.ÿÿÿÿ/0Ä.ÿÿÿÿ/2Ÿ4$ÅÆ.ÿÿÿÿ/7Ç49ÈÉ.ÿÿÿÿ/<ÊË.ÿÿÿÿ/?ÌÍ.ÿÿÿÿ/BÎÏÌÐûûûûûM  @  ù ù 0@I?  p@ 1  Ñ@Ð0@p@ƒ Òÿ„“ûÿÿo»™˜–‰™˜–‰{ÿ ™ ˜# H  I   p€<  (p€¤ ™ ˜J  (p€* D. @p€'ˆ  Yˆ5 3 0 ™$ ˜$ YM ‡ ™$  ˜$ L ™ ™$ #  ™ ˜ ˜$ #  ˜:ïÿ ïoe ™˜�Å àA  †  † "B #  $I?  &PB 1 '  ÓÔÐGOA@ p€(p€v‰@333333ã?š™™™™™ù?V@p€Õ}P8K ÖרÙÏÑàA¬BPB‹ ÚþÿÿþÿÿÿÿÿÿþÿÿŒþÿÿÿoûÿÿ” g  Á!Á Á)"K P€ÁÁ¤Á¤(J P€ÿ { ÿ –  ‰ # H I 8P€D @P€¤Å @A  † † pAI?  °A 1 Ð?lÁlÁ–?Ûà?AP€vÔÓÐGOA@8P€@P€ÙÏÑ@A¬pA°A² Üþÿþþÿÿÿÿ³Sûÿÿ°  0 s4ð s6™˜“’ j' øJ4  (�€ ù 6™˜ j¢ J4  (�€9   :;< (�€EFš™™™™™¹?ÿÿÿÿÿÿÿÿ ÿÿÿÿð Ýñ€üÿÿ~  @ ^L ùM €':úÿ ^L  ùM €   ù i:óÿ ^6 ™˜õ   @ð€ # !  J4 L �!eð?"f  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ333333Ó¿333333ã?@ð€ L �ô ÞöþÿÿÿýÿÿÿÜûÿÿ$ âˆK  € j!j!*I   €)"t !K   €t ˆ L     :úÿ     Y MI5\L6  ™ ™ ˜ ˜ “ “J4   P0� :ìÿ6––‰‰''\µµøøßßF«FJf Æ   ]!"]!]!j"# %� € # !]! & ' %� € # !   " %� € # !  '# ) ( s)4  ð   s)6 , ™ ˜ “ ’*j' - ø+J4  P0�    %� € # !  '# ) . / 0 %� €# !  s)4  ð   s)6 , ™ ˜ “ ’*j!  ø+J4  P0� – –#  ‰ ‰# !I 2Ä €ù34 j ù3  ¢5" )4  7Ø0�ù3 '8çÿÅ9 Å9f:;f:!f:f:< f:( 563™?  `-57¡27 D) q5  ÿ< 9âÿÈ t  8; ñ@G A 6C563™?  `-57¡27D) q5 ºD ñ7`E    †9›: †9 ´; ÿ< ñ@9Åÿt 6 G5 6 3 sH `-5 7  ¡27  D)q5 ÈI ñ7   üJñ@  †9   ›: †9   ´;  ÿ<  ÁKM ( j L"  M  j L «N  Q@ñ„¤R¤R  ÁS   ´; T �Uj  ÞV  #W FXM bM ` ³Y [ha�ˆ\  ^ta� @_ L Æ` :ùÿ Q@ñ„¤R¤R «N Q@ñ„¤R)a¤R)aÁS L db :øÿ ÞV «NÁS L c :øÿYdM =e ÞV6g563*h`-57¡27D) q5 ^iñ@  †9 Ùj †9 Ôk ñ7  ´;  ÿ< 6m56n57¡27D) q5 io ñ70pñ@  †9›: †9 ´; ÿ< Q@ñ„¤RH¤RHEqÁS Ér }s t uŽvewMU 'x  oy »zƒ{ L  F|  –}‰~A :òÿí€ L  Ñ�  –}‰~A :òÿd‚ L  ‰ƒ  –}‰~A :òÿ‡„ L  ~…   :øÿYdM–} ‰~ A  •†  '‡FFF F  ˆ‡Ï‰åš¡£uð@àw0°€A8°€<ß�?9; \`�Od`�ð?@   :0@rsŒ ‚@ @(@«ñ”ò)ÿÿÿÿ*+{óôõö÷-ÿÿÿÿ./012ÿÿÿÿ™øÈù¤ú¦ûüý)ÿÿÿÿ*=ž¢@ )ÿÿÿÿ*BŨ•)ÿÿÿÿ*F–Χ��š™™™™™©?þÿ€@ñ„v�‚؃�Ž„ìha�#…ta�!âà?†‡Pˆ‰)ÿÿÿÿ*f—©¥ÊŠ)ÿÿÿÿ*l./012ÿÿÿÿ̪‹‘Œ�Ž�Ö� çí‘èé’ë“!"Û –\úÿÿÿ 7þÿÿÄêÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  @  ´ ´ 0@I?  p@ 1  Ñ@û0@p@ž û÷ùÿÿ   @  . . 0@ I?  p@ 1  Ñ@Œ0@p@¥ Œÿ&ñùÿÿ  @  Ò Ò 0@I?  p@ 1  Ñ@—0@p@¬ —-éùÿÿ…ۙۘŘ¹Û\L+ ™" ,  ˜" , !  “ ) ,   D  ™"  ˜"  €    ™ ˜ t �ËA  ú:Ôÿ'jÃ" �", ¾" ,!),   öÿÃjÃ�¾ YfM M F   e˜  Ù™š›@ffffffî? Z]^[\œ�ž<ŸffffffÖ? ¡€F@PáD¢µ £ù 6¥Û™Û˜D ,€!!t�úË ", A ", ! úY M . DÛe˜"¹"## ! I L �')T$ I  \ � K   h �   8 '$ ˜# ! ¹# !')s4ð s6" ™˜“j$'#ø!J4 '˜P‚9 Ùÿ ù(6 + ™ ˜ j$ ¢)J4  '˜P‚     ') , ˜¹Û-˜  Z]^[\ž@œ�P¤›¢™š@L �@†\ �(@h �"@9 :333333ó¿;ÿÿÿÿÿÿÿÿÿÿÿÿ !ÿÿÿÿ< ˜P‚EF¸…ëQ¸¾?ÿÿÿÿÿÿÿÿ)ÿÿÿÿ*€V@Õ ¥Vûÿÿø_\D MUúQ'87*))™I   (�€  “ # ) !  ˜ I  8�€  “ # ) ! )  s4  ð   s6  ™ ˜  “ j'  øJ4  d€� 9Éÿù6™™˜ ˜ j¢J4 d€�DZž-DTû! @@ @ ÍÌÌÌÌÌð?>(�€  ?8�€@9:333333ã¿;ÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿ< d€�EFÐ?ÿÿÿÿ ÿÿÿÿÿÿÿÿø ¦ÿÿþüþyóúÿÿD  eÛZ¢›… §† D  eZ¢� ¨Ž 58 €6 1ã9õÿ ©}€"@˜@ª«”ÿÿÿÿ¬´ ÿµ ö5®–‰¤'ˆjt b * I å Ÿ5™VÈm@Ù›ò  A}ºÔ i!e"58 %�0‚6+ , 1  ã*9õÿ- %�0‚6/°0 3ȃ�4{5ÿ6Á7ÿÿ8µ9::f;Å<=»>A?5í@YAfB5CöÿÃD�E¾FDGtH�I€JKËLAMúNcOßP–Qÿÿ:RSTµUVøWôX"YpZ5d[5ƒ\5‡]s^È_5ü`Áa ï$b5�c#dFe ï$³f5`g5^h50iñj5ˆk5\l5^m5®n5ùo5sp5oqer˜s¹tu]vww.x.xÒyÒy´z´ze{e{’|’|S}S}ß~ß~ˆÏvÕ<ßà‡—™šÈ¤žy¡º›~„¥¦‚­ AV®ŒÅÊÌÖ©}�0‚"@˜@ª«”&'()*ÿÿÿÿ¬«¯&'()*.£r°ÈƒuÓÔÛ�œ�äÙåçèéPáKŸ ¡Z[\]^œ�žo`jikš™™™™™é?_333333ã?almnëíî–Χ�‚Ø�Ž„¨©ª¢#!GE9 ¢™šø?ãÒŒ—û£¥§¨” ÿû•'èA @ @ @ @5@F@@5      7 @ @ F @ 5 5   7 5757575757575 !"75#$75%$&77 @ 'F F FF @(F @)@*@+F@,FF @-@.@/F@0F@1F@2@3@4@5@6@7@8F@9@ :FF ;@ <F FFFFFF@!=FF@">F!FFFFFFFF @#?F@$@F#FFFFF@%AF$F%´B@%CF F%.D@%EF"F%ÒF@%GFFF%eH@%IFF%’J@%K@&LF%&SM@&NF%&ßO@&PFF&Q±@²³´Pffffffæ?Ãõ(\�ÂÅ?333333³?…ëQ¸é?Ház®GÑ?X9´Èv¾¯?R¸…ëQä?�Âõ(\�Ò?š™™™™™©?×£p= ×ë?ìQ¸…ëÁ?9´Èv¾Ÿª?š™™™™™É?…ëQ¸…Û?ìQ¸…ë±?¸…ëQ¸¾?×£p= ×Ó?yé&1¬¬?q= ×£pÕ?Zd;ßO�§?à?= ×£p=ê?L7‰A`å°?…ëQ¸…ã?ÍÌÌÌÌÌì?š™™™™™Ù?{®Gáz¤?     Ò #$û%Œ&—'£(¥)*§+¨-(  #$%&'()*+- óÿÿÿûÉ-þ êþÿÿÿÿÿÿÿÿÿýå#ÝÉ]9j6)�!É^7kø'Ùç'ÙÃ=ùù à#Ý Ó C7#ã–ˆ7•'i'à 0.ÊËpondjÔ‹éBTSR #—#—Àã—Ö{ ¹Ày|ËGlÑ ³æÀsçå xÌÀ8ͼôÎÇã »²Àovs_fullfs_sim fs_groundfs_lightfs_bedfs_watervs_fullvs_fullfs_simfs_sim fs_ground fs_groundfs_lightfs_lightfs_bedfs_bedfs_waterfs_water¨–struct Frame { view: vec4, sim: vec4, sun: vec4, counts: vec4, misc: vec4, drops: array, 16>, rocks: array, 4>, pads: array, 12>, padx: array, 12>, petals: array, 16>, droplets: array, 32>, } struct Vor { f1_: f32, f2_: f32, id: vec2, rel: vec2, } struct FullOut { @builtin(position) clip: vec4, @location(0) uv: vec2, } struct Stones { col: vec3, cover: f32, ao: f32, } @group(0) @binding(0) var frame: Frame; @group(0) @binding(1) var heightTex: texture_2d; @group(0) @binding(2) var samp: sampler; @group(0) @binding(3) var floorTex: texture_2d; @group(0) @binding(4) var groundTex: texture_2d; @group(1) @binding(0) var koiTex: texture_2d; @group(1) @binding(1) var koiShadowTex: texture_2d; @group(0) @binding(5) var lightTex: texture_2d; @group(1) @binding(2) var weedTex: texture_2d; fn hash12_(p: vec2) -> f32 { var p3_: vec3; p3_ = fract((p.xyx * 0.1031f)); let _e6 = p3_; let _e7 = p3_; let _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33f))))); let _e17 = p3_.x; let _e19 = p3_.y; let _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } fn hash22_(p_1: vec2) -> vec2 { var p3_1: vec3; p3_1 = fract((p_1.xyx * vec3(0.1031f, 0.103f, 0.0973f))); let _e9 = p3_1; let _e10 = p3_1; let _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33f))))); let _e19 = p3_1; let _e21 = p3_1; let _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } fn vnoise(p_2: vec2) -> f32 { let i_17 = floor(p_2); let f = fract(p_2); let u = ((f * f) * (vec2(3f) - (2f * f))); let _e10 = hash12_(i_17); let _e15 = hash12_((i_17 + vec2(1f, 0f))); let _e20 = hash12_((i_17 + vec2(0f, 1f))); let _e25 = hash12_((i_17 + vec2(1f, 1f))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } fn fbm(p0_: vec2) -> f32 { var p_3: vec2; var v: f32 = 0f; var a: f32 = 0.5f; var i_5: i32 = 0i; p_3 = p0_; loop { let _e8 = i_5; if (_e8 < 5i) { } else { break; } { let _e11 = v; let _e12 = a; let _e13 = p_3; let _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); let _e18 = p_3.x; let _e22 = p_3.y; let _e27 = p_3.x; let _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6f) - (_e22 * 1.2f)), ((_e27 * 1.2f) + (_e31 * 1.6f))) + vec2(17.3f)); let _e39 = a; a = (_e39 * 0.5f); } continuing { let _e42 = i_5; i_5 = (_e42 + 1i); } } let _e45 = v; return _e45; } fn fbm3_(p0_1: vec2) -> f32 { var p_4: vec2; var v_1: f32 = 0f; var a_1: f32 = 0.5f; var i_6: i32 = 0i; p_4 = p0_1; loop { let _e8 = i_6; if (_e8 < 3i) { } else { break; } { let _e11 = v_1; let _e12 = a_1; let _e13 = p_4; let _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); let _e18 = p_4.x; let _e22 = p_4.y; let _e27 = p_4.x; let _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6f) - (_e22 * 1.2f)), ((_e27 * 1.2f) + (_e31 * 1.6f))) + vec2(17.3f)); let _e39 = a_1; a_1 = (_e39 * 0.5f); } continuing { let _e42 = i_6; i_6 = (_e42 + 1i); } } let _e45 = v_1; return (_e45 / 0.875f); } fn voronoi(p_5: vec2) -> Vor { var f1_: f32 = 8f; var f2_: f32 = 8f; var id: vec2 = vec2(0f); var rel: vec2 = vec2(0f); var j: i32 = -1i; var i_7: i32; var v_2: Vor; let n_1 = floor(p_5); let f_1 = fract(p_5); loop { let _e15 = j; if (_e15 <= 1i) { } else { break; } { i_7 = -1i; loop { let _e20 = i_7; if (_e20 <= 1i) { } else { break; } { let _e23 = i_7; let _e25 = j; let g_2 = vec2(f32(_e23), f32(_e25)); let _e29 = hash22_((n_1 + g_2)); let o_2 = ((_e29 * 0.76f) + vec2(0.12f)); let r_1 = ((g_2 + o_2) - f_1); let d_9 = dot(r_1, r_1); let _e38 = f1_; if (d_9 < _e38) { let _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { let _e42 = f2_; if (d_9 < _e42) { f2_ = d_9; } } } continuing { let _e44 = i_7; i_7 = (_e44 + 1i); } } } continuing { let _e47 = j; j = (_e47 + 1i); } } let _e52 = f1_; v_2.f1_ = sqrt(_e52); let _e55 = f2_; v_2.f2_ = sqrt(_e55); let _e58 = id; v_2.id = _e58; let _e60 = rel; v_2.rel = _e60; let _e61 = v_2; return _e61; } fn rot2_(v_3: vec2, a_2: f32) -> vec2 { let c_5 = cos(a_2); let s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } fn sunDir() -> vec3 { let _e2 = frame.sun; return _e2.xyz; } fn sunInWater() -> vec3 { let _e2 = frame.sun; let h_2 = (_e2.xy / vec2(1.333f)); return vec3(h_2, sqrt(max(0f, (1f - dot(h_2, h_2))))); } fn towardSun() -> vec2 { let _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } fn time() -> f32 { let _e3 = frame.view.w; return _e3; } fn rockSdf(p_6: vec2, i_8: i32) -> f32 { let r_2 = frame.rocks[i_8]; let d_10 = (p_6 - r_2.xy); let a_3 = atan2(d_10.y, d_10.x); let s_2 = r_2.w; let wob = ((((0.1f * sin(((2f * a_3) + s_2))) + (0.07f * sin(((3f * a_3) + (s_2 * 2.3f))))) + (0.035f * sin(((7f * a_3) + (s_2 * 4.1f))))) + (0.015f * sin(((13f * a_3) + (s_2 * 1.7f))))); return (length(d_10) - (r_2.z * (1f + wob))); } fn rocksSdf(p_7: vec2) -> f32 { var d: f32 = 100000f; var i_9: i32 = 0i; let _e6 = frame.counts.x; let n_2 = i32(_e6); loop { let _e10 = i_9; if (_e10 < n_2) { } else { break; } { let _e12 = d; let _e13 = i_9; let _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } continuing { let _e16 = i_9; i_9 = (_e16 + 1i); } } let _e19 = d; return _e19; } fn bedDepth(p_8: vec2) -> f32 { let _e5 = frame.view; let _e9 = textureSampleLevel(groundTex, samp, (p_8 / _e5.xy), 0f); return (_e9.w * 320f); } fn bedDepthCalc(p_9: vec2) -> f32 { var d_1: f32; var i_10: i32 = 0i; let _e3 = frame.view; let wh = _e3.xy; let m = min(wh.x, wh.y); let q = ((p_9 - (wh * 0.5f)) / vec2(m)); let r_3 = length(((q - vec2(0.08f, -0.04f)) * vec2(0.8f, 1f))); d_1 = mix(240f, 46f, smoothstep(0.04f, 0.78f, r_3)); let _e29 = d_1; let _e35 = fbm3_(((p_9 * 0.0045f) + vec2(3.1f))); d_1 = (_e29 + ((_e35 - 0.5f) * 70f)); let _e44 = frame.counts.x; let n_3 = i32(_e44); loop { let _e48 = i_10; if (_e48 < n_3) { } else { break; } { let _e52 = i_10; let rk = frame.rocks[_e52]; let _e55 = i_10; let _e56 = rockSdf(p_9, _e55); let _e57 = d_1; let _e58 = d_1; d_1 = min(_e57, mix(4f, _e58, smoothstep((-(rk.z) * 0.2f), (rk.z * 1.1f), _e56))); } continuing { let _e70 = i_10; i_10 = (_e70 + 1i); } } let _e73 = d_1; return max(_e73, 4f); } fn canopy(p_10: vec2) -> f32 { let _e3 = frame.view; let wh_1 = _e3.xy; let m_1 = min(wh_1.x, wh_1.y); let q_1 = (p_10 / vec2(m_1)); let sway = frame.misc.x; let reach = (1f - smoothstep(0.15f, 0.95f, length(((q_1 * vec2(0.75f, 1f)) - vec2(-0.05f, -0.08f))))); let w = vec2((sin(sway) * 3f), (cos((sway * 0.7f)) * 2f)); let _e42 = fbm3_(((p_10 * 0.006f) + (w * 0.08f))); let _e52 = fbm3_((((p_10 * 0.03f) + (w * 0.25f)) + vec2((_e42 * 2f)))); let cover = (((reach * 1.15f) + ((_e42 - 0.5f) * 0.6f)) + ((_e52 - 0.5f) * 0.55f)); return (1f - (0.8f * smoothstep(0.47f, 0.53f, cover))); } fn padSdf(p_11: vec2, i_11: i32) -> f32 { var sd: f32; let pd = frame.pads[i_11]; let px = frame.padx[i_11]; let _e14 = rot2_((p_11 - pd.xy), -(pd.w)); let len = length(_e14); let ang = atan2(_e14.y, _e14.x); let edge_1 = (pd.z * ((1f + (0.022f * sin(((ang * 7f) + px.z)))) + (0.012f * sin(((ang * 15f) + (px.z * 2f)))))); sd = (len - edge_1); let wedge = ((abs(ang) - (px.x * (1f - ((0.35f * len) / pd.z)))) * len); let _e53 = sd; sd = max(_e53, -(wedge)); let _e56 = sd; return _e56; } fn padsSdf(p_12: vec2) -> f32 { var d_2: f32 = 100000f; var i_12: i32 = 0i; let _e6 = frame.counts.y; let n_4 = i32(_e6); loop { let _e10 = i_12; if (_e10 < n_4) { } else { break; } { let _e12 = d_2; let _e13 = i_12; let _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } continuing { let _e16 = i_12; i_12 = (_e16 + 1i); } } let _e19 = d_2; return _e19; } fn causticNet(p0_2: vec2, t: f32, iters: i32) -> f32 { var i_13: vec2; var c: f32 = 1f; var n: i32 = 0i; let p_22 = (p0_2 - vec2(250f)); i_13 = p_22; loop { let _e12 = n; if (_e12 < iters) { } else { break; } { let _e14 = n; let tt = (t * (1f - (3.5f / f32((_e14 + 1i))))); let _e24 = i_13.x; let _e28 = i_13.y; let _e33 = i_13.y; let _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); let _e44 = i_13.x; let sx = sin((_e44 + tt)); let _e48 = i_13.y; let sy = cos((_e48 + tt)); let dx = (p_22.x / ((sx + select(0.0001f, -0.0001f, (sx < 0f))) / 0.005f)); let dy = (p_22.y / ((sy + select(0.0001f, -0.0001f, (sy < 0f))) / 0.005f)); let _e69 = c; c = (_e69 + (1f / max(length(vec2(dx, dy)), 0.001f))); } continuing { let _e77 = n; n = (_e77 + 1i); } } let _e80 = c; c = (_e80 / f32(iters)); let _e83 = c; c = (1.17f - pow(max(_e83, 0f), 1.4f)); let _e90 = c; return clamp(pow(abs(_e90), 8f), 0f, 4f); } fn simUv(p_13: vec2) -> vec2 { let _e3 = frame.sim; let _e8 = frame.sim.z; return (p_13 / (_e3.xy * _e8)); } fn ripple(p_14: vec2) -> vec4 { let _e3 = simUv(p_14); let _e5 = textureSampleLevel(heightTex, samp, _e3, 0f); return _e5; } fn rippleFocus(ps: vec2, d_3: f32) -> f32 { let _e5 = frame.sim.z; let e = (_e5 * 1.5f); let _e8 = ripple(ps); let h0_ = _e8.x; let _e14 = ripple((ps + vec2(-(e), 0f))); let hl = _e14.x; let _e19 = ripple((ps + vec2(e, 0f))); let hr = _e19.x; let _e25 = ripple((ps + vec2(0f, -(e)))); let hu = _e25.x; let _e30 = ripple((ps + vec2(0f, e))); let hd = _e30.x; let lap = (((((hl + hr) + hu) + hd) - (4f * h0_)) / (e * e)); let det = (1f - (((0.24981245f * d_3) * lap) * 0.9f)); return clamp((1f / max(det, 0.4f)), 0.45f, 2.1f); } fn padShadow(p_15: vec2, d_4: f32) -> f32 { let _e2 = towardSun(); let ps_2 = (p_15 + (_e2 * d_4)); let _e5 = padsSdf(ps_2); let blur = (1.5f + (d_4 * 0.05f)); return mix(0.28f, 1f, smoothstep(-(blur), blur, _e5)); } fn rockShadow(p_16: vec2, d_5: f32) -> f32 { var s: f32 = 1f; var i_14: i32 = 0i; let _e7 = frame.counts.x; let n_5 = i32(_e7); loop { let _e11 = i_14; if (_e11 < n_5) { } else { break; } { let _e15 = i_14; let rk_1 = frame.rocks[_e15]; let hgt = (rk_1.z * 0.8f); let _e23 = frame.sun; let _e28 = frame.sun.z; let _e32 = towardSun(); let off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); let _e36 = i_14; let _e37 = rockSdf((p_16 + off), _e36); let sd_1 = (_e37 - (rk_1.z * 0.1f)); let _e42 = s; s = min(_e42, mix(0.25f, 1f, smoothstep((-8f - (d_5 * 0.05f)), (6f + (d_5 * 0.05f)), sd_1))); } continuing { let _e56 = i_14; i_14 = (_e56 + 1i); } } let _e59 = s; return _e59; } fn loadH(c_1: vec2, size: vec2) -> vec4 { let _e10 = textureLoad(heightTex, clamp(c_1, vec2(0i), (size - vec2(1i))), 0i); return _e10; } fn band(x: f32, edge: f32, soft: f32) -> f32 { return smoothstep((edge - soft), (edge + soft), x); } fn pebbleColor(h_1: f32) -> vec3 { if (h_1 < 0.16f) { return vec3(0.9f, 0.78f, 0.55f); } if (h_1 < 0.3f) { return vec3(0.8f, 0.52f, 0.36f); } if (h_1 < 0.44f) { return vec3(0.56f, 0.64f, 0.74f); } if (h_1 < 0.58f) { return vec3(0.97f, 0.93f, 0.82f); } if (h_1 < 0.7f) { return vec3(0.62f, 0.7f, 0.46f); } if (h_1 < 0.82f) { return vec3(0.66f, 0.56f, 0.62f); } if (h_1 < 0.92f) { return vec3(0.82f, 0.72f, 0.62f); } return vec3(0.92f, 0.62f, 0.46f); } fn stoneDensity(c_2: vec2, layer: i32) -> f32 { let _e7 = fbm3_(((c_2 * 0.0032f) + vec2(9f))); let _e10 = vnoise((c_2 * 0.02f)); let cl = (_e7 + ((_e10 - 0.5f) * 0.12f)); let _e16 = bedDepthCalc(c_2); let shallow = (1f - smoothstep(50f, 180f, _e16)); let _e24 = band(_e16, 150f, 40f); if (layer == 0i) { let _e32 = band((cl + (shallow * 0.06f)), 0.47f, 0.05f); return (((_e32 * 0.6f) * (1f - (_e24 * 0.8f))) + 0.02f); } if (layer == 1i) { let _e49 = band((cl + (shallow * 0.08f)), 0.53f, 0.04f); return (((_e49 * 0.82f) * (1f - (_e24 * 0.6f))) + 0.03f); } let _e61 = band(cl, 0.53f, 0.06f); return ((_e61 * 0.22f) + 0.025f); } fn stones(p_17: vec2, cell: f32, seed: f32, layer_1: i32, size_1: f32) -> Stones { var o_1: Stones; var best: f32 = 0f; var j_1: i32 = -1i; var i_15: i32; var col_2: vec3; o_1.col = vec3(0f); o_1.cover = 0f; o_1.ao = 1f; let g_3 = floor((p_17 / vec2(cell))); let _e20 = frame.sun; let sun2_ = normalize((_e20.xy + vec2(0.0001f))); loop { let _e28 = j_1; if (_e28 <= 1i) { } else { break; } { i_15 = -1i; loop { let _e33 = i_15; if (_e33 <= 1i) { } else { break; } { let _e36 = i_15; let _e38 = j_1; let id_1 = ((g_3 + vec2(f32(_e36), f32(_e38))) + vec2(seed)); let _e44 = hash22_(id_1); let _e45 = i_15; let _e47 = j_1; let c_6 = ((((g_3 + vec2(f32(_e45), f32(_e47))) + vec2(0.1f)) + (_e44 * 0.8f)) * cell); let _e63 = hash12_(((id_1 * 1.37f) + vec2(5f))); let _e64 = stoneDensity(c_6, layer_1); if (_e63 > _e64) { continue; } let _e70 = hash12_((id_1 + vec2(2f))); let r_4 = ((cell * size_1) * (0.3f + (0.7f * pow(_e70, 1.6f)))); let _e81 = hash12_((id_1 + vec2(3f))); let asp = (0.5f + (0.5f * _e81)); let _e89 = hash12_((id_1 + vec2(4f))); let ang_1 = (_e89 * 6.2831855f); let _e94 = rot2_((p_17 - c_6), -(ang_1)); let q_2 = (_e94 / vec2(r_4, (r_4 * asp))); let d_11 = length(q_2); let _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4f)), -(ang_1)); let qs = (_e105 / vec2(r_4, (r_4 * asp))); let _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6f, 1f, smoothstep(0.95f, 1.12f, length(qs)))); if (d_11 < 1f) { let dome = sqrt((1f - (d_11 * d_11))); let _e126 = best; if (dome > _e126) { best = dome; let _e133 = rot2_((q_2 * vec2(1f, (1f / asp))), ang_1); let n_6 = normalize(vec3((_e133 * 0.9f), (dome + 0.15f))); let _e142 = frame.sun; let ndl = dot(n_6, _e142.xyz); let _e148 = hash12_((id_1 + vec2(7f))); let _e155 = vnoise(((c_6 * 0.004f) + vec2(seed))); let hue = fract(((_e148 * 0.4f) + (_e155 * 1.3f))); let _e160 = pebbleColor(hue); col_2 = _e160; let _e162 = col_2; let _e169 = vnoise(((q_2 * 2.5f) + vec2((hue * 50f)))); col_2 = (_e162 * (0.94f + (0.12f * _e169))); let _e175 = col_2; let _e181 = col_2; let _e184 = band(ndl, 0.5f, 0.05f); col_2 = mix((_e175 * vec3(0.66f, 0.7f, 0.84f)), _e181, _e184); let _e186 = col_2; let _e187 = col_2; let _e197 = band(ndl, 0.9f, 0.025f); col_2 = mix(_e186, ((_e187 * 1.12f) + vec3(0.08f, 0.07f, 0.04f)), _e197); let lw = (1.1f / r_4); let _e201 = col_2; let _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45f, 0.42f, 0.5f)), smoothstep((1f - (lw * 2f)), (1f - (lw * 0.6f)), d_11)); let _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1f, (1f - (lw * 0.7f)), d_11); } } } continuing { let _e227 = i_15; i_15 = (_e227 + 1i); } } } continuing { let _e230 = j_1; j_1 = (_e230 + 1i); } } let _e233 = o_1; return _e233; } fn ground(p_18: vec2, d_6: f32) -> vec3 { var sand: vec3; var col_3: vec3; var leaf: vec3; let _e4 = fbm3_((p_18 * 0.006f)); let _e15 = band(_e4, 0.5f, 0.08f); sand = mix(vec3(0.95f, 0.86f, 0.64f), vec3(0.9f, 0.78f, 0.56f), _e15); let _e18 = sand; let _e28 = fbm3_(((p_18 * 0.012f) + vec2(7f))); let _e31 = band(_e28, 0.62f, 0.04f); sand = mix(_e18, vec3(0.98f, 0.92f, 0.74f), (_e31 * 0.6f)); let _e38 = voronoi((p_18 / vec2(6f))); let _e39 = sand; let _e40 = sand; let _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8f), (smoothstep(0.16f, 0.1f, _e38.f1_) * step(0.7f, _e48))); let _e55 = band(d_6, 150f, 40f); let _e69 = fbm3_(((p_18 * 0.01f) + vec2(20f))); let _e72 = band(_e69, 0.5f, 0.08f); let floorDeep = mix(vec3(0.46f, 0.58f, 0.5f), vec3(0.36f, 0.5f, 0.46f), _e72); let _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); let shallowS = (1f - smoothstep(60f, 160f, d_6)); let _e88 = fbm3_((p_18 * 0.006f)); let sl = sin((dot(p_18, vec2(0.05f, 0.03f)) + (_e88 * 9f))); let _e93 = col_3; let _e94 = col_3; let _e102 = band(sl, 0.9f, 0.04f); col_3 = mix(_e93, ((_e94 * 1.06f) + vec3(0.02f)), ((_e102 * shallowS) * 0.6f)); let _e111 = stones(p_18, 10f, 3f, 0i, 0.6f); let _e112 = col_3; col_3 = (_e112 * _e111.ao); let _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); let _e123 = stones(p_18, 30f, 11f, 1i, 0.62f); let _e124 = col_3; col_3 = (_e124 * _e123.ao); let _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); let _e135 = stones(p_18, 90f, 17f, 2i, 0.55f); let _e136 = col_3; col_3 = (_e136 * _e135.ao); let _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); let _e148 = fbm3_(((p_18 * 0.008f) + vec2(40f))); let _e151 = band(_e148, 0.62f, 0.02f); let algae = (_e151 * smoothstep(40f, 120f, d_6)); let _e156 = col_3; let _e167 = vnoise((p_18 * 0.08f)); let _e170 = band(_e167, 0.5f, 0.1f); col_3 = mix(_e156, mix(vec3(0.48f, 0.66f, 0.3f), vec3(0.38f, 0.58f, 0.28f), _e170), (algae * 0.8f)); let _e181 = voronoi(((p_18 / vec2(85f)) + vec2(5f))); let _e186 = hash12_((_e181.id + vec2(3f))); if (_e186 > 0.78f) { let _e194 = rot2_((_e181.rel * 85f), (_e186 * 40f)); let ls = (length((_e194 * vec2(1f, 2.3f))) - 15f); let _e214 = hash12_((_e181.id + vec2(9f))); let lc = mix(vec3(0.92f, 0.56f, 0.26f), vec3(0.8f, 0.72f, 0.3f), _e214); let _e221 = band(_e194.y, 0f, 0.5f); leaf = mix((lc * 0.85f), lc, _e221); let _e224 = leaf; leaf = mix(_e224, (lc * 0.6f), (smoothstep(0.7f, 0.2f, abs(_e194.y)) * smoothstep(14f, 10f, abs(_e194.x)))); let _e239 = leaf; leaf = mix(_e239, (lc * 0.5f), smoothstep(-2.4f, -0.8f, ls)); let _e246 = col_3; let _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6f, -0.6f, ls)); } let _e252 = col_3; return _e252; } fn lightNet(ps_1: vec2, d_7: f32) -> f32 { let _e2 = time(); let t_2 = ((_e2 * 0.36f) + 23f); let _e7 = time(); let slow = (_e7 * 0.015f); let _e15 = fbm3_(((ps_1 * 0.0035f) + vec2(slow, 0f))); let _e22 = fbm3_(((ps_1 * 0.0035f) + vec2(5.2f, -(slow)))); let warp = (vec2(_e15, _e22) - vec2(0.5f)); let q_3 = (ps_1 + (warp * 140f)); let _e34 = causticNet((q_3 / vec2(36f)), t_2, 4i); let _e36 = rot2_(q_3, 1.13f); let _e48 = causticNet(((_e36 / vec2(53f)) + vec2(17f)), ((t_2 * 0.83f) + 5f), 3i); let c_7 = max(_e34, (_e48 * 0.9f)); let soft_1 = (0.03f + ((d_7 / 260f) * 0.08f)); let _e68 = fbm3_((((ps_1 * 0.0028f) + vec2(-(slow), (slow * 0.7f))) + vec2(31f))); let _e71 = band(_e68, 0.45f, 0.14f); let _e73 = band(c_7, 0.24f, soft_1); return ((_e73 * mix(0.2f, 1f, _e71)) * (1f - (smoothstep(110f, 300f, d_7) * 0.6f))); } fn waterTint(col_4: vec3, d_8: f32, lit: f32) -> vec3 { let t_3 = clamp((d_8 / 250f), 0f, 1f); let q_4 = (t_3 * 4f); let tq = ((floor(q_4) + smoothstep(0.3f, 0.7f, fract(q_4))) / 4f); let shallowC = vec3(0.62f, 0.92f, 0.7f); let midC = vec3(0.22f, 0.72f, 0.74f); let deepC = vec3(0.1f, 0.42f, 0.62f); let wc = mix(mix(shallowC, midC, smoothstep(0f, 0.5f, tq)), deepC, smoothstep(0.45f, 1f, tq)); let amt = mix(0.1f, 0.72f, tq); let tinted = (col_4 * mix(vec3(1f), (wc * 1.25f), (0.35f + (0.3f * tq)))); return mix(tinted, (wc * (0.72f + (0.28f * lit))), amt); } fn windSlope(p_19: vec2) -> vec2 { var g_1: vec2 = vec2(0f); var i_16: i32 = 0i; let _e1 = time(); let _e13 = frame.misc.y; let _e16 = fbm3_((((p_19 * 0.0025f) + vec2((_e1 * 0.018f), (_e1 * 0.011f))) + vec2(_e13))); let gust = smoothstep(0.48f, 0.78f, _e16); let dirs = array, 4>(vec2(0.94f, 0.34f), vec2(0.62f, 0.78f), vec2(0.99f, -0.12f), vec2(0.45f, 0.89f)); let lens = array(11f, 7.5f, 15f, 5.5f); loop { let _e43 = i_16; if (_e43 < 4i) { } else { break; } { let _e46 = i_16; let kk = (6.2831855f / lens[_e46]); let w_1 = sqrt(((9.8f * kk) * 120f)); let _e55 = i_16; let _e63 = i_16; let _e70 = i_16; let _e74 = vnoise(((p_19 * 0.02f) + vec2(f32(_e70)))); let ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06f)) + (f32(_e63) * 1.7f)) + (_e74 * 3f)); let _e78 = g_1; let _e79 = i_16; let _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018f + (0.008f * f32((_e83 & 1i)))))); } continuing { let _e93 = i_16; i_16 = (_e93 + 1i); } } let _e96 = g_1; return (_e96 * (0.18f + (0.82f * gust))); } fn viewRay(p_20: vec2) -> vec3 { let _e3 = frame.view; let _e10 = frame.sun.w; let cam = vec3((_e3.xy * 0.5f), _e10); return normalize((vec3(p_20, 0f) - cam)); } fn sparkles(p_21: vec2, lit_1: f32) -> f32 { let g_4 = floor((p_21 / vec2(24f))); let _e9 = hash22_((g_4 + vec2(3f))); let c_8 = (((g_4 + vec2(0.3f)) + (_e9 * 0.4f)) * 24f); let _e17 = ripple(c_8); let _e19 = windSlope(c_8); let sl_1 = ((_e17.zw + _e19) * 1.9f); let n_7 = normalize(vec3(-(sl_1), 1f)); let _e27 = viewRay(c_8); let r_5 = reflect(_e27, n_7); let _e29 = sunDir(); let spec = pow(max(dot(r_5, _e29), 0f), 50f); let _e35 = time(); let twinkle = (0.55f + (0.45f * sin(((_e35 * 4f) + (_e9.x * 40f))))); let _e50 = band((spec * twinkle), 0.3f, 0.15f); let _e53 = band(lit_1, 0.6f, 0.1f); let inten = (_e50 * _e53); if (inten <= 0f) { return 0f; } let size_2 = (4f + ((6f * inten) * (0.6f + (0.4f * _e9.y)))); let q_5 = (p_21 - c_8); let core = smoothstep((size_2 * 0.3f), (size_2 * 0.1f), length(q_5)); let ray = ((smoothstep(size_2, 0f, abs(q_5.x)) * smoothstep(1f, 0.2f, abs(q_5.y))) + (smoothstep(size_2, 0f, abs(q_5.y)) * smoothstep(1f, 0.2f, abs(q_5.x)))); return (clamp((core + ray), 0f, 1f) * inten); } fn skyColor(r: vec3, lit_2: f32) -> vec3 { var c_3: vec3; let up = clamp(r.z, 0f, 1f); c_3 = mix(vec3(0.82f, 0.93f, 1f), vec3(0.42f, 0.68f, 0.98f), pow(up, 2f)); let cp = ((r.xy / vec2(max(r.z, 0.15f))) * 2.2f); let _e28 = time(); let _e34 = fbm3_(((cp * 1.4f) + vec2((_e28 * 0.004f), 0f))); let _e37 = band(_e34, 0.6f, 0.04f); let _e38 = c_3; c_3 = mix(_e38, vec3(1f, 1f, 0.97f), (_e37 * 0.9f)); let _e48 = frame.sun; let toSun = max(dot(r, _e48.xyz), 0f); let _e53 = c_3; c_3 = (_e53 * (0.8f + (1f * pow(toSun, 5f)))); let leaf_1 = ((1f - lit_2) / 0.8f); let _e65 = c_3; c_3 = mix(_e65, vec3(0.16f, 0.3f, 0.14f), clamp((leaf_1 * 1.2f), 0f, 1f)); let _e76 = c_3; return _e76; } fn overlayBlend(c_4: vec3, t_1: vec3) -> vec3 { let lo = ((2f * c_4) * t_1); let hi = (vec3(1f) - ((2f * (vec3(1f) - c_4)) * (vec3(1f) - t_1))); return select(hi, lo, (c_4 < vec3(0.5f))); } fn paperTone(uv: vec2) -> vec3 { var b: vec3; let _e3 = frame.view; let wh_2 = _e3.xy; let p_23 = (uv * wh_2); let _e8 = vnoise((p_23 * 1.6f)); let _e16 = vnoise(((p_23 * 0.45f) + vec2(11f))); let grain = (((_e8 * 0.5f) + (_e16 * 0.5f)) - 0.5f); let _e37 = vnoise(vec2(((p_23.x * 0.04f) + (p_23.y * 0.015f)), ((p_23.y * 0.35f) - (p_23.x * 0.08f)))); let brush = (_e37 - 0.5f); b = vec3(((0.5f + (grain * 0.05f)) + (brush * 0.03f))); let vq = ((uv - vec2(0.5f)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); let vig = (smoothstep(0.4f, 0.85f, length(vq)) * 0.6f); let _e70 = b; b = (_e70 * mix(vec3(1f), vec3(0.8f, 0.86f, 0.94f), vig)); let bloom = smoothstep(0.75f, 0f, length(((uv - vec2(1.02f, -0.05f)) * vec2((wh_2.x / wh_2.y), 1f)))); let _e93 = b; b = (_e93 + (((vec3(1f, 0.92f, 0.66f) * bloom) * bloom) * 0.09f)); let _e103 = b; return clamp(_e103, vec3(0f), vec3(1f)); } @vertex fn vs_full(@builtin(vertex_index) vi: u32) -> FullOut { var o: FullOut; let x_1 = ((f32(((vi << 1u) & 2u)) * 2f) - 1f); let y = ((f32((vi & 2u)) * 2f) - 1f); o.clip = vec4(x_1, y, 0f, 1f); o.uv = vec2(((x_1 * 0.5f) + 0.5f), (0.5f - (y * 0.5f))); let _e32 = o; return _e32; } @fragment fn fs_sim(i: FullOut) -> @location(0) vec4 { var vel: f32; var h: f32; var k: i32 = 0i; let _e2 = textureDimensions(heightTex); let size_3 = vec2(_e2); let c_9 = vec2(floor((i.uv * vec2(size_3)))); let _e9 = loadH(c_9, size_3); let _e14 = loadH((c_9 + vec2(-1i, 0i)), size_3); let l = _e14.x; let _e20 = loadH((c_9 + vec2(1i, 0i)), size_3); let r_6 = _e20.x; let _e26 = loadH((c_9 + vec2(0i, -1i)), size_3); let u_1 = _e26.x; let _e32 = loadH((c_9 + vec2(0i, 1i)), size_3); let d_12 = _e32.x; let _e38 = loadH((c_9 + vec2(-1i, -1i)), size_3); let ul = _e38.x; let _e44 = loadH((c_9 + vec2(1i, -1i)), size_3); let ur = _e44.x; let _e50 = loadH((c_9 + vec2(-1i, 1i)), size_3); let dl = _e50.x; let _e56 = loadH((c_9 + vec2(1i, 1i)), size_3); let dr = _e56.x; let avg = (((((l + r_6) + u_1) + d_12) * 0.2f) + ((((ul + ur) + dl) + dr) * 0.05f)); vel = (_e9.y + ((avg - _e9.x) * 1.9f)); let _e80 = loadH((c_9 + vec2(-1i, 0i)), size_3); let _e86 = loadH((c_9 + vec2(1i, 0i)), size_3); let _e93 = loadH((c_9 + vec2(0i, -1i)), size_3); let _e100 = loadH((c_9 + vec2(0i, 1i)), size_3); let avgV = ((((_e80.y + _e86.y) + _e93.y) + _e100.y) * 0.25f); let _e105 = vel; let _e106 = vel; vel = (_e105 + ((avgV - _e106) * 0.07f)); let _e111 = vel; vel = (_e111 * 0.997f); let _e115 = vel; h = (_e9.x + _e115); let _e118 = h; h = (_e118 * 0.9992f); let cell_1 = frame.sim.z; let p_24 = ((vec2(c_9) + vec2(0.5f)) * cell_1); let _e133 = frame.sim.w; let nd = i32(_e133); loop { let _e137 = k; if (_e137 < nd) { } else { break; } { let _e141 = k; let dr0_ = frame.drops[_e141]; let t_4 = (length((p_24 - dr0_.xy)) / dr0_.z); if (t_4 < 1f) { let _e151 = h; h = (_e151 + ((0.5f + (0.5f * cos((t_4 * 3.1415927f)))) * dr0_.w)); } } continuing { let _e162 = k; k = (_e162 + 1i); } } let _e165 = padsSdf(p_24); if (_e165 < 0f) { let _e168 = vel; vel = (_e168 * 0.94f); let _e171 = h; h = (_e171 * 0.985f); } let _e174 = rocksSdf(p_24); if (_e174 < 0f) { h = 0f; vel = 0f; } let gx = ((r_6 - l) / (2f * cell_1)); let gy = ((d_12 - u_1) / (2f * cell_1)); let _e187 = h; let _e188 = vel; return vec4(_e187, _e188, gx, gy); } @fragment fn fs_ground(i_1: FullOut) -> @location(0) vec4 { let _e4 = frame.view; let p_25 = (i_1.uv * _e4.xy); let _e7 = bedDepthCalc(p_25); let _e8 = ground(p_25, _e7); return vec4(clamp(_e8, vec3(0f), vec3(1f)), clamp((_e7 / 320f), 0f, 1f)); } @fragment fn fs_light(i_2: FullOut) -> @location(0) vec4 { let _e4 = frame.view; let p_26 = (i_2.uv * _e4.xy); let _e7 = bedDepth(p_26); let _e8 = towardSun(); let ps_3 = (p_26 + (_e8 * _e7)); let _e11 = canopy(ps_3); let _e12 = ripple(ps_3); let _e18 = lightNet((ps_3 + ((_e12.zw * _e7) * 0.6f)), _e7); let _e19 = padShadow(p_26, _e7); let _e20 = rockShadow(p_26, _e7); let _e24 = band((_e19 * _e20), 0.62f, 0.08f); let _e25 = towardSun(); let kps = (p_26 + (_e25 * 30f)); let _e29 = canopy(kps); let _e31 = padShadow(p_26, 30f); let _e34 = band(_e31, 0.62f, 0.08f); let ksun = (_e29 * _e34); let _e37 = canopy(p_26); return vec4((_e11 * _e24), _e18, ksun, _e37); } @fragment fn fs_bed(i_3: FullOut) -> @location(0) vec4 { var g: vec3; var col: vec3; var k_1: vec3; let _e4 = frame.view; let p_27 = (i_3.uv * _e4.xy); let gt = textureSampleLevel(groundTex, samp, i_3.uv, 0f); let d_13 = (gt.w * 320f); g = gt.xyz; let wd = textureSampleLevel(weedTex, samp, i_3.uv, 0f); let _e22 = g; g = ((_e22 * (1f - wd.w)) + wd.xyz); let dd = (d_13 * (1f - (wd.w * 0.35f))); let lt = textureSampleLevel(lightTex, samp, i_3.uv, 0f); let sunB = lt.x; let net = lt.y; let lit_3 = lt.w; let _e43 = towardSun(); let ps_4 = (p_27 + (_e43 * dd)); let _e46 = rippleFocus(ps_4, dd); let _e47 = g; let _e53 = g; col = mix((_e47 * vec3(0.58f, 0.68f, 0.8f)), (_e53 * vec3(1.05f, 1f, 0.9f)), sunB); let _e65 = textureSampleLevel(koiShadowTex, samp, i_3.uv, 0f); let ks = _e65.w; let _e67 = col; col = (_e67 * (vec3(1f) - ((ks * vec3(0.75f, 0.55f, 0.35f)) * (0.3f + (0.7f * lit_3))))); let _e82 = col; col = (_e82 + (((((vec3(1f, 0.97f, 0.78f) * net) * sunB) * clamp(_e46, 0.6f, 1.6f)) * 0.28f) * (1f - ks))); let _e99 = col; let _e106 = band(_e46, 1.45f, 0.12f); col = (_e99 + (((vec3(1f, 0.96f, 0.8f) * _e106) * sunB) * 0.18f)); let _e112 = col; let _e113 = waterTint(_e112, dd, lit_3); col = _e113; let kc = textureSampleLevel(koiTex, samp, i_3.uv, 0f); if (kc.w > 0.002f) { k_1 = (kc.xyz / vec3(kc.w)); let ksun_1 = lt.z; let _e128 = k_1; let _e134 = k_1; k_1 = mix((_e128 * vec3(0.74f, 0.8f, 0.92f)), _e134, ksun_1); let _e136 = k_1; k_1 = (_e136 + (((vec3(1f, 0.97f, 0.8f) * net) * ksun_1) * 0.16f)); let _e146 = k_1; let _e147 = k_1; let _e149 = waterTint(_e147, 30f, ksun_1); k_1 = mix(_e146, _e149, 0.35f); let _e152 = col; let _e153 = k_1; col = mix(_e152, _e153, kc.w); } let _e156 = col; return vec4(_e156, 1f); } @fragment fn fs_water(i_4: FullOut) -> @location(0) vec4 { var col_1: vec3; let _e4 = frame.view; let p_28 = (i_4.uv * _e4.xy); let _e10 = frame.view.z; let px_1 = (1f / _e10); let _e15 = frame.view; let wh_3 = _e15.xy; let _e17 = time(); let _e18 = sunDir(); let sun2_1 = normalize(_e18.xy); let _e21 = ripple(p_28); let t2_ = (_e17 * 0.35f); let sway_1 = vec2(sin((((p_28.y * 0.012f) + t2_) + sin(((p_28.x * 0.007f) - (t2_ * 0.6f))))), cos((((p_28.x * 0.011f) - (t2_ * 0.8f)) + sin(((p_28.y * 0.009f) + t2_))))); let slope = (_e21.zw + (sway_1 * 0.006f)); let nrm = normalize(vec3((-(slope) * 1.6f), 1f)); let _e61 = bedDepth(p_28); let _e66 = textureSampleLevel(lightTex, samp, i_4.uv, 0f); let lit_4 = _e66.w; let _e70 = band(lit_4, 0.6f, 0.1f); let _e71 = viewRay(p_28); let tr = refract(_e71, nrm, 0.7501876f); let t0_ = refract(_e71, vec3(0f, 0f, 1f), 0.7501876f); let off_1 = ((((tr.xy / vec2(max(-(tr.z), 0.2f))) - (t0_.xy / vec2(max(-(t0_.z), 0.2f)))) * min(_e61, 200f)) * 0.8f); let _e105 = textureSampleLevel(floorTex, samp, ((p_28 + off_1) / wh_3), 0f); col_1 = _e105.xyz; let r_7 = reflect(_e71, nrm); let cosi = clamp(dot(-(_e71), nrm), 0f, 1f); let fres = (0.03f + (0.97f * pow((1f - cosi), 5f))); let _e122 = col_1; let _e123 = skyColor(r_7, lit_4); col_1 = mix(_e122, _e123, clamp((fres * 1.5f), 0f, 1f)); let rs = max(dot(r_7, _e18), 0f); let _e133 = col_1; let _e142 = band(pow(rs, 7f), 0.45f, 0.25f); col_1 = (_e133 + (((vec3(1f, 0.95f, 0.75f) * _e142) * 0.14f) * (0.4f + (0.6f * _e70)))); let hgt_1 = _e21.x; let _e155 = vnoise((p_28 * 0.09f)); let _e158 = vnoise((p_28 * 0.3f)); let _e164 = band((_e155 + (_e158 * 0.4f)), 0.45f, 0.12f); let _e168 = band(-(hgt_1), 0.18f, 0.06f); let _e169 = col_1; let _e170 = col_1; col_1 = mix(_e169, (_e170 * vec3(0.84f, 0.92f, 0.98f)), (_e168 * 0.5f)); let e_1 = frame.sim.z; let _e186 = ripple((p_28 + vec2(e_1, 0f))); let _e191 = ripple((p_28 - vec2(e_1, 0f))); let _e197 = ripple((p_28 + vec2(0f, e_1))); let _e203 = ripple((p_28 - vec2(0f, e_1))); let lap_1 = (((((_e186.x + _e191.x) + _e197.x) + _e203.x) - (4f * hgt_1)) / (e_1 * e_1)); let toCrest = (length(_e21.zw) / max(-(lap_1), 0.0001f)); let _e219 = band(hgt_1, 0.5f, 0.3f); let lineW = (1.2f + (2.2f * _e219)); let onCrest = (smoothstep((lineW + px_1), (lineW - px_1), toCrest) * step(0f, -(lap_1))); let _e233 = band(hgt_1, 0.1f, 0.04f); let _e240 = band(hgt_1, 0.03f, 0.012f); let crest = (onCrest * ((_e233 * mix(0.45f, 1f, _e164)) + ((_e240 * 0.35f) * _e164))); let _e246 = col_1; col_1 = mix(_e246, vec3(0.96f, 1f, 1f), (crest * 0.62f)); let _e254 = col_1; let _e259 = sparkles(p_28, lit_4); col_1 = mix(_e254, vec3(1f, 1f, 0.92f), _e259); let _e261 = col_1; let _e268 = paperTone(i_4.uv); let _e269 = overlayBlend(clamp(_e261, vec3(0f), vec3(1f)), _e268); col_1 = _e269; let _e270 = col_1; let lum = dot(_e270, vec3(0.299f, 0.587f, 0.114f)); let _e277 = col_1; col_1 = mix(vec3(lum), _e277, 1.1f); let _e280 = col_1; return vec4(clamp(_e280, vec3(0f), vec3(1f)), 1f); }  ¼SWwý«²ªÓžê0¸—<Ÿvs_fullmain®"#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; smooth out vec2 _vs2fs_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e77 = n; n = (_e77 + 1); } loop_init_4 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_2 = clamp((d_8 / 250.0), 0.0, 1.0); float q = (t_2 * 4.0); float tq = ((floor(q) + smoothstep(0.3, 0.7, fract(q))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } void main() { uint vi = uint(gl_VertexID); FullOut o = FullOut(vec4(0.0), vec2(0.0)); float x_1 = ((float(((vi << 1u) & 2u)) * 2.0) - 1.0); float y = ((float((vi & 2u)) * 2.0) - 1.0); o.clip = vec4(x_1, y, 0.0, 1.0); o.uv = vec2(((x_1 * 0.5) + 0.5), (0.5 - (y * 0.5))); FullOut _e32 = o; gl_Position = _e32.clip; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_simmain‡v#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; layout(std140) uniform Frame_block_0Fragment { Frame _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } vec3 sunDir() { vec4 _e2 = _group_0_binding_0_fs.sun; return _e2.xyz; } vec3 sunInWater() { vec4 _e2 = _group_0_binding_0_fs.sun; vec2 h_2 = (_e2.xy / vec2(1.333)); return vec3(h_2, sqrt(max(0.0, (1.0 - dot(h_2, h_2))))); } vec2 towardSun() { vec3 _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } float time() { float _e3 = _group_0_binding_0_fs.view.w; return _e3; } float rockSdf(vec2 p_6, int i_8) { vec4 r_2 = _group_0_binding_0_fs.rocks[i_8]; vec2 d_10 = (p_6 - r_2.xy); float a_3 = atan(d_10.y, d_10.x); float s_2 = r_2.w; float wob = ((((0.1 * sin(((2.0 * a_3) + s_2))) + (0.07 * sin(((3.0 * a_3) + (s_2 * 2.3))))) + (0.035 * sin(((7.0 * a_3) + (s_2 * 4.1))))) + (0.015 * sin(((13.0 * a_3) + (s_2 * 1.7))))); return (length(d_10) - (r_2.z * (1.0 + wob))); } float rocksSdf(vec2 p_7) { float d = 100000.0; int i_9 = 0; float _e6 = _group_0_binding_0_fs.counts.x; int n_2 = int(_e6); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e16 = i_9; i_9 = (_e16 + 1); } loop_init_4 = false; int _e10 = i_9; if ((_e10 < n_2)) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepthCalc(vec2 p_9) { float d_1 = 0.0; int i_10 = 0; vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh = _e3.xy; float m = min(wh.x, wh.y); vec2 q = ((p_9 - (wh * 0.5)) / vec2(m)); float r_3 = length(((q - vec2(0.08, -0.04)) * vec2(0.8, 1.0))); d_1 = mix(240.0, 46.0, smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_(((p_9 * 0.0045) + vec2(3.1))); d_1 = (_e29 + ((_e35 - 0.5) * 70.0)); float _e44 = _group_0_binding_0_fs.counts.x; int n_3 = int(_e44); bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e70 = i_10; i_10 = (_e70 + 1); } loop_init_5 = false; int _e48 = i_10; if ((_e48 < n_3)) { } else { break; } { int _e52 = i_10; vec4 rk = _group_0_binding_0_fs.rocks[_e52]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55); float _e57 = d_1; float _e58 = d_1; d_1 = min(_e57, mix(4.0, _e58, smoothstep((-(rk.z) * 0.2), (rk.z * 1.1), _e56))); } } float _e73 = d_1; return max(_e73, 4.0); } float canopy(vec2 p_10) { vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_1 = _e3.xy; float m_1 = min(wh_1.x, wh_1.y); vec2 q_1 = (p_10 / vec2(m_1)); float sway = _group_0_binding_0_fs.misc.x; float reach = (1.0 - smoothstep(0.15, 0.95, length(((q_1 * vec2(0.75, 1.0)) - vec2(-0.05, -0.08))))); vec2 w = vec2((sin(sway) * 3.0), (cos((sway * 0.7)) * 2.0)); float _e42 = fbm3_(((p_10 * 0.006) + (w * 0.08))); float _e52 = fbm3_((((p_10 * 0.03) + (w * 0.25)) + vec2((_e42 * 2.0)))); float cover = (((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55)); return (1.0 - (0.8 * smoothstep(0.47, 0.53, cover))); } float padSdf(vec2 p_11, int i_11) { float sd = 0.0; vec4 pd = _group_0_binding_0_fs.pads[i_11]; vec4 px = _group_0_binding_0_fs.padx[i_11]; vec2 _e14 = rot2_((p_11 - pd.xy), -(pd.w)); float len = length(_e14); float ang = atan(_e14.y, _e14.x); float edge_1 = (pd.z * ((1.0 + (0.022 * sin(((ang * 7.0) + px.z)))) + (0.012 * sin(((ang * 15.0) + (px.z * 2.0)))))); sd = (len - edge_1); float wedge = ((abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len); float _e53 = sd; sd = max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf(vec2 p_12) { float d_2 = 100000.0; int i_12 = 0; float _e6 = _group_0_binding_0_fs.counts.y; int n_4 = int(_e6); bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e16 = i_12; i_12 = (_e16 + 1); } loop_init_6 = false; int _e10 = i_12; if ((_e10 < n_4)) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e77 = n; n = (_e77 + 1); } loop_init_7 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } vec2 simUv(vec2 p_13) { vec4 _e3 = _group_0_binding_0_fs.sim; float _e8 = _group_0_binding_0_fs.sim.z; return (p_13 / (_e3.xy * _e8)); } float padShadow(vec2 p_15, float d_4) { vec2 _e2 = towardSun(); vec2 ps_2 = (p_15 + (_e2 * d_4)); float _e5 = padsSdf(ps_2); float blur = (1.5 + (d_4 * 0.05)); return mix(0.28, 1.0, smoothstep(-(blur), blur, _e5)); } float rockShadow(vec2 p_16, float d_5) { float s = 1.0; int i_14 = 0; float _e7 = _group_0_binding_0_fs.counts.x; int n_5 = int(_e7); bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e56 = i_14; i_14 = (_e56 + 1); } loop_init_8 = false; int _e11 = i_14; if ((_e11 < n_5)) { } else { break; } { int _e15 = i_14; vec4 rk_1 = _group_0_binding_0_fs.rocks[_e15]; float hgt = (rk_1.z * 0.8); vec4 _e23 = _group_0_binding_0_fs.sun; float _e28 = _group_0_binding_0_fs.sun.z; vec2 _e32 = towardSun(); vec2 off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); int _e36 = i_14; float _e37 = rockSdf((p_16 + off), _e36); float sd_1 = (_e37 - (rk_1.z * 0.1)); float _e42 = s; s = min(_e42, mix(0.25, 1.0, smoothstep((-8.0 - (d_5 * 0.05)), (6.0 + (d_5 * 0.05)), sd_1))); } } float _e59 = s; return _e59; } vec4 loadH(ivec2 c_1, ivec2 size) { vec4 _e10 = texelFetch(_group_0_binding_1_fs, min(max(c_1, ivec2(0)), (size - ivec2(1))), 0); return _e10; } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } float stoneDensity(vec2 c_2, int layer) { float _e7 = fbm3_(((c_2 * 0.0032) + vec2(9.0))); float _e10 = vnoise((c_2 * 0.02)); float cl = (_e7 + ((_e10 - 0.5) * 0.12)); float _e16 = bedDepthCalc(c_2); float shallow = (1.0 - smoothstep(50.0, 180.0, _e16)); float _e24 = band(_e16, 150.0, 40.0); if ((layer == 0)) { float _e32 = band((cl + (shallow * 0.06)), 0.47, 0.05); return (((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02); } if ((layer == 1)) { float _e49 = band((cl + (shallow * 0.08)), 0.53, 0.04); return (((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03); } float _e61 = band(cl, 0.53, 0.06); return ((_e61 * 0.22) + 0.025); } Stones stones(vec2 p_17, float cell, float seed, int layer_1, float size_1) { Stones o_1 = Stones(vec3(0.0), 0.0, 0.0); float best = 0.0; int j_1 = -1; int i_15 = 0; vec3 col_2 = vec3(0.0); o_1.col = vec3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; vec2 g_3 = floor((p_17 / vec2(cell))); vec4 _e20 = _group_0_binding_0_fs.sun; vec2 sun2_ = normalize((_e20.xy + vec2(0.0001))); bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e230 = j_1; j_1 = (_e230 + 1); } loop_init_9 = false; int _e28 = j_1; if ((_e28 <= 1)) { } else { break; } { i_15 = -1; bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e227 = i_15; i_15 = (_e227 + 1); } loop_init_10 = false; int _e33 = i_15; if ((_e33 <= 1)) { } else { break; } { int _e36 = i_15; int _e38 = j_1; vec2 id_1 = ((g_3 + vec2(float(_e36), float(_e38))) + vec2(seed)); vec2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; vec2 c_6 = ((((g_3 + vec2(float(_e45), float(_e47))) + vec2(0.1)) + (_e44 * 0.8)) * cell); float _e63 = hash12_(((id_1 * 1.37) + vec2(5.0))); float _e64 = stoneDensity(c_6, layer_1); if ((_e63 > _e64)) { continue; } float _e70 = hash12_((id_1 + vec2(2.0))); float r_4 = ((cell * size_1) * (0.3 + (0.7 * pow(_e70, 1.6)))); float _e81 = hash12_((id_1 + vec2(3.0))); float asp = (0.5 + (0.5 * _e81)); float _e89 = hash12_((id_1 + vec2(4.0))); float ang_1 = (_e89 * 6.2831855); vec2 _e94 = rot2_((p_17 - c_6), -(ang_1)); vec2 q_2 = (_e94 / vec2(r_4, (r_4 * asp))); float d_11 = length(q_2); vec2 _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4)), -(ang_1)); vec2 qs = (_e105 / vec2(r_4, (r_4 * asp))); float _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6, 1.0, smoothstep(0.95, 1.12, length(qs)))); if ((d_11 < 1.0)) { float dome = sqrt((1.0 - (d_11 * d_11))); float _e126 = best; if ((dome > _e126)) { best = dome; vec2 _e133 = rot2_((q_2 * vec2(1.0, (1.0 / asp))), ang_1); vec3 n_6 = normalize(vec3((_e133 * 0.9), (dome + 0.15))); vec4 _e142 = _group_0_binding_0_fs.sun; float ndl = dot(n_6, _e142.xyz); float _e148 = hash12_((id_1 + vec2(7.0))); float _e155 = vnoise(((c_6 * 0.004) + vec2(seed))); float hue = fract(((_e148 * 0.4) + (_e155 * 1.3))); vec3 _e160 = pebbleColor(hue); col_2 = _e160; vec3 _e162 = col_2; float _e169 = vnoise(((q_2 * 2.5) + vec2((hue * 50.0)))); col_2 = (_e162 * (0.94 + (0.12 * _e169))); vec3 _e175 = col_2; vec3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = mix((_e175 * vec3(0.66, 0.7, 0.84)), _e181, _e184); vec3 _e186 = col_2; vec3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = mix(_e186, ((_e187 * 1.12) + vec3(0.08, 0.07, 0.04)), _e197); float lw = (1.1 / r_4); vec3 _e201 = col_2; vec3 _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45, 0.42, 0.5)), smoothstep((1.0 - (lw * 2.0)), (1.0 - (lw * 0.6)), d_11)); vec3 _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1.0, (1.0 - (lw * 0.7)), d_11); } } } } } } Stones _e233 = o_1; return _e233; } vec3 ground(vec2 p_18, float d_6) { vec3 sand = vec3(0.0); vec3 col_3 = vec3(0.0); vec3 leaf = vec3(0.0); float _e4 = fbm3_((p_18 * 0.006)); float _e15 = band(_e4, 0.5, 0.08); sand = mix(vec3(0.95, 0.86, 0.64), vec3(0.9, 0.78, 0.56), _e15); vec3 _e18 = sand; float _e28 = fbm3_(((p_18 * 0.012) + vec2(7.0))); float _e31 = band(_e28, 0.62, 0.04); sand = mix(_e18, vec3(0.98, 0.92, 0.74), (_e31 * 0.6)); Vor _e38 = voronoi((p_18 / vec2(6.0))); vec3 _e39 = sand; vec3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8), (smoothstep(0.16, 0.1, _e38.f1_) * step(0.7, _e48))); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_(((p_18 * 0.01) + vec2(20.0))); float _e72 = band(_e69, 0.5, 0.08); vec3 floorDeep = mix(vec3(0.46, 0.58, 0.5), vec3(0.36, 0.5, 0.46), _e72); vec3 _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); float shallowS = (1.0 - smoothstep(60.0, 160.0, d_6)); float _e88 = fbm3_((p_18 * 0.006)); float sl = sin((dot(p_18, vec2(0.05, 0.03)) + (_e88 * 9.0))); vec3 _e93 = col_3; vec3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = mix(_e93, ((_e94 * 1.06) + vec3(0.02)), ((_e102 * shallowS) * 0.6)); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6); vec3 _e112 = col_3; col_3 = (_e112 * _e111.ao); vec3 _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62); vec3 _e124 = col_3; col_3 = (_e124 * _e123.ao); vec3 _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55); vec3 _e136 = col_3; col_3 = (_e136 * _e135.ao); vec3 _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_(((p_18 * 0.008) + vec2(40.0))); float _e151 = band(_e148, 0.62, 0.02); float algae = (_e151 * smoothstep(40.0, 120.0, d_6)); vec3 _e156 = col_3; float _e167 = vnoise((p_18 * 0.08)); float _e170 = band(_e167, 0.5, 0.1); col_3 = mix(_e156, mix(vec3(0.48, 0.66, 0.3), vec3(0.38, 0.58, 0.28), _e170), (algae * 0.8)); Vor _e181 = voronoi(((p_18 / vec2(85.0)) + vec2(5.0))); float _e186 = hash12_((_e181.id + vec2(3.0))); if ((_e186 > 0.78)) { vec2 _e194 = rot2_((_e181.rel * 85.0), (_e186 * 40.0)); float ls = (length((_e194 * vec2(1.0, 2.3))) - 15.0); float _e214 = hash12_((_e181.id + vec2(9.0))); vec3 lc = mix(vec3(0.92, 0.56, 0.26), vec3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = mix((lc * 0.85), lc, _e221); vec3 _e224 = leaf; leaf = mix(_e224, (lc * 0.6), (smoothstep(0.7, 0.2, abs(_e194.y)) * smoothstep(14.0, 10.0, abs(_e194.x)))); vec3 _e239 = leaf; leaf = mix(_e239, (lc * 0.5), smoothstep(-2.4, -0.8, ls)); vec3 _e246 = col_3; vec3 _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6, -0.6, ls)); } vec3 _e252 = col_3; return _e252; } float lightNet(vec2 ps_1, float d_7) { float _e2 = time(); float t_2 = ((_e2 * 0.36) + 23.0); float _e7 = time(); float slow = (_e7 * 0.015); float _e15 = fbm3_(((ps_1 * 0.0035) + vec2(slow, 0.0))); float _e22 = fbm3_(((ps_1 * 0.0035) + vec2(5.2, -(slow)))); vec2 warp = (vec2(_e15, _e22) - vec2(0.5)); vec2 q_3 = (ps_1 + (warp * 140.0)); float _e34 = causticNet((q_3 / vec2(36.0)), t_2, 4); vec2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet(((_e36 / vec2(53.0)) + vec2(17.0)), ((t_2 * 0.83) + 5.0), 3); float c_7 = max(_e34, (_e48 * 0.9)); float soft_1 = (0.03 + ((d_7 / 260.0) * 0.08)); float _e68 = fbm3_((((ps_1 * 0.0028) + vec2(-(slow), (slow * 0.7))) + vec2(31.0))); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return ((_e73 * mix(0.2, 1.0, _e71)) * (1.0 - (smoothstep(110.0, 300.0, d_7) * 0.6))); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_3 = clamp((d_8 / 250.0), 0.0, 1.0); float q_4 = (t_3 * 4.0); float tq = ((floor(q_4) + smoothstep(0.3, 0.7, fract(q_4))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec2 windSlope(vec2 p_19) { vec2 g_1 = vec2(0.0); int i_16 = 0; float _e1 = time(); float _e13 = _group_0_binding_0_fs.misc.y; float _e16 = fbm3_((((p_19 * 0.0025) + vec2((_e1 * 0.018), (_e1 * 0.011))) + vec2(_e13))); float gust = smoothstep(0.48, 0.78, _e16); vec2 dirs[4] = vec2[4](vec2(0.94, 0.34), vec2(0.62, 0.78), vec2(0.99, -0.12), vec2(0.45, 0.89)); float lens[4] = float[4](11.0, 7.5, 15.0, 5.5); bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e93 = i_16; i_16 = (_e93 + 1); } loop_init_11 = false; int _e43 = i_16; if ((_e43 < 4)) { } else { break; } { int _e46 = i_16; float kk = (6.2831855 / lens[_e46]); float w_1 = sqrt(((9.8 * kk) * 120.0)); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise(((p_19 * 0.02) + vec2(float(_e70)))); float ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (float(_e63) * 1.7)) + (_e74 * 3.0)); vec2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018 + (0.008 * float((_e83 & 1)))))); } } vec2 _e96 = g_1; return (_e96 * (0.18 + (0.82 * gust))); } vec3 viewRay(vec2 p_20) { vec4 _e3 = _group_0_binding_0_fs.view; float _e10 = _group_0_binding_0_fs.sun.w; vec3 cam = vec3((_e3.xy * 0.5), _e10); return normalize((vec3(p_20, 0.0) - cam)); } vec3 skyColor(vec3 r, float lit_2) { vec3 c_3 = vec3(0.0); float up = clamp(r.z, 0.0, 1.0); c_3 = mix(vec3(0.82, 0.93, 1.0), vec3(0.42, 0.68, 0.98), pow(up, 2.0)); vec2 cp = ((r.xy / vec2(max(r.z, 0.15))) * 2.2); float _e28 = time(); float _e34 = fbm3_(((cp * 1.4) + vec2((_e28 * 0.004), 0.0))); float _e37 = band(_e34, 0.6, 0.04); vec3 _e38 = c_3; c_3 = mix(_e38, vec3(1.0, 1.0, 0.97), (_e37 * 0.9)); vec4 _e48 = _group_0_binding_0_fs.sun; float toSun = max(dot(r, _e48.xyz), 0.0); vec3 _e53 = c_3; c_3 = (_e53 * (0.8 + (1.0 * pow(toSun, 5.0)))); float leaf_1 = ((1.0 - lit_2) / 0.8); vec3 _e65 = c_3; c_3 = mix(_e65, vec3(0.16, 0.3, 0.14), clamp((leaf_1 * 1.2), 0.0, 1.0)); vec3 _e76 = c_3; return _e76; } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } vec3 paperTone(vec2 uv) { vec3 b = vec3(0.0); vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_2 = _e3.xy; vec2 p_23 = (uv * wh_2); float _e8 = vnoise((p_23 * 1.6)); float _e16 = vnoise(((p_23 * 0.45) + vec2(11.0))); float grain = (((_e8 * 0.5) + (_e16 * 0.5)) - 0.5); float _e37 = vnoise(vec2(((p_23.x * 0.04) + (p_23.y * 0.015)), ((p_23.y * 0.35) - (p_23.x * 0.08)))); float brush = (_e37 - 0.5); b = vec3(((0.5 + (grain * 0.05)) + (brush * 0.03))); vec2 vq = ((uv - vec2(0.5)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); float vig = (smoothstep(0.4, 0.85, length(vq)) * 0.6); vec3 _e70 = b; b = (_e70 * mix(vec3(1.0), vec3(0.8, 0.86, 0.94), vig)); float bloom = smoothstep(0.75, 0.0, length(((uv - vec2(1.02, -0.05)) * vec2((wh_2.x / wh_2.y), 1.0)))); vec3 _e93 = b; b = (_e93 + (((vec3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09)); vec3 _e103 = b; return clamp(_e103, vec3(0.0), vec3(1.0)); } void main() { FullOut i = FullOut(gl_FragCoord, _vs2fs_location0); float vel = 0.0; float h = 0.0; int k = 0; ivec2 size_2 = ivec2(uvec2(textureSize(_group_0_binding_1_fs, 0).xy)); ivec2 c_8 = ivec2(floor((i.uv * vec2(size_2)))); vec4 _e9 = loadH(c_8, size_2); vec4 _e14 = loadH((c_8 + ivec2(-1, 0)), size_2); float l = _e14.x; vec4 _e20 = loadH((c_8 + ivec2(1, 0)), size_2); float r_5 = _e20.x; vec4 _e26 = loadH((c_8 + ivec2(0, -1)), size_2); float u_1 = _e26.x; vec4 _e32 = loadH((c_8 + ivec2(0, 1)), size_2); float d_12 = _e32.x; vec4 _e38 = loadH((c_8 + ivec2(-1, -1)), size_2); float ul = _e38.x; vec4 _e44 = loadH((c_8 + ivec2(1, -1)), size_2); float ur = _e44.x; vec4 _e50 = loadH((c_8 + ivec2(-1, 1)), size_2); float dl = _e50.x; vec4 _e56 = loadH((c_8 + ivec2(1, 1)), size_2); float dr = _e56.x; float avg = (((((l + r_5) + u_1) + d_12) * 0.2) + ((((ul + ur) + dl) + dr) * 0.05)); vel = (_e9.y + ((avg - _e9.x) * 1.9)); vec4 _e80 = loadH((c_8 + ivec2(-1, 0)), size_2); vec4 _e86 = loadH((c_8 + ivec2(1, 0)), size_2); vec4 _e93 = loadH((c_8 + ivec2(0, -1)), size_2); vec4 _e100 = loadH((c_8 + ivec2(0, 1)), size_2); float avgV = ((((_e80.y + _e86.y) + _e93.y) + _e100.y) * 0.25); float _e105 = vel; float _e106 = vel; vel = (_e105 + ((avgV - _e106) * 0.07)); float _e111 = vel; vel = (_e111 * 0.997); float _e115 = vel; h = (_e9.x + _e115); float _e118 = h; h = (_e118 * 0.9992); float cell_1 = _group_0_binding_0_fs.sim.z; vec2 p_24 = ((vec2(c_8) + vec2(0.5)) * cell_1); float _e133 = _group_0_binding_0_fs.sim.w; int nd = int(_e133); bool loop_init_12 = true; while(true) { if (!loop_init_12) { int _e162 = k; k = (_e162 + 1); } loop_init_12 = false; int _e137 = k; if ((_e137 < nd)) { } else { break; } { int _e141 = k; vec4 dr0_ = _group_0_binding_0_fs.drops[_e141]; float t_4 = (length((p_24 - dr0_.xy)) / dr0_.z); if ((t_4 < 1.0)) { float _e151 = h; h = (_e151 + ((0.5 + (0.5 * cos((t_4 * 3.1415927)))) * dr0_.w)); } } } float _e165 = padsSdf(p_24); if ((_e165 < 0.0)) { float _e168 = vel; vel = (_e168 * 0.94); float _e171 = h; h = (_e171 * 0.985); } float _e174 = rocksSdf(p_24); if ((_e174 < 0.0)) { h = 0.0; vel = 0.0; } float gx = ((r_5 - l) / (2.0 * cell_1)); float gy = ((d_12 - u_1) / (2.0 * cell_1)); float _e187 = h; float _e188 = vel; _fs2p_location0 = vec4(_e187, _e188, gx, gy); return; }  fs_groundmainl#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; layout(std140) uniform Frame_block_0Fragment { Frame _group_0_binding_0_fs; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } vec3 sunDir() { vec4 _e2 = _group_0_binding_0_fs.sun; return _e2.xyz; } vec3 sunInWater() { vec4 _e2 = _group_0_binding_0_fs.sun; vec2 h_2 = (_e2.xy / vec2(1.333)); return vec3(h_2, sqrt(max(0.0, (1.0 - dot(h_2, h_2))))); } vec2 towardSun() { vec3 _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } float time() { float _e3 = _group_0_binding_0_fs.view.w; return _e3; } float rockSdf(vec2 p_6, int i_8) { vec4 r_2 = _group_0_binding_0_fs.rocks[i_8]; vec2 d_10 = (p_6 - r_2.xy); float a_3 = atan(d_10.y, d_10.x); float s_2 = r_2.w; float wob = ((((0.1 * sin(((2.0 * a_3) + s_2))) + (0.07 * sin(((3.0 * a_3) + (s_2 * 2.3))))) + (0.035 * sin(((7.0 * a_3) + (s_2 * 4.1))))) + (0.015 * sin(((13.0 * a_3) + (s_2 * 1.7))))); return (length(d_10) - (r_2.z * (1.0 + wob))); } float rocksSdf(vec2 p_7) { float d = 100000.0; int i_9 = 0; float _e6 = _group_0_binding_0_fs.counts.x; int n_2 = int(_e6); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e16 = i_9; i_9 = (_e16 + 1); } loop_init_4 = false; int _e10 = i_9; if ((_e10 < n_2)) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepthCalc(vec2 p_9) { float d_1 = 0.0; int i_10 = 0; vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh = _e3.xy; float m = min(wh.x, wh.y); vec2 q = ((p_9 - (wh * 0.5)) / vec2(m)); float r_3 = length(((q - vec2(0.08, -0.04)) * vec2(0.8, 1.0))); d_1 = mix(240.0, 46.0, smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_(((p_9 * 0.0045) + vec2(3.1))); d_1 = (_e29 + ((_e35 - 0.5) * 70.0)); float _e44 = _group_0_binding_0_fs.counts.x; int n_3 = int(_e44); bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e70 = i_10; i_10 = (_e70 + 1); } loop_init_5 = false; int _e48 = i_10; if ((_e48 < n_3)) { } else { break; } { int _e52 = i_10; vec4 rk = _group_0_binding_0_fs.rocks[_e52]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55); float _e57 = d_1; float _e58 = d_1; d_1 = min(_e57, mix(4.0, _e58, smoothstep((-(rk.z) * 0.2), (rk.z * 1.1), _e56))); } } float _e73 = d_1; return max(_e73, 4.0); } float canopy(vec2 p_10) { vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_1 = _e3.xy; float m_1 = min(wh_1.x, wh_1.y); vec2 q_1 = (p_10 / vec2(m_1)); float sway = _group_0_binding_0_fs.misc.x; float reach = (1.0 - smoothstep(0.15, 0.95, length(((q_1 * vec2(0.75, 1.0)) - vec2(-0.05, -0.08))))); vec2 w = vec2((sin(sway) * 3.0), (cos((sway * 0.7)) * 2.0)); float _e42 = fbm3_(((p_10 * 0.006) + (w * 0.08))); float _e52 = fbm3_((((p_10 * 0.03) + (w * 0.25)) + vec2((_e42 * 2.0)))); float cover = (((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55)); return (1.0 - (0.8 * smoothstep(0.47, 0.53, cover))); } float padSdf(vec2 p_11, int i_11) { float sd = 0.0; vec4 pd = _group_0_binding_0_fs.pads[i_11]; vec4 px = _group_0_binding_0_fs.padx[i_11]; vec2 _e14 = rot2_((p_11 - pd.xy), -(pd.w)); float len = length(_e14); float ang = atan(_e14.y, _e14.x); float edge_1 = (pd.z * ((1.0 + (0.022 * sin(((ang * 7.0) + px.z)))) + (0.012 * sin(((ang * 15.0) + (px.z * 2.0)))))); sd = (len - edge_1); float wedge = ((abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len); float _e53 = sd; sd = max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf(vec2 p_12) { float d_2 = 100000.0; int i_12 = 0; float _e6 = _group_0_binding_0_fs.counts.y; int n_4 = int(_e6); bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e16 = i_12; i_12 = (_e16 + 1); } loop_init_6 = false; int _e10 = i_12; if ((_e10 < n_4)) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e77 = n; n = (_e77 + 1); } loop_init_7 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } vec2 simUv(vec2 p_13) { vec4 _e3 = _group_0_binding_0_fs.sim; float _e8 = _group_0_binding_0_fs.sim.z; return (p_13 / (_e3.xy * _e8)); } float padShadow(vec2 p_15, float d_4) { vec2 _e2 = towardSun(); vec2 ps_2 = (p_15 + (_e2 * d_4)); float _e5 = padsSdf(ps_2); float blur = (1.5 + (d_4 * 0.05)); return mix(0.28, 1.0, smoothstep(-(blur), blur, _e5)); } float rockShadow(vec2 p_16, float d_5) { float s = 1.0; int i_14 = 0; float _e7 = _group_0_binding_0_fs.counts.x; int n_5 = int(_e7); bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e56 = i_14; i_14 = (_e56 + 1); } loop_init_8 = false; int _e11 = i_14; if ((_e11 < n_5)) { } else { break; } { int _e15 = i_14; vec4 rk_1 = _group_0_binding_0_fs.rocks[_e15]; float hgt = (rk_1.z * 0.8); vec4 _e23 = _group_0_binding_0_fs.sun; float _e28 = _group_0_binding_0_fs.sun.z; vec2 _e32 = towardSun(); vec2 off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); int _e36 = i_14; float _e37 = rockSdf((p_16 + off), _e36); float sd_1 = (_e37 - (rk_1.z * 0.1)); float _e42 = s; s = min(_e42, mix(0.25, 1.0, smoothstep((-8.0 - (d_5 * 0.05)), (6.0 + (d_5 * 0.05)), sd_1))); } } float _e59 = s; return _e59; } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } float stoneDensity(vec2 c_2, int layer) { float _e7 = fbm3_(((c_2 * 0.0032) + vec2(9.0))); float _e10 = vnoise((c_2 * 0.02)); float cl = (_e7 + ((_e10 - 0.5) * 0.12)); float _e16 = bedDepthCalc(c_2); float shallow = (1.0 - smoothstep(50.0, 180.0, _e16)); float _e24 = band(_e16, 150.0, 40.0); if ((layer == 0)) { float _e32 = band((cl + (shallow * 0.06)), 0.47, 0.05); return (((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02); } if ((layer == 1)) { float _e49 = band((cl + (shallow * 0.08)), 0.53, 0.04); return (((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03); } float _e61 = band(cl, 0.53, 0.06); return ((_e61 * 0.22) + 0.025); } Stones stones(vec2 p_17, float cell, float seed, int layer_1, float size_1) { Stones o_1 = Stones(vec3(0.0), 0.0, 0.0); float best = 0.0; int j_1 = -1; int i_15 = 0; vec3 col_2 = vec3(0.0); o_1.col = vec3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; vec2 g_3 = floor((p_17 / vec2(cell))); vec4 _e20 = _group_0_binding_0_fs.sun; vec2 sun2_ = normalize((_e20.xy + vec2(0.0001))); bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e230 = j_1; j_1 = (_e230 + 1); } loop_init_9 = false; int _e28 = j_1; if ((_e28 <= 1)) { } else { break; } { i_15 = -1; bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e227 = i_15; i_15 = (_e227 + 1); } loop_init_10 = false; int _e33 = i_15; if ((_e33 <= 1)) { } else { break; } { int _e36 = i_15; int _e38 = j_1; vec2 id_1 = ((g_3 + vec2(float(_e36), float(_e38))) + vec2(seed)); vec2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; vec2 c_6 = ((((g_3 + vec2(float(_e45), float(_e47))) + vec2(0.1)) + (_e44 * 0.8)) * cell); float _e63 = hash12_(((id_1 * 1.37) + vec2(5.0))); float _e64 = stoneDensity(c_6, layer_1); if ((_e63 > _e64)) { continue; } float _e70 = hash12_((id_1 + vec2(2.0))); float r_4 = ((cell * size_1) * (0.3 + (0.7 * pow(_e70, 1.6)))); float _e81 = hash12_((id_1 + vec2(3.0))); float asp = (0.5 + (0.5 * _e81)); float _e89 = hash12_((id_1 + vec2(4.0))); float ang_1 = (_e89 * 6.2831855); vec2 _e94 = rot2_((p_17 - c_6), -(ang_1)); vec2 q_2 = (_e94 / vec2(r_4, (r_4 * asp))); float d_11 = length(q_2); vec2 _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4)), -(ang_1)); vec2 qs = (_e105 / vec2(r_4, (r_4 * asp))); float _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6, 1.0, smoothstep(0.95, 1.12, length(qs)))); if ((d_11 < 1.0)) { float dome = sqrt((1.0 - (d_11 * d_11))); float _e126 = best; if ((dome > _e126)) { best = dome; vec2 _e133 = rot2_((q_2 * vec2(1.0, (1.0 / asp))), ang_1); vec3 n_6 = normalize(vec3((_e133 * 0.9), (dome + 0.15))); vec4 _e142 = _group_0_binding_0_fs.sun; float ndl = dot(n_6, _e142.xyz); float _e148 = hash12_((id_1 + vec2(7.0))); float _e155 = vnoise(((c_6 * 0.004) + vec2(seed))); float hue = fract(((_e148 * 0.4) + (_e155 * 1.3))); vec3 _e160 = pebbleColor(hue); col_2 = _e160; vec3 _e162 = col_2; float _e169 = vnoise(((q_2 * 2.5) + vec2((hue * 50.0)))); col_2 = (_e162 * (0.94 + (0.12 * _e169))); vec3 _e175 = col_2; vec3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = mix((_e175 * vec3(0.66, 0.7, 0.84)), _e181, _e184); vec3 _e186 = col_2; vec3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = mix(_e186, ((_e187 * 1.12) + vec3(0.08, 0.07, 0.04)), _e197); float lw = (1.1 / r_4); vec3 _e201 = col_2; vec3 _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45, 0.42, 0.5)), smoothstep((1.0 - (lw * 2.0)), (1.0 - (lw * 0.6)), d_11)); vec3 _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1.0, (1.0 - (lw * 0.7)), d_11); } } } } } } Stones _e233 = o_1; return _e233; } vec3 ground(vec2 p_18, float d_6) { vec3 sand = vec3(0.0); vec3 col_3 = vec3(0.0); vec3 leaf = vec3(0.0); float _e4 = fbm3_((p_18 * 0.006)); float _e15 = band(_e4, 0.5, 0.08); sand = mix(vec3(0.95, 0.86, 0.64), vec3(0.9, 0.78, 0.56), _e15); vec3 _e18 = sand; float _e28 = fbm3_(((p_18 * 0.012) + vec2(7.0))); float _e31 = band(_e28, 0.62, 0.04); sand = mix(_e18, vec3(0.98, 0.92, 0.74), (_e31 * 0.6)); Vor _e38 = voronoi((p_18 / vec2(6.0))); vec3 _e39 = sand; vec3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8), (smoothstep(0.16, 0.1, _e38.f1_) * step(0.7, _e48))); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_(((p_18 * 0.01) + vec2(20.0))); float _e72 = band(_e69, 0.5, 0.08); vec3 floorDeep = mix(vec3(0.46, 0.58, 0.5), vec3(0.36, 0.5, 0.46), _e72); vec3 _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); float shallowS = (1.0 - smoothstep(60.0, 160.0, d_6)); float _e88 = fbm3_((p_18 * 0.006)); float sl = sin((dot(p_18, vec2(0.05, 0.03)) + (_e88 * 9.0))); vec3 _e93 = col_3; vec3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = mix(_e93, ((_e94 * 1.06) + vec3(0.02)), ((_e102 * shallowS) * 0.6)); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6); vec3 _e112 = col_3; col_3 = (_e112 * _e111.ao); vec3 _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62); vec3 _e124 = col_3; col_3 = (_e124 * _e123.ao); vec3 _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55); vec3 _e136 = col_3; col_3 = (_e136 * _e135.ao); vec3 _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_(((p_18 * 0.008) + vec2(40.0))); float _e151 = band(_e148, 0.62, 0.02); float algae = (_e151 * smoothstep(40.0, 120.0, d_6)); vec3 _e156 = col_3; float _e167 = vnoise((p_18 * 0.08)); float _e170 = band(_e167, 0.5, 0.1); col_3 = mix(_e156, mix(vec3(0.48, 0.66, 0.3), vec3(0.38, 0.58, 0.28), _e170), (algae * 0.8)); Vor _e181 = voronoi(((p_18 / vec2(85.0)) + vec2(5.0))); float _e186 = hash12_((_e181.id + vec2(3.0))); if ((_e186 > 0.78)) { vec2 _e194 = rot2_((_e181.rel * 85.0), (_e186 * 40.0)); float ls = (length((_e194 * vec2(1.0, 2.3))) - 15.0); float _e214 = hash12_((_e181.id + vec2(9.0))); vec3 lc = mix(vec3(0.92, 0.56, 0.26), vec3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = mix((lc * 0.85), lc, _e221); vec3 _e224 = leaf; leaf = mix(_e224, (lc * 0.6), (smoothstep(0.7, 0.2, abs(_e194.y)) * smoothstep(14.0, 10.0, abs(_e194.x)))); vec3 _e239 = leaf; leaf = mix(_e239, (lc * 0.5), smoothstep(-2.4, -0.8, ls)); vec3 _e246 = col_3; vec3 _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6, -0.6, ls)); } vec3 _e252 = col_3; return _e252; } float lightNet(vec2 ps_1, float d_7) { float _e2 = time(); float t_2 = ((_e2 * 0.36) + 23.0); float _e7 = time(); float slow = (_e7 * 0.015); float _e15 = fbm3_(((ps_1 * 0.0035) + vec2(slow, 0.0))); float _e22 = fbm3_(((ps_1 * 0.0035) + vec2(5.2, -(slow)))); vec2 warp = (vec2(_e15, _e22) - vec2(0.5)); vec2 q_3 = (ps_1 + (warp * 140.0)); float _e34 = causticNet((q_3 / vec2(36.0)), t_2, 4); vec2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet(((_e36 / vec2(53.0)) + vec2(17.0)), ((t_2 * 0.83) + 5.0), 3); float c_7 = max(_e34, (_e48 * 0.9)); float soft_1 = (0.03 + ((d_7 / 260.0) * 0.08)); float _e68 = fbm3_((((ps_1 * 0.0028) + vec2(-(slow), (slow * 0.7))) + vec2(31.0))); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return ((_e73 * mix(0.2, 1.0, _e71)) * (1.0 - (smoothstep(110.0, 300.0, d_7) * 0.6))); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_3 = clamp((d_8 / 250.0), 0.0, 1.0); float q_4 = (t_3 * 4.0); float tq = ((floor(q_4) + smoothstep(0.3, 0.7, fract(q_4))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec2 windSlope(vec2 p_19) { vec2 g_1 = vec2(0.0); int i_16 = 0; float _e1 = time(); float _e13 = _group_0_binding_0_fs.misc.y; float _e16 = fbm3_((((p_19 * 0.0025) + vec2((_e1 * 0.018), (_e1 * 0.011))) + vec2(_e13))); float gust = smoothstep(0.48, 0.78, _e16); vec2 dirs[4] = vec2[4](vec2(0.94, 0.34), vec2(0.62, 0.78), vec2(0.99, -0.12), vec2(0.45, 0.89)); float lens[4] = float[4](11.0, 7.5, 15.0, 5.5); bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e93 = i_16; i_16 = (_e93 + 1); } loop_init_11 = false; int _e43 = i_16; if ((_e43 < 4)) { } else { break; } { int _e46 = i_16; float kk = (6.2831855 / lens[_e46]); float w_1 = sqrt(((9.8 * kk) * 120.0)); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise(((p_19 * 0.02) + vec2(float(_e70)))); float ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (float(_e63) * 1.7)) + (_e74 * 3.0)); vec2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018 + (0.008 * float((_e83 & 1)))))); } } vec2 _e96 = g_1; return (_e96 * (0.18 + (0.82 * gust))); } vec3 viewRay(vec2 p_20) { vec4 _e3 = _group_0_binding_0_fs.view; float _e10 = _group_0_binding_0_fs.sun.w; vec3 cam = vec3((_e3.xy * 0.5), _e10); return normalize((vec3(p_20, 0.0) - cam)); } vec3 skyColor(vec3 r, float lit_2) { vec3 c_3 = vec3(0.0); float up = clamp(r.z, 0.0, 1.0); c_3 = mix(vec3(0.82, 0.93, 1.0), vec3(0.42, 0.68, 0.98), pow(up, 2.0)); vec2 cp = ((r.xy / vec2(max(r.z, 0.15))) * 2.2); float _e28 = time(); float _e34 = fbm3_(((cp * 1.4) + vec2((_e28 * 0.004), 0.0))); float _e37 = band(_e34, 0.6, 0.04); vec3 _e38 = c_3; c_3 = mix(_e38, vec3(1.0, 1.0, 0.97), (_e37 * 0.9)); vec4 _e48 = _group_0_binding_0_fs.sun; float toSun = max(dot(r, _e48.xyz), 0.0); vec3 _e53 = c_3; c_3 = (_e53 * (0.8 + (1.0 * pow(toSun, 5.0)))); float leaf_1 = ((1.0 - lit_2) / 0.8); vec3 _e65 = c_3; c_3 = mix(_e65, vec3(0.16, 0.3, 0.14), clamp((leaf_1 * 1.2), 0.0, 1.0)); vec3 _e76 = c_3; return _e76; } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } vec3 paperTone(vec2 uv) { vec3 b = vec3(0.0); vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_2 = _e3.xy; vec2 p_23 = (uv * wh_2); float _e8 = vnoise((p_23 * 1.6)); float _e16 = vnoise(((p_23 * 0.45) + vec2(11.0))); float grain = (((_e8 * 0.5) + (_e16 * 0.5)) - 0.5); float _e37 = vnoise(vec2(((p_23.x * 0.04) + (p_23.y * 0.015)), ((p_23.y * 0.35) - (p_23.x * 0.08)))); float brush = (_e37 - 0.5); b = vec3(((0.5 + (grain * 0.05)) + (brush * 0.03))); vec2 vq = ((uv - vec2(0.5)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); float vig = (smoothstep(0.4, 0.85, length(vq)) * 0.6); vec3 _e70 = b; b = (_e70 * mix(vec3(1.0), vec3(0.8, 0.86, 0.94), vig)); float bloom = smoothstep(0.75, 0.0, length(((uv - vec2(1.02, -0.05)) * vec2((wh_2.x / wh_2.y), 1.0)))); vec3 _e93 = b; b = (_e93 + (((vec3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09)); vec3 _e103 = b; return clamp(_e103, vec3(0.0), vec3(1.0)); } void main() { FullOut i_1 = FullOut(gl_FragCoord, _vs2fs_location0); vec4 _e4 = _group_0_binding_0_fs.view; vec2 p_24 = (i_1.uv * _e4.xy); float _e7 = bedDepthCalc(p_24); vec3 _e8 = ground(p_24, _e7); _fs2p_location0 = vec4(clamp(_e8, vec3(0.0), vec3(1.0)), clamp((_e7 / 320.0), 0.0, 1.0)); return; } fs_lightmain+w#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; layout(std140) uniform Frame_block_0Fragment { Frame _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; uniform highp sampler2D _group_0_binding_4_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } vec3 sunDir() { vec4 _e2 = _group_0_binding_0_fs.sun; return _e2.xyz; } vec3 sunInWater() { vec4 _e2 = _group_0_binding_0_fs.sun; vec2 h_2 = (_e2.xy / vec2(1.333)); return vec3(h_2, sqrt(max(0.0, (1.0 - dot(h_2, h_2))))); } vec2 towardSun() { vec3 _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } float time() { float _e3 = _group_0_binding_0_fs.view.w; return _e3; } float rockSdf(vec2 p_6, int i_8) { vec4 r_2 = _group_0_binding_0_fs.rocks[i_8]; vec2 d_10 = (p_6 - r_2.xy); float a_3 = atan(d_10.y, d_10.x); float s_2 = r_2.w; float wob = ((((0.1 * sin(((2.0 * a_3) + s_2))) + (0.07 * sin(((3.0 * a_3) + (s_2 * 2.3))))) + (0.035 * sin(((7.0 * a_3) + (s_2 * 4.1))))) + (0.015 * sin(((13.0 * a_3) + (s_2 * 1.7))))); return (length(d_10) - (r_2.z * (1.0 + wob))); } float rocksSdf(vec2 p_7) { float d = 100000.0; int i_9 = 0; float _e6 = _group_0_binding_0_fs.counts.x; int n_2 = int(_e6); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e16 = i_9; i_9 = (_e16 + 1); } loop_init_4 = false; int _e10 = i_9; if ((_e10 < n_2)) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepth(vec2 p_8) { vec4 _e5 = _group_0_binding_0_fs.view; vec4 _e9 = textureLod(_group_0_binding_4_fs, vec2((p_8 / _e5.xy)), 0.0); return (_e9.w * 320.0); } float bedDepthCalc(vec2 p_9) { float d_1 = 0.0; int i_10 = 0; vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh = _e3.xy; float m = min(wh.x, wh.y); vec2 q = ((p_9 - (wh * 0.5)) / vec2(m)); float r_3 = length(((q - vec2(0.08, -0.04)) * vec2(0.8, 1.0))); d_1 = mix(240.0, 46.0, smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_(((p_9 * 0.0045) + vec2(3.1))); d_1 = (_e29 + ((_e35 - 0.5) * 70.0)); float _e44 = _group_0_binding_0_fs.counts.x; int n_3 = int(_e44); bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e70 = i_10; i_10 = (_e70 + 1); } loop_init_5 = false; int _e48 = i_10; if ((_e48 < n_3)) { } else { break; } { int _e52 = i_10; vec4 rk = _group_0_binding_0_fs.rocks[_e52]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55); float _e57 = d_1; float _e58 = d_1; d_1 = min(_e57, mix(4.0, _e58, smoothstep((-(rk.z) * 0.2), (rk.z * 1.1), _e56))); } } float _e73 = d_1; return max(_e73, 4.0); } float canopy(vec2 p_10) { vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_1 = _e3.xy; float m_1 = min(wh_1.x, wh_1.y); vec2 q_1 = (p_10 / vec2(m_1)); float sway = _group_0_binding_0_fs.misc.x; float reach = (1.0 - smoothstep(0.15, 0.95, length(((q_1 * vec2(0.75, 1.0)) - vec2(-0.05, -0.08))))); vec2 w = vec2((sin(sway) * 3.0), (cos((sway * 0.7)) * 2.0)); float _e42 = fbm3_(((p_10 * 0.006) + (w * 0.08))); float _e52 = fbm3_((((p_10 * 0.03) + (w * 0.25)) + vec2((_e42 * 2.0)))); float cover = (((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55)); return (1.0 - (0.8 * smoothstep(0.47, 0.53, cover))); } float padSdf(vec2 p_11, int i_11) { float sd = 0.0; vec4 pd = _group_0_binding_0_fs.pads[i_11]; vec4 px = _group_0_binding_0_fs.padx[i_11]; vec2 _e14 = rot2_((p_11 - pd.xy), -(pd.w)); float len = length(_e14); float ang = atan(_e14.y, _e14.x); float edge_1 = (pd.z * ((1.0 + (0.022 * sin(((ang * 7.0) + px.z)))) + (0.012 * sin(((ang * 15.0) + (px.z * 2.0)))))); sd = (len - edge_1); float wedge = ((abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len); float _e53 = sd; sd = max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf(vec2 p_12) { float d_2 = 100000.0; int i_12 = 0; float _e6 = _group_0_binding_0_fs.counts.y; int n_4 = int(_e6); bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e16 = i_12; i_12 = (_e16 + 1); } loop_init_6 = false; int _e10 = i_12; if ((_e10 < n_4)) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e77 = n; n = (_e77 + 1); } loop_init_7 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } vec2 simUv(vec2 p_13) { vec4 _e3 = _group_0_binding_0_fs.sim; float _e8 = _group_0_binding_0_fs.sim.z; return (p_13 / (_e3.xy * _e8)); } vec4 ripple(vec2 p_14) { vec2 _e3 = simUv(p_14); vec4 _e5 = textureLod(_group_0_binding_1_fs, vec2(_e3), 0.0); return _e5; } float rippleFocus(vec2 ps, float d_3) { float _e5 = _group_0_binding_0_fs.sim.z; float e = (_e5 * 1.5); vec4 _e8 = ripple(ps); float h0_ = _e8.x; vec4 _e14 = ripple((ps + vec2(-(e), 0.0))); float hl = _e14.x; vec4 _e19 = ripple((ps + vec2(e, 0.0))); float hr = _e19.x; vec4 _e25 = ripple((ps + vec2(0.0, -(e)))); float hu = _e25.x; vec4 _e30 = ripple((ps + vec2(0.0, e))); float hd = _e30.x; float lap = (((((hl + hr) + hu) + hd) - (4.0 * h0_)) / (e * e)); float det = (1.0 - (((0.24981245 * d_3) * lap) * 0.9)); return clamp((1.0 / max(det, 0.4)), 0.45, 2.1); } float padShadow(vec2 p_15, float d_4) { vec2 _e2 = towardSun(); vec2 ps_2 = (p_15 + (_e2 * d_4)); float _e5 = padsSdf(ps_2); float blur = (1.5 + (d_4 * 0.05)); return mix(0.28, 1.0, smoothstep(-(blur), blur, _e5)); } float rockShadow(vec2 p_16, float d_5) { float s = 1.0; int i_14 = 0; float _e7 = _group_0_binding_0_fs.counts.x; int n_5 = int(_e7); bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e56 = i_14; i_14 = (_e56 + 1); } loop_init_8 = false; int _e11 = i_14; if ((_e11 < n_5)) { } else { break; } { int _e15 = i_14; vec4 rk_1 = _group_0_binding_0_fs.rocks[_e15]; float hgt = (rk_1.z * 0.8); vec4 _e23 = _group_0_binding_0_fs.sun; float _e28 = _group_0_binding_0_fs.sun.z; vec2 _e32 = towardSun(); vec2 off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); int _e36 = i_14; float _e37 = rockSdf((p_16 + off), _e36); float sd_1 = (_e37 - (rk_1.z * 0.1)); float _e42 = s; s = min(_e42, mix(0.25, 1.0, smoothstep((-8.0 - (d_5 * 0.05)), (6.0 + (d_5 * 0.05)), sd_1))); } } float _e59 = s; return _e59; } vec4 loadH(ivec2 c_1, ivec2 size) { vec4 _e10 = texelFetch(_group_0_binding_1_fs, min(max(c_1, ivec2(0)), (size - ivec2(1))), 0); return _e10; } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } float stoneDensity(vec2 c_2, int layer) { float _e7 = fbm3_(((c_2 * 0.0032) + vec2(9.0))); float _e10 = vnoise((c_2 * 0.02)); float cl = (_e7 + ((_e10 - 0.5) * 0.12)); float _e16 = bedDepthCalc(c_2); float shallow = (1.0 - smoothstep(50.0, 180.0, _e16)); float _e24 = band(_e16, 150.0, 40.0); if ((layer == 0)) { float _e32 = band((cl + (shallow * 0.06)), 0.47, 0.05); return (((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02); } if ((layer == 1)) { float _e49 = band((cl + (shallow * 0.08)), 0.53, 0.04); return (((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03); } float _e61 = band(cl, 0.53, 0.06); return ((_e61 * 0.22) + 0.025); } Stones stones(vec2 p_17, float cell, float seed, int layer_1, float size_1) { Stones o_1 = Stones(vec3(0.0), 0.0, 0.0); float best = 0.0; int j_1 = -1; int i_15 = 0; vec3 col_2 = vec3(0.0); o_1.col = vec3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; vec2 g_3 = floor((p_17 / vec2(cell))); vec4 _e20 = _group_0_binding_0_fs.sun; vec2 sun2_ = normalize((_e20.xy + vec2(0.0001))); bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e230 = j_1; j_1 = (_e230 + 1); } loop_init_9 = false; int _e28 = j_1; if ((_e28 <= 1)) { } else { break; } { i_15 = -1; bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e227 = i_15; i_15 = (_e227 + 1); } loop_init_10 = false; int _e33 = i_15; if ((_e33 <= 1)) { } else { break; } { int _e36 = i_15; int _e38 = j_1; vec2 id_1 = ((g_3 + vec2(float(_e36), float(_e38))) + vec2(seed)); vec2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; vec2 c_6 = ((((g_3 + vec2(float(_e45), float(_e47))) + vec2(0.1)) + (_e44 * 0.8)) * cell); float _e63 = hash12_(((id_1 * 1.37) + vec2(5.0))); float _e64 = stoneDensity(c_6, layer_1); if ((_e63 > _e64)) { continue; } float _e70 = hash12_((id_1 + vec2(2.0))); float r_4 = ((cell * size_1) * (0.3 + (0.7 * pow(_e70, 1.6)))); float _e81 = hash12_((id_1 + vec2(3.0))); float asp = (0.5 + (0.5 * _e81)); float _e89 = hash12_((id_1 + vec2(4.0))); float ang_1 = (_e89 * 6.2831855); vec2 _e94 = rot2_((p_17 - c_6), -(ang_1)); vec2 q_2 = (_e94 / vec2(r_4, (r_4 * asp))); float d_11 = length(q_2); vec2 _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4)), -(ang_1)); vec2 qs = (_e105 / vec2(r_4, (r_4 * asp))); float _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6, 1.0, smoothstep(0.95, 1.12, length(qs)))); if ((d_11 < 1.0)) { float dome = sqrt((1.0 - (d_11 * d_11))); float _e126 = best; if ((dome > _e126)) { best = dome; vec2 _e133 = rot2_((q_2 * vec2(1.0, (1.0 / asp))), ang_1); vec3 n_6 = normalize(vec3((_e133 * 0.9), (dome + 0.15))); vec4 _e142 = _group_0_binding_0_fs.sun; float ndl = dot(n_6, _e142.xyz); float _e148 = hash12_((id_1 + vec2(7.0))); float _e155 = vnoise(((c_6 * 0.004) + vec2(seed))); float hue = fract(((_e148 * 0.4) + (_e155 * 1.3))); vec3 _e160 = pebbleColor(hue); col_2 = _e160; vec3 _e162 = col_2; float _e169 = vnoise(((q_2 * 2.5) + vec2((hue * 50.0)))); col_2 = (_e162 * (0.94 + (0.12 * _e169))); vec3 _e175 = col_2; vec3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = mix((_e175 * vec3(0.66, 0.7, 0.84)), _e181, _e184); vec3 _e186 = col_2; vec3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = mix(_e186, ((_e187 * 1.12) + vec3(0.08, 0.07, 0.04)), _e197); float lw = (1.1 / r_4); vec3 _e201 = col_2; vec3 _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45, 0.42, 0.5)), smoothstep((1.0 - (lw * 2.0)), (1.0 - (lw * 0.6)), d_11)); vec3 _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1.0, (1.0 - (lw * 0.7)), d_11); } } } } } } Stones _e233 = o_1; return _e233; } vec3 ground(vec2 p_18, float d_6) { vec3 sand = vec3(0.0); vec3 col_3 = vec3(0.0); vec3 leaf = vec3(0.0); float _e4 = fbm3_((p_18 * 0.006)); float _e15 = band(_e4, 0.5, 0.08); sand = mix(vec3(0.95, 0.86, 0.64), vec3(0.9, 0.78, 0.56), _e15); vec3 _e18 = sand; float _e28 = fbm3_(((p_18 * 0.012) + vec2(7.0))); float _e31 = band(_e28, 0.62, 0.04); sand = mix(_e18, vec3(0.98, 0.92, 0.74), (_e31 * 0.6)); Vor _e38 = voronoi((p_18 / vec2(6.0))); vec3 _e39 = sand; vec3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8), (smoothstep(0.16, 0.1, _e38.f1_) * step(0.7, _e48))); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_(((p_18 * 0.01) + vec2(20.0))); float _e72 = band(_e69, 0.5, 0.08); vec3 floorDeep = mix(vec3(0.46, 0.58, 0.5), vec3(0.36, 0.5, 0.46), _e72); vec3 _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); float shallowS = (1.0 - smoothstep(60.0, 160.0, d_6)); float _e88 = fbm3_((p_18 * 0.006)); float sl = sin((dot(p_18, vec2(0.05, 0.03)) + (_e88 * 9.0))); vec3 _e93 = col_3; vec3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = mix(_e93, ((_e94 * 1.06) + vec3(0.02)), ((_e102 * shallowS) * 0.6)); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6); vec3 _e112 = col_3; col_3 = (_e112 * _e111.ao); vec3 _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62); vec3 _e124 = col_3; col_3 = (_e124 * _e123.ao); vec3 _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55); vec3 _e136 = col_3; col_3 = (_e136 * _e135.ao); vec3 _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_(((p_18 * 0.008) + vec2(40.0))); float _e151 = band(_e148, 0.62, 0.02); float algae = (_e151 * smoothstep(40.0, 120.0, d_6)); vec3 _e156 = col_3; float _e167 = vnoise((p_18 * 0.08)); float _e170 = band(_e167, 0.5, 0.1); col_3 = mix(_e156, mix(vec3(0.48, 0.66, 0.3), vec3(0.38, 0.58, 0.28), _e170), (algae * 0.8)); Vor _e181 = voronoi(((p_18 / vec2(85.0)) + vec2(5.0))); float _e186 = hash12_((_e181.id + vec2(3.0))); if ((_e186 > 0.78)) { vec2 _e194 = rot2_((_e181.rel * 85.0), (_e186 * 40.0)); float ls = (length((_e194 * vec2(1.0, 2.3))) - 15.0); float _e214 = hash12_((_e181.id + vec2(9.0))); vec3 lc = mix(vec3(0.92, 0.56, 0.26), vec3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = mix((lc * 0.85), lc, _e221); vec3 _e224 = leaf; leaf = mix(_e224, (lc * 0.6), (smoothstep(0.7, 0.2, abs(_e194.y)) * smoothstep(14.0, 10.0, abs(_e194.x)))); vec3 _e239 = leaf; leaf = mix(_e239, (lc * 0.5), smoothstep(-2.4, -0.8, ls)); vec3 _e246 = col_3; vec3 _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6, -0.6, ls)); } vec3 _e252 = col_3; return _e252; } float lightNet(vec2 ps_1, float d_7) { float _e2 = time(); float t_2 = ((_e2 * 0.36) + 23.0); float _e7 = time(); float slow = (_e7 * 0.015); float _e15 = fbm3_(((ps_1 * 0.0035) + vec2(slow, 0.0))); float _e22 = fbm3_(((ps_1 * 0.0035) + vec2(5.2, -(slow)))); vec2 warp = (vec2(_e15, _e22) - vec2(0.5)); vec2 q_3 = (ps_1 + (warp * 140.0)); float _e34 = causticNet((q_3 / vec2(36.0)), t_2, 4); vec2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet(((_e36 / vec2(53.0)) + vec2(17.0)), ((t_2 * 0.83) + 5.0), 3); float c_7 = max(_e34, (_e48 * 0.9)); float soft_1 = (0.03 + ((d_7 / 260.0) * 0.08)); float _e68 = fbm3_((((ps_1 * 0.0028) + vec2(-(slow), (slow * 0.7))) + vec2(31.0))); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return ((_e73 * mix(0.2, 1.0, _e71)) * (1.0 - (smoothstep(110.0, 300.0, d_7) * 0.6))); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_3 = clamp((d_8 / 250.0), 0.0, 1.0); float q_4 = (t_3 * 4.0); float tq = ((floor(q_4) + smoothstep(0.3, 0.7, fract(q_4))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec2 windSlope(vec2 p_19) { vec2 g_1 = vec2(0.0); int i_16 = 0; float _e1 = time(); float _e13 = _group_0_binding_0_fs.misc.y; float _e16 = fbm3_((((p_19 * 0.0025) + vec2((_e1 * 0.018), (_e1 * 0.011))) + vec2(_e13))); float gust = smoothstep(0.48, 0.78, _e16); vec2 dirs[4] = vec2[4](vec2(0.94, 0.34), vec2(0.62, 0.78), vec2(0.99, -0.12), vec2(0.45, 0.89)); float lens[4] = float[4](11.0, 7.5, 15.0, 5.5); bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e93 = i_16; i_16 = (_e93 + 1); } loop_init_11 = false; int _e43 = i_16; if ((_e43 < 4)) { } else { break; } { int _e46 = i_16; float kk = (6.2831855 / lens[_e46]); float w_1 = sqrt(((9.8 * kk) * 120.0)); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise(((p_19 * 0.02) + vec2(float(_e70)))); float ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (float(_e63) * 1.7)) + (_e74 * 3.0)); vec2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018 + (0.008 * float((_e83 & 1)))))); } } vec2 _e96 = g_1; return (_e96 * (0.18 + (0.82 * gust))); } vec3 viewRay(vec2 p_20) { vec4 _e3 = _group_0_binding_0_fs.view; float _e10 = _group_0_binding_0_fs.sun.w; vec3 cam = vec3((_e3.xy * 0.5), _e10); return normalize((vec3(p_20, 0.0) - cam)); } float sparkles(vec2 p_21, float lit_1) { vec2 g_4 = floor((p_21 / vec2(24.0))); vec2 _e9 = hash22_((g_4 + vec2(3.0))); vec2 c_8 = (((g_4 + vec2(0.3)) + (_e9 * 0.4)) * 24.0); vec4 _e17 = ripple(c_8); vec2 _e19 = windSlope(c_8); vec2 sl_1 = ((_e17.zw + _e19) * 1.9); vec3 n_7 = normalize(vec3(-(sl_1), 1.0)); vec3 _e27 = viewRay(c_8); vec3 r_5 = reflect(_e27, n_7); vec3 _e29 = sunDir(); float spec = pow(max(dot(r_5, _e29), 0.0), 50.0); float _e35 = time(); float twinkle = (0.55 + (0.45 * sin(((_e35 * 4.0) + (_e9.x * 40.0))))); float _e50 = band((spec * twinkle), 0.3, 0.15); float _e53 = band(lit_1, 0.6, 0.1); float inten = (_e50 * _e53); if ((inten <= 0.0)) { return 0.0; } float size_2 = (4.0 + ((6.0 * inten) * (0.6 + (0.4 * _e9.y)))); vec2 q_5 = (p_21 - c_8); float core = smoothstep((size_2 * 0.3), (size_2 * 0.1), length(q_5)); float ray = ((smoothstep(size_2, 0.0, abs(q_5.x)) * smoothstep(1.0, 0.2, abs(q_5.y))) + (smoothstep(size_2, 0.0, abs(q_5.y)) * smoothstep(1.0, 0.2, abs(q_5.x)))); return (clamp((core + ray), 0.0, 1.0) * inten); } vec3 skyColor(vec3 r, float lit_2) { vec3 c_3 = vec3(0.0); float up = clamp(r.z, 0.0, 1.0); c_3 = mix(vec3(0.82, 0.93, 1.0), vec3(0.42, 0.68, 0.98), pow(up, 2.0)); vec2 cp = ((r.xy / vec2(max(r.z, 0.15))) * 2.2); float _e28 = time(); float _e34 = fbm3_(((cp * 1.4) + vec2((_e28 * 0.004), 0.0))); float _e37 = band(_e34, 0.6, 0.04); vec3 _e38 = c_3; c_3 = mix(_e38, vec3(1.0, 1.0, 0.97), (_e37 * 0.9)); vec4 _e48 = _group_0_binding_0_fs.sun; float toSun = max(dot(r, _e48.xyz), 0.0); vec3 _e53 = c_3; c_3 = (_e53 * (0.8 + (1.0 * pow(toSun, 5.0)))); float leaf_1 = ((1.0 - lit_2) / 0.8); vec3 _e65 = c_3; c_3 = mix(_e65, vec3(0.16, 0.3, 0.14), clamp((leaf_1 * 1.2), 0.0, 1.0)); vec3 _e76 = c_3; return _e76; } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } vec3 paperTone(vec2 uv) { vec3 b = vec3(0.0); vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_2 = _e3.xy; vec2 p_23 = (uv * wh_2); float _e8 = vnoise((p_23 * 1.6)); float _e16 = vnoise(((p_23 * 0.45) + vec2(11.0))); float grain = (((_e8 * 0.5) + (_e16 * 0.5)) - 0.5); float _e37 = vnoise(vec2(((p_23.x * 0.04) + (p_23.y * 0.015)), ((p_23.y * 0.35) - (p_23.x * 0.08)))); float brush = (_e37 - 0.5); b = vec3(((0.5 + (grain * 0.05)) + (brush * 0.03))); vec2 vq = ((uv - vec2(0.5)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); float vig = (smoothstep(0.4, 0.85, length(vq)) * 0.6); vec3 _e70 = b; b = (_e70 * mix(vec3(1.0), vec3(0.8, 0.86, 0.94), vig)); float bloom = smoothstep(0.75, 0.0, length(((uv - vec2(1.02, -0.05)) * vec2((wh_2.x / wh_2.y), 1.0)))); vec3 _e93 = b; b = (_e93 + (((vec3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09)); vec3 _e103 = b; return clamp(_e103, vec3(0.0), vec3(1.0)); } void main() { FullOut i_2 = FullOut(gl_FragCoord, _vs2fs_location0); vec4 _e4 = _group_0_binding_0_fs.view; vec2 p_24 = (i_2.uv * _e4.xy); float _e7 = bedDepth(p_24); vec2 _e8 = towardSun(); vec2 ps_3 = (p_24 + (_e8 * _e7)); float _e11 = canopy(ps_3); vec4 _e12 = ripple(ps_3); float _e18 = lightNet((ps_3 + ((_e12.zw * _e7) * 0.6)), _e7); float _e19 = padShadow(p_24, _e7); float _e20 = rockShadow(p_24, _e7); float _e24 = band((_e19 * _e20), 0.62, 0.08); vec2 _e25 = towardSun(); vec2 kps = (p_24 + (_e25 * 30.0)); float _e29 = canopy(kps); float _e31 = padShadow(p_24, 30.0); float _e34 = band(_e31, 0.62, 0.08); float ksun = (_e29 * _e34); float _e37 = canopy(p_24); _fs2p_location0 = vec4((_e11 * _e24), _e18, ksun, _e37); return; } fs_bedmain}#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; layout(std140) uniform Frame_block_0Fragment { Frame _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; uniform highp sampler2D _group_0_binding_4_fs; uniform highp sampler2D _group_1_binding_0_fs; uniform highp sampler2D _group_1_binding_1_fs; uniform highp sampler2D _group_0_binding_5_fs; uniform highp sampler2D _group_1_binding_2_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } vec3 sunDir() { vec4 _e2 = _group_0_binding_0_fs.sun; return _e2.xyz; } vec3 sunInWater() { vec4 _e2 = _group_0_binding_0_fs.sun; vec2 h_2 = (_e2.xy / vec2(1.333)); return vec3(h_2, sqrt(max(0.0, (1.0 - dot(h_2, h_2))))); } vec2 towardSun() { vec3 _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } float time() { float _e3 = _group_0_binding_0_fs.view.w; return _e3; } float rockSdf(vec2 p_6, int i_8) { vec4 r_2 = _group_0_binding_0_fs.rocks[i_8]; vec2 d_10 = (p_6 - r_2.xy); float a_3 = atan(d_10.y, d_10.x); float s_2 = r_2.w; float wob = ((((0.1 * sin(((2.0 * a_3) + s_2))) + (0.07 * sin(((3.0 * a_3) + (s_2 * 2.3))))) + (0.035 * sin(((7.0 * a_3) + (s_2 * 4.1))))) + (0.015 * sin(((13.0 * a_3) + (s_2 * 1.7))))); return (length(d_10) - (r_2.z * (1.0 + wob))); } float rocksSdf(vec2 p_7) { float d = 100000.0; int i_9 = 0; float _e6 = _group_0_binding_0_fs.counts.x; int n_2 = int(_e6); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e16 = i_9; i_9 = (_e16 + 1); } loop_init_4 = false; int _e10 = i_9; if ((_e10 < n_2)) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepth(vec2 p_8) { vec4 _e5 = _group_0_binding_0_fs.view; vec4 _e9 = textureLod(_group_0_binding_4_fs, vec2((p_8 / _e5.xy)), 0.0); return (_e9.w * 320.0); } float bedDepthCalc(vec2 p_9) { float d_1 = 0.0; int i_10 = 0; vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh = _e3.xy; float m = min(wh.x, wh.y); vec2 q = ((p_9 - (wh * 0.5)) / vec2(m)); float r_3 = length(((q - vec2(0.08, -0.04)) * vec2(0.8, 1.0))); d_1 = mix(240.0, 46.0, smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_(((p_9 * 0.0045) + vec2(3.1))); d_1 = (_e29 + ((_e35 - 0.5) * 70.0)); float _e44 = _group_0_binding_0_fs.counts.x; int n_3 = int(_e44); bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e70 = i_10; i_10 = (_e70 + 1); } loop_init_5 = false; int _e48 = i_10; if ((_e48 < n_3)) { } else { break; } { int _e52 = i_10; vec4 rk = _group_0_binding_0_fs.rocks[_e52]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55); float _e57 = d_1; float _e58 = d_1; d_1 = min(_e57, mix(4.0, _e58, smoothstep((-(rk.z) * 0.2), (rk.z * 1.1), _e56))); } } float _e73 = d_1; return max(_e73, 4.0); } float canopy(vec2 p_10) { vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_1 = _e3.xy; float m_1 = min(wh_1.x, wh_1.y); vec2 q_1 = (p_10 / vec2(m_1)); float sway = _group_0_binding_0_fs.misc.x; float reach = (1.0 - smoothstep(0.15, 0.95, length(((q_1 * vec2(0.75, 1.0)) - vec2(-0.05, -0.08))))); vec2 w = vec2((sin(sway) * 3.0), (cos((sway * 0.7)) * 2.0)); float _e42 = fbm3_(((p_10 * 0.006) + (w * 0.08))); float _e52 = fbm3_((((p_10 * 0.03) + (w * 0.25)) + vec2((_e42 * 2.0)))); float cover = (((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55)); return (1.0 - (0.8 * smoothstep(0.47, 0.53, cover))); } float padSdf(vec2 p_11, int i_11) { float sd = 0.0; vec4 pd = _group_0_binding_0_fs.pads[i_11]; vec4 px = _group_0_binding_0_fs.padx[i_11]; vec2 _e14 = rot2_((p_11 - pd.xy), -(pd.w)); float len = length(_e14); float ang = atan(_e14.y, _e14.x); float edge_1 = (pd.z * ((1.0 + (0.022 * sin(((ang * 7.0) + px.z)))) + (0.012 * sin(((ang * 15.0) + (px.z * 2.0)))))); sd = (len - edge_1); float wedge = ((abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len); float _e53 = sd; sd = max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf(vec2 p_12) { float d_2 = 100000.0; int i_12 = 0; float _e6 = _group_0_binding_0_fs.counts.y; int n_4 = int(_e6); bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e16 = i_12; i_12 = (_e16 + 1); } loop_init_6 = false; int _e10 = i_12; if ((_e10 < n_4)) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e77 = n; n = (_e77 + 1); } loop_init_7 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } vec2 simUv(vec2 p_13) { vec4 _e3 = _group_0_binding_0_fs.sim; float _e8 = _group_0_binding_0_fs.sim.z; return (p_13 / (_e3.xy * _e8)); } vec4 ripple(vec2 p_14) { vec2 _e3 = simUv(p_14); vec4 _e5 = textureLod(_group_0_binding_1_fs, vec2(_e3), 0.0); return _e5; } float rippleFocus(vec2 ps, float d_3) { float _e5 = _group_0_binding_0_fs.sim.z; float e = (_e5 * 1.5); vec4 _e8 = ripple(ps); float h0_ = _e8.x; vec4 _e14 = ripple((ps + vec2(-(e), 0.0))); float hl = _e14.x; vec4 _e19 = ripple((ps + vec2(e, 0.0))); float hr = _e19.x; vec4 _e25 = ripple((ps + vec2(0.0, -(e)))); float hu = _e25.x; vec4 _e30 = ripple((ps + vec2(0.0, e))); float hd = _e30.x; float lap = (((((hl + hr) + hu) + hd) - (4.0 * h0_)) / (e * e)); float det = (1.0 - (((0.24981245 * d_3) * lap) * 0.9)); return clamp((1.0 / max(det, 0.4)), 0.45, 2.1); } float padShadow(vec2 p_15, float d_4) { vec2 _e2 = towardSun(); vec2 ps_2 = (p_15 + (_e2 * d_4)); float _e5 = padsSdf(ps_2); float blur = (1.5 + (d_4 * 0.05)); return mix(0.28, 1.0, smoothstep(-(blur), blur, _e5)); } float rockShadow(vec2 p_16, float d_5) { float s = 1.0; int i_14 = 0; float _e7 = _group_0_binding_0_fs.counts.x; int n_5 = int(_e7); bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e56 = i_14; i_14 = (_e56 + 1); } loop_init_8 = false; int _e11 = i_14; if ((_e11 < n_5)) { } else { break; } { int _e15 = i_14; vec4 rk_1 = _group_0_binding_0_fs.rocks[_e15]; float hgt = (rk_1.z * 0.8); vec4 _e23 = _group_0_binding_0_fs.sun; float _e28 = _group_0_binding_0_fs.sun.z; vec2 _e32 = towardSun(); vec2 off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); int _e36 = i_14; float _e37 = rockSdf((p_16 + off), _e36); float sd_1 = (_e37 - (rk_1.z * 0.1)); float _e42 = s; s = min(_e42, mix(0.25, 1.0, smoothstep((-8.0 - (d_5 * 0.05)), (6.0 + (d_5 * 0.05)), sd_1))); } } float _e59 = s; return _e59; } vec4 loadH(ivec2 c_1, ivec2 size) { vec4 _e10 = texelFetch(_group_0_binding_1_fs, min(max(c_1, ivec2(0)), (size - ivec2(1))), 0); return _e10; } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } float stoneDensity(vec2 c_2, int layer) { float _e7 = fbm3_(((c_2 * 0.0032) + vec2(9.0))); float _e10 = vnoise((c_2 * 0.02)); float cl = (_e7 + ((_e10 - 0.5) * 0.12)); float _e16 = bedDepthCalc(c_2); float shallow = (1.0 - smoothstep(50.0, 180.0, _e16)); float _e24 = band(_e16, 150.0, 40.0); if ((layer == 0)) { float _e32 = band((cl + (shallow * 0.06)), 0.47, 0.05); return (((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02); } if ((layer == 1)) { float _e49 = band((cl + (shallow * 0.08)), 0.53, 0.04); return (((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03); } float _e61 = band(cl, 0.53, 0.06); return ((_e61 * 0.22) + 0.025); } Stones stones(vec2 p_17, float cell, float seed, int layer_1, float size_1) { Stones o_1 = Stones(vec3(0.0), 0.0, 0.0); float best = 0.0; int j_1 = -1; int i_15 = 0; vec3 col_2 = vec3(0.0); o_1.col = vec3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; vec2 g_3 = floor((p_17 / vec2(cell))); vec4 _e20 = _group_0_binding_0_fs.sun; vec2 sun2_ = normalize((_e20.xy + vec2(0.0001))); bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e230 = j_1; j_1 = (_e230 + 1); } loop_init_9 = false; int _e28 = j_1; if ((_e28 <= 1)) { } else { break; } { i_15 = -1; bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e227 = i_15; i_15 = (_e227 + 1); } loop_init_10 = false; int _e33 = i_15; if ((_e33 <= 1)) { } else { break; } { int _e36 = i_15; int _e38 = j_1; vec2 id_1 = ((g_3 + vec2(float(_e36), float(_e38))) + vec2(seed)); vec2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; vec2 c_6 = ((((g_3 + vec2(float(_e45), float(_e47))) + vec2(0.1)) + (_e44 * 0.8)) * cell); float _e63 = hash12_(((id_1 * 1.37) + vec2(5.0))); float _e64 = stoneDensity(c_6, layer_1); if ((_e63 > _e64)) { continue; } float _e70 = hash12_((id_1 + vec2(2.0))); float r_4 = ((cell * size_1) * (0.3 + (0.7 * pow(_e70, 1.6)))); float _e81 = hash12_((id_1 + vec2(3.0))); float asp = (0.5 + (0.5 * _e81)); float _e89 = hash12_((id_1 + vec2(4.0))); float ang_1 = (_e89 * 6.2831855); vec2 _e94 = rot2_((p_17 - c_6), -(ang_1)); vec2 q_2 = (_e94 / vec2(r_4, (r_4 * asp))); float d_11 = length(q_2); vec2 _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4)), -(ang_1)); vec2 qs = (_e105 / vec2(r_4, (r_4 * asp))); float _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6, 1.0, smoothstep(0.95, 1.12, length(qs)))); if ((d_11 < 1.0)) { float dome = sqrt((1.0 - (d_11 * d_11))); float _e126 = best; if ((dome > _e126)) { best = dome; vec2 _e133 = rot2_((q_2 * vec2(1.0, (1.0 / asp))), ang_1); vec3 n_6 = normalize(vec3((_e133 * 0.9), (dome + 0.15))); vec4 _e142 = _group_0_binding_0_fs.sun; float ndl = dot(n_6, _e142.xyz); float _e148 = hash12_((id_1 + vec2(7.0))); float _e155 = vnoise(((c_6 * 0.004) + vec2(seed))); float hue = fract(((_e148 * 0.4) + (_e155 * 1.3))); vec3 _e160 = pebbleColor(hue); col_2 = _e160; vec3 _e162 = col_2; float _e169 = vnoise(((q_2 * 2.5) + vec2((hue * 50.0)))); col_2 = (_e162 * (0.94 + (0.12 * _e169))); vec3 _e175 = col_2; vec3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = mix((_e175 * vec3(0.66, 0.7, 0.84)), _e181, _e184); vec3 _e186 = col_2; vec3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = mix(_e186, ((_e187 * 1.12) + vec3(0.08, 0.07, 0.04)), _e197); float lw = (1.1 / r_4); vec3 _e201 = col_2; vec3 _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45, 0.42, 0.5)), smoothstep((1.0 - (lw * 2.0)), (1.0 - (lw * 0.6)), d_11)); vec3 _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1.0, (1.0 - (lw * 0.7)), d_11); } } } } } } Stones _e233 = o_1; return _e233; } vec3 ground(vec2 p_18, float d_6) { vec3 sand = vec3(0.0); vec3 col_3 = vec3(0.0); vec3 leaf = vec3(0.0); float _e4 = fbm3_((p_18 * 0.006)); float _e15 = band(_e4, 0.5, 0.08); sand = mix(vec3(0.95, 0.86, 0.64), vec3(0.9, 0.78, 0.56), _e15); vec3 _e18 = sand; float _e28 = fbm3_(((p_18 * 0.012) + vec2(7.0))); float _e31 = band(_e28, 0.62, 0.04); sand = mix(_e18, vec3(0.98, 0.92, 0.74), (_e31 * 0.6)); Vor _e38 = voronoi((p_18 / vec2(6.0))); vec3 _e39 = sand; vec3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8), (smoothstep(0.16, 0.1, _e38.f1_) * step(0.7, _e48))); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_(((p_18 * 0.01) + vec2(20.0))); float _e72 = band(_e69, 0.5, 0.08); vec3 floorDeep = mix(vec3(0.46, 0.58, 0.5), vec3(0.36, 0.5, 0.46), _e72); vec3 _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); float shallowS = (1.0 - smoothstep(60.0, 160.0, d_6)); float _e88 = fbm3_((p_18 * 0.006)); float sl = sin((dot(p_18, vec2(0.05, 0.03)) + (_e88 * 9.0))); vec3 _e93 = col_3; vec3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = mix(_e93, ((_e94 * 1.06) + vec3(0.02)), ((_e102 * shallowS) * 0.6)); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6); vec3 _e112 = col_3; col_3 = (_e112 * _e111.ao); vec3 _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62); vec3 _e124 = col_3; col_3 = (_e124 * _e123.ao); vec3 _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55); vec3 _e136 = col_3; col_3 = (_e136 * _e135.ao); vec3 _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_(((p_18 * 0.008) + vec2(40.0))); float _e151 = band(_e148, 0.62, 0.02); float algae = (_e151 * smoothstep(40.0, 120.0, d_6)); vec3 _e156 = col_3; float _e167 = vnoise((p_18 * 0.08)); float _e170 = band(_e167, 0.5, 0.1); col_3 = mix(_e156, mix(vec3(0.48, 0.66, 0.3), vec3(0.38, 0.58, 0.28), _e170), (algae * 0.8)); Vor _e181 = voronoi(((p_18 / vec2(85.0)) + vec2(5.0))); float _e186 = hash12_((_e181.id + vec2(3.0))); if ((_e186 > 0.78)) { vec2 _e194 = rot2_((_e181.rel * 85.0), (_e186 * 40.0)); float ls = (length((_e194 * vec2(1.0, 2.3))) - 15.0); float _e214 = hash12_((_e181.id + vec2(9.0))); vec3 lc = mix(vec3(0.92, 0.56, 0.26), vec3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = mix((lc * 0.85), lc, _e221); vec3 _e224 = leaf; leaf = mix(_e224, (lc * 0.6), (smoothstep(0.7, 0.2, abs(_e194.y)) * smoothstep(14.0, 10.0, abs(_e194.x)))); vec3 _e239 = leaf; leaf = mix(_e239, (lc * 0.5), smoothstep(-2.4, -0.8, ls)); vec3 _e246 = col_3; vec3 _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6, -0.6, ls)); } vec3 _e252 = col_3; return _e252; } float lightNet(vec2 ps_1, float d_7) { float _e2 = time(); float t_2 = ((_e2 * 0.36) + 23.0); float _e7 = time(); float slow = (_e7 * 0.015); float _e15 = fbm3_(((ps_1 * 0.0035) + vec2(slow, 0.0))); float _e22 = fbm3_(((ps_1 * 0.0035) + vec2(5.2, -(slow)))); vec2 warp = (vec2(_e15, _e22) - vec2(0.5)); vec2 q_3 = (ps_1 + (warp * 140.0)); float _e34 = causticNet((q_3 / vec2(36.0)), t_2, 4); vec2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet(((_e36 / vec2(53.0)) + vec2(17.0)), ((t_2 * 0.83) + 5.0), 3); float c_7 = max(_e34, (_e48 * 0.9)); float soft_1 = (0.03 + ((d_7 / 260.0) * 0.08)); float _e68 = fbm3_((((ps_1 * 0.0028) + vec2(-(slow), (slow * 0.7))) + vec2(31.0))); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return ((_e73 * mix(0.2, 1.0, _e71)) * (1.0 - (smoothstep(110.0, 300.0, d_7) * 0.6))); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_3 = clamp((d_8 / 250.0), 0.0, 1.0); float q_4 = (t_3 * 4.0); float tq = ((floor(q_4) + smoothstep(0.3, 0.7, fract(q_4))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec2 windSlope(vec2 p_19) { vec2 g_1 = vec2(0.0); int i_16 = 0; float _e1 = time(); float _e13 = _group_0_binding_0_fs.misc.y; float _e16 = fbm3_((((p_19 * 0.0025) + vec2((_e1 * 0.018), (_e1 * 0.011))) + vec2(_e13))); float gust = smoothstep(0.48, 0.78, _e16); vec2 dirs[4] = vec2[4](vec2(0.94, 0.34), vec2(0.62, 0.78), vec2(0.99, -0.12), vec2(0.45, 0.89)); float lens[4] = float[4](11.0, 7.5, 15.0, 5.5); bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e93 = i_16; i_16 = (_e93 + 1); } loop_init_11 = false; int _e43 = i_16; if ((_e43 < 4)) { } else { break; } { int _e46 = i_16; float kk = (6.2831855 / lens[_e46]); float w_1 = sqrt(((9.8 * kk) * 120.0)); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise(((p_19 * 0.02) + vec2(float(_e70)))); float ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (float(_e63) * 1.7)) + (_e74 * 3.0)); vec2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018 + (0.008 * float((_e83 & 1)))))); } } vec2 _e96 = g_1; return (_e96 * (0.18 + (0.82 * gust))); } vec3 viewRay(vec2 p_20) { vec4 _e3 = _group_0_binding_0_fs.view; float _e10 = _group_0_binding_0_fs.sun.w; vec3 cam = vec3((_e3.xy * 0.5), _e10); return normalize((vec3(p_20, 0.0) - cam)); } float sparkles(vec2 p_21, float lit_1) { vec2 g_4 = floor((p_21 / vec2(24.0))); vec2 _e9 = hash22_((g_4 + vec2(3.0))); vec2 c_8 = (((g_4 + vec2(0.3)) + (_e9 * 0.4)) * 24.0); vec4 _e17 = ripple(c_8); vec2 _e19 = windSlope(c_8); vec2 sl_1 = ((_e17.zw + _e19) * 1.9); vec3 n_7 = normalize(vec3(-(sl_1), 1.0)); vec3 _e27 = viewRay(c_8); vec3 r_5 = reflect(_e27, n_7); vec3 _e29 = sunDir(); float spec = pow(max(dot(r_5, _e29), 0.0), 50.0); float _e35 = time(); float twinkle = (0.55 + (0.45 * sin(((_e35 * 4.0) + (_e9.x * 40.0))))); float _e50 = band((spec * twinkle), 0.3, 0.15); float _e53 = band(lit_1, 0.6, 0.1); float inten = (_e50 * _e53); if ((inten <= 0.0)) { return 0.0; } float size_2 = (4.0 + ((6.0 * inten) * (0.6 + (0.4 * _e9.y)))); vec2 q_5 = (p_21 - c_8); float core = smoothstep((size_2 * 0.3), (size_2 * 0.1), length(q_5)); float ray = ((smoothstep(size_2, 0.0, abs(q_5.x)) * smoothstep(1.0, 0.2, abs(q_5.y))) + (smoothstep(size_2, 0.0, abs(q_5.y)) * smoothstep(1.0, 0.2, abs(q_5.x)))); return (clamp((core + ray), 0.0, 1.0) * inten); } vec3 skyColor(vec3 r, float lit_2) { vec3 c_3 = vec3(0.0); float up = clamp(r.z, 0.0, 1.0); c_3 = mix(vec3(0.82, 0.93, 1.0), vec3(0.42, 0.68, 0.98), pow(up, 2.0)); vec2 cp = ((r.xy / vec2(max(r.z, 0.15))) * 2.2); float _e28 = time(); float _e34 = fbm3_(((cp * 1.4) + vec2((_e28 * 0.004), 0.0))); float _e37 = band(_e34, 0.6, 0.04); vec3 _e38 = c_3; c_3 = mix(_e38, vec3(1.0, 1.0, 0.97), (_e37 * 0.9)); vec4 _e48 = _group_0_binding_0_fs.sun; float toSun = max(dot(r, _e48.xyz), 0.0); vec3 _e53 = c_3; c_3 = (_e53 * (0.8 + (1.0 * pow(toSun, 5.0)))); float leaf_1 = ((1.0 - lit_2) / 0.8); vec3 _e65 = c_3; c_3 = mix(_e65, vec3(0.16, 0.3, 0.14), clamp((leaf_1 * 1.2), 0.0, 1.0)); vec3 _e76 = c_3; return _e76; } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } vec3 paperTone(vec2 uv) { vec3 b = vec3(0.0); vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_2 = _e3.xy; vec2 p_23 = (uv * wh_2); float _e8 = vnoise((p_23 * 1.6)); float _e16 = vnoise(((p_23 * 0.45) + vec2(11.0))); float grain = (((_e8 * 0.5) + (_e16 * 0.5)) - 0.5); float _e37 = vnoise(vec2(((p_23.x * 0.04) + (p_23.y * 0.015)), ((p_23.y * 0.35) - (p_23.x * 0.08)))); float brush = (_e37 - 0.5); b = vec3(((0.5 + (grain * 0.05)) + (brush * 0.03))); vec2 vq = ((uv - vec2(0.5)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); float vig = (smoothstep(0.4, 0.85, length(vq)) * 0.6); vec3 _e70 = b; b = (_e70 * mix(vec3(1.0), vec3(0.8, 0.86, 0.94), vig)); float bloom = smoothstep(0.75, 0.0, length(((uv - vec2(1.02, -0.05)) * vec2((wh_2.x / wh_2.y), 1.0)))); vec3 _e93 = b; b = (_e93 + (((vec3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09)); vec3 _e103 = b; return clamp(_e103, vec3(0.0), vec3(1.0)); } void main() { FullOut i_3 = FullOut(gl_FragCoord, _vs2fs_location0); vec3 g = vec3(0.0); vec3 col = vec3(0.0); vec3 k_1 = vec3(0.0); vec4 _e4 = _group_0_binding_0_fs.view; vec2 p_24 = (i_3.uv * _e4.xy); vec4 gt = textureLod(_group_0_binding_4_fs, vec2(i_3.uv), 0.0); float d_12 = (gt.w * 320.0); g = gt.xyz; vec4 wd = textureLod(_group_1_binding_2_fs, vec2(i_3.uv), 0.0); vec3 _e22 = g; g = ((_e22 * (1.0 - wd.w)) + wd.xyz); float dd = (d_12 * (1.0 - (wd.w * 0.35))); vec4 lt = textureLod(_group_0_binding_5_fs, vec2(i_3.uv), 0.0); float sunB = lt.x; float net = lt.y; float lit_3 = lt.w; vec2 _e43 = towardSun(); vec2 ps_3 = (p_24 + (_e43 * dd)); float _e46 = rippleFocus(ps_3, dd); vec3 _e47 = g; vec3 _e53 = g; col = mix((_e47 * vec3(0.58, 0.68, 0.8)), (_e53 * vec3(1.05, 1.0, 0.9)), sunB); vec4 _e65 = textureLod(_group_1_binding_1_fs, vec2(i_3.uv), 0.0); float ks = _e65.w; vec3 _e67 = col; col = (_e67 * (vec3(1.0) - ((ks * vec3(0.75, 0.55, 0.35)) * (0.3 + (0.7 * lit_3))))); vec3 _e82 = col; col = (_e82 + (((((vec3(1.0, 0.97, 0.78) * net) * sunB) * clamp(_e46, 0.6, 1.6)) * 0.28) * (1.0 - ks))); vec3 _e99 = col; float _e106 = band(_e46, 1.45, 0.12); col = (_e99 + (((vec3(1.0, 0.96, 0.8) * _e106) * sunB) * 0.18)); vec3 _e112 = col; vec3 _e113 = waterTint(_e112, dd, lit_3); col = _e113; vec4 kc = textureLod(_group_1_binding_0_fs, vec2(i_3.uv), 0.0); if ((kc.w > 0.002)) { k_1 = (kc.xyz / vec3(kc.w)); float ksun = lt.z; vec3 _e128 = k_1; vec3 _e134 = k_1; k_1 = mix((_e128 * vec3(0.74, 0.8, 0.92)), _e134, ksun); vec3 _e136 = k_1; k_1 = (_e136 + (((vec3(1.0, 0.97, 0.8) * net) * ksun) * 0.16)); vec3 _e146 = k_1; vec3 _e147 = k_1; vec3 _e149 = waterTint(_e147, 30.0, ksun); k_1 = mix(_e146, _e149, 0.35); vec3 _e152 = col; vec3 _e153 = k_1; col = mix(_e152, _e153, kc.w); } vec3 _e156 = col; _fs2p_location0 = vec4(_e156, 1.0); return; } fs_watermainà�#version 300 es precision highp float; precision highp int; struct Frame { vec4 view; vec4 sim; vec4 sun; vec4 counts; vec4 misc; vec4 drops[16]; vec4 rocks[4]; vec4 pads[12]; vec4 padx[12]; vec4 petals[16]; vec4 droplets[32]; }; struct Vor { float f1_; float f2_; vec2 id; vec2 rel; }; struct FullOut { vec4 clip; vec2 uv; }; struct Stones { vec3 col; float cover; float ao; }; layout(std140) uniform Frame_block_0Fragment { Frame _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; uniform highp sampler2D _group_0_binding_3_fs; uniform highp sampler2D _group_0_binding_4_fs; uniform highp sampler2D _group_0_binding_5_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float hash12_(vec2 p) { vec3 p3_ = vec3(0.0); p3_ = fract((p.xyx * 0.1031)); vec3 _e6 = p3_; vec3 _e7 = p3_; vec3 _e8 = p3_; p3_ = (_e6 + vec3(dot(_e7, (_e8.yzx + vec3(33.33))))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return fract(((_e17 + _e19) * _e22)); } vec2 hash22_(vec2 p_1) { vec3 p3_1 = vec3(0.0); p3_1 = fract((p_1.xyx * vec3(0.1031, 0.103, 0.0973))); vec3 _e9 = p3_1; vec3 _e10 = p3_1; vec3 _e11 = p3_1; p3_1 = (_e9 + vec3(dot(_e10, (_e11.yzx + vec3(33.33))))); vec3 _e19 = p3_1; vec3 _e21 = p3_1; vec3 _e24 = p3_1; return fract(((_e19.xx + _e21.yz) * _e24.zy)); } float vnoise(vec2 p_2) { vec2 i_17 = floor(p_2); vec2 f = fract(p_2); vec2 u = ((f * f) * (vec2(3.0) - (2.0 * f))); float _e10 = hash12_(i_17); float _e15 = hash12_((i_17 + vec2(1.0, 0.0))); float _e20 = hash12_((i_17 + vec2(0.0, 1.0))); float _e25 = hash12_((i_17 + vec2(1.0, 1.0))); return mix(mix(_e10, _e15, u.x), mix(_e20, _e25, u.x), u.y); } float fbm(vec2 p0_) { vec2 p_3 = vec2(0.0); float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; bool loop_init = true; while(true) { if (!loop_init) { int _e42 = i_5; i_5 = (_e42 + 1); } loop_init = false; int _e8 = i_5; if ((_e8 < 5)) { } else { break; } { float _e11 = v; float _e12 = a; vec2 _e13 = p_3; float _e14 = vnoise(_e13); v = (_e11 + (_e12 * _e14)); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a; a = (_e39 * 0.5); } } float _e45 = v; return _e45; } float fbm3_(vec2 p0_1) { vec2 p_4 = vec2(0.0); float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; bool loop_init_1 = true; while(true) { if (!loop_init_1) { int _e42 = i_6; i_6 = (_e42 + 1); } loop_init_1 = false; int _e8 = i_6; if ((_e8 < 3)) { } else { break; } { float _e11 = v_1; float _e12 = a_1; vec2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = (_e11 + (_e12 * _e14)); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = (vec2(((_e18 * 1.6) - (_e22 * 1.2)), ((_e27 * 1.2) + (_e31 * 1.6))) + vec2(17.3)); float _e39 = a_1; a_1 = (_e39 * 0.5); } } float _e45 = v_1; return (_e45 / 0.875); } Vor voronoi(vec2 p_5) { float f1_ = 8.0; float f2_ = 8.0; vec2 id = vec2(0.0); vec2 rel = vec2(0.0); int j = -1; int i_7 = 0; Vor v_2 = Vor(0.0, 0.0, vec2(0.0), vec2(0.0)); vec2 n_1 = floor(p_5); vec2 f_1 = fract(p_5); bool loop_init_2 = true; while(true) { if (!loop_init_2) { int _e47 = j; j = (_e47 + 1); } loop_init_2 = false; int _e15 = j; if ((_e15 <= 1)) { } else { break; } { i_7 = -1; bool loop_init_3 = true; while(true) { if (!loop_init_3) { int _e44 = i_7; i_7 = (_e44 + 1); } loop_init_3 = false; int _e20 = i_7; if ((_e20 <= 1)) { } else { break; } { int _e23 = i_7; int _e25 = j; vec2 g_2 = vec2(float(_e23), float(_e25)); vec2 _e29 = hash22_((n_1 + g_2)); vec2 o_2 = ((_e29 * 0.76) + vec2(0.12)); vec2 r_1 = ((g_2 + o_2) - f_1); float d_9 = dot(r_1, r_1); float _e38 = f1_; if ((d_9 < _e38)) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = (n_1 + g_2); rel = r_1; } else { float _e42 = f2_; if ((d_9 < _e42)) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = sqrt(_e52); float _e55 = f2_; v_2.f2_ = sqrt(_e55); vec2 _e58 = id; v_2.id = _e58; vec2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } vec2 rot2_(vec2 v_3, float a_2) { float c_5 = cos(a_2); float s_1 = sin(a_2); return vec2(((v_3.x * c_5) - (v_3.y * s_1)), ((v_3.x * s_1) + (v_3.y * c_5))); } vec3 sunDir() { vec4 _e2 = _group_0_binding_0_fs.sun; return _e2.xyz; } vec3 sunInWater() { vec4 _e2 = _group_0_binding_0_fs.sun; vec2 h_2 = (_e2.xy / vec2(1.333)); return vec3(h_2, sqrt(max(0.0, (1.0 - dot(h_2, h_2))))); } vec2 towardSun() { vec3 _e0 = sunInWater(); return (_e0.xy / vec2(_e0.z)); } float time() { float _e3 = _group_0_binding_0_fs.view.w; return _e3; } float rockSdf(vec2 p_6, int i_8) { vec4 r_2 = _group_0_binding_0_fs.rocks[i_8]; vec2 d_10 = (p_6 - r_2.xy); float a_3 = atan(d_10.y, d_10.x); float s_2 = r_2.w; float wob = ((((0.1 * sin(((2.0 * a_3) + s_2))) + (0.07 * sin(((3.0 * a_3) + (s_2 * 2.3))))) + (0.035 * sin(((7.0 * a_3) + (s_2 * 4.1))))) + (0.015 * sin(((13.0 * a_3) + (s_2 * 1.7))))); return (length(d_10) - (r_2.z * (1.0 + wob))); } float rocksSdf(vec2 p_7) { float d = 100000.0; int i_9 = 0; float _e6 = _group_0_binding_0_fs.counts.x; int n_2 = int(_e6); bool loop_init_4 = true; while(true) { if (!loop_init_4) { int _e16 = i_9; i_9 = (_e16 + 1); } loop_init_4 = false; int _e10 = i_9; if ((_e10 < n_2)) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13); d = min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepth(vec2 p_8) { vec4 _e5 = _group_0_binding_0_fs.view; vec4 _e9 = textureLod(_group_0_binding_4_fs, vec2((p_8 / _e5.xy)), 0.0); return (_e9.w * 320.0); } float bedDepthCalc(vec2 p_9) { float d_1 = 0.0; int i_10 = 0; vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh = _e3.xy; float m = min(wh.x, wh.y); vec2 q = ((p_9 - (wh * 0.5)) / vec2(m)); float r_3 = length(((q - vec2(0.08, -0.04)) * vec2(0.8, 1.0))); d_1 = mix(240.0, 46.0, smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_(((p_9 * 0.0045) + vec2(3.1))); d_1 = (_e29 + ((_e35 - 0.5) * 70.0)); float _e44 = _group_0_binding_0_fs.counts.x; int n_3 = int(_e44); bool loop_init_5 = true; while(true) { if (!loop_init_5) { int _e70 = i_10; i_10 = (_e70 + 1); } loop_init_5 = false; int _e48 = i_10; if ((_e48 < n_3)) { } else { break; } { int _e52 = i_10; vec4 rk = _group_0_binding_0_fs.rocks[_e52]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55); float _e57 = d_1; float _e58 = d_1; d_1 = min(_e57, mix(4.0, _e58, smoothstep((-(rk.z) * 0.2), (rk.z * 1.1), _e56))); } } float _e73 = d_1; return max(_e73, 4.0); } float canopy(vec2 p_10) { vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_1 = _e3.xy; float m_1 = min(wh_1.x, wh_1.y); vec2 q_1 = (p_10 / vec2(m_1)); float sway = _group_0_binding_0_fs.misc.x; float reach = (1.0 - smoothstep(0.15, 0.95, length(((q_1 * vec2(0.75, 1.0)) - vec2(-0.05, -0.08))))); vec2 w = vec2((sin(sway) * 3.0), (cos((sway * 0.7)) * 2.0)); float _e42 = fbm3_(((p_10 * 0.006) + (w * 0.08))); float _e52 = fbm3_((((p_10 * 0.03) + (w * 0.25)) + vec2((_e42 * 2.0)))); float cover = (((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55)); return (1.0 - (0.8 * smoothstep(0.47, 0.53, cover))); } float padSdf(vec2 p_11, int i_11) { float sd = 0.0; vec4 pd = _group_0_binding_0_fs.pads[i_11]; vec4 px = _group_0_binding_0_fs.padx[i_11]; vec2 _e14 = rot2_((p_11 - pd.xy), -(pd.w)); float len = length(_e14); float ang = atan(_e14.y, _e14.x); float edge_1 = (pd.z * ((1.0 + (0.022 * sin(((ang * 7.0) + px.z)))) + (0.012 * sin(((ang * 15.0) + (px.z * 2.0)))))); sd = (len - edge_1); float wedge = ((abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len); float _e53 = sd; sd = max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf(vec2 p_12) { float d_2 = 100000.0; int i_12 = 0; float _e6 = _group_0_binding_0_fs.counts.y; int n_4 = int(_e6); bool loop_init_6 = true; while(true) { if (!loop_init_6) { int _e16 = i_12; i_12 = (_e16 + 1); } loop_init_6 = false; int _e10 = i_12; if ((_e10 < n_4)) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13); d_2 = min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet(vec2 p0_2, float t, int iters) { vec2 i_13 = vec2(0.0); float c = 1.0; int n = 0; vec2 p_22 = (p0_2 - vec2(250.0)); i_13 = p_22; bool loop_init_7 = true; while(true) { if (!loop_init_7) { int _e77 = n; n = (_e77 + 1); } loop_init_7 = false; int _e12 = n; if ((_e12 < iters)) { } else { break; } { int _e14 = n; float tt = (t * (1.0 - (3.5 / float((_e14 + 1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = (p_22 + vec2((cos((tt - _e24)) + sin((tt + _e28))), (sin((tt - _e33)) + cos((tt + _e37))))); float _e44 = i_13.x; float sx = sin((_e44 + tt)); float _e48 = i_13.y; float sy = cos((_e48 + tt)); float dx = (p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float dy = (p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005)); float _e69 = c; c = (_e69 + (1.0 / max(length(vec2(dx, dy)), 0.001))); } } float _e80 = c; c = (_e80 / float(iters)); float _e83 = c; c = (1.17 - pow(max(_e83, 0.0), 1.4)); float _e90 = c; return clamp(pow(abs(_e90), 8.0), 0.0, 4.0); } vec2 simUv(vec2 p_13) { vec4 _e3 = _group_0_binding_0_fs.sim; float _e8 = _group_0_binding_0_fs.sim.z; return (p_13 / (_e3.xy * _e8)); } vec4 ripple(vec2 p_14) { vec2 _e3 = simUv(p_14); vec4 _e5 = textureLod(_group_0_binding_1_fs, vec2(_e3), 0.0); return _e5; } float rippleFocus(vec2 ps, float d_3) { float _e5 = _group_0_binding_0_fs.sim.z; float e = (_e5 * 1.5); vec4 _e8 = ripple(ps); float h0_ = _e8.x; vec4 _e14 = ripple((ps + vec2(-(e), 0.0))); float hl = _e14.x; vec4 _e19 = ripple((ps + vec2(e, 0.0))); float hr = _e19.x; vec4 _e25 = ripple((ps + vec2(0.0, -(e)))); float hu = _e25.x; vec4 _e30 = ripple((ps + vec2(0.0, e))); float hd = _e30.x; float lap = (((((hl + hr) + hu) + hd) - (4.0 * h0_)) / (e * e)); float det = (1.0 - (((0.24981245 * d_3) * lap) * 0.9)); return clamp((1.0 / max(det, 0.4)), 0.45, 2.1); } float padShadow(vec2 p_15, float d_4) { vec2 _e2 = towardSun(); vec2 ps_2 = (p_15 + (_e2 * d_4)); float _e5 = padsSdf(ps_2); float blur = (1.5 + (d_4 * 0.05)); return mix(0.28, 1.0, smoothstep(-(blur), blur, _e5)); } float rockShadow(vec2 p_16, float d_5) { float s = 1.0; int i_14 = 0; float _e7 = _group_0_binding_0_fs.counts.x; int n_5 = int(_e7); bool loop_init_8 = true; while(true) { if (!loop_init_8) { int _e56 = i_14; i_14 = (_e56 + 1); } loop_init_8 = false; int _e11 = i_14; if ((_e11 < n_5)) { } else { break; } { int _e15 = i_14; vec4 rk_1 = _group_0_binding_0_fs.rocks[_e15]; float hgt = (rk_1.z * 0.8); vec4 _e23 = _group_0_binding_0_fs.sun; float _e28 = _group_0_binding_0_fs.sun.z; vec2 _e32 = towardSun(); vec2 off = (((_e23.xy / vec2(_e28)) * hgt) + (_e32 * d_5)); int _e36 = i_14; float _e37 = rockSdf((p_16 + off), _e36); float sd_1 = (_e37 - (rk_1.z * 0.1)); float _e42 = s; s = min(_e42, mix(0.25, 1.0, smoothstep((-8.0 - (d_5 * 0.05)), (6.0 + (d_5 * 0.05)), sd_1))); } } float _e59 = s; return _e59; } vec4 loadH(ivec2 c_1, ivec2 size) { vec4 _e10 = texelFetch(_group_0_binding_1_fs, min(max(c_1, ivec2(0)), (size - ivec2(1))), 0); return _e10; } float band(float x, float edge, float soft) { return smoothstep((edge - soft), (edge + soft), x); } vec3 pebbleColor(float h_1) { if ((h_1 < 0.16)) { return vec3(0.9, 0.78, 0.55); } if ((h_1 < 0.3)) { return vec3(0.8, 0.52, 0.36); } if ((h_1 < 0.44)) { return vec3(0.56, 0.64, 0.74); } if ((h_1 < 0.58)) { return vec3(0.97, 0.93, 0.82); } if ((h_1 < 0.7)) { return vec3(0.62, 0.7, 0.46); } if ((h_1 < 0.82)) { return vec3(0.66, 0.56, 0.62); } if ((h_1 < 0.92)) { return vec3(0.82, 0.72, 0.62); } return vec3(0.92, 0.62, 0.46); } float stoneDensity(vec2 c_2, int layer) { float _e7 = fbm3_(((c_2 * 0.0032) + vec2(9.0))); float _e10 = vnoise((c_2 * 0.02)); float cl = (_e7 + ((_e10 - 0.5) * 0.12)); float _e16 = bedDepthCalc(c_2); float shallow = (1.0 - smoothstep(50.0, 180.0, _e16)); float _e24 = band(_e16, 150.0, 40.0); if ((layer == 0)) { float _e32 = band((cl + (shallow * 0.06)), 0.47, 0.05); return (((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02); } if ((layer == 1)) { float _e49 = band((cl + (shallow * 0.08)), 0.53, 0.04); return (((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03); } float _e61 = band(cl, 0.53, 0.06); return ((_e61 * 0.22) + 0.025); } Stones stones(vec2 p_17, float cell, float seed, int layer_1, float size_1) { Stones o_1 = Stones(vec3(0.0), 0.0, 0.0); float best = 0.0; int j_1 = -1; int i_15 = 0; vec3 col_2 = vec3(0.0); o_1.col = vec3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; vec2 g_3 = floor((p_17 / vec2(cell))); vec4 _e20 = _group_0_binding_0_fs.sun; vec2 sun2_ = normalize((_e20.xy + vec2(0.0001))); bool loop_init_9 = true; while(true) { if (!loop_init_9) { int _e230 = j_1; j_1 = (_e230 + 1); } loop_init_9 = false; int _e28 = j_1; if ((_e28 <= 1)) { } else { break; } { i_15 = -1; bool loop_init_10 = true; while(true) { if (!loop_init_10) { int _e227 = i_15; i_15 = (_e227 + 1); } loop_init_10 = false; int _e33 = i_15; if ((_e33 <= 1)) { } else { break; } { int _e36 = i_15; int _e38 = j_1; vec2 id_1 = ((g_3 + vec2(float(_e36), float(_e38))) + vec2(seed)); vec2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; vec2 c_6 = ((((g_3 + vec2(float(_e45), float(_e47))) + vec2(0.1)) + (_e44 * 0.8)) * cell); float _e63 = hash12_(((id_1 * 1.37) + vec2(5.0))); float _e64 = stoneDensity(c_6, layer_1); if ((_e63 > _e64)) { continue; } float _e70 = hash12_((id_1 + vec2(2.0))); float r_4 = ((cell * size_1) * (0.3 + (0.7 * pow(_e70, 1.6)))); float _e81 = hash12_((id_1 + vec2(3.0))); float asp = (0.5 + (0.5 * _e81)); float _e89 = hash12_((id_1 + vec2(4.0))); float ang_1 = (_e89 * 6.2831855); vec2 _e94 = rot2_((p_17 - c_6), -(ang_1)); vec2 q_2 = (_e94 / vec2(r_4, (r_4 * asp))); float d_11 = length(q_2); vec2 _e105 = rot2_(((p_17 - c_6) + ((sun2_ * r_4) * 0.4)), -(ang_1)); vec2 qs = (_e105 / vec2(r_4, (r_4 * asp))); float _e111 = o_1.ao; o_1.ao = min(_e111, mix(0.6, 1.0, smoothstep(0.95, 1.12, length(qs)))); if ((d_11 < 1.0)) { float dome = sqrt((1.0 - (d_11 * d_11))); float _e126 = best; if ((dome > _e126)) { best = dome; vec2 _e133 = rot2_((q_2 * vec2(1.0, (1.0 / asp))), ang_1); vec3 n_6 = normalize(vec3((_e133 * 0.9), (dome + 0.15))); vec4 _e142 = _group_0_binding_0_fs.sun; float ndl = dot(n_6, _e142.xyz); float _e148 = hash12_((id_1 + vec2(7.0))); float _e155 = vnoise(((c_6 * 0.004) + vec2(seed))); float hue = fract(((_e148 * 0.4) + (_e155 * 1.3))); vec3 _e160 = pebbleColor(hue); col_2 = _e160; vec3 _e162 = col_2; float _e169 = vnoise(((q_2 * 2.5) + vec2((hue * 50.0)))); col_2 = (_e162 * (0.94 + (0.12 * _e169))); vec3 _e175 = col_2; vec3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = mix((_e175 * vec3(0.66, 0.7, 0.84)), _e181, _e184); vec3 _e186 = col_2; vec3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = mix(_e186, ((_e187 * 1.12) + vec3(0.08, 0.07, 0.04)), _e197); float lw = (1.1 / r_4); vec3 _e201 = col_2; vec3 _e202 = col_2; col_2 = mix(_e201, (_e202 * vec3(0.45, 0.42, 0.5)), smoothstep((1.0 - (lw * 2.0)), (1.0 - (lw * 0.6)), d_11)); vec3 _e219 = col_2; o_1.col = _e219; o_1.cover = smoothstep(1.0, (1.0 - (lw * 0.7)), d_11); } } } } } } Stones _e233 = o_1; return _e233; } vec3 ground(vec2 p_18, float d_6) { vec3 sand = vec3(0.0); vec3 col_3 = vec3(0.0); vec3 leaf = vec3(0.0); float _e4 = fbm3_((p_18 * 0.006)); float _e15 = band(_e4, 0.5, 0.08); sand = mix(vec3(0.95, 0.86, 0.64), vec3(0.9, 0.78, 0.56), _e15); vec3 _e18 = sand; float _e28 = fbm3_(((p_18 * 0.012) + vec2(7.0))); float _e31 = band(_e28, 0.62, 0.04); sand = mix(_e18, vec3(0.98, 0.92, 0.74), (_e31 * 0.6)); Vor _e38 = voronoi((p_18 / vec2(6.0))); vec3 _e39 = sand; vec3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = mix(_e39, (_e40 * 0.8), (smoothstep(0.16, 0.1, _e38.f1_) * step(0.7, _e48))); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_(((p_18 * 0.01) + vec2(20.0))); float _e72 = band(_e69, 0.5, 0.08); vec3 floorDeep = mix(vec3(0.46, 0.58, 0.5), vec3(0.36, 0.5, 0.46), _e72); vec3 _e74 = sand; col_3 = mix(_e74, floorDeep, _e55); float shallowS = (1.0 - smoothstep(60.0, 160.0, d_6)); float _e88 = fbm3_((p_18 * 0.006)); float sl = sin((dot(p_18, vec2(0.05, 0.03)) + (_e88 * 9.0))); vec3 _e93 = col_3; vec3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = mix(_e93, ((_e94 * 1.06) + vec3(0.02)), ((_e102 * shallowS) * 0.6)); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6); vec3 _e112 = col_3; col_3 = (_e112 * _e111.ao); vec3 _e115 = col_3; col_3 = mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62); vec3 _e124 = col_3; col_3 = (_e124 * _e123.ao); vec3 _e127 = col_3; col_3 = mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55); vec3 _e136 = col_3; col_3 = (_e136 * _e135.ao); vec3 _e139 = col_3; col_3 = mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_(((p_18 * 0.008) + vec2(40.0))); float _e151 = band(_e148, 0.62, 0.02); float algae = (_e151 * smoothstep(40.0, 120.0, d_6)); vec3 _e156 = col_3; float _e167 = vnoise((p_18 * 0.08)); float _e170 = band(_e167, 0.5, 0.1); col_3 = mix(_e156, mix(vec3(0.48, 0.66, 0.3), vec3(0.38, 0.58, 0.28), _e170), (algae * 0.8)); Vor _e181 = voronoi(((p_18 / vec2(85.0)) + vec2(5.0))); float _e186 = hash12_((_e181.id + vec2(3.0))); if ((_e186 > 0.78)) { vec2 _e194 = rot2_((_e181.rel * 85.0), (_e186 * 40.0)); float ls = (length((_e194 * vec2(1.0, 2.3))) - 15.0); float _e214 = hash12_((_e181.id + vec2(9.0))); vec3 lc = mix(vec3(0.92, 0.56, 0.26), vec3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = mix((lc * 0.85), lc, _e221); vec3 _e224 = leaf; leaf = mix(_e224, (lc * 0.6), (smoothstep(0.7, 0.2, abs(_e194.y)) * smoothstep(14.0, 10.0, abs(_e194.x)))); vec3 _e239 = leaf; leaf = mix(_e239, (lc * 0.5), smoothstep(-2.4, -0.8, ls)); vec3 _e246 = col_3; vec3 _e247 = leaf; col_3 = mix(_e246, _e247, smoothstep(0.6, -0.6, ls)); } vec3 _e252 = col_3; return _e252; } float lightNet(vec2 ps_1, float d_7) { float _e2 = time(); float t_2 = ((_e2 * 0.36) + 23.0); float _e7 = time(); float slow = (_e7 * 0.015); float _e15 = fbm3_(((ps_1 * 0.0035) + vec2(slow, 0.0))); float _e22 = fbm3_(((ps_1 * 0.0035) + vec2(5.2, -(slow)))); vec2 warp = (vec2(_e15, _e22) - vec2(0.5)); vec2 q_3 = (ps_1 + (warp * 140.0)); float _e34 = causticNet((q_3 / vec2(36.0)), t_2, 4); vec2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet(((_e36 / vec2(53.0)) + vec2(17.0)), ((t_2 * 0.83) + 5.0), 3); float c_7 = max(_e34, (_e48 * 0.9)); float soft_1 = (0.03 + ((d_7 / 260.0) * 0.08)); float _e68 = fbm3_((((ps_1 * 0.0028) + vec2(-(slow), (slow * 0.7))) + vec2(31.0))); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return ((_e73 * mix(0.2, 1.0, _e71)) * (1.0 - (smoothstep(110.0, 300.0, d_7) * 0.6))); } vec3 waterTint(vec3 col_4, float d_8, float lit) { float t_3 = clamp((d_8 / 250.0), 0.0, 1.0); float q_4 = (t_3 * 4.0); float tq = ((floor(q_4) + smoothstep(0.3, 0.7, fract(q_4))) / 4.0); vec3 shallowC = vec3(0.62, 0.92, 0.7); vec3 midC = vec3(0.22, 0.72, 0.74); vec3 deepC = vec3(0.1, 0.42, 0.62); vec3 wc = mix(mix(shallowC, midC, smoothstep(0.0, 0.5, tq)), deepC, smoothstep(0.45, 1.0, tq)); float amt = mix(0.1, 0.72, tq); vec3 tinted = (col_4 * mix(vec3(1.0), (wc * 1.25), (0.35 + (0.3 * tq)))); return mix(tinted, (wc * (0.72 + (0.28 * lit))), amt); } vec2 windSlope(vec2 p_19) { vec2 g_1 = vec2(0.0); int i_16 = 0; float _e1 = time(); float _e13 = _group_0_binding_0_fs.misc.y; float _e16 = fbm3_((((p_19 * 0.0025) + vec2((_e1 * 0.018), (_e1 * 0.011))) + vec2(_e13))); float gust = smoothstep(0.48, 0.78, _e16); vec2 dirs[4] = vec2[4](vec2(0.94, 0.34), vec2(0.62, 0.78), vec2(0.99, -0.12), vec2(0.45, 0.89)); float lens[4] = float[4](11.0, 7.5, 15.0, 5.5); bool loop_init_11 = true; while(true) { if (!loop_init_11) { int _e93 = i_16; i_16 = (_e93 + 1); } loop_init_11 = false; int _e43 = i_16; if ((_e43 < 4)) { } else { break; } { int _e46 = i_16; float kk = (6.2831855 / lens[_e46]); float w_1 = sqrt(((9.8 * kk) * 120.0)); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise(((p_19 * 0.02) + vec2(float(_e70)))); float ph = ((((dot(dirs[_e55], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (float(_e63) * 1.7)) + (_e74 * 3.0)); vec2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = (_e78 + ((dirs[_e79] * cos(ph)) * (0.018 + (0.008 * float((_e83 & 1)))))); } } vec2 _e96 = g_1; return (_e96 * (0.18 + (0.82 * gust))); } vec3 viewRay(vec2 p_20) { vec4 _e3 = _group_0_binding_0_fs.view; float _e10 = _group_0_binding_0_fs.sun.w; vec3 cam = vec3((_e3.xy * 0.5), _e10); return normalize((vec3(p_20, 0.0) - cam)); } float sparkles(vec2 p_21, float lit_1) { vec2 g_4 = floor((p_21 / vec2(24.0))); vec2 _e9 = hash22_((g_4 + vec2(3.0))); vec2 c_8 = (((g_4 + vec2(0.3)) + (_e9 * 0.4)) * 24.0); vec4 _e17 = ripple(c_8); vec2 _e19 = windSlope(c_8); vec2 sl_1 = ((_e17.zw + _e19) * 1.9); vec3 n_7 = normalize(vec3(-(sl_1), 1.0)); vec3 _e27 = viewRay(c_8); vec3 r_5 = reflect(_e27, n_7); vec3 _e29 = sunDir(); float spec = pow(max(dot(r_5, _e29), 0.0), 50.0); float _e35 = time(); float twinkle = (0.55 + (0.45 * sin(((_e35 * 4.0) + (_e9.x * 40.0))))); float _e50 = band((spec * twinkle), 0.3, 0.15); float _e53 = band(lit_1, 0.6, 0.1); float inten = (_e50 * _e53); if ((inten <= 0.0)) { return 0.0; } float size_2 = (4.0 + ((6.0 * inten) * (0.6 + (0.4 * _e9.y)))); vec2 q_5 = (p_21 - c_8); float core = smoothstep((size_2 * 0.3), (size_2 * 0.1), length(q_5)); float ray = ((smoothstep(size_2, 0.0, abs(q_5.x)) * smoothstep(1.0, 0.2, abs(q_5.y))) + (smoothstep(size_2, 0.0, abs(q_5.y)) * smoothstep(1.0, 0.2, abs(q_5.x)))); return (clamp((core + ray), 0.0, 1.0) * inten); } vec3 skyColor(vec3 r, float lit_2) { vec3 c_3 = vec3(0.0); float up = clamp(r.z, 0.0, 1.0); c_3 = mix(vec3(0.82, 0.93, 1.0), vec3(0.42, 0.68, 0.98), pow(up, 2.0)); vec2 cp = ((r.xy / vec2(max(r.z, 0.15))) * 2.2); float _e28 = time(); float _e34 = fbm3_(((cp * 1.4) + vec2((_e28 * 0.004), 0.0))); float _e37 = band(_e34, 0.6, 0.04); vec3 _e38 = c_3; c_3 = mix(_e38, vec3(1.0, 1.0, 0.97), (_e37 * 0.9)); vec4 _e48 = _group_0_binding_0_fs.sun; float toSun = max(dot(r, _e48.xyz), 0.0); vec3 _e53 = c_3; c_3 = (_e53 * (0.8 + (1.0 * pow(toSun, 5.0)))); float leaf_1 = ((1.0 - lit_2) / 0.8); vec3 _e65 = c_3; c_3 = mix(_e65, vec3(0.16, 0.3, 0.14), clamp((leaf_1 * 1.2), 0.0, 1.0)); vec3 _e76 = c_3; return _e76; } vec3 overlayBlend(vec3 c_4, vec3 t_1) { vec3 lo = ((2.0 * c_4) * t_1); vec3 hi = (vec3(1.0) - ((2.0 * (vec3(1.0) - c_4)) * (vec3(1.0) - t_1))); return mix(hi, lo, lessThan(c_4, vec3(0.5))); } vec3 paperTone(vec2 uv) { vec3 b = vec3(0.0); vec4 _e3 = _group_0_binding_0_fs.view; vec2 wh_2 = _e3.xy; vec2 p_23 = (uv * wh_2); float _e8 = vnoise((p_23 * 1.6)); float _e16 = vnoise(((p_23 * 0.45) + vec2(11.0))); float grain = (((_e8 * 0.5) + (_e16 * 0.5)) - 0.5); float _e37 = vnoise(vec2(((p_23.x * 0.04) + (p_23.y * 0.015)), ((p_23.y * 0.35) - (p_23.x * 0.08)))); float brush = (_e37 - 0.5); b = vec3(((0.5 + (grain * 0.05)) + (brush * 0.03))); vec2 vq = ((uv - vec2(0.5)) * vec2((wh_2.x / max(wh_2.x, wh_2.y)), (wh_2.y / max(wh_2.x, wh_2.y)))); float vig = (smoothstep(0.4, 0.85, length(vq)) * 0.6); vec3 _e70 = b; b = (_e70 * mix(vec3(1.0), vec3(0.8, 0.86, 0.94), vig)); float bloom = smoothstep(0.75, 0.0, length(((uv - vec2(1.02, -0.05)) * vec2((wh_2.x / wh_2.y), 1.0)))); vec3 _e93 = b; b = (_e93 + (((vec3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09)); vec3 _e103 = b; return clamp(_e103, vec3(0.0), vec3(1.0)); } void main() { FullOut i_4 = FullOut(gl_FragCoord, _vs2fs_location0); vec3 col_1 = vec3(0.0); vec4 _e4 = _group_0_binding_0_fs.view; vec2 p_24 = (i_4.uv * _e4.xy); float _e10 = _group_0_binding_0_fs.view.z; float px_1 = (1.0 / _e10); vec4 _e15 = _group_0_binding_0_fs.view; vec2 wh_3 = _e15.xy; float _e17 = time(); vec3 _e18 = sunDir(); vec2 sun2_1 = normalize(_e18.xy); vec4 _e21 = ripple(p_24); float t2_ = (_e17 * 0.35); vec2 sway_1 = vec2(sin((((p_24.y * 0.012) + t2_) + sin(((p_24.x * 0.007) - (t2_ * 0.6))))), cos((((p_24.x * 0.011) - (t2_ * 0.8)) + sin(((p_24.y * 0.009) + t2_))))); vec2 slope = (_e21.zw + (sway_1 * 0.006)); vec3 nrm = normalize(vec3((-(slope) * 1.6), 1.0)); float _e61 = bedDepth(p_24); vec4 _e66 = textureLod(_group_0_binding_5_fs, vec2(i_4.uv), 0.0); float lit_3 = _e66.w; float _e70 = band(lit_3, 0.6, 0.1); vec3 _e71 = viewRay(p_24); vec3 tr = refract(_e71, nrm, 0.7501876); vec3 t0_ = refract(_e71, vec3(0.0, 0.0, 1.0), 0.7501876); vec2 off_1 = ((((tr.xy / vec2(max(-(tr.z), 0.2))) - (t0_.xy / vec2(max(-(t0_.z), 0.2)))) * min(_e61, 200.0)) * 0.8); vec4 _e105 = textureLod(_group_0_binding_3_fs, vec2(((p_24 + off_1) / wh_3)), 0.0); col_1 = _e105.xyz; vec3 r_6 = reflect(_e71, nrm); float cosi = clamp(dot(-(_e71), nrm), 0.0, 1.0); float fres = (0.03 + (0.97 * pow((1.0 - cosi), 5.0))); vec3 _e122 = col_1; vec3 _e123 = skyColor(r_6, lit_3); col_1 = mix(_e122, _e123, clamp((fres * 1.5), 0.0, 1.0)); float rs = max(dot(r_6, _e18), 0.0); vec3 _e133 = col_1; float _e142 = band(pow(rs, 7.0), 0.45, 0.25); col_1 = (_e133 + (((vec3(1.0, 0.95, 0.75) * _e142) * 0.14) * (0.4 + (0.6 * _e70)))); float hgt_1 = _e21.x; float _e155 = vnoise((p_24 * 0.09)); float _e158 = vnoise((p_24 * 0.3)); float _e164 = band((_e155 + (_e158 * 0.4)), 0.45, 0.12); float _e168 = band(-(hgt_1), 0.18, 0.06); vec3 _e169 = col_1; vec3 _e170 = col_1; col_1 = mix(_e169, (_e170 * vec3(0.84, 0.92, 0.98)), (_e168 * 0.5)); float e_1 = _group_0_binding_0_fs.sim.z; vec4 _e186 = ripple((p_24 + vec2(e_1, 0.0))); vec4 _e191 = ripple((p_24 - vec2(e_1, 0.0))); vec4 _e197 = ripple((p_24 + vec2(0.0, e_1))); vec4 _e203 = ripple((p_24 - vec2(0.0, e_1))); float lap_1 = (((((_e186.x + _e191.x) + _e197.x) + _e203.x) - (4.0 * hgt_1)) / (e_1 * e_1)); float toCrest = (length(_e21.zw) / max(-(lap_1), 0.0001)); float _e219 = band(hgt_1, 0.5, 0.3); float lineW = (1.2 + (2.2 * _e219)); float onCrest = (smoothstep((lineW + px_1), (lineW - px_1), toCrest) * step(0.0, -(lap_1))); float _e233 = band(hgt_1, 0.1, 0.04); float _e240 = band(hgt_1, 0.03, 0.012); float crest = (onCrest * ((_e233 * mix(0.45, 1.0, _e164)) + ((_e240 * 0.35) * _e164))); vec3 _e246 = col_1; col_1 = mix(_e246, vec3(0.96, 1.0, 1.0), (crest * 0.62)); vec3 _e254 = col_1; float _e259 = sparkles(p_24, lit_3); col_1 = mix(_e254, vec3(1.0, 1.0, 0.92), _e259); vec3 _e261 = col_1; vec3 _e268 = paperTone(i_4.uv); vec3 _e269 = overlayBlend(clamp(_e261, vec3(0.0), vec3(1.0)), _e268); col_1 = _e269; vec3 _e270 = col_1; float lum = dot(_e270, vec3(0.299, 0.587, 0.114)); vec3 _e277 = col_1; col_1 = mix(vec3(lum), _e277, 1.1); vec3 _e280 = col_1; _fs2p_location0 = vec4(clamp(_e280, vec3(0.0), vec3(1.0)), 1.0); return; }  ›_Š'Y+ËÍo}´D< ßÛFrame_block_0Fragment_group_0_binding_1_fs_group_0_binding_4_fs_group_1_binding_0_fs_group_0_binding_5_fs_group_1_binding_1_fs_group_1_binding_2_fs_group_0_binding_3_fsvs_fullvs_fullfs_simfs_sim fs_ground fs_groundfs_lightfs_lightfs_bedfs_bedfs_waterfs_waterñÐ// language: metal1.0 #include #include using metal::uint; struct type_2 { metal::float4 inner[16]; }; struct type_3 { metal::float4 inner[4]; }; struct type_4 { metal::float4 inner[12]; }; struct type_5 { metal::float4 inner[32]; }; struct Frame { metal::float4 view; metal::float4 sim; metal::float4 sun; metal::float4 counts; metal::float4 misc; type_2 drops; type_3 rocks; type_4 pads; type_4 padx; type_2 petals; type_5 droplets; }; struct Vor { float f1_; float f2_; metal::float2 id; metal::float2 rel; }; struct FullOut { metal::float4 clip; metal::float2 uv; char _pad2[8]; }; struct Stones { metal::packed_float3 col; float cover; float ao; char _pad3[12]; }; struct type_13 { metal::float2 inner[4]; }; struct type_14 { float inner[4]; }; float hash12_( metal::float2 p ) { metal::float3 p3_ = {}; p3_ = metal::fract(p.xyx * 0.1031); metal::float3 _e6 = p3_; metal::float3 _e7 = p3_; metal::float3 _e8 = p3_; p3_ = _e6 + metal::float3(metal::dot(_e7, _e8.yzx + metal::float3(33.33))); float _e17 = p3_.x; float _e19 = p3_.y; float _e22 = p3_.z; return metal::fract((_e17 + _e19) * _e22); } metal::float2 hash22_( metal::float2 p_1 ) { metal::float3 p3_1 = {}; p3_1 = metal::fract(p_1.xyx * metal::float3(0.1031, 0.103, 0.0973)); metal::float3 _e9 = p3_1; metal::float3 _e10 = p3_1; metal::float3 _e11 = p3_1; p3_1 = _e9 + metal::float3(metal::dot(_e10, _e11.yzx + metal::float3(33.33))); metal::float3 _e19 = p3_1; metal::float3 _e21 = p3_1; metal::float3 _e24 = p3_1; return metal::fract((_e19.xx + _e21.yz) * _e24.zy); } float vnoise( metal::float2 p_2 ) { metal::float2 i_17 = metal::floor(p_2); metal::float2 f = metal::fract(p_2); metal::float2 u = (f * f) * (metal::float2(3.0) - (2.0 * f)); float _e10 = hash12_(i_17); float _e15 = hash12_(i_17 + metal::float2(1.0, 0.0)); float _e20 = hash12_(i_17 + metal::float2(0.0, 1.0)); float _e25 = hash12_(i_17 + metal::float2(1.0, 1.0)); return metal::mix(metal::mix(_e10, _e15, u.x), metal::mix(_e20, _e25, u.x), u.y); } float fbm( metal::float2 p0_ ) { metal::float2 p_3 = {}; float v = 0.0; float a = 0.5; int i_5 = 0; p_3 = p0_; uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e42 = i_5; i_5 = as_type(as_type(_e42) + as_type(1)); } loop_init = false; int _e8 = i_5; if (_e8 < 5) { } else { break; } { float _e11 = v; float _e12 = a; metal::float2 _e13 = p_3; float _e14 = vnoise(_e13); v = _e11 + (_e12 * _e14); float _e18 = p_3.x; float _e22 = p_3.y; float _e27 = p_3.x; float _e31 = p_3.y; p_3 = metal::float2((_e18 * 1.6) - (_e22 * 1.2), (_e27 * 1.2) + (_e31 * 1.6)) + metal::float2(17.3); float _e39 = a; a = _e39 * 0.5; } } float _e45 = v; return _e45; } float fbm3_( metal::float2 p0_1 ) { metal::float2 p_4 = {}; float v_1 = 0.0; float a_1 = 0.5; int i_6 = 0; p_4 = p0_1; uint2 loop_bound_1 = uint2(4294967295u); bool loop_init_1 = true; while(true) { if (metal::all(loop_bound_1 == uint2(0u))) { break; } loop_bound_1 -= uint2(loop_bound_1.y == 0u, 1u); if (!loop_init_1) { int _e42 = i_6; i_6 = as_type(as_type(_e42) + as_type(1)); } loop_init_1 = false; int _e8 = i_6; if (_e8 < 3) { } else { break; } { float _e11 = v_1; float _e12 = a_1; metal::float2 _e13 = p_4; float _e14 = vnoise(_e13); v_1 = _e11 + (_e12 * _e14); float _e18 = p_4.x; float _e22 = p_4.y; float _e27 = p_4.x; float _e31 = p_4.y; p_4 = metal::float2((_e18 * 1.6) - (_e22 * 1.2), (_e27 * 1.2) + (_e31 * 1.6)) + metal::float2(17.3); float _e39 = a_1; a_1 = _e39 * 0.5; } } float _e45 = v_1; return _e45 / 0.875; } Vor voronoi( metal::float2 p_5 ) { float f1_ = 8.0; float f2_ = 8.0; metal::float2 id = metal::float2(0.0); metal::float2 rel = metal::float2(0.0); int j = -1; int i_7 = {}; Vor v_2 = {}; metal::float2 n_1 = metal::floor(p_5); metal::float2 f_1 = metal::fract(p_5); uint2 loop_bound_2 = uint2(4294967295u); bool loop_init_2 = true; while(true) { if (metal::all(loop_bound_2 == uint2(0u))) { break; } loop_bound_2 -= uint2(loop_bound_2.y == 0u, 1u); if (!loop_init_2) { int _e47 = j; j = as_type(as_type(_e47) + as_type(1)); } loop_init_2 = false; int _e15 = j; if (_e15 <= 1) { } else { break; } { i_7 = -1; uint2 loop_bound_3 = uint2(4294967295u); bool loop_init_3 = true; while(true) { if (metal::all(loop_bound_3 == uint2(0u))) { break; } loop_bound_3 -= uint2(loop_bound_3.y == 0u, 1u); if (!loop_init_3) { int _e44 = i_7; i_7 = as_type(as_type(_e44) + as_type(1)); } loop_init_3 = false; int _e20 = i_7; if (_e20 <= 1) { } else { break; } { int _e23 = i_7; int _e25 = j; metal::float2 g_2 = metal::float2(static_cast(_e23), static_cast(_e25)); metal::float2 _e29 = hash22_(n_1 + g_2); metal::float2 o_2 = (_e29 * 0.76) + metal::float2(0.12); metal::float2 r_1 = (g_2 + o_2) - f_1; float d_9 = metal::dot(r_1, r_1); float _e38 = f1_; if (d_9 < _e38) { float _e40 = f1_; f2_ = _e40; f1_ = d_9; id = n_1 + g_2; rel = r_1; } else { float _e42 = f2_; if (d_9 < _e42) { f2_ = d_9; } } } } } } float _e52 = f1_; v_2.f1_ = metal::sqrt(_e52); float _e55 = f2_; v_2.f2_ = metal::sqrt(_e55); metal::float2 _e58 = id; v_2.id = _e58; metal::float2 _e60 = rel; v_2.rel = _e60; Vor _e61 = v_2; return _e61; } metal::float2 rot2_( metal::float2 v_3, float a_2 ) { float c_5 = metal::cos(a_2); float s_1 = metal::sin(a_2); return metal::float2((v_3.x * c_5) - (v_3.y * s_1), (v_3.x * s_1) + (v_3.y * c_5)); } metal::float3 sunDir( constant Frame& frame ) { metal::float4 _e2 = frame.sun; return _e2.xyz; } metal::float3 sunInWater( constant Frame& frame ) { metal::float4 _e2 = frame.sun; metal::float2 h_2 = _e2.xy / metal::float2(1.333); return metal::float3(h_2, metal::sqrt(metal::max(0.0, 1.0 - metal::dot(h_2, h_2)))); } metal::float2 towardSun( constant Frame& frame ) { metal::float3 _e0 = sunInWater(frame); return _e0.xy / metal::float2(_e0.z); } float time( constant Frame& frame ) { float _e3 = frame.view.w; return _e3; } float rockSdf( metal::float2 p_6, int i_8, constant Frame& frame ) { metal::float4 r_2 = frame.rocks.inner[metal::min(unsigned(i_8), 3u)]; metal::float2 d_10 = p_6 - r_2.xy; float a_3 = metal::atan2(d_10.y, d_10.x); float s_2 = r_2.w; float wob = (((0.1 * metal::sin((2.0 * a_3) + s_2)) + (0.07 * metal::sin((3.0 * a_3) + (s_2 * 2.3)))) + (0.035 * metal::sin((7.0 * a_3) + (s_2 * 4.1)))) + (0.015 * metal::sin((13.0 * a_3) + (s_2 * 1.7))); return metal::length(d_10) - (r_2.z * (1.0 + wob)); } int naga_f2i32(float value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } float rocksSdf( metal::float2 p_7, constant Frame& frame ) { float d = 100000.0; int i_9 = 0; float _e6 = frame.counts.x; int n_2 = naga_f2i32(_e6); uint2 loop_bound_4 = uint2(4294967295u); bool loop_init_4 = true; while(true) { if (metal::all(loop_bound_4 == uint2(0u))) { break; } loop_bound_4 -= uint2(loop_bound_4.y == 0u, 1u); if (!loop_init_4) { int _e16 = i_9; i_9 = as_type(as_type(_e16) + as_type(1)); } loop_init_4 = false; int _e10 = i_9; if (_e10 < n_2) { } else { break; } { float _e12 = d; int _e13 = i_9; float _e14 = rockSdf(p_7, _e13, frame); d = metal::min(_e12, _e14); } } float _e19 = d; return _e19; } float bedDepth( metal::float2 p_8, constant Frame& frame, metal::sampler samp, metal::texture2d groundTex ) { metal::float4 _e5 = frame.view; metal::float4 _e9 = groundTex.sample(samp, p_8 / _e5.xy, metal::level(0.0)); return _e9.w * 320.0; } float bedDepthCalc( metal::float2 p_9, constant Frame& frame ) { float d_1 = {}; int i_10 = 0; metal::float4 _e3 = frame.view; metal::float2 wh = _e3.xy; float m = metal::min(wh.x, wh.y); metal::float2 q = (p_9 - (wh * 0.5)) / metal::float2(m); float r_3 = metal::length((q - metal::float2(0.08, -0.04)) * metal::float2(0.8, 1.0)); d_1 = metal::mix(240.0, 46.0, metal::smoothstep(0.04, 0.78, r_3)); float _e29 = d_1; float _e35 = fbm3_((p_9 * 0.0045) + metal::float2(3.1)); d_1 = _e29 + ((_e35 - 0.5) * 70.0); float _e44 = frame.counts.x; int n_3 = naga_f2i32(_e44); uint2 loop_bound_5 = uint2(4294967295u); bool loop_init_5 = true; while(true) { if (metal::all(loop_bound_5 == uint2(0u))) { break; } loop_bound_5 -= uint2(loop_bound_5.y == 0u, 1u); if (!loop_init_5) { int _e70 = i_10; i_10 = as_type(as_type(_e70) + as_type(1)); } loop_init_5 = false; int _e48 = i_10; if (_e48 < n_3) { } else { break; } { int _e52 = i_10; metal::float4 rk = frame.rocks.inner[metal::min(unsigned(_e52), 3u)]; int _e55 = i_10; float _e56 = rockSdf(p_9, _e55, frame); float _e57 = d_1; float _e58 = d_1; d_1 = metal::min(_e57, metal::mix(4.0, _e58, metal::smoothstep(-(rk.z) * 0.2, rk.z * 1.1, _e56))); } } float _e73 = d_1; return metal::max(_e73, 4.0); } float canopy( metal::float2 p_10, constant Frame& frame ) { metal::float4 _e3 = frame.view; metal::float2 wh_1 = _e3.xy; float m_1 = metal::min(wh_1.x, wh_1.y); metal::float2 q_1 = p_10 / metal::float2(m_1); float sway = frame.misc.x; float reach = 1.0 - metal::smoothstep(0.15, 0.95, metal::length((q_1 * metal::float2(0.75, 1.0)) - metal::float2(-0.05, -0.08))); metal::float2 w = metal::float2(metal::sin(sway) * 3.0, metal::cos(sway * 0.7) * 2.0); float _e42 = fbm3_((p_10 * 0.006) + (w * 0.08)); float _e52 = fbm3_(((p_10 * 0.03) + (w * 0.25)) + metal::float2(_e42 * 2.0)); float cover = ((reach * 1.15) + ((_e42 - 0.5) * 0.6)) + ((_e52 - 0.5) * 0.55); return 1.0 - (0.8 * metal::smoothstep(0.47, 0.53, cover)); } float padSdf( metal::float2 p_11, int i_11, constant Frame& frame ) { float sd = {}; metal::float4 pd = frame.pads.inner[metal::min(unsigned(i_11), 11u)]; metal::float4 px = frame.padx.inner[metal::min(unsigned(i_11), 11u)]; metal::float2 _e14 = rot2_(p_11 - pd.xy, -(pd.w)); float len = metal::length(_e14); float ang = metal::atan2(_e14.y, _e14.x); float edge_1 = pd.z * ((1.0 + (0.022 * metal::sin((ang * 7.0) + px.z))) + (0.012 * metal::sin((ang * 15.0) + (px.z * 2.0)))); sd = len - edge_1; float wedge = (metal::abs(ang) - (px.x * (1.0 - ((0.35 * len) / pd.z)))) * len; float _e53 = sd; sd = metal::max(_e53, -(wedge)); float _e56 = sd; return _e56; } float padsSdf( metal::float2 p_12, constant Frame& frame ) { float d_2 = 100000.0; int i_12 = 0; float _e6 = frame.counts.y; int n_4 = naga_f2i32(_e6); uint2 loop_bound_6 = uint2(4294967295u); bool loop_init_6 = true; while(true) { if (metal::all(loop_bound_6 == uint2(0u))) { break; } loop_bound_6 -= uint2(loop_bound_6.y == 0u, 1u); if (!loop_init_6) { int _e16 = i_12; i_12 = as_type(as_type(_e16) + as_type(1)); } loop_init_6 = false; int _e10 = i_12; if (_e10 < n_4) { } else { break; } { float _e12 = d_2; int _e13 = i_12; float _e14 = padSdf(p_12, _e13, frame); d_2 = metal::min(_e12, _e14); } } float _e19 = d_2; return _e19; } float causticNet( metal::float2 p0_2, float t, int iters ) { metal::float2 i_13 = {}; float c = 1.0; int n = 0; metal::float2 p_22 = p0_2 - metal::float2(250.0); i_13 = p_22; uint2 loop_bound_7 = uint2(4294967295u); bool loop_init_7 = true; while(true) { if (metal::all(loop_bound_7 == uint2(0u))) { break; } loop_bound_7 -= uint2(loop_bound_7.y == 0u, 1u); if (!loop_init_7) { int _e77 = n; n = as_type(as_type(_e77) + as_type(1)); } loop_init_7 = false; int _e12 = n; if (_e12 < iters) { } else { break; } { int _e14 = n; float tt = t * (1.0 - (3.5 / static_cast(as_type(as_type(_e14) + as_type(1))))); float _e24 = i_13.x; float _e28 = i_13.y; float _e33 = i_13.y; float _e37 = i_13.x; i_13 = p_22 + metal::float2(metal::cos(tt - _e24) + metal::sin(tt + _e28), metal::sin(tt - _e33) + metal::cos(tt + _e37)); float _e44 = i_13.x; float sx = metal::sin(_e44 + tt); float _e48 = i_13.y; float sy = metal::cos(_e48 + tt); float dx = p_22.x / ((sx + ((sx < 0.0) ? -0.0001 : 0.0001)) / 0.005); float dy = p_22.y / ((sy + ((sy < 0.0) ? -0.0001 : 0.0001)) / 0.005); float _e69 = c; c = _e69 + (1.0 / metal::max(metal::length(metal::float2(dx, dy)), 0.001)); } } float _e80 = c; c = _e80 / static_cast(iters); float _e83 = c; c = 1.17 - metal::pow(metal::max(_e83, 0.0), 1.4); float _e90 = c; return metal::clamp(metal::pow(metal::abs(_e90), 8.0), 0.0, 4.0); } metal::float2 simUv( metal::float2 p_13, constant Frame& frame ) { metal::float4 _e3 = frame.sim; float _e8 = frame.sim.z; return p_13 / (_e3.xy * _e8); } metal::float4 ripple( metal::float2 p_14, constant Frame& frame, metal::texture2d heightTex, metal::sampler samp ) { metal::float2 _e3 = simUv(p_14, frame); metal::float4 _e5 = heightTex.sample(samp, _e3, metal::level(0.0)); return _e5; } float rippleFocus( metal::float2 ps, float d_3, constant Frame& frame, metal::texture2d heightTex, metal::sampler samp ) { float _e5 = frame.sim.z; float e = _e5 * 1.5; metal::float4 _e8 = ripple(ps, frame, heightTex, samp); float h0_ = _e8.x; metal::float4 _e14 = ripple(ps + metal::float2(-(e), 0.0), frame, heightTex, samp); float hl = _e14.x; metal::float4 _e19 = ripple(ps + metal::float2(e, 0.0), frame, heightTex, samp); float hr = _e19.x; metal::float4 _e25 = ripple(ps + metal::float2(0.0, -(e)), frame, heightTex, samp); float hu = _e25.x; metal::float4 _e30 = ripple(ps + metal::float2(0.0, e), frame, heightTex, samp); float hd = _e30.x; float lap = ((((hl + hr) + hu) + hd) - (4.0 * h0_)) / (e * e); float det = 1.0 - (((0.24981245 * d_3) * lap) * 0.9); return metal::clamp(1.0 / metal::max(det, 0.4), 0.45, 2.1); } float padShadow( metal::float2 p_15, float d_4, constant Frame& frame ) { metal::float2 _e2 = towardSun(frame); metal::float2 ps_2 = p_15 + (_e2 * d_4); float _e5 = padsSdf(ps_2, frame); float blur = 1.5 + (d_4 * 0.05); return metal::mix(0.28, 1.0, metal::smoothstep(-(blur), blur, _e5)); } float rockShadow( metal::float2 p_16, float d_5, constant Frame& frame ) { float s = 1.0; int i_14 = 0; float _e7 = frame.counts.x; int n_5 = naga_f2i32(_e7); uint2 loop_bound_8 = uint2(4294967295u); bool loop_init_8 = true; while(true) { if (metal::all(loop_bound_8 == uint2(0u))) { break; } loop_bound_8 -= uint2(loop_bound_8.y == 0u, 1u); if (!loop_init_8) { int _e56 = i_14; i_14 = as_type(as_type(_e56) + as_type(1)); } loop_init_8 = false; int _e11 = i_14; if (_e11 < n_5) { } else { break; } { int _e15 = i_14; metal::float4 rk_1 = frame.rocks.inner[metal::min(unsigned(_e15), 3u)]; float hgt = rk_1.z * 0.8; metal::float4 _e23 = frame.sun; float _e28 = frame.sun.z; metal::float2 _e32 = towardSun(frame); metal::float2 off = ((_e23.xy / metal::float2(_e28)) * hgt) + (_e32 * d_5); int _e36 = i_14; float _e37 = rockSdf(p_16 + off, _e36, frame); float sd_1 = _e37 - (rk_1.z * 0.1); float _e42 = s; s = metal::min(_e42, metal::mix(0.25, 1.0, metal::smoothstep(-8.0 - (d_5 * 0.05), 6.0 + (d_5 * 0.05), sd_1))); } } float _e59 = s; return _e59; } metal::float4 loadH( metal::int2 c_1, metal::int2 size, metal::texture2d heightTex ) { uint clamped_lod_e10 = metal::min(uint(0), heightTex.get_num_mip_levels() - 1); metal::float4 _e10 = heightTex.read(metal::min(metal::uint2(metal::clamp(c_1, metal::int2(0), as_type(as_type(size) - as_type(metal::int2(1))))), metal::uint2(heightTex.get_width(clamped_lod_e10), heightTex.get_height(clamped_lod_e10)) - 1), clamped_lod_e10); return _e10; } float band( float x, float edge, float soft ) { return metal::smoothstep(edge - soft, edge + soft, x); } metal::float3 pebbleColor( float h_1 ) { if (h_1 < 0.16) { return metal::float3(0.9, 0.78, 0.55); } if (h_1 < 0.3) { return metal::float3(0.8, 0.52, 0.36); } if (h_1 < 0.44) { return metal::float3(0.56, 0.64, 0.74); } if (h_1 < 0.58) { return metal::float3(0.97, 0.93, 0.82); } if (h_1 < 0.7) { return metal::float3(0.62, 0.7, 0.46); } if (h_1 < 0.82) { return metal::float3(0.66, 0.56, 0.62); } if (h_1 < 0.92) { return metal::float3(0.82, 0.72, 0.62); } return metal::float3(0.92, 0.62, 0.46); } float stoneDensity( metal::float2 c_2, int layer, constant Frame& frame ) { float _e7 = fbm3_((c_2 * 0.0032) + metal::float2(9.0)); float _e10 = vnoise(c_2 * 0.02); float cl = _e7 + ((_e10 - 0.5) * 0.12); float _e16 = bedDepthCalc(c_2, frame); float shallow = 1.0 - metal::smoothstep(50.0, 180.0, _e16); float _e24 = band(_e16, 150.0, 40.0); if (layer == 0) { float _e32 = band(cl + (shallow * 0.06), 0.47, 0.05); return ((_e32 * 0.6) * (1.0 - (_e24 * 0.8))) + 0.02; } if (layer == 1) { float _e49 = band(cl + (shallow * 0.08), 0.53, 0.04); return ((_e49 * 0.82) * (1.0 - (_e24 * 0.6))) + 0.03; } float _e61 = band(cl, 0.53, 0.06); return (_e61 * 0.22) + 0.025; } Stones stones( metal::float2 p_17, float cell, float seed, int layer_1, float size_1, constant Frame& frame ) { Stones o_1 = {}; float best = 0.0; int j_1 = -1; int i_15 = {}; metal::float3 col_2 = {}; o_1.col = metal::float3(0.0); o_1.cover = 0.0; o_1.ao = 1.0; metal::float2 g_3 = metal::floor(p_17 / metal::float2(cell)); metal::float4 _e20 = frame.sun; metal::float2 sun2_ = metal::normalize(_e20.xy + metal::float2(0.0001)); uint2 loop_bound_9 = uint2(4294967295u); bool loop_init_9 = true; while(true) { if (metal::all(loop_bound_9 == uint2(0u))) { break; } loop_bound_9 -= uint2(loop_bound_9.y == 0u, 1u); if (!loop_init_9) { int _e230 = j_1; j_1 = as_type(as_type(_e230) + as_type(1)); } loop_init_9 = false; int _e28 = j_1; if (_e28 <= 1) { } else { break; } { i_15 = -1; uint2 loop_bound_10 = uint2(4294967295u); bool loop_init_10 = true; while(true) { if (metal::all(loop_bound_10 == uint2(0u))) { break; } loop_bound_10 -= uint2(loop_bound_10.y == 0u, 1u); if (!loop_init_10) { int _e227 = i_15; i_15 = as_type(as_type(_e227) + as_type(1)); } loop_init_10 = false; int _e33 = i_15; if (_e33 <= 1) { } else { break; } { int _e36 = i_15; int _e38 = j_1; metal::float2 id_1 = (g_3 + metal::float2(static_cast(_e36), static_cast(_e38))) + metal::float2(seed); metal::float2 _e44 = hash22_(id_1); int _e45 = i_15; int _e47 = j_1; metal::float2 c_6 = (((g_3 + metal::float2(static_cast(_e45), static_cast(_e47))) + metal::float2(0.1)) + (_e44 * 0.8)) * cell; float _e63 = hash12_((id_1 * 1.37) + metal::float2(5.0)); float _e64 = stoneDensity(c_6, layer_1, frame); if (_e63 > _e64) { continue; } float _e70 = hash12_(id_1 + metal::float2(2.0)); float r_4 = (cell * size_1) * (0.3 + (0.7 * metal::pow(_e70, 1.6))); float _e81 = hash12_(id_1 + metal::float2(3.0)); float asp = 0.5 + (0.5 * _e81); float _e89 = hash12_(id_1 + metal::float2(4.0)); float ang_1 = _e89 * 6.2831855; metal::float2 _e94 = rot2_(p_17 - c_6, -(ang_1)); metal::float2 q_2 = _e94 / metal::float2(r_4, r_4 * asp); float d_11 = metal::length(q_2); metal::float2 _e105 = rot2_((p_17 - c_6) + ((sun2_ * r_4) * 0.4), -(ang_1)); metal::float2 qs = _e105 / metal::float2(r_4, r_4 * asp); float _e111 = o_1.ao; o_1.ao = metal::min(_e111, metal::mix(0.6, 1.0, metal::smoothstep(0.95, 1.12, metal::length(qs)))); if (d_11 < 1.0) { float dome = metal::sqrt(1.0 - (d_11 * d_11)); float _e126 = best; if (dome > _e126) { best = dome; metal::float2 _e133 = rot2_(q_2 * metal::float2(1.0, 1.0 / asp), ang_1); metal::float3 n_6 = metal::normalize(metal::float3(_e133 * 0.9, dome + 0.15)); metal::float4 _e142 = frame.sun; float ndl = metal::dot(n_6, _e142.xyz); float _e148 = hash12_(id_1 + metal::float2(7.0)); float _e155 = vnoise((c_6 * 0.004) + metal::float2(seed)); float hue = metal::fract((_e148 * 0.4) + (_e155 * 1.3)); metal::float3 _e160 = pebbleColor(hue); col_2 = _e160; metal::float3 _e162 = col_2; float _e169 = vnoise((q_2 * 2.5) + metal::float2(hue * 50.0)); col_2 = _e162 * (0.94 + (0.12 * _e169)); metal::float3 _e175 = col_2; metal::float3 _e181 = col_2; float _e184 = band(ndl, 0.5, 0.05); col_2 = metal::mix(_e175 * metal::float3(0.66, 0.7, 0.84), _e181, _e184); metal::float3 _e186 = col_2; metal::float3 _e187 = col_2; float _e197 = band(ndl, 0.9, 0.025); col_2 = metal::mix(_e186, (_e187 * 1.12) + metal::float3(0.08, 0.07, 0.04), _e197); float lw = 1.1 / r_4; metal::float3 _e201 = col_2; metal::float3 _e202 = col_2; col_2 = metal::mix(_e201, _e202 * metal::float3(0.45, 0.42, 0.5), metal::smoothstep(1.0 - (lw * 2.0), 1.0 - (lw * 0.6), d_11)); metal::float3 _e219 = col_2; o_1.col = _e219; o_1.cover = metal::smoothstep(1.0, 1.0 - (lw * 0.7), d_11); } } } } } } Stones _e233 = o_1; return _e233; } metal::float3 ground( metal::float2 p_18, float d_6, constant Frame& frame ) { metal::float3 sand = {}; metal::float3 col_3 = {}; metal::float3 leaf = {}; float _e4 = fbm3_(p_18 * 0.006); float _e15 = band(_e4, 0.5, 0.08); sand = metal::mix(metal::float3(0.95, 0.86, 0.64), metal::float3(0.9, 0.78, 0.56), _e15); metal::float3 _e18 = sand; float _e28 = fbm3_((p_18 * 0.012) + metal::float2(7.0)); float _e31 = band(_e28, 0.62, 0.04); sand = metal::mix(_e18, metal::float3(0.98, 0.92, 0.74), _e31 * 0.6); Vor _e38 = voronoi(p_18 / metal::float2(6.0)); metal::float3 _e39 = sand; metal::float3 _e40 = sand; float _e48 = hash12_(_e38.id); sand = metal::mix(_e39, _e40 * 0.8, metal::smoothstep(0.16, 0.1, _e38.f1_) * metal::step(0.7, _e48)); float _e55 = band(d_6, 150.0, 40.0); float _e69 = fbm3_((p_18 * 0.01) + metal::float2(20.0)); float _e72 = band(_e69, 0.5, 0.08); metal::float3 floorDeep = metal::mix(metal::float3(0.46, 0.58, 0.5), metal::float3(0.36, 0.5, 0.46), _e72); metal::float3 _e74 = sand; col_3 = metal::mix(_e74, floorDeep, _e55); float shallowS = 1.0 - metal::smoothstep(60.0, 160.0, d_6); float _e88 = fbm3_(p_18 * 0.006); float sl = metal::sin(metal::dot(p_18, metal::float2(0.05, 0.03)) + (_e88 * 9.0)); metal::float3 _e93 = col_3; metal::float3 _e94 = col_3; float _e102 = band(sl, 0.9, 0.04); col_3 = metal::mix(_e93, (_e94 * 1.06) + metal::float3(0.02), (_e102 * shallowS) * 0.6); Stones _e111 = stones(p_18, 10.0, 3.0, 0, 0.6, frame); metal::float3 _e112 = col_3; col_3 = _e112 * _e111.ao; metal::float3 _e115 = col_3; col_3 = metal::mix(_e115, _e111.col, _e111.cover); Stones _e123 = stones(p_18, 30.0, 11.0, 1, 0.62, frame); metal::float3 _e124 = col_3; col_3 = _e124 * _e123.ao; metal::float3 _e127 = col_3; col_3 = metal::mix(_e127, _e123.col, _e123.cover); Stones _e135 = stones(p_18, 90.0, 17.0, 2, 0.55, frame); metal::float3 _e136 = col_3; col_3 = _e136 * _e135.ao; metal::float3 _e139 = col_3; col_3 = metal::mix(_e139, _e135.col, _e135.cover); float _e148 = fbm3_((p_18 * 0.008) + metal::float2(40.0)); float _e151 = band(_e148, 0.62, 0.02); float algae = _e151 * metal::smoothstep(40.0, 120.0, d_6); metal::float3 _e156 = col_3; float _e167 = vnoise(p_18 * 0.08); float _e170 = band(_e167, 0.5, 0.1); col_3 = metal::mix(_e156, metal::mix(metal::float3(0.48, 0.66, 0.3), metal::float3(0.38, 0.58, 0.28), _e170), algae * 0.8); Vor _e181 = voronoi((p_18 / metal::float2(85.0)) + metal::float2(5.0)); float _e186 = hash12_(_e181.id + metal::float2(3.0)); if (_e186 > 0.78) { metal::float2 _e194 = rot2_(_e181.rel * 85.0, _e186 * 40.0); float ls = metal::length(_e194 * metal::float2(1.0, 2.3)) - 15.0; float _e214 = hash12_(_e181.id + metal::float2(9.0)); metal::float3 lc = metal::mix(metal::float3(0.92, 0.56, 0.26), metal::float3(0.8, 0.72, 0.3), _e214); float _e221 = band(_e194.y, 0.0, 0.5); leaf = metal::mix(lc * 0.85, lc, _e221); metal::float3 _e224 = leaf; leaf = metal::mix(_e224, lc * 0.6, metal::smoothstep(0.7, 0.2, metal::abs(_e194.y)) * metal::smoothstep(14.0, 10.0, metal::abs(_e194.x))); metal::float3 _e239 = leaf; leaf = metal::mix(_e239, lc * 0.5, metal::smoothstep(-2.4, -0.8, ls)); metal::float3 _e246 = col_3; metal::float3 _e247 = leaf; col_3 = metal::mix(_e246, _e247, metal::smoothstep(0.6, -0.6, ls)); } metal::float3 _e252 = col_3; return _e252; } float lightNet( metal::float2 ps_1, float d_7, constant Frame& frame ) { float _e2 = time(frame); float t_2 = (_e2 * 0.36) + 23.0; float _e7 = time(frame); float slow = _e7 * 0.015; float _e15 = fbm3_((ps_1 * 0.0035) + metal::float2(slow, 0.0)); float _e22 = fbm3_((ps_1 * 0.0035) + metal::float2(5.2, -(slow))); metal::float2 warp = metal::float2(_e15, _e22) - metal::float2(0.5); metal::float2 q_3 = ps_1 + (warp * 140.0); float _e34 = causticNet(q_3 / metal::float2(36.0), t_2, 4); metal::float2 _e36 = rot2_(q_3, 1.13); float _e48 = causticNet((_e36 / metal::float2(53.0)) + metal::float2(17.0), (t_2 * 0.83) + 5.0, 3); float c_7 = metal::max(_e34, _e48 * 0.9); float soft_1 = 0.03 + ((d_7 / 260.0) * 0.08); float _e68 = fbm3_(((ps_1 * 0.0028) + metal::float2(-(slow), slow * 0.7)) + metal::float2(31.0)); float _e71 = band(_e68, 0.45, 0.14); float _e73 = band(c_7, 0.24, soft_1); return (_e73 * metal::mix(0.2, 1.0, _e71)) * (1.0 - (metal::smoothstep(110.0, 300.0, d_7) * 0.6)); } metal::float3 waterTint( metal::float3 col_4, float d_8, float lit ) { float t_3 = metal::clamp(d_8 / 250.0, 0.0, 1.0); float q_4 = t_3 * 4.0; float tq = (metal::floor(q_4) + metal::smoothstep(0.3, 0.7, metal::fract(q_4))) / 4.0; metal::float3 shallowC = metal::float3(0.62, 0.92, 0.7); metal::float3 midC = metal::float3(0.22, 0.72, 0.74); metal::float3 deepC = metal::float3(0.1, 0.42, 0.62); metal::float3 wc = metal::mix(metal::mix(shallowC, midC, metal::smoothstep(0.0, 0.5, tq)), deepC, metal::smoothstep(0.45, 1.0, tq)); float amt = metal::mix(0.1, 0.72, tq); metal::float3 tinted = col_4 * metal::mix(metal::float3(1.0), wc * 1.25, 0.35 + (0.3 * tq)); return metal::mix(tinted, wc * (0.72 + (0.28 * lit)), amt); } metal::float2 windSlope( metal::float2 p_19, constant Frame& frame ) { metal::float2 g_1 = metal::float2(0.0); int i_16 = 0; float _e1 = time(frame); float _e13 = frame.misc.y; float _e16 = fbm3_(((p_19 * 0.0025) + metal::float2(_e1 * 0.018, _e1 * 0.011)) + metal::float2(_e13)); float gust = metal::smoothstep(0.48, 0.78, _e16); type_13 dirs = type_13 {{metal::float2(0.94, 0.34), metal::float2(0.62, 0.78), metal::float2(0.99, -0.12), metal::float2(0.45, 0.89)}}; type_14 lens = type_14 {{11.0, 7.5, 15.0, 5.5}}; uint2 loop_bound_11 = uint2(4294967295u); bool loop_init_11 = true; while(true) { if (metal::all(loop_bound_11 == uint2(0u))) { break; } loop_bound_11 -= uint2(loop_bound_11.y == 0u, 1u); if (!loop_init_11) { int _e93 = i_16; i_16 = as_type(as_type(_e93) + as_type(1)); } loop_init_11 = false; int _e43 = i_16; if (_e43 < 4) { } else { break; } { int _e46 = i_16; float kk = 6.2831855 / lens.inner[metal::min(unsigned(_e46), 3u)]; float w_1 = metal::sqrt((9.8 * kk) * 120.0); int _e55 = i_16; int _e63 = i_16; int _e70 = i_16; float _e74 = vnoise((p_19 * 0.02) + metal::float2(static_cast(_e70))); float ph = (((metal::dot(dirs.inner[metal::min(unsigned(_e55), 3u)], p_19) * kk) - ((w_1 * _e1) * 0.06)) + (static_cast(_e63) * 1.7)) + (_e74 * 3.0); metal::float2 _e78 = g_1; int _e79 = i_16; int _e83 = i_16; g_1 = _e78 + ((dirs.inner[metal::min(unsigned(_e79), 3u)] * metal::cos(ph)) * (0.018 + (0.008 * static_cast(_e83 & 1)))); } } metal::float2 _e96 = g_1; return _e96 * (0.18 + (0.82 * gust)); } metal::float3 viewRay( metal::float2 p_20, constant Frame& frame ) { metal::float4 _e3 = frame.view; float _e10 = frame.sun.w; metal::float3 cam = metal::float3(_e3.xy * 0.5, _e10); return metal::normalize(metal::float3(p_20, 0.0) - cam); } float sparkles( metal::float2 p_21, float lit_1, constant Frame& frame, metal::texture2d heightTex, metal::sampler samp ) { metal::float2 g_4 = metal::floor(p_21 / metal::float2(24.0)); metal::float2 _e9 = hash22_(g_4 + metal::float2(3.0)); metal::float2 c_8 = ((g_4 + metal::float2(0.3)) + (_e9 * 0.4)) * 24.0; metal::float4 _e17 = ripple(c_8, frame, heightTex, samp); metal::float2 _e19 = windSlope(c_8, frame); metal::float2 sl_1 = (_e17.zw + _e19) * 1.9; metal::float3 n_7 = metal::normalize(metal::float3(-(sl_1), 1.0)); metal::float3 _e27 = viewRay(c_8, frame); metal::float3 r_5 = metal::reflect(_e27, n_7); metal::float3 _e29 = sunDir(frame); float spec = metal::pow(metal::max(metal::dot(r_5, _e29), 0.0), 50.0); float _e35 = time(frame); float twinkle = 0.55 + (0.45 * metal::sin((_e35 * 4.0) + (_e9.x * 40.0))); float _e50 = band(spec * twinkle, 0.3, 0.15); float _e53 = band(lit_1, 0.6, 0.1); float inten = _e50 * _e53; if (inten <= 0.0) { return 0.0; } float size_2 = 4.0 + ((6.0 * inten) * (0.6 + (0.4 * _e9.y))); metal::float2 q_5 = p_21 - c_8; float core = metal::smoothstep(size_2 * 0.3, size_2 * 0.1, metal::length(q_5)); float ray = (metal::smoothstep(size_2, 0.0, metal::abs(q_5.x)) * metal::smoothstep(1.0, 0.2, metal::abs(q_5.y))) + (metal::smoothstep(size_2, 0.0, metal::abs(q_5.y)) * metal::smoothstep(1.0, 0.2, metal::abs(q_5.x))); return metal::clamp(core + ray, 0.0, 1.0) * inten; } metal::float3 skyColor( metal::float3 r, float lit_2, constant Frame& frame ) { metal::float3 c_3 = {}; float up = metal::clamp(r.z, 0.0, 1.0); c_3 = metal::mix(metal::float3(0.82, 0.93, 1.0), metal::float3(0.42, 0.68, 0.98), metal::pow(up, 2.0)); metal::float2 cp = (r.xy / metal::float2(metal::max(r.z, 0.15))) * 2.2; float _e28 = time(frame); float _e34 = fbm3_((cp * 1.4) + metal::float2(_e28 * 0.004, 0.0)); float _e37 = band(_e34, 0.6, 0.04); metal::float3 _e38 = c_3; c_3 = metal::mix(_e38, metal::float3(1.0, 1.0, 0.97), _e37 * 0.9); metal::float4 _e48 = frame.sun; float toSun = metal::max(metal::dot(r, _e48.xyz), 0.0); metal::float3 _e53 = c_3; c_3 = _e53 * (0.8 + (1.0 * metal::pow(toSun, 5.0))); float leaf_1 = (1.0 - lit_2) / 0.8; metal::float3 _e65 = c_3; c_3 = metal::mix(_e65, metal::float3(0.16, 0.3, 0.14), metal::clamp(leaf_1 * 1.2, 0.0, 1.0)); metal::float3 _e76 = c_3; return _e76; } metal::float3 overlayBlend( metal::float3 c_4, metal::float3 t_1 ) { metal::float3 lo = (2.0 * c_4) * t_1; metal::float3 hi = metal::float3(1.0) - ((2.0 * (metal::float3(1.0) - c_4)) * (metal::float3(1.0) - t_1)); return metal::select(hi, lo, c_4 < metal::float3(0.5)); } metal::float3 paperTone( metal::float2 uv, constant Frame& frame ) { metal::float3 b = {}; metal::float4 _e3 = frame.view; metal::float2 wh_2 = _e3.xy; metal::float2 p_23 = uv * wh_2; float _e8 = vnoise(p_23 * 1.6); float _e16 = vnoise((p_23 * 0.45) + metal::float2(11.0)); float grain = ((_e8 * 0.5) + (_e16 * 0.5)) - 0.5; float _e37 = vnoise(metal::float2((p_23.x * 0.04) + (p_23.y * 0.015), (p_23.y * 0.35) - (p_23.x * 0.08))); float brush = _e37 - 0.5; b = metal::float3((0.5 + (grain * 0.05)) + (brush * 0.03)); metal::float2 vq = (uv - metal::float2(0.5)) * metal::float2(wh_2.x / metal::max(wh_2.x, wh_2.y), wh_2.y / metal::max(wh_2.x, wh_2.y)); float vig = metal::smoothstep(0.4, 0.85, metal::length(vq)) * 0.6; metal::float3 _e70 = b; b = _e70 * metal::mix(metal::float3(1.0), metal::float3(0.8, 0.86, 0.94), vig); float bloom = metal::smoothstep(0.75, 0.0, metal::length((uv - metal::float2(1.02, -0.05)) * metal::float2(wh_2.x / wh_2.y, 1.0))); metal::float3 _e93 = b; b = _e93 + (((metal::float3(1.0, 0.92, 0.66) * bloom) * bloom) * 0.09); metal::float3 _e103 = b; return metal::clamp(_e103, metal::float3(0.0), metal::float3(1.0)); } struct vs_fullInput { }; struct vs_fullOutput { metal::float4 clip [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_fullOutput vs_full( uint vi [[vertex_id]] ) { FullOut o = {}; float x_1 = (static_cast((vi << 1u) & 2u) * 2.0) - 1.0; float y = (static_cast(vi & 2u) * 2.0) - 1.0; o.clip = metal::float4(x_1, y, 0.0, 1.0); o.uv = metal::float2((x_1 * 0.5) + 0.5, 0.5 - (y * 0.5)); FullOut _e32 = o; const auto _tmp = _e32; return vs_fullOutput { _tmp.clip, _tmp.uv }; } metal::int2 naga_f2i32(metal::float2 value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } struct fs_simInput { metal::float2 uv_1 [[user(loc0), center_perspective]]; }; struct fs_simOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_simOutput fs_sim( fs_simInput varyings_1 [[stage_in]] , metal::float4 clip [[position]] , constant Frame& frame [[buffer(0)]] , metal::texture2d heightTex [[texture(0)]] ) { const FullOut i = { clip, varyings_1.uv_1 }; float vel = {}; float h = {}; int k = 0; metal::int2 size_3 = static_cast(metal::uint2(heightTex.get_width(), heightTex.get_height())); metal::int2 c_9 = naga_f2i32(metal::floor(i.uv * static_cast(size_3))); metal::float4 _e9 = loadH(c_9, size_3, heightTex); metal::float4 _e14 = loadH(as_type(as_type(c_9) + as_type(metal::int2(-1, 0))), size_3, heightTex); float l = _e14.x; metal::float4 _e20 = loadH(as_type(as_type(c_9) + as_type(metal::int2(1, 0))), size_3, heightTex); float r_6 = _e20.x; metal::float4 _e26 = loadH(as_type(as_type(c_9) + as_type(metal::int2(0, -1))), size_3, heightTex); float u_1 = _e26.x; metal::float4 _e32 = loadH(as_type(as_type(c_9) + as_type(metal::int2(0, 1))), size_3, heightTex); float d_12 = _e32.x; metal::float4 _e38 = loadH(as_type(as_type(c_9) + as_type(metal::int2(-1, -1))), size_3, heightTex); float ul = _e38.x; metal::float4 _e44 = loadH(as_type(as_type(c_9) + as_type(metal::int2(1, -1))), size_3, heightTex); float ur = _e44.x; metal::float4 _e50 = loadH(as_type(as_type(c_9) + as_type(metal::int2(-1, 1))), size_3, heightTex); float dl = _e50.x; metal::float4 _e56 = loadH(as_type(as_type(c_9) + as_type(metal::int2(1, 1))), size_3, heightTex); float dr = _e56.x; float avg = ((((l + r_6) + u_1) + d_12) * 0.2) + ((((ul + ur) + dl) + dr) * 0.05); vel = _e9.y + ((avg - _e9.x) * 1.9); metal::float4 _e80 = loadH(as_type(as_type(c_9) + as_type(metal::int2(-1, 0))), size_3, heightTex); metal::float4 _e86 = loadH(as_type(as_type(c_9) + as_type(metal::int2(1, 0))), size_3, heightTex); metal::float4 _e93 = loadH(as_type(as_type(c_9) + as_type(metal::int2(0, -1))), size_3, heightTex); metal::float4 _e100 = loadH(as_type(as_type(c_9) + as_type(metal::int2(0, 1))), size_3, heightTex); float avgV = (((_e80.y + _e86.y) + _e93.y) + _e100.y) * 0.25; float _e105 = vel; float _e106 = vel; vel = _e105 + ((avgV - _e106) * 0.07); float _e111 = vel; vel = _e111 * 0.997; float _e115 = vel; h = _e9.x + _e115; float _e118 = h; h = _e118 * 0.9992; float cell_1 = frame.sim.z; metal::float2 p_24 = (static_cast(c_9) + metal::float2(0.5)) * cell_1; float _e133 = frame.sim.w; int nd = naga_f2i32(_e133); uint2 loop_bound_12 = uint2(4294967295u); bool loop_init_12 = true; while(true) { if (metal::all(loop_bound_12 == uint2(0u))) { break; } loop_bound_12 -= uint2(loop_bound_12.y == 0u, 1u); if (!loop_init_12) { int _e162 = k; k = as_type(as_type(_e162) + as_type(1)); } loop_init_12 = false; int _e137 = k; if (_e137 < nd) { } else { break; } { int _e141 = k; metal::float4 dr0_ = frame.drops.inner[metal::min(unsigned(_e141), 15u)]; float t_4 = metal::length(p_24 - dr0_.xy) / dr0_.z; if (t_4 < 1.0) { float _e151 = h; h = _e151 + ((0.5 + (0.5 * metal::cos(t_4 * 3.1415927))) * dr0_.w); } } } float _e165 = padsSdf(p_24, frame); if (_e165 < 0.0) { float _e168 = vel; vel = _e168 * 0.94; float _e171 = h; h = _e171 * 0.985; } float _e174 = rocksSdf(p_24, frame); if (_e174 < 0.0) { h = 0.0; vel = 0.0; } float gx = (r_6 - l) / (2.0 * cell_1); float gy = (d_12 - u_1) / (2.0 * cell_1); float _e187 = h; float _e188 = vel; return fs_simOutput { metal::float4(_e187, _e188, gx, gy) }; } struct fs_groundInput { metal::float2 uv_1 [[user(loc0), center_perspective]]; }; struct fs_groundOutput { metal::float4 member_2 [[color(0)]]; }; fragment fs_groundOutput fs_ground( fs_groundInput varyings_2 [[stage_in]] , metal::float4 clip_1 [[position]] , constant Frame& frame [[buffer(0)]] ) { const FullOut i_1 = { clip_1, varyings_2.uv_1 }; metal::float4 _e4 = frame.view; metal::float2 p_25 = i_1.uv * _e4.xy; float _e7 = bedDepthCalc(p_25, frame); metal::float3 _e8 = ground(p_25, _e7, frame); return fs_groundOutput { metal::float4(metal::clamp(_e8, metal::float3(0.0), metal::float3(1.0)), metal::clamp(_e7 / 320.0, 0.0, 1.0)) }; } struct fs_lightInput { metal::float2 uv_1 [[user(loc0), center_perspective]]; }; struct fs_lightOutput { metal::float4 member_3 [[color(0)]]; }; fragment fs_lightOutput fs_light( fs_lightInput varyings_3 [[stage_in]] , metal::float4 clip_2 [[position]] , constant Frame& frame [[buffer(0)]] , metal::texture2d heightTex [[texture(0)]] , metal::sampler samp [[sampler(0)]] , metal::texture2d groundTex [[texture(2)]] ) { const FullOut i_2 = { clip_2, varyings_3.uv_1 }; metal::float4 _e4 = frame.view; metal::float2 p_26 = i_2.uv * _e4.xy; float _e7 = bedDepth(p_26, frame, samp, groundTex); metal::float2 _e8 = towardSun(frame); metal::float2 ps_3 = p_26 + (_e8 * _e7); float _e11 = canopy(ps_3, frame); metal::float4 _e12 = ripple(ps_3, frame, heightTex, samp); float _e18 = lightNet(ps_3 + ((_e12.zw * _e7) * 0.6), _e7, frame); float _e19 = padShadow(p_26, _e7, frame); float _e20 = rockShadow(p_26, _e7, frame); float _e24 = band(_e19 * _e20, 0.62, 0.08); metal::float2 _e25 = towardSun(frame); metal::float2 kps = p_26 + (_e25 * 30.0); float _e29 = canopy(kps, frame); float _e31 = padShadow(p_26, 30.0, frame); float _e34 = band(_e31, 0.62, 0.08); float ksun = _e29 * _e34; float _e37 = canopy(p_26, frame); return fs_lightOutput { metal::float4(_e11 * _e24, _e18, ksun, _e37) }; } struct fs_bedInput { metal::float2 uv_1 [[user(loc0), center_perspective]]; }; struct fs_bedOutput { metal::float4 member_4 [[color(0)]]; }; fragment fs_bedOutput fs_bed( fs_bedInput varyings_4 [[stage_in]] , metal::float4 clip_3 [[position]] , constant Frame& frame [[buffer(0)]] , metal::texture2d heightTex [[texture(0)]] , metal::sampler samp [[sampler(0)]] , metal::texture2d groundTex [[texture(2)]] , metal::texture2d koiTex [[texture(4)]] , metal::texture2d koiShadowTex [[texture(5)]] , metal::texture2d lightTex [[texture(3)]] , metal::texture2d weedTex [[texture(6)]] ) { const FullOut i_3 = { clip_3, varyings_4.uv_1 }; metal::float3 g = {}; metal::float3 col = {}; metal::float3 k_1 = {}; metal::float4 _e4 = frame.view; metal::float2 p_27 = i_3.uv * _e4.xy; metal::float4 gt = groundTex.sample(samp, i_3.uv, metal::level(0.0)); float d_13 = gt.w * 320.0; g = gt.xyz; metal::float4 wd = weedTex.sample(samp, i_3.uv, metal::level(0.0)); metal::float3 _e22 = g; g = (_e22 * (1.0 - wd.w)) + wd.xyz; float dd = d_13 * (1.0 - (wd.w * 0.35)); metal::float4 lt = lightTex.sample(samp, i_3.uv, metal::level(0.0)); float sunB = lt.x; float net = lt.y; float lit_3 = lt.w; metal::float2 _e43 = towardSun(frame); metal::float2 ps_4 = p_27 + (_e43 * dd); float _e46 = rippleFocus(ps_4, dd, frame, heightTex, samp); metal::float3 _e47 = g; metal::float3 _e53 = g; col = metal::mix(_e47 * metal::float3(0.58, 0.68, 0.8), _e53 * metal::float3(1.05, 1.0, 0.9), sunB); metal::float4 _e65 = koiShadowTex.sample(samp, i_3.uv, metal::level(0.0)); float ks = _e65.w; metal::float3 _e67 = col; col = _e67 * (metal::float3(1.0) - ((ks * metal::float3(0.75, 0.55, 0.35)) * (0.3 + (0.7 * lit_3)))); metal::float3 _e82 = col; col = _e82 + (((((metal::float3(1.0, 0.97, 0.78) * net) * sunB) * metal::clamp(_e46, 0.6, 1.6)) * 0.28) * (1.0 - ks)); metal::float3 _e99 = col; float _e106 = band(_e46, 1.45, 0.12); col = _e99 + (((metal::float3(1.0, 0.96, 0.8) * _e106) * sunB) * 0.18); metal::float3 _e112 = col; metal::float3 _e113 = waterTint(_e112, dd, lit_3); col = _e113; metal::float4 kc = koiTex.sample(samp, i_3.uv, metal::level(0.0)); if (kc.w > 0.002) { k_1 = kc.xyz / metal::float3(kc.w); float ksun_1 = lt.z; metal::float3 _e128 = k_1; metal::float3 _e134 = k_1; k_1 = metal::mix(_e128 * metal::float3(0.74, 0.8, 0.92), _e134, ksun_1); metal::float3 _e136 = k_1; k_1 = _e136 + (((metal::float3(1.0, 0.97, 0.8) * net) * ksun_1) * 0.16); metal::float3 _e146 = k_1; metal::float3 _e147 = k_1; metal::float3 _e149 = waterTint(_e147, 30.0, ksun_1); k_1 = metal::mix(_e146, _e149, 0.35); metal::float3 _e152 = col; metal::float3 _e153 = k_1; col = metal::mix(_e152, _e153, kc.w); } metal::float3 _e156 = col; return fs_bedOutput { metal::float4(_e156, 1.0) }; } struct fs_waterInput { metal::float2 uv_1 [[user(loc0), center_perspective]]; }; struct fs_waterOutput { metal::float4 member_5 [[color(0)]]; }; fragment fs_waterOutput fs_water( fs_waterInput varyings_5 [[stage_in]] , metal::float4 clip_4 [[position]] , constant Frame& frame [[buffer(0)]] , metal::texture2d heightTex [[texture(0)]] , metal::sampler samp [[sampler(0)]] , metal::texture2d floorTex [[texture(1)]] , metal::texture2d groundTex [[texture(2)]] , metal::texture2d lightTex [[texture(3)]] ) { const FullOut i_4 = { clip_4, varyings_5.uv_1 }; metal::float3 col_1 = {}; metal::float4 _e4 = frame.view; metal::float2 p_28 = i_4.uv * _e4.xy; float _e10 = frame.view.z; float px_1 = 1.0 / _e10; metal::float4 _e15 = frame.view; metal::float2 wh_3 = _e15.xy; float _e17 = time(frame); metal::float3 _e18 = sunDir(frame); metal::float2 sun2_1 = metal::normalize(_e18.xy); metal::float4 _e21 = ripple(p_28, frame, heightTex, samp); float t2_ = _e17 * 0.35; metal::float2 sway_1 = metal::float2(metal::sin(((p_28.y * 0.012) + t2_) + metal::sin((p_28.x * 0.007) - (t2_ * 0.6))), metal::cos(((p_28.x * 0.011) - (t2_ * 0.8)) + metal::sin((p_28.y * 0.009) + t2_))); metal::float2 slope = _e21.zw + (sway_1 * 0.006); metal::float3 nrm = metal::normalize(metal::float3(-(slope) * 1.6, 1.0)); float _e61 = bedDepth(p_28, frame, samp, groundTex); metal::float4 _e66 = lightTex.sample(samp, i_4.uv, metal::level(0.0)); float lit_4 = _e66.w; float _e70 = band(lit_4, 0.6, 0.1); metal::float3 _e71 = viewRay(p_28, frame); metal::float3 tr = metal::refract(_e71, nrm, 0.7501876); metal::float3 t0_ = metal::refract(_e71, metal::float3(0.0, 0.0, 1.0), 0.7501876); metal::float2 off_1 = (((tr.xy / metal::float2(metal::max(-(tr.z), 0.2))) - (t0_.xy / metal::float2(metal::max(-(t0_.z), 0.2)))) * metal::min(_e61, 200.0)) * 0.8; metal::float4 _e105 = floorTex.sample(samp, (p_28 + off_1) / wh_3, metal::level(0.0)); col_1 = _e105.xyz; metal::float3 r_7 = metal::reflect(_e71, nrm); float cosi = metal::clamp(metal::dot(-(_e71), nrm), 0.0, 1.0); float fres = 0.03 + (0.97 * metal::pow(1.0 - cosi, 5.0)); metal::float3 _e122 = col_1; metal::float3 _e123 = skyColor(r_7, lit_4, frame); col_1 = metal::mix(_e122, _e123, metal::clamp(fres * 1.5, 0.0, 1.0)); float rs = metal::max(metal::dot(r_7, _e18), 0.0); metal::float3 _e133 = col_1; float _e142 = band(metal::pow(rs, 7.0), 0.45, 0.25); col_1 = _e133 + (((metal::float3(1.0, 0.95, 0.75) * _e142) * 0.14) * (0.4 + (0.6 * _e70))); float hgt_1 = _e21.x; float _e155 = vnoise(p_28 * 0.09); float _e158 = vnoise(p_28 * 0.3); float _e164 = band(_e155 + (_e158 * 0.4), 0.45, 0.12); float _e168 = band(-(hgt_1), 0.18, 0.06); metal::float3 _e169 = col_1; metal::float3 _e170 = col_1; col_1 = metal::mix(_e169, _e170 * metal::float3(0.84, 0.92, 0.98), _e168 * 0.5); float e_1 = frame.sim.z; metal::float4 _e186 = ripple(p_28 + metal::float2(e_1, 0.0), frame, heightTex, samp); metal::float4 _e191 = ripple(p_28 - metal::float2(e_1, 0.0), frame, heightTex, samp); metal::float4 _e197 = ripple(p_28 + metal::float2(0.0, e_1), frame, heightTex, samp); metal::float4 _e203 = ripple(p_28 - metal::float2(0.0, e_1), frame, heightTex, samp); float lap_1 = ((((_e186.x + _e191.x) + _e197.x) + _e203.x) - (4.0 * hgt_1)) / (e_1 * e_1); float toCrest = metal::length(_e21.zw) / metal::max(-(lap_1), 0.0001); float _e219 = band(hgt_1, 0.5, 0.3); float lineW = 1.2 + (2.2 * _e219); float onCrest = metal::smoothstep(lineW + px_1, lineW - px_1, toCrest) * metal::step(0.0, -(lap_1)); float _e233 = band(hgt_1, 0.1, 0.04); float _e240 = band(hgt_1, 0.03, 0.012); float crest = onCrest * ((_e233 * metal::mix(0.45, 1.0, _e164)) + ((_e240 * 0.35) * _e164)); metal::float3 _e246 = col_1; col_1 = metal::mix(_e246, metal::float3(0.96, 1.0, 1.0), crest * 0.62); metal::float3 _e254 = col_1; float _e259 = sparkles(p_28, lit_4, frame, heightTex, samp); col_1 = metal::mix(_e254, metal::float3(1.0, 1.0, 0.92), _e259); metal::float3 _e261 = col_1; metal::float3 _e268 = paperTone(i_4.uv, frame); metal::float3 _e269 = overlayBlend(metal::clamp(_e261, metal::float3(0.0), metal::float3(1.0)), _e268); col_1 = _e269; metal::float3 _e270 = col_1; float lum = metal::dot(_e270, metal::float3(0.299, 0.587, 0.114)); metal::float3 _e277 = col_1; col_1 = metal::mix(metal::float3(lum), _e277, 1.1); metal::float3 _e280 = col_1; return fs_waterOutput { metal::float4(metal::clamp(_e280, metal::float3(0.0), metal::float3(1.0)), 1.0) }; }  ›_Š'Y+ËÍo}´D< ßÛvs_fullmain›struct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _275 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const FullOut _626 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 uv; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 uv : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { FullOut o = _626; float _632 = (float((uint(gl_VertexIndex) << 1u) & 2u) * 2.0f) - 1.0f; float _636 = (float(uint(gl_VertexIndex) & 2u) * 2.0f) - 1.0f; o.clip = float4(_632, _636, 0.0f, 1.0f); o.uv = float2((_632 * 0.5f) + 0.5f, 0.5f - (_636 * 0.5f)); gl_Position = o.clip; uv = o.uv; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.uv = uv; return stage_output; } fs_simmain0struct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _280 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Stones _1152 = { float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f }; static const float2 _1675[4] = { float2(0.939999997615814208984375f, 0.3400000035762786865234375f), float2(0.62000000476837158203125f, 0.7799999713897705078125f), float2(0.9900000095367431640625f, -0.119999997317790985107421875f), float2(0.449999988079071044921875f, 0.88999998569488525390625f) }; static const float _1678[4] = { 11.0f, 7.5f, 15.0f, 5.5f }; cbuffer frame : register(b0) { Frame frame_1_m0 : packoffset(c0); }; Texture2D heightTex : register(t0); static float4 gl_FragCoord; static float2 uv; static float4 _1945; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _1945 : SV_Target0; }; uint2 spvTextureSize(Texture2D Tex, uint Level, out uint Param) { uint2 ret; Tex.GetDimensions(Level, ret.x, ret.y, Param); return ret; } float4 loadH(int2 c, int2 size) { int _995; spvTextureSize(heightTex, 0u, _995); int _997 = int(min(uint(0), uint(int(_995) - 1))); uint _998_dummy_parameter; return heightTex.Load(int3(int2(min(uint2(min(max(c, int2(0, 0)), (size - int2(1, 1)))), uint2(int2(spvTextureSize(heightTex, uint(_997), _998_dummy_parameter)) - int2(1, 1)))), _997)); } float2 rot2(float2 v, float a) { float _371 = cos(a); float _372 = sin(a); return float2((v.x * _371) - (v.y * _372), (v.x * _372) + (v.y * _371)); } float padSdf(float2 p, int i) { float sd = 0.0f; uint _691 = min(uint(i), 11u); uint _695 = min(uint(i), 11u); float2 _703 = rot2(p - frame_1_m0.pads[_691].xy, -frame_1_m0.pads[_691].w); float _704 = length(_703); float _707 = atan2(_703.y, _703.x); sd = _704 - (frame_1_m0.pads[_691].z * ((1.0f + (0.02199999988079071044921875f * sin((_707 * 7.0f) + frame_1_m0.padx[_695].z))) + (0.01200000010430812835693359375f * sin((_707 * 15.0f) + (frame_1_m0.padx[_695].z * 2.0f))))); sd = max(sd, -((abs(_707) - (frame_1_m0.padx[_695].x * (1.0f - ((0.3499999940395355224609375f * _704) / frame_1_m0.pads[_691].z)))) * _704)); return sd; } float padsSdf(float2 p) { float d = 100000.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); int _747 = int(clamp(frame_1_m0.counts.y, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _747)) { break; } d = min(d, padSdf(p, i)); i++; continue; } return d; } float rockSdf(float2 p, int i) { uint _444 = min(uint(i), 3u); float2 _449 = p - frame_1_m0.rocks[_444].xy; float _452 = atan2(_449.y, _449.x); return length(_449) - (frame_1_m0.rocks[_444].z * (1.0f + ((((0.100000001490116119384765625f * sin((2.0f * _452) + frame_1_m0.rocks[_444].w)) + (0.070000000298023223876953125f * sin((3.0f * _452) + (frame_1_m0.rocks[_444].w * 2.2999999523162841796875f)))) + (0.0350000001490116119384765625f * sin((7.0f * _452) + (frame_1_m0.rocks[_444].w * 4.099999904632568359375f)))) + (0.014999999664723873138427734375f * sin((13.0f * _452) + (frame_1_m0.rocks[_444].w * 1.7000000476837158203125f)))))); } float rocksSdf(float2 p) { float d = 100000.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); int _494 = int(clamp(frame_1_m0.counts.x, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _494)) { break; } d = min(d, rockSdf(p, i)); i++; continue; } return d; } void frag_main() { float vel = 0.0f; float h = 0.0f; int k = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); FullOut _1938 = { gl_FragCoord, uv }; uint _1970_dummy_parameter; int2 _1971 = int2(spvTextureSize(heightTex, 0u, _1970_dummy_parameter)); int2 _1979 = int2(clamp(floor(_1938.uv * float2(_1971)), float2(-2147483648.0f, -2147483648.0f), float2(2147483520.0f, 2147483520.0f))); float4 _1980 = loadH(_1979, _1971); float4 _1982 = loadH(_1979 + int2(-1, 0), _1971); float _1983 = _1982.x; float4 _1985 = loadH(_1979 + int2(1, 0), _1971); float _1986 = _1985.x; float4 _1988 = loadH(_1979 + int2(0, -1), _1971); float _1989 = _1988.x; float4 _1991 = loadH(_1979 + int2(0, 1), _1971); float _1992 = _1991.x; vel = _1980.y + (((((((_1983 + _1986) + _1989) + _1992) * 0.20000000298023223876953125f) + ((((loadH(_1979 + int2(-1, -1), _1971).x + loadH(_1979 + int2(1, -1), _1971).x) + loadH(_1979 + int2(-1, 1), _1971).x) + loadH(_1979 + int2(1, 1), _1971).x) * 0.0500000007450580596923828125f)) - _1980.x) * 1.89999997615814208984375f); vel += ((((((loadH(_1979 + int2(-1, 0), _1971).y + loadH(_1979 + int2(1, 0), _1971).y) + loadH(_1979 + int2(0, -1), _1971).y) + loadH(_1979 + int2(0, 1), _1971).y) * 0.25f) - vel) * 0.070000000298023223876953125f); vel *= 0.9969999790191650390625f; h = _1980.x + vel; h *= 0.99919998645782470703125f; float2 _2051 = (float2(_1979) + float2(0.5f, 0.5f)) * frame_1_m0.sim.z; int _2055 = int(clamp(frame_1_m0.sim.w, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(k < _2055)) { break; } uint _2080 = min(uint(k), 15u); float _2088 = length(_2051 - frame_1_m0.drops[_2080].xy) / frame_1_m0.drops[_2080].z; if (_2088 < 1.0f) { h += ((0.5f + (0.5f * cos(_2088 * 3.1415927410125732421875f))) * frame_1_m0.drops[_2080].w); } k++; continue; } if (padsSdf(_2051) < 0.0f) { vel *= 0.939999997615814208984375f; h *= 0.98500001430511474609375f; } if (rocksSdf(_2051) < 0.0f) { h = 0.0f; vel = 0.0f; } _1945 = float4(h, vel, (_1986 - _1983) / (2.0f * frame_1_m0.sim.z), (_1992 - _1989) / (2.0f * frame_1_m0.sim.z)); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._1945 = _1945; return stage_output; }  fs_groundmain¨Istruct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _278 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Stones _1130 = { float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f }; static const float2 _1653[4] = { float2(0.939999997615814208984375f, 0.3400000035762786865234375f), float2(0.62000000476837158203125f, 0.7799999713897705078125f), float2(0.9900000095367431640625f, -0.119999997317790985107421875f), float2(0.449999988079071044921875f, 0.88999998569488525390625f) }; static const float _1656[4] = { 11.0f, 7.5f, 15.0f, 5.5f }; cbuffer frame : register(b0) { Frame frame_1_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float2 uv; static float4 _1923; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _1923 : SV_Target0; }; float hash12(float2 p) { float3 p3 = float3(0.0f, 0.0f, 0.0f); p3 = frac(p.xyx * 0.103100001811981201171875f); float _48 = dot(p3, p3.yzx + float3(33.3300018310546875f, 33.3300018310546875f, 33.3300018310546875f)); p3 += float3(_48, _48, _48); return frac((p3.x + p3.y) * p3.z); } float vnoise(float2 p) { float2 _106 = floor(p); float2 _107 = frac(p); float2 _111 = (_107 * _107) * (float2(3.0f, 3.0f) - (_107 * 2.0f)); return lerp(lerp(hash12(_106), hash12(_106 + float2(1.0f, 0.0f)), _111.x), lerp(hash12(_106 + float2(0.0f, 1.0f)), hash12(_106 + float2(1.0f, 1.0f)), _111.x), _111.y); } float fbm3(float2 p0) { float v = 0.0f; int i = 0; float2 p = float2(0.0f, 0.0f); float a = 0.5f; uint2 loop_bound = uint2(4294967295u, 4294967295u); p = p0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 3)) { break; } v += (a * vnoise(p)); p = float2((p.x * 1.60000002384185791015625f) - (p.y * 1.2000000476837158203125f), (p.x * 1.2000000476837158203125f) + (p.y * 1.60000002384185791015625f)) + float2(17.299999237060546875f, 17.299999237060546875f); a *= 0.5f; i++; continue; } return v / 0.875f; } float rockSdf(float2 p, int i) { uint _442 = min(uint(i), 3u); float2 _447 = p - frame_1_m0.rocks[_442].xy; float _450 = atan2(_447.y, _447.x); return length(_447) - (frame_1_m0.rocks[_442].z * (1.0f + ((((0.100000001490116119384765625f * sin((2.0f * _450) + frame_1_m0.rocks[_442].w)) + (0.070000000298023223876953125f * sin((3.0f * _450) + (frame_1_m0.rocks[_442].w * 2.2999999523162841796875f)))) + (0.0350000001490116119384765625f * sin((7.0f * _450) + (frame_1_m0.rocks[_442].w * 4.099999904632568359375f)))) + (0.014999999664723873138427734375f * sin((13.0f * _450) + (frame_1_m0.rocks[_442].w * 1.7000000476837158203125f)))))); } float bedDepthCalc(float2 p) { float d = 0.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); float _550 = min(frame_1_m0.view.xy.x, frame_1_m0.view.xy.y); d = lerp(240.0f, 46.0f, smoothstep(0.039999999105930328369140625f, 0.7799999713897705078125f, length((((p - (frame_1_m0.view.xy * 0.5f)) / float2(_550, _550)) - float2(0.07999999821186065673828125f, -0.039999999105930328369140625f)) * float2(0.800000011920928955078125f, 1.0f)))); d += ((fbm3((p * 0.00449999980628490447998046875f) + float2(3.099999904632568359375f, 3.099999904632568359375f)) - 0.5f) * 70.0f); int _570 = int(clamp(frame_1_m0.counts.x, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _570)) { break; } uint _593 = min(uint(i), 3u); d = min(d, lerp(4.0f, d, smoothstep((-frame_1_m0.rocks[_593].z) * 0.20000000298023223876953125f, frame_1_m0.rocks[_593].z * 1.10000002384185791015625f, rockSdf(p, i)))); i++; continue; } return max(d, 4.0f); } float band(float x, float edge, float soft) { return smoothstep(edge - soft, edge + soft, x); } float2 hash22(float2 p) { float3 p3 = float3(0.0f, 0.0f, 0.0f); p3 = frac(p.xyx * float3(0.103100001811981201171875f, 0.10300000011920928955078125f, 0.097300000488758087158203125f)); float _82 = dot(p3, p3.yzx + float3(33.3300018310546875f, 33.3300018310546875f, 33.3300018310546875f)); p3 += float3(_82, _82, _82); return frac((p3.xx + p3.yz) * p3.zy); } Vor voronoi(float2 p) { int j = -1; float f2 = 8.0f; Vor v = _278; float2 rel = float2(0.0f, 0.0f); float f1 = 8.0f; float2 id = float2(0.0f, 0.0f); uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); float2 _280 = floor(p); float2 _281 = frac(p); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(j <= 1)) { break; } int i = -1; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(i <= 1)) { break; } float2 _328 = float2(float(i), float(j)); float2 _334 = (_328 + ((hash22(_280 + _328) * 0.7599999904632568359375f) + float2(0.119999997317790985107421875f, 0.119999997317790985107421875f))) - _281; float _335 = dot(_334, _334); if (_335 < f1) { f2 = f1; f1 = _335; id = _280 + _328; rel = _334; } else { if (_335 < f2) { f2 = _335; } } i++; continue; } j++; continue; } v.f1 = sqrt(f1); v.f2 = sqrt(f2); v.id = id; v.rel = rel; return v; } float stoneDensity(float2 c, int layer) { float _1067 = fbm3((c * 0.00319999991916120052337646484375f) + float2(9.0f, 9.0f)) + ((vnoise(c * 0.0199999995529651641845703125f) - 0.5f) * 0.119999997317790985107421875f); float _1068 = bedDepthCalc(c); float _1070 = 1.0f - smoothstep(50.0f, 180.0f, _1068); float _1071 = band(_1068, 150.0f, 40.0f); if (layer == 0) { return ((band(_1067 + (_1070 * 0.0599999986588954925537109375f), 0.4699999988079071044921875f, 0.0500000007450580596923828125f) * 0.60000002384185791015625f) * (1.0f - (_1071 * 0.800000011920928955078125f))) + 0.0199999995529651641845703125f; } if (layer == 1) { return ((band(_1067 + (_1070 * 0.07999999821186065673828125f), 0.5299999713897705078125f, 0.039999999105930328369140625f) * 0.819999992847442626953125f) * (1.0f - (_1071 * 0.60000002384185791015625f))) + 0.02999999932944774627685546875f; } return (band(_1067, 0.5299999713897705078125f, 0.0599999986588954925537109375f) * 0.2199999988079071044921875f) + 0.02500000037252902984619140625f; } float2 rot2(float2 v, float a) { float _369 = cos(a); float _370 = sin(a); return float2((v.x * _369) - (v.y * _370), (v.x * _370) + (v.y * _369)); } float3 pebbleColor(float h) { if (h < 0.1599999964237213134765625f) { return float3(0.89999997615814208984375f, 0.7799999713897705078125f, 0.550000011920928955078125f); } if (h < 0.300000011920928955078125f) { return float3(0.800000011920928955078125f, 0.519999980926513671875f, 0.36000001430511474609375f); } if (h < 0.439999997615814208984375f) { return float3(0.560000002384185791015625f, 0.63999998569488525390625f, 0.7400000095367431640625f); } if (h < 0.579999983310699462890625f) { return float3(0.9700000286102294921875f, 0.930000007152557373046875f, 0.819999992847442626953125f); } if (h < 0.699999988079071044921875f) { return float3(0.62000000476837158203125f, 0.699999988079071044921875f, 0.4600000083446502685546875f); } if (h < 0.819999992847442626953125f) { return float3(0.660000026226043701171875f, 0.560000002384185791015625f, 0.62000000476837158203125f); } if (h < 0.920000016689300537109375f) { return float3(0.819999992847442626953125f, 0.7200000286102294921875f, 0.62000000476837158203125f); } return float3(0.920000016689300537109375f, 0.62000000476837158203125f, 0.4600000083446502685546875f); } Stones stones(float2 p, float cell, float seed, int layer, float size) { float3 col = float3(0.0f, 0.0f, 0.0f); float best = 0.0f; Stones o = _1130; int j = -1; uint2 loop_bound = uint2(4294967295u, 4294967295u); uint2 loop_bound_1 = uint2(4294967295u, 4294967295u); o.col = float3(0.0f, 0.0f, 0.0f); o.cover = 0.0f; o.ao = 1.0f; float2 _1143 = floor(p / float2(cell, cell)); float2 _1148 = normalize(frame_1_m0.sun.xy + float2(9.9999997473787516355514526367188e-05f, 9.9999997473787516355514526367188e-05f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(j <= 1)) { break; } int i = -1; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound_1.x, uint2(0u, 0u).y == loop_bound_1.y))) { break; } loop_bound_1 -= uint2(uint(loop_bound_1.y == 0u), 1u); if (!(i <= 1)) { break; } int _1191 = i; float2 _1198 = (_1143 + float2(float(_1191), float(j))) + float2(seed, seed); int _1200 = i; float2 _1209 = (((_1143 + float2(float(_1200), float(j))) + float2(0.100000001490116119384765625f, 0.100000001490116119384765625f)) + (hash22(_1198) * 0.800000011920928955078125f)) * cell; if (hash12((_1198 * 1.37000000476837158203125f) + float2(5.0f, 5.0f)) > stoneDensity(_1209, layer)) { int _1326 = i; i = _1326 + 1; continue; } float _1223 = (cell * size) * (0.300000011920928955078125f + (0.699999988079071044921875f * pow(hash12(_1198 + float2(2.0f, 2.0f)), 1.60000002384185791015625f))); float _1227 = 0.5f + (0.5f * hash12(_1198 + float2(3.0f, 3.0f))); float _1230 = hash12(_1198 + float2(4.0f, 4.0f)) * 6.283185482025146484375f; float2 _1236 = rot2(p - _1209, -_1230) / float2(_1223, _1223 * _1227); float _1237 = length(_1236); o.ao = min(o.ao, lerp(0.60000002384185791015625f, 1.0f, smoothstep(0.949999988079071044921875f, 1.12000000476837158203125f, length(rot2((p - _1209) + ((_1148 * _1223) * 0.4000000059604644775390625f), -_1230) / float2(_1223, _1223 * _1227))))); if (_1237 < 1.0f) { float _1259 = sqrt(1.0f - (_1237 * _1237)); if (_1259 > best) { best = _1259; float _1275 = dot(normalize(float3(rot2(_1236 * float2(1.0f, 1.0f / _1227), _1230) * 0.89999997615814208984375f, _1259 + 0.1500000059604644775390625f)), frame_1_m0.sun.xyz); float _1285 = frac((hash12(_1198 + float2(7.0f, 7.0f)) * 0.4000000059604644775390625f) + (vnoise((_1209 * 0.0040000001899898052215576171875f) + float2(seed, seed)) * 1.2999999523162841796875f)); col = pebbleColor(_1285); float _1289 = _1285 * 50.0f; col *= (0.939999997615814208984375f + (0.119999997317790985107421875f * vnoise((_1236 * 2.5f) + float2(_1289, _1289)))); float _1299 = band(_1275, 0.5f, 0.0500000007450580596923828125f); col = lerp(col * float3(0.660000026226043701171875f, 0.699999988079071044921875f, 0.839999973773956298828125f), col, float3(_1299, _1299, _1299)); float _1306 = band(_1275, 0.89999997615814208984375f, 0.02500000037252902984619140625f); col = lerp(col, (col * 1.12000000476837158203125f) + float3(0.07999999821186065673828125f, 0.070000000298023223876953125f, 0.039999999105930328369140625f), float3(_1306, _1306, _1306)); float _1309 = 1.10000002384185791015625f / _1223; float _1317 = smoothstep(1.0f - (_1309 * 2.0f), 1.0f - (_1309 * 0.60000002384185791015625f), _1237); col = lerp(col, col * float3(0.449999988079071044921875f, 0.4199999868869781494140625f, 0.5f), float3(_1317, _1317, _1317)); o.col = col; o.cover = smoothstep(1.0f, 1.0f - (_1309 * 0.699999988079071044921875f), _1237); } } int _1326 = i; i = _1326 + 1; continue; } j++; continue; } return o; } float3 ground(float2 p, float d) { float3 sand = float3(0.0f, 0.0f, 0.0f); float3 col = float3(0.0f, 0.0f, 0.0f); float3 leaf = float3(0.0f, 0.0f, 0.0f); float _1386 = band(fbm3(p * 0.006000000052154064178466796875f), 0.5f, 0.07999999821186065673828125f); sand = lerp(float3(0.949999988079071044921875f, 0.86000001430511474609375f, 0.63999998569488525390625f), float3(0.89999997615814208984375f, 0.7799999713897705078125f, 0.560000002384185791015625f), float3(_1386, _1386, _1386)); float _1394 = band(fbm3((p * 0.01200000010430812835693359375f) + float2(7.0f, 7.0f)), 0.62000000476837158203125f, 0.039999999105930328369140625f) * 0.60000002384185791015625f; sand = lerp(sand, float3(0.980000019073486328125f, 0.920000016689300537109375f, 0.7400000095367431640625f), float3(_1394, _1394, _1394)); Vor _1398 = voronoi(p / float2(6.0f, 6.0f)); float _1407 = smoothstep(0.1599999964237213134765625f, 0.100000001490116119384765625f, _1398.f1) * step(0.699999988079071044921875f, hash12(_1398.id)); sand = lerp(sand, sand * 0.800000011920928955078125f, float3(_1407, _1407, _1407)); float _1410 = band(d, 150.0f, 40.0f); float _1414 = band(fbm3((p * 0.00999999977648258209228515625f) + float2(20.0f, 20.0f)), 0.5f, 0.07999999821186065673828125f); col = lerp(sand, lerp(float3(0.4600000083446502685546875f, 0.579999983310699462890625f, 0.5f), float3(0.36000001430511474609375f, 0.5f, 0.4600000083446502685546875f), float3(_1414, _1414, _1414)), float3(_1410, _1410, _1410)); float _1434 = (band(sin(dot(p, float2(0.0500000007450580596923828125f, 0.02999999932944774627685546875f)) + (fbm3(p * 0.006000000052154064178466796875f) * 9.0f)), 0.89999997615814208984375f, 0.039999999105930328369140625f) * (1.0f - smoothstep(60.0f, 160.0f, d))) * 0.60000002384185791015625f; col = lerp(col, (col * 1.059999942779541015625f) + float3(0.0199999995529651641845703125f, 0.0199999995529651641845703125f, 0.0199999995529651641845703125f), float3(_1434, _1434, _1434)); Stones _1437 = stones(p, 10.0f, 3.0f, 0, 0.60000002384185791015625f); col *= _1437.ao; float _1443 = _1437.cover; col = lerp(col, _1437.col, float3(_1443, _1443, _1443)); Stones _1446 = stones(p, 30.0f, 11.0f, 1, 0.62000000476837158203125f); col *= _1446.ao; float _1452 = _1446.cover; col = lerp(col, _1446.col, float3(_1452, _1452, _1452)); Stones _1455 = stones(p, 90.0f, 17.0f, 2, 0.550000011920928955078125f); col *= _1455.ao; float _1461 = _1455.cover; col = lerp(col, _1455.col, float3(_1461, _1461, _1461)); float _1473 = band(vnoise(p * 0.07999999821186065673828125f), 0.5f, 0.100000001490116119384765625f); float _1476 = (band(fbm3((p * 0.008000000379979610443115234375f) + float2(40.0f, 40.0f)), 0.62000000476837158203125f, 0.0199999995529651641845703125f) * smoothstep(40.0f, 120.0f, d)) * 0.800000011920928955078125f; col = lerp(col, lerp(float3(0.4799999892711639404296875f, 0.660000026226043701171875f, 0.300000011920928955078125f), float3(0.37999999523162841796875f, 0.579999983310699462890625f, 0.2800000011920928955078125f), float3(_1473, _1473, _1473)), float3(_1476, _1476, _1476)); Vor _1481 = voronoi((p / float2(85.0f, 85.0f)) + float2(5.0f, 5.0f)); float _1484 = hash12(_1481.id + float2(3.0f, 3.0f)); if (_1484 > 0.7799999713897705078125f) { float2 _1491 = rot2(_1481.rel * 85.0f, _1484 * 40.0f); float _1494 = length(_1491 * float2(1.0f, 2.2999999523162841796875f)) - 15.0f; float _1497 = hash12(_1481.id + float2(9.0f, 9.0f)); float3 _1498 = lerp(float3(0.920000016689300537109375f, 0.560000002384185791015625f, 0.2599999904632568359375f), float3(0.800000011920928955078125f, 0.7200000286102294921875f, 0.300000011920928955078125f), float3(_1497, _1497, _1497)); float _1502 = band(_1491.y, 0.0f, 0.5f); leaf = lerp(_1498 * 0.85000002384185791015625f, _1498, float3(_1502, _1502, _1502)); float _1513 = smoothstep(0.699999988079071044921875f, 0.20000000298023223876953125f, abs(_1491.y)) * smoothstep(14.0f, 10.0f, abs(_1491.x)); leaf = lerp(leaf, _1498 * 0.60000002384185791015625f, float3(_1513, _1513, _1513)); float _1518 = smoothstep(-2.400000095367431640625f, -0.800000011920928955078125f, _1494); leaf = lerp(leaf, _1498 * 0.5f, float3(_1518, _1518, _1518)); float _1523 = smoothstep(0.60000002384185791015625f, -0.60000002384185791015625f, _1494); col = lerp(col, leaf, float3(_1523, _1523, _1523)); } return col; } void frag_main() { FullOut _1916 = { gl_FragCoord, uv }; float2 _1934 = _1916.uv * frame_1_m0.view.xy; float _1935 = bedDepthCalc(_1934); _1923 = float4(clamp(ground(_1934, _1935), float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), clamp(_1935 / 320.0f, 0.0f, 1.0f)); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._1923 = _1923; return stage_output; } fs_lightmainf*struct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _283 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Stones _1230 = { float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f }; static const float2 _1753[4] = { float2(0.939999997615814208984375f, 0.3400000035762786865234375f), float2(0.62000000476837158203125f, 0.7799999713897705078125f), float2(0.9900000095367431640625f, -0.119999997317790985107421875f), float2(0.449999988079071044921875f, 0.88999998569488525390625f) }; static const float _1756[4] = { 11.0f, 7.5f, 15.0f, 5.5f }; cbuffer frame : register(b0) { Frame frame_1_m0 : packoffset(c0); }; Texture2D heightTex : register(t0); SamplerState samp : register(s0); Texture2D groundTex : register(t2); static float4 gl_FragCoord; static float2 uv; static float4 _2101; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _2101 : SV_Target0; }; float bedDepth(float2 p) { return groundTex.SampleLevel(samp, p / frame_1_m0.view.xy, 0.0f).w * 320.0f; } float3 sunInWater() { float2 _406 = frame_1_m0.sun.xy / float2(1.3329999446868896484375f, 1.3329999446868896484375f); return float3(_406, sqrt(max(0.0f, 1.0f - dot(_406, _406)))); } float2 towardSun() { float3 _417 = sunInWater(); return _417.xy / float2(_417.zz); } float hash12(float2 p) { float3 p3 = float3(0.0f, 0.0f, 0.0f); p3 = frac(p.xyx * 0.103100001811981201171875f); float _53 = dot(p3, p3.yzx + float3(33.3300018310546875f, 33.3300018310546875f, 33.3300018310546875f)); p3 += float3(_53, _53, _53); return frac((p3.x + p3.y) * p3.z); } float vnoise(float2 p) { float2 _111 = floor(p); float2 _112 = frac(p); float2 _116 = (_112 * _112) * (float2(3.0f, 3.0f) - (_112 * 2.0f)); return lerp(lerp(hash12(_111), hash12(_111 + float2(1.0f, 0.0f)), _116.x), lerp(hash12(_111 + float2(0.0f, 1.0f)), hash12(_111 + float2(1.0f, 1.0f)), _116.x), _116.y); } float fbm3(float2 p0) { float v = 0.0f; int i = 0; float2 p = float2(0.0f, 0.0f); float a = 0.5f; uint2 loop_bound = uint2(4294967295u, 4294967295u); p = p0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 3)) { break; } v += (a * vnoise(p)); p = float2((p.x * 1.60000002384185791015625f) - (p.y * 1.2000000476837158203125f), (p.x * 1.2000000476837158203125f) + (p.y * 1.60000002384185791015625f)) + float2(17.299999237060546875f, 17.299999237060546875f); a *= 0.5f; i++; continue; } return v / 0.875f; } float canopy(float2 p) { float _660 = min(frame_1_m0.view.xy.x, frame_1_m0.view.xy.y); float2 _675 = float2(sin(frame_1_m0.misc.x) * 3.0f, cos(frame_1_m0.misc.x * 0.699999988079071044921875f) * 2.0f); float _679 = fbm3((p * 0.006000000052154064178466796875f) + (_675 * 0.07999999821186065673828125f)); float _683 = _679 * 2.0f; return 1.0f - (0.800000011920928955078125f * smoothstep(0.4699999988079071044921875f, 0.5299999713897705078125f, (((1.0f - smoothstep(0.1500000059604644775390625f, 0.949999988079071044921875f, length(((p / float2(_660, _660)) * float2(0.75f, 1.0f)) - float2(-0.0500000007450580596923828125f, -0.07999999821186065673828125f)))) * 1.14999997615814208984375f) + ((_679 - 0.5f) * 0.60000002384185791015625f)) + ((fbm3(((p * 0.02999999932944774627685546875f) + (_675 * 0.25f)) + float2(_683, _683)) - 0.5f) * 0.550000011920928955078125f))); } float2 simUv(float2 p) { return p / (frame_1_m0.sim.xy * frame_1_m0.sim.z); } float4 ripple(float2 p) { return heightTex.SampleLevel(samp, simUv(p), 0.0f); } float time() { return frame_1_m0.view.w; } float causticNet(float2 p0, float t, int iters) { float2 i = float2(0.0f, 0.0f); float c = 1.0f; int n = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); float2 _816 = p0 - float2(250.0f, 250.0f); i = _816; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(n < iters)) { break; } float _843 = t * (1.0f - (3.5f / float(n + 1))); i = _816 + float2(cos(_843 - i.x) + sin(_843 + i.y), sin(_843 - i.y) + cos(_843 + i.x)); float _867 = sin(i.x + _843); float _871 = cos(i.y + _843); c += (1.0f / max(length(float2(_816.x / ((_867 + ((_867 < 0.0f) ? (-9.9999997473787516355514526367188e-05f) : 9.9999997473787516355514526367188e-05f)) / 0.004999999888241291046142578125f), _816.y / ((_871 + ((_871 < 0.0f) ? (-9.9999997473787516355514526367188e-05f) : 9.9999997473787516355514526367188e-05f)) / 0.004999999888241291046142578125f))), 0.001000000047497451305389404296875f)); n++; continue; } c /= float(iters); c = 1.16999995708465576171875f - pow(max(c, 0.0f), 1.39999997615814208984375f); return clamp(pow(abs(c), 8.0f), 0.0f, 4.0f); } float2 rot2(float2 v, float a) { float _374 = cos(a); float _375 = sin(a); return float2((v.x * _374) - (v.y * _375), (v.x * _375) + (v.y * _374)); } float band(float x, float edge, float soft) { return smoothstep(edge - soft, edge + soft, x); } float lightNet(float2 ps, float d) { float _1656 = (time() * 0.36000001430511474609375f) + 23.0f; float _1658 = time() * 0.014999999664723873138427734375f; float2 _1671 = ps + ((float2(fbm3((ps * 0.0035000001080334186553955078125f) + float2(_1658, 0.0f)), fbm3((ps * 0.0035000001080334186553955078125f) + float2(5.19999980926513671875f, -_1658))) - float2(0.5f, 0.5f)) * 140.0f); return (band(max(causticNet(_1671 / float2(36.0f, 36.0f), _1656, 4), causticNet((rot2(_1671, 1.12999999523162841796875f) / float2(53.0f, 53.0f)) + float2(17.0f, 17.0f), (_1656 * 0.829999983310699462890625f) + 5.0f, 3) * 0.89999997615814208984375f), 0.23999999463558197021484375f, 0.02999999932944774627685546875f + ((d / 260.0f) * 0.07999999821186065673828125f)) * lerp(0.20000000298023223876953125f, 1.0f, band(fbm3(((ps * 0.002799999900162220001220703125f) + float2(-_1658, _1658 * 0.699999988079071044921875f)) + float2(31.0f, 31.0f)), 0.449999988079071044921875f, 0.14000000059604644775390625f))) * (1.0f - (smoothstep(110.0f, 300.0f, d) * 0.60000002384185791015625f)); } float padSdf(float2 p, int i) { float sd = 0.0f; uint _711 = min(uint(i), 11u); uint _715 = min(uint(i), 11u); float2 _723 = rot2(p - frame_1_m0.pads[_711].xy, -frame_1_m0.pads[_711].w); float _724 = length(_723); float _727 = atan2(_723.y, _723.x); sd = _724 - (frame_1_m0.pads[_711].z * ((1.0f + (0.02199999988079071044921875f * sin((_727 * 7.0f) + frame_1_m0.padx[_715].z))) + (0.01200000010430812835693359375f * sin((_727 * 15.0f) + (frame_1_m0.padx[_715].z * 2.0f))))); sd = max(sd, -((abs(_727) - (frame_1_m0.padx[_715].x * (1.0f - ((0.3499999940395355224609375f * _724) / frame_1_m0.pads[_711].z)))) * _724)); return sd; } float padsSdf(float2 p) { float d = 100000.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); int _767 = int(clamp(frame_1_m0.counts.y, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _767)) { break; } d = min(d, padSdf(p, i)); i++; continue; } return d; } float padShadow(float2 p, float d) { float _991 = 1.5f + (d * 0.0500000007450580596923828125f); return lerp(0.2800000011920928955078125f, 1.0f, smoothstep(-_991, _991, padsSdf(p + (towardSun() * d)))); } float rockSdf(float2 p, int i) { uint _447 = min(uint(i), 3u); float2 _452 = p - frame_1_m0.rocks[_447].xy; float _455 = atan2(_452.y, _452.x); return length(_452) - (frame_1_m0.rocks[_447].z * (1.0f + ((((0.100000001490116119384765625f * sin((2.0f * _455) + frame_1_m0.rocks[_447].w)) + (0.070000000298023223876953125f * sin((3.0f * _455) + (frame_1_m0.rocks[_447].w * 2.2999999523162841796875f)))) + (0.0350000001490116119384765625f * sin((7.0f * _455) + (frame_1_m0.rocks[_447].w * 4.099999904632568359375f)))) + (0.014999999664723873138427734375f * sin((13.0f * _455) + (frame_1_m0.rocks[_447].w * 1.7000000476837158203125f)))))); } float rockShadow(float2 p, float d) { float s = 1.0f; int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); int _1008 = int(clamp(frame_1_m0.counts.x, -2147483648.0f, 2147483520.0f)); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < _1008)) { break; } uint _1031 = min(uint(i), 3u); s = min(s, lerp(0.25f, 1.0f, smoothstep((-8.0f) - (d * 0.0500000007450580596923828125f), 6.0f + (d * 0.0500000007450580596923828125f), rockSdf(p + (((frame_1_m0.sun.xy / float2(frame_1_m0.sun.z, frame_1_m0.sun.z)) * (frame_1_m0.rocks[_1031].z * 0.800000011920928955078125f)) + (towardSun() * d)), i) - (frame_1_m0.rocks[_1031].z * 0.100000001490116119384765625f)))); i++; continue; } return s; } void frag_main() { FullOut _2094 = { gl_FragCoord, uv }; float2 _2114 = _2094.uv * frame_1_m0.view.xy; float _2115 = bedDepth(_2114); float2 _2118 = _2114 + (towardSun() * _2115); _2101 = float4(canopy(_2118) * band(padShadow(_2114, _2115) * rockShadow(_2114, _2115), 0.62000000476837158203125f, 0.07999999821186065673828125f), lightNet(_2118 + ((ripple(_2118).zw * _2115) * 0.60000002384185791015625f), _2115), canopy(_2114 + (towardSun() * 30.0f)) * band(padShadow(_2114, 30.0f), 0.62000000476837158203125f, 0.07999999821186065673828125f), canopy(_2114)); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._2101 = _2101; return stage_output; } fs_bedmainÎstruct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _287 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Stones _1234 = { float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f }; static const float2 _1757[4] = { float2(0.939999997615814208984375f, 0.3400000035762786865234375f), float2(0.62000000476837158203125f, 0.7799999713897705078125f), float2(0.9900000095367431640625f, -0.119999997317790985107421875f), float2(0.449999988079071044921875f, 0.88999998569488525390625f) }; static const float _1760[4] = { 11.0f, 7.5f, 15.0f, 5.5f }; cbuffer frame : register(b0) { Frame frame_1_m0 : packoffset(c0); }; Texture2D heightTex : register(t0); SamplerState samp : register(s0); Texture2D groundTex : register(t2); Texture2D koiTex : register(t4); Texture2D koiShadowTex : register(t5); Texture2D lightTex : register(t3); Texture2D weedTex : register(t6); static float4 gl_FragCoord; static float2 uv; static float4 _2105; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _2105 : SV_Target0; }; float3 sunInWater() { float2 _410 = frame_1_m0.sun.xy / float2(1.3329999446868896484375f, 1.3329999446868896484375f); return float3(_410, sqrt(max(0.0f, 1.0f - dot(_410, _410)))); } float2 towardSun() { float3 _421 = sunInWater(); return _421.xy / float2(_421.zz); } float2 simUv(float2 p) { return p / (frame_1_m0.sim.xy * frame_1_m0.sim.z); } float4 ripple(float2 p) { return heightTex.SampleLevel(samp, simUv(p), 0.0f); } float rippleFocus(float2 ps, float d) { float _947 = frame_1_m0.sim.z * 1.5f; return clamp(1.0f / max(1.0f - (((0.2498124539852142333984375f * d) * (((((ripple(ps + float2(-_947, 0.0f)).x + ripple(ps + float2(_947, 0.0f)).x) + ripple(ps + float2(0.0f, -_947)).x) + ripple(ps + float2(0.0f, _947)).x) - (4.0f * ripple(ps).x)) / (_947 * _947))) * 0.89999997615814208984375f), 0.4000000059604644775390625f), 0.449999988079071044921875f, 2.099999904632568359375f); } float band(float x, float edge, float soft) { return smoothstep(edge - soft, edge + soft, x); } float3 waterTint(float3 col, float d, float lit) { float _1718 = clamp(d / 250.0f, 0.0f, 1.0f) * 4.0f; float _1723 = (floor(_1718) + smoothstep(0.300000011920928955078125f, 0.699999988079071044921875f, frac(_1718))) / 4.0f; float _1724 = smoothstep(0.0f, 0.5f, _1723); float _1727 = smoothstep(0.449999988079071044921875f, 1.0f, _1723); float3 _1728 = lerp(lerp(float3(0.62000000476837158203125f, 0.920000016689300537109375f, 0.699999988079071044921875f), float3(0.2199999988079071044921875f, 0.7200000286102294921875f, 0.7400000095367431640625f), float3(_1724, _1724, _1724)), float3(0.100000001490116119384765625f, 0.4199999868869781494140625f, 0.62000000476837158203125f), float3(_1727, _1727, _1727)); float _1730 = lerp(0.100000001490116119384765625f, 0.7200000286102294921875f, _1723); float _1733 = 0.3499999940395355224609375f + (0.300000011920928955078125f * _1723); return lerp(col * lerp(float3(1.0f, 1.0f, 1.0f), _1728 * 1.25f, float3(_1733, _1733, _1733)), _1728 * (0.7200000286102294921875f + (0.2800000011920928955078125f * lit)), float3(_1730, _1730, _1730)); } void frag_main() { float3 g = float3(0.0f, 0.0f, 0.0f); float3 col = float3(0.0f, 0.0f, 0.0f); float3 k = float3(0.0f, 0.0f, 0.0f); FullOut _2098 = { gl_FragCoord, uv }; float4 _2142 = groundTex.SampleLevel(samp, _2098.uv, 0.0f); g = _2142.xyz; float4 _2148 = weedTex.SampleLevel(samp, _2098.uv, 0.0f); g = (g * (1.0f - _2148.w)) + _2148.xyz; float _2158 = (_2142.w * 320.0f) * (1.0f - (_2148.w * 0.3499999940395355224609375f)); float4 _2161 = lightTex.SampleLevel(samp, _2098.uv, 0.0f); float _2162 = _2161.x; float _2163 = _2161.y; float _2164 = _2161.w; float _2168 = rippleFocus((_2098.uv * frame_1_m0.view.xy) + (towardSun() * _2158), _2158); col = lerp(g * float3(0.579999983310699462890625f, 0.680000007152557373046875f, 0.800000011920928955078125f), g * float3(1.0499999523162841796875f, 1.0f, 0.89999997615814208984375f), float3(_2162, _2162, _2162)); float4 _2177 = koiShadowTex.SampleLevel(samp, _2098.uv, 0.0f); float _2178 = _2177.w; col *= (float3(1.0f, 1.0f, 1.0f) - ((float3(0.75f, 0.550000011920928955078125f, 0.3499999940395355224609375f) * _2178) * (0.300000011920928955078125f + (0.699999988079071044921875f * _2164)))); col += (((((float3(1.0f, 0.9700000286102294921875f, 0.7799999713897705078125f) * _2163) * _2162) * clamp(_2168, 0.60000002384185791015625f, 1.60000002384185791015625f)) * 0.2800000011920928955078125f) * (1.0f - _2178)); col += (((float3(1.0f, 0.959999978542327880859375f, 0.800000011920928955078125f) * band(_2168, 1.4500000476837158203125f, 0.119999997317790985107421875f)) * _2162) * 0.180000007152557373046875f); col = waterTint(col, _2158, _2164); float4 _2205 = koiTex.SampleLevel(samp, _2098.uv, 0.0f); if (_2205.w > 0.00200000009499490261077880859375f) { k = _2205.xyz / float3(_2205.www); float _2214 = _2161.z; k = lerp(k * float3(0.7400000095367431640625f, 0.800000011920928955078125f, 0.920000016689300537109375f), k, float3(_2214, _2214, _2214)); k += (((float3(1.0f, 0.9700000286102294921875f, 0.800000011920928955078125f) * _2163) * _2214) * 0.1599999964237213134765625f); k = lerp(k, waterTint(k, 30.0f, _2214), float3(0.3499999940395355224609375f, 0.3499999940395355224609375f, 0.3499999940395355224609375f)); col = lerp(col, k, float3(_2205.www)); } _2105 = float4(col, 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._2105 = _2105; return stage_output; } fs_watermainã5struct Frame { float4 view; float4 sim; float4 sun; float4 counts; float4 misc; float4 drops[16]; float4 rocks[4]; float4 pads[12]; float4 padx[12]; float4 petals[16]; float4 droplets[32]; }; struct Vor { float f1; float f2; float2 id; float2 rel; }; struct FullOut { float4 clip; float2 uv; }; struct Stones { float3 col; float cover; float ao; }; static const Vor _285 = { 0.0f, 0.0f, float2(0.0f, 0.0f), float2(0.0f, 0.0f) }; static const Stones _1232 = { float3(0.0f, 0.0f, 0.0f), 0.0f, 0.0f }; static const float2 _1755[4] = { float2(0.939999997615814208984375f, 0.3400000035762786865234375f), float2(0.62000000476837158203125f, 0.7799999713897705078125f), float2(0.9900000095367431640625f, -0.119999997317790985107421875f), float2(0.449999988079071044921875f, 0.88999998569488525390625f) }; static const float _1758[4] = { 11.0f, 7.5f, 15.0f, 5.5f }; cbuffer frame : register(b0) { Frame frame_1_m0 : packoffset(c0); }; Texture2D heightTex : register(t0); SamplerState samp : register(s0); Texture2D floorTex : register(t1); Texture2D groundTex : register(t2); Texture2D lightTex : register(t3); static float4 gl_FragCoord; static float2 uv; static float4 _2103; struct SPIRV_Cross_Input { float2 uv : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _2103 : SV_Target0; }; float time() { return frame_1_m0.view.w; } float3 sunDir() { return frame_1_m0.sun.xyz; } float2 simUv(float2 p) { return p / (frame_1_m0.sim.xy * frame_1_m0.sim.z); } float4 ripple(float2 p) { return heightTex.SampleLevel(samp, simUv(p), 0.0f); } float bedDepth(float2 p) { return groundTex.SampleLevel(samp, p / frame_1_m0.view.xy, 0.0f).w * 320.0f; } float band(float x, float edge, float soft) { return smoothstep(edge - soft, edge + soft, x); } float3 viewRay(float2 p) { return normalize(float3(p, 0.0f) - float3(frame_1_m0.view.xy * 0.5f, frame_1_m0.sun.w)); } float hash12(float2 p) { float3 p3 = float3(0.0f, 0.0f, 0.0f); p3 = frac(p.xyx * 0.103100001811981201171875f); float _55 = dot(p3, p3.yzx + float3(33.3300018310546875f, 33.3300018310546875f, 33.3300018310546875f)); p3 += float3(_55, _55, _55); return frac((p3.x + p3.y) * p3.z); } float vnoise(float2 p) { float2 _113 = floor(p); float2 _114 = frac(p); float2 _118 = (_114 * _114) * (float2(3.0f, 3.0f) - (_114 * 2.0f)); return lerp(lerp(hash12(_113), hash12(_113 + float2(1.0f, 0.0f)), _118.x), lerp(hash12(_113 + float2(0.0f, 1.0f)), hash12(_113 + float2(1.0f, 1.0f)), _118.x), _118.y); } float fbm3(float2 p0) { float v = 0.0f; int i = 0; float2 p = float2(0.0f, 0.0f); float a = 0.5f; uint2 loop_bound = uint2(4294967295u, 4294967295u); p = p0; for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 3)) { break; } v += (a * vnoise(p)); p = float2((p.x * 1.60000002384185791015625f) - (p.y * 1.2000000476837158203125f), (p.x * 1.2000000476837158203125f) + (p.y * 1.60000002384185791015625f)) + float2(17.299999237060546875f, 17.299999237060546875f); a *= 0.5f; i++; continue; } return v / 0.875f; } float3 skyColor(float3 r, float lit) { float3 c = float3(0.0f, 0.0f, 0.0f); float _1961 = pow(clamp(r.z, 0.0f, 1.0f), 2.0f); c = lerp(float3(0.819999992847442626953125f, 0.930000007152557373046875f, 1.0f), float3(0.4199999868869781494140625f, 0.680000007152557373046875f, 0.980000019073486328125f), float3(_1961, _1961, _1961)); float _1966 = max(r.z, 0.1500000059604644775390625f); float _1978 = band(fbm3((((r.xy / float2(_1966, _1966)) * 2.2000000476837158203125f) * 1.39999997615814208984375f) + float2(time() * 0.0040000001899898052215576171875f, 0.0f)), 0.60000002384185791015625f, 0.039999999105930328369140625f) * 0.89999997615814208984375f; c = lerp(c, float3(1.0f, 1.0f, 0.9700000286102294921875f), float3(_1978, _1978, _1978)); c *= (0.800000011920928955078125f + (1.0f * pow(max(dot(r, frame_1_m0.sun.xyz), 0.0f), 5.0f))); float _1995 = clamp(((1.0f - lit) / 0.800000011920928955078125f) * 1.2000000476837158203125f, 0.0f, 1.0f); c = lerp(c, float3(0.1599999964237213134765625f, 0.300000011920928955078125f, 0.14000000059604644775390625f), float3(_1995, _1995, _1995)); return c; } float2 hash22(float2 p) { float3 p3 = float3(0.0f, 0.0f, 0.0f); p3 = frac(p.xyx * float3(0.103100001811981201171875f, 0.10300000011920928955078125f, 0.097300000488758087158203125f)); float _89 = dot(p3, p3.yzx + float3(33.3300018310546875f, 33.3300018310546875f, 33.3300018310546875f)); p3 += float3(_89, _89, _89); return frac((p3.xx + p3.yz) * p3.zy); } float2 windSlope(float2 p) { float2 g = float2(0.0f, 0.0f); int i = 0; uint2 loop_bound = uint2(4294967295u, 4294967295u); float _1764 = time(); for (;;) { if (all(bool2(uint2(0u, 0u).x == loop_bound.x, uint2(0u, 0u).y == loop_bound.y))) { break; } loop_bound -= uint2(uint(loop_bound.y == 0u), 1u); if (!(i < 4)) { break; } float _1803 = 6.283185482025146484375f / _1758[min(uint(i), 3u)]; float _1824 = float(i); g += ((_1755[min(uint(i), 3u)] * cos((((dot(_1755[min(uint(i), 3u)], p) * _1803) - ((sqrt((9.80000019073486328125f * _1803) * 120.0f) * _1764) * 0.0599999986588954925537109375f)) + (float(i) * 1.7000000476837158203125f)) + (vnoise((p * 0.0199999995529651641845703125f) + float2(_1824, _1824)) * 3.0f))) * (0.017999999225139617919921875f + (0.008000000379979610443115234375f * float(i & 1)))); i++; continue; } return g * (0.180000007152557373046875f + (0.819999992847442626953125f * smoothstep(0.4799999892711639404296875f, 0.7799999713897705078125f, fbm3(((p * 0.0024999999441206455230712890625f) + float2(_1764 * 0.017999999225139617919921875f, _1764 * 0.010999999940395355224609375f)) + float2(frame_1_m0.misc.y, frame_1_m0.misc.y))))); } float sparkles(float2 p, float lit) { float2 _1879 = floor(p / float2(24.0f, 24.0f)); float2 _1881 = hash22(_1879 + float2(3.0f, 3.0f)); float2 _1885 = ((_1879 + float2(0.300000011920928955078125f, 0.300000011920928955078125f)) + (_1881 * 0.4000000059604644775390625f)) * 24.0f; float _1911 = band(pow(max(dot(reflect(viewRay(_1885), normalize(float3(-((ripple(_1885).zw + windSlope(_1885)) * 1.89999997615814208984375f), 1.0f))), sunDir()), 0.0f), 50.0f) * (0.550000011920928955078125f + (0.449999988079071044921875f * sin((time() * 4.0f) + (_1881.x * 40.0f)))), 0.300000011920928955078125f, 0.1500000059604644775390625f) * band(lit, 0.60000002384185791015625f, 0.100000001490116119384765625f); if (_1911 <= 0.0f) { return 0.0f; } float _1920 = 4.0f + ((6.0f * _1911) * (0.60000002384185791015625f + (0.4000000059604644775390625f * _1881.y))); float2 _1921 = p - _1885; return clamp(smoothstep(_1920 * 0.300000011920928955078125f, _1920 * 0.100000001490116119384765625f, length(_1921)) + ((smoothstep(_1920, 0.0f, abs(_1921.x)) * smoothstep(1.0f, 0.20000000298023223876953125f, abs(_1921.y))) + (smoothstep(_1920, 0.0f, abs(_1921.y)) * smoothstep(1.0f, 0.20000000298023223876953125f, abs(_1921.x)))), 0.0f, 1.0f) * _1911; } float3 paperTone(float2 uv_1) { float3 b = float3(0.0f, 0.0f, 0.0f); float2 _2032 = uv_1 * frame_1_m0.view.xy; float _2058 = (0.5f + ((((vnoise(_2032 * 1.60000002384185791015625f) * 0.5f) + (vnoise((_2032 * 0.449999988079071044921875f) + float2(11.0f, 11.0f)) * 0.5f)) - 0.5f) * 0.0500000007450580596923828125f)) + ((vnoise(float2((_2032.x * 0.039999999105930328369140625f) + (_2032.y * 0.014999999664723873138427734375f), (_2032.y * 0.3499999940395355224609375f) - (_2032.x * 0.07999999821186065673828125f))) - 0.5f) * 0.02999999932944774627685546875f); b = float3(_2058, _2058, _2058); float _2075 = smoothstep(0.4000000059604644775390625f, 0.85000002384185791015625f, length((uv_1 - float2(0.5f, 0.5f)) * float2(frame_1_m0.view.xy.x / max(frame_1_m0.view.xy.x, frame_1_m0.view.xy.y), frame_1_m0.view.xy.y / max(frame_1_m0.view.xy.x, frame_1_m0.view.xy.y)))) * 0.60000002384185791015625f; b *= lerp(float3(1.0f, 1.0f, 1.0f), float3(0.800000011920928955078125f, 0.86000001430511474609375f, 0.939999997615814208984375f), float3(_2075, _2075, _2075)); float _2087 = smoothstep(0.75f, 0.0f, length((uv_1 - float2(1.019999980926513671875f, -0.0500000007450580596923828125f)) * float2(frame_1_m0.view.xy.x / frame_1_m0.view.xy.y, 1.0f))); b += (((float3(1.0f, 0.920000016689300537109375f, 0.660000026226043701171875f) * _2087) * _2087) * 0.0900000035762786865234375f); return clamp(b, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)); } float3 overlayBlend(float3 c, float3 t) { float3 _2007 = (c * 2.0f) * t; float3 _2012 = float3(1.0f, 1.0f, 1.0f) - (((float3(1.0f, 1.0f, 1.0f) - c) * 2.0f) * (float3(1.0f, 1.0f, 1.0f) - t)); bool3 _2014 = bool3(c.x < float3(0.5f, 0.5f, 0.5f).x, c.y < float3(0.5f, 0.5f, 0.5f).y, c.z < float3(0.5f, 0.5f, 0.5f).z); return float3(_2014.x ? _2007.x : _2012.x, _2014.y ? _2007.y : _2012.y, _2014.z ? _2007.z : _2012.z); } void frag_main() { float3 col = float3(0.0f, 0.0f, 0.0f); FullOut _2096 = { gl_FragCoord, uv }; float2 _2134 = _2096.uv * frame_1_m0.view.xy; float _2137 = 1.0f / frame_1_m0.view.z; float3 _2142 = sunDir(); float4 _2145 = ripple(_2134); float _2146 = time() * 0.3499999940395355224609375f; float3 _2174 = normalize(float3((-(_2145.zw + (float2(sin(((_2134.y * 0.01200000010430812835693359375f) + _2146) + sin((_2134.x * 0.007000000216066837310791015625f) - (_2146 * 0.60000002384185791015625f))), cos(((_2134.x * 0.010999999940395355224609375f) - (_2146 * 0.800000011920928955078125f)) + sin((_2134.y * 0.0089999996125698089599609375f) + _2146))) * 0.006000000052154064178466796875f))) * 1.60000002384185791015625f, 1.0f)); float4 _2178 = lightTex.SampleLevel(samp, _2096.uv, 0.0f); float _2179 = _2178.w; float3 _2181 = viewRay(_2134); float3 _2182 = refract(_2181, _2174, 0.750187575817108154296875f); float3 _2183 = refract(_2181, float3(0.0f, 0.0f, 1.0f), 0.750187575817108154296875f); float _2187 = max(-_2182.z, 0.20000000298023223876953125f); float _2193 = max(-_2183.z, 0.20000000298023223876953125f); col = floorTex.SampleLevel(samp, (_2134 + ((((_2182.xy / float2(_2187, _2187)) - (_2183.xy / float2(_2193, _2193))) * min(bedDepth(_2134), 200.0f)) * 0.800000011920928955078125f)) / frame_1_m0.view.xy, 0.0f).xyz; float3 _2205 = reflect(_2181, _2174); float _2216 = clamp((0.02999999932944774627685546875f + (0.9700000286102294921875f * pow(1.0f - clamp(dot(-_2181, _2174), 0.0f, 1.0f), 5.0f))) * 1.5f, 0.0f, 1.0f); col = lerp(col, skyColor(_2205, _2179), float3(_2216, _2216, _2216)); col += (((float3(1.0f, 0.949999988079071044921875f, 0.75f) * band(pow(max(dot(_2205, _2142), 0.0f), 7.0f), 0.449999988079071044921875f, 0.25f)) * 0.14000000059604644775390625f) * (0.4000000059604644775390625f + (0.60000002384185791015625f * band(_2179, 0.60000002384185791015625f, 0.100000001490116119384765625f)))); float _2230 = _2145.x; float _2237 = band(vnoise(_2134 * 0.0900000035762786865234375f) + (vnoise(_2134 * 0.300000011920928955078125f) * 0.4000000059604644775390625f), 0.449999988079071044921875f, 0.119999997317790985107421875f); float _2243 = band(-_2230, 0.180000007152557373046875f, 0.0599999986588954925537109375f) * 0.5f; col = lerp(col, col * float3(0.839999973773956298828125f, 0.920000016689300537109375f, 0.980000019073486328125f), float3(_2243, _2243, _2243)); float _2270 = ((((ripple(_2134 + float2(frame_1_m0.sim.z, 0.0f)).x + ripple(_2134 - float2(frame_1_m0.sim.z, 0.0f)).x) + ripple(_2134 + float2(0.0f, frame_1_m0.sim.z)).x) + ripple(_2134 - float2(0.0f, frame_1_m0.sim.z)).x) - (4.0f * _2230)) / (frame_1_m0.sim.z * frame_1_m0.sim.z); float _2278 = 1.2000000476837158203125f + (2.2000000476837158203125f * band(_2230, 0.5f, 0.300000011920928955078125f)); float _2294 = ((smoothstep(_2278 + _2137, _2278 - _2137, length(_2145.zw) / max(-_2270, 9.9999997473787516355514526367188e-05f)) * step(0.0f, -_2270)) * ((band(_2230, 0.100000001490116119384765625f, 0.039999999105930328369140625f) * lerp(0.449999988079071044921875f, 1.0f, _2237)) + ((band(_2230, 0.02999999932944774627685546875f, 0.01200000010430812835693359375f) * 0.3499999940395355224609375f) * _2237))) * 0.62000000476837158203125f; col = lerp(col, float3(0.959999978542327880859375f, 1.0f, 1.0f), float3(_2294, _2294, _2294)); float _2298 = sparkles(_2134, _2179); col = lerp(col, float3(1.0f, 1.0f, 0.920000016689300537109375f), float3(_2298, _2298, _2298)); col = overlayBlend(clamp(col, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), paperTone(_2096.uv)); float _2307 = dot(col, float3(0.2989999949932098388671875f, 0.58700001239776611328125f, 0.114000000059604644775390625f)); col = lerp(float3(_2307, _2307, _2307), col, float3(1.10000002384185791015625f, 1.10000002384185791015625f, 1.10000002384185791015625f)); _2103 = float4(clamp(col, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), 1.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; uv = stage_input.uv; frag_main(); SPIRV_Cross_Output stage_output; stage_output._2103 = _2103; return stage_output; }  ›_Š'Y+ËÍo}´D< ßÛHSLTFrame viewÿÿÿÿsimÿÿÿÿsun ÿÿÿÿcounts0ÿÿÿÿmisc@ÿÿÿÿdropsPÿÿÿÿrocksPÿÿÿÿpads� ÿÿÿÿpadxP ÿÿÿÿpetalsÿÿÿÿdroplets ÿÿÿÿ frame_blockframe heightTexÿÿÿÿvs_fullvs_fullfs_simfs_sim fs_ground fs_groundfs_lightfs_lightfs_bedfs_bedfs_waterfs_waterLã#¯ 2 GLSL.std.450:vs_full368bfs_sim[^a  fs_ground    , fs_light' ) + W fs_bedR T V  ß fs_waterÚ Ü Þ b , W ß GGG G H#H#H# H#0H#@H#PH#PH#�H#PH #H #H#H#H#H#H#H#H#H# H#GGG"G!GH#G"G!G"G!G!"G!!G""G"!G#"G#!G$"G$!G%"G%!G&"G&!G3 *G6 G8G[ G^GaG G G G' G) G+ GR GT GV GÚ GÜ GÞ   ++  +   +           ; ;  ; ;!;";#;$;%;&!*++&Ó=+,ìQB,-,,, /.0 =+>+A+E!M+NªñÒ=+O9EÇ=,P+NO.R+k@+l@@,mll+n€?+o,pno,qon,rnn+Š?+‹+Œ+�ÍÌÌ?+Žš™™?+�ffŠA,���+‘ “.” ˜ž Ÿž ¡ ,ž¢>>+£ÿÿÿÿ,ž¤££+Ô+Õ`?.×!+A,oo+ÿÿÿÿ+\�B?+�Âõ=,. . +r!y!Š ‹ Ž+•¾Ÿª?,–••!£!­ °!·+¹ÍÌÌ=+º33@+»)\�=+¼à@+½33ƒ@+¾)\=+¿PA+Àš™Ù?+Á�Âu< Ã+Å+íPÃG+óÏ+ôÿÿÿN+ C+( ×£=+) ×#½,*()++ÍÌL?,,+n+- ×#=+.®G?+/pC+08B+1¼t“;+2ffF@,322+4ŒB+5ÍÌL>+6ÍÌŒ?+7€@.9+ƒ@?,„ƒn+…ÍÌL½+† ×£½,‡…†+ˆš™>+‰33s?+Š333?+‹¦›Ä;+Œ�Âõ<+�€>+Ž33“?+�š™?+�ÍÌ ?+‘×£ð>+’®?+ÃX9´<+ÄpA+Ŧ›D<+Æ33³>.È Ê +Ë +Í+Ñ!&+'zC,(''+) ×£;+*`@++·Ñ8+,·Ñ¸+-oƒ:+.33³?+/�•?.1!›!§+«À?+¬ÖÎ>+­fff?+®ÍÌÌ>+¯ffæ>+°ff@+ÜÍÌL=+Ý)\�>+íÁ+îÀ@!1,3‹‹,4‘‘,=‘‘!F!N+O ×#>,P­.�+Qš™™>+R¸?+SìQ¸>,T+RS+U®Gá>+V)\?+W ×#?+X¤p=?,YVWX+Záz?+[ìQx?+\{n?+]…ëQ?,^[\]+_R¸?+`…ë>,a_Š`+bÃõ(?,cbV_+d…k?+eìQ8?,f]e_,gd_`+ƒ·Q;+„A,…„„+† ×£<+‡HB+ˆ4C+‰C+Š B+‹�Âu=+Œ®Ga>+�ÍÌÌ,Яϊ Ò.Ó.×.Ù! +¢ö(\?,£‰¢W,¤­.V+¥Ház?,¦¥dX,§îî,¨`ZŠ,©SŠ`+ª ×#<+« A,¬««+­pB+® C,¯ÜŒ+°®‡?,±†††+² A+³ðA+´0A+µ´B+¶ˆA+·+¸o<,¹ŠŠ+ºðB+»�Âõ>,¼»bQ+½\�Â>,¾½ZÝ+¿ªB,À¿¿,Ánº+¸…>,ÃdVÂ,Ä+eQ+Åš™Y?+Æ`A+Çš™À+ÈÍÌL¿+Éš™¿.Ë.Í.Ï+e¸A+fB`e;+gff¦@,hŠŠ+i C+jB,kjj+l+m×£�?+nTB,onn,p¶¶+qázT?+r‚C+s4€7;+tøA,utt+v)\>+w�Âu>+xÜB+y–C!®,¯_dŠ,°ŒeX,±¹Ï_,²nnn+³ ?+Ó ×#;+Ô¼t“<+ÕX94<+Ö{®>,×ËÖ,Ø_.+Ù¤p}?+Ú�Âõ½,ÛÙÚ+Ü ×c?,ݯÜ,ÞרÛÝ+ßð@+à°@,á´ßÄà+âÍÌA+ãìQ8>   !@+TÀA,UTT,VQQ+W33ó?!Ÿ,¡]\n+¢{.?,£Ï¢¥+¤ÍÌ @,¥nn[,¦OQv.¨!Ö,×ŠŠŠà ,ç´´,è+¢Ë+é\�‚?,êé…,ëndb+ììQ¸=.î 4;43 7;76 9;98!; =.> I T \;\[ _;_^;7a,e‹,f‘‹,g‹,h‹‘,i,j‘,k‘,l‘‘+md;?+n’Ë?+oÛI@+pö(|?.r.t,}óó,~ôô â+ä+æ;\ ;_ ;7 ;\' ;_) ;7+ ;\R ;_T ;7V ,` Z¢++a ff†?,b a n­,c ƒ�Æ,d n[.+e �Âu?,f ne ++g š™¹?+h o;,i X+d,j n[+.l .n .p ;\Ú ;_Ü ;7Þ +æ B`å;+ç ¼t<+è K @?,é oon+ê HC,ë n‰ƒ,ì Ìd¥,í e nn,î nnd+ï ‡™>+ð ¢E?+ñ Õxé=,ò ï ð ñ .ô 6)*7(ø';/.0ù1ø1O2((Ž32+ 4 3>.4=5.=6.=7.O877�98-”:69P;:::�<5;>.<A=?.>=@?A=B.A=CB�D@CA=F.E=GF…HDG I HþI86LM7KøJ;/QRùSøSOTKK…UTP V U>QV=WQ=XQ=YQOZYY�[Z-”\X[P]\\\�^W]>Q^=_QO`__=aQObaa�c`b=dQOedd…fce g fþg86j*7iøhùsøs ti u i…vuuŽwukƒxmw…yvx9z)t�{tp9|){�}tq9~)}�tr9€)Q�y ‚.z|�Qƒy „.~€ƒQ…y †.‚„…þ†86‰*7ˆø‡;=•o;˜—‹;“’”;=–Š;Ÿ¥¤ù™ø™>’ˆùšøšö›�ù¦ø¦=ž§¥ª¡¨¢§› ©¨÷ªú©›ªøªQ«§ª ¬«>©­¬A>Pž®­A‚ž¯§®>¥¯ùœøœ=°—± ±°Œ÷²ú±²³ø³ù›ø²ù´ø´=¶•=·–=¸’9¹j¸…º·¹�»¶º>•»A=¼’>=½¼…¾½�A=¿’A=À¿…ÁÀŽƒ¾ÁA=Ã’>=ÄÃ…ÅÄŽA=Æ’A=ÇÆ…ÈÇ��ÉÅÈPÊÂÉ�ËÊ�>’Ë=Ì–…ÍÌŠ>–Íùµøµù�ø�=Η€ÏΑ>—Ïùšø›=ЕþÐ86Ó*7ÒøÑ;=Øo;˜Ú‹;“Ö×;=ÙŠ;Ÿà¤ùÛøÛ>ÖÒùÜøÜöÝßùáøá=žâડã¢â› äã÷åúäÝåøåQæâª çæ>©èçA>PžéèA‚žêâé>àêùÞøÞ=ëÚ± ìëÔ÷íúìíîøîùÝøíùïøï=ñØ=òÙ=óÖ9ôjó…õòô�öñõ>ØöA=÷Ö>=ø÷…ùø�A=úÖA=ûú…üûŽƒýùüA=þÖ>=ÿþ…ÿŽA=ÖA=…��Pý��>Ö=Ù…Š>Ùùðøðùßøß= Ú€  ‘>Ú ùÜøÝ= ؈  Õþ 867ø ;˜;=; ;“;=;˜;“;Ÿ(¤;Ÿ=¤ù!ø! " # ù$ø$ö%'ù)ø)=ž*(ª¡+¢*› ,+÷-ú,%-ø-Q.*ª /.>©0/A>Pž10A‚ž2*1>(2ù&ø&=3³ 43‘÷5ú456ø6ù%ø5ù7ø7>ù9ø9ö:<ù>ø>=ž?=ª¡@¢?› A@÷BúA:BøBQC?ª DC>©EDA>PžFEA‚žG?F>=Gù;ø;=H³ IH‘÷JúIJKøKù:øJùLøL=NoON=PoQPPROQ�S"R9TLSŽUT�VU�WRVƒXW#”YXX=Z¸ [YZ÷\ú[]^ø]=_>_>Y�`"R>`>Xù\ø^=a¸ bYa÷cúbdcød>Yùcøcù\ø\ùMøMù<ø<=e€fe‘>fù9ø:ù8ø8ù'ø'=g€hg‘>hù$ø%=i jiA=k>>kj=l mlA=nA>nm=oA“pE>po=qA“sr>sq=tþt86xy7v7wøuùzøz {w | wQ}v…~}{Qv…€|ƒ�~€Q‚v…ƒ‚|Q„v……„{�†ƒ…P‡�†þ‡86‰ŠøˆA‹Œ>ù�ø�AŽ�ŒE=��O‘��þ‘86“Šø’A‹”>ù—ø—AŽ˜”E=™˜Oš™™ˆ›š–”œ››ƒ�nœ ž(o� ŸžP ›Ÿþ 86¢£ø¡A‹¤>ù¥ø¥9¦“O§¦¦Q¨¦P©¨¨ˆª§©þª86¬­ø«A‹®>ù¯ø¯A°±®>r=²±þ²86¶·7´7µø³A‹¸>ùÂøÂ Ä&µrAŽÆ¸ÅÄ=ÇÆOÈÇǃɴÈQÊÉQËÉ ÌÊËQÍÇ…ÎkÌ�ÏÎÍ Ð Ï…Ñ¹Ð…ÒlÌ…Óͺ�ÔÒÓ Õ Ô…Ö»Õ�×Ñօؼ̅Ùͽ�ÚØÙ Û Ú…Ü¾Û�Ý×Ü…Þ¿Ì…ßÍÀ�àÞß á à…âÁá�ãÝâ äBÉQåÇ�ænã…çåæƒèäçþè86ë*7êøé;=îí;˜ï‹;Ÿû¤A‹ì>ùðøðA°ñìr>=òñ õ+òóônöõù÷ø÷öøúùüøü=žýûª¡þ¢ý› ÿþ÷úÿøøQýª >©A>PžA‚žý>ûùùøù=ï± ö÷ú ø ùøøù ø = î= ï9¶ê  % >îù ø ùúøú=>ïù÷øø=îþ86*7øA‹>=="ùøAŽ>=OˆV X! oQ"!…#"þ#86&*7%ø$;=89;˜:‹;ŸZ¤A‹'>ù;ø;AŽ<'>==<O>==Q?>Q@> A%?@ŽB>ŠƒC%BPDAAˆECDƒFE*…GF, HBG I1-.H J./0I>8J=K8ŽL%1�ML39NÓMƒONŠ…PO4�QKP>8QA°R'r>=SR T+SóônUTùVøVöWYù[ø[=ž\Zª¡]¢\› ^]÷_ú^W_ø_Q`\ª a`>©baA>PžcbA‚žd\c>ZdùXøX=e:± feU÷gúfghøhùWøgùiøi=k: l&krAŽm'Ål=nm=o:9p¶%o=q8=r8Qsnts…ut5Qvn…wv6 x1uwp y.7rx z%qy>8zùjøjùYøY={:€|{‘>:|ùVøW=}8 ~(}7þ~86�*7€øA‹‚>ù“ø“AŽ”‚>=•”O–••Q—–Q˜– ™%—˜Pš™™ˆ›€šA°œ‚ >=�œ…ž›„ƒŸž‡  BŸ ¡1ˆ‰ ƒ¢n¡ £ �…¤£l…¥�Š ¦¥…§¦kP¨¤§Ž©€‹Žª¨(�«©ª9¬Ó«Ž­€ŒŽ®¨��¯­®…°¬kP±°°�²¯±9³Ó²…´¢Žƒµ¬Š…¶µ��·´¶ƒ¸³Š…¹¸��º·¹ »1‘’º…¼+»ƒ½n¼þ½86Á·7¿7Àø¾;=ÇÈA‹Â>ùÉøÉ Ì&ÀËAŽÎÂÍÌ=ÏÎ Ð&ÀËAŽÒÂÑÐ=ÓÒOÔÏσտÔQÖÏ×Ö9ØxÕ× ÙBØQÚØQÛØ ÜÚÛQÝÏ…ÞܼQßÓ�àÞß á à…âÃá�ãnâ…äÜÄQåÓ…æåk�çäæ è ç…éÅè�êãé…ëÝêƒìÙë>Çì íÜQîÓ…ïÆÙQðψñïðƒònñ…óîòƒôíó…õôÙ=öÇ÷õ ø(ö÷>Çø=ùÇþù86ü*7ûøú;=þí;˜ÿ‹;Ÿ ¤A‹ý>ùøA°ýrA= +óônùøöù ø =ž  ª¡ ¢ ›   ÷ú øQ ª >©A>PžA‚ž > ùø=ÿ± ÷úøùøùø=þ=ÿ9Áû %>þùøùø=ÿ€‘>ÿùø= þþ 86%&7"7#7$ø!;“01;=2n;˜3‹;Ÿ:¤ù4ø4ƒ5"(>05ù6ø6ö79ù;ø;=ž<:ª¡=¢<› >=÷?ú>7?ø?Q@<ª A@>©BAA>PžCBA‚žD<C>:Dù8ø8=E3± FE$÷GúFGHøHù7øGùIøI=K3€LK‘oMLˆN*MƒOnN…P#OA=Q0>=RQƒSPR TSA=U0A=VU�WPV X W�YTXA=Z0A=[Zƒ\P[ ] \A=^0>=_^�`P_ a`�b]aPcYb�d5c>0dA=e0>=fe�gfP h gA=i0A=ji�kjP lkQm5¸ nho©on,+�phoˆqp)ˆrmqQs5¸ tlo©ut,+�vluˆwv)ˆxsw=y2Pzrx {Bz |({-ˆ}n|�~y}>2~ùJøJù9ø9=3€€‘>3€ù6ø7=�2o‚$ˆƒ�‚>2ƒ=„2 …(„o †….ƒ‡/†>2‡=ˆ2 ‰ˆ Љ ‹+Šo7þ‹86ŽM7�øŒA‹�>ù�ø�AŽ‘�A=’‘O“’’A°”�AE=•”Ž–“•ˆ—�–þ—86š›7™ø˜A‹œ>=�=žùŸøŸ9 Ž™V¡�žX¢¡ oþ¢86¦§7¤7¥ø£A‹¨>=©=ªù±ø±A°²¨AE=³²…´³«9µš¤Q¶µ·´P¸·o�¹¤¸9ºš¹Q»ºP¼´o�½¤¼9¾š½Q¿¾À´PÁoÀ�¤Á9ÚÂQÄÃPÅo´�ƤÅ9ÇšÆQÈÇ�É»¿�ÊÉÄ�ËÊÈ…Ì7¶ƒÍË̅δ´ˆÏÍ΅Ь¥…ÑÐÏ…ÒÑ­ƒÓnÒ Ô(Ó®ˆÕnÔ Ö+Õ¯°þÖ86Ú§7Ø7Ùø×A‹Û>ùÞøÞ9ߢŽàßÙ�áØà9âüá…ãÙÜ�ä«ãåä æ1åäâ ç.Ýnæþç86ë§7é7êøè;=ïn;˜ð‹;Ÿú¤A‹ì>ùñøñA°òìr>=óò ô+óóônõôùöøöö÷ùùûøû=žüúª¡ý¢ü› þý÷ÿúþ÷ÿøÿQüª >©A>PžA‚žü>úùøøø=ð± õ÷úøù÷øù ø = ð  & rAŽ ìÅ = Q…+AŽìE=OA°ìEE=PˆŽ9¢Žê��é=ð9¶Q… ¹ƒ! ="ï…#ê܃$í#…%êÜ�&î% '1$&! (.�n' )%"(>ï)ù ø ùùøù=*ð€+*‘>ð+ùöø÷=,ïþ,86017.7/ø-=2ù5ø5‚6/4 8*.3 7'86j92‚:9‘ ;&‹:g<2;‚><= ?&7>_@2?;þ@86EF7B7C7DøAùGøGƒHCD�ICD J1HIBþJ86MN7LøKùhøh¸ iLO÷júikjøkþPøj¸ lLQ÷múlnmønþTøm¸ oLU÷púoqpøqþYøp¸ rLZ÷súrtsøtþ^øs¸ uLŠ÷vúuwvøwþaøv¸ xL]÷yúxzyøzþcøy¸ {Ld÷|ú{}|ø}þfø|þg86�·77€ø~A‹‚>ùŽøŽŽ�ƒ���…9‘Ó�Ž’†9“j’ƒ”“Š…•”�–‘•9—& ˜1‡ˆ—ƒ™n˜9šE—‰Šª ›€‹÷œú›�œø�…ž™‹�Ÿ–ž9 EŸ‘Ü…¡ �…¢š+ƒ£n¢…¤¡£�¥¤†þ¥øœª ¦€‘÷§ú¦¨§ø¨…©™(�ª–©9«Eª’-…¬«]…­š�ƒ®n­…¯¬®�°¯Œþ°ø§9±E–’‹…²±Œ�³²�þ³86º»7µ7¶7·7¸7¹ø´;/ØÙ;=Ôo;˜Ö×;ÒÑÓ;˜Õ;Ÿê¤;Ÿÿ¤A‹¼>ùÚøÚA/ÛÑ>>Û½A=ÜÑA>ÜoA=ÝÑE>ÝnPÞ¶¶ˆßµÞ àßAŽá¼E=âáOãââ�äã¾ åEäùæøæöçéùëøë=žìꪡí¢ì› îí÷ïúîçïøïQð쪠ñð>©òñA>PžóòA‚žôìó>êôùèøè=õÕ³ öõ‘÷÷úö÷øøøùçø÷ùùøù>Öùûøûöüþùø=žÿª¡¢› ÷úüøQª >©A>PžA‚ž >ÿ ùýøý= Ö³   ‘÷ ú   ø ùüø ùø=Öo=ÕoP�àP··�9L=Öo=ÕoP�à�¿Ž +�! Ž"!¶Ž#À�$#Â9%)$9&�"¸º '%&÷(ú')(ø)ùþø(…*¶¹�+Ã9,)+ -,�….Š-�/Q.…0*/�1m92)1…3Š2�4Š3�5Ä96)5…76Ń8µ"979:x89…;04P<0;ˆ=:< >B=ƒ?µ"Ž@å0ŽA@®�B?AC79DxBC…E04PF0EˆGDFA=HÑE=IH JBG K1‰ÆJ L.�nK M%ILA=NÑE>NM¸ O>n÷PúOQPøQ…R>>ƒSnR TS=UÔº VTU÷WúVXWøX>ÔTˆYn4PZnY…[=Z9\x[7Ž]\­�^TˆP_]^ `E_AŽa¼E=baOcbb”d`c�eÇ9f)e…gf®Žh"ÈPi··�jhi9kjj…lkÉ�mgl n m9oMn>Øo=pØŽq=Ê…rn‡Psrr�tqs9ujt…vu�wËvŽxpw>Øx=yØ…zyÍ={Ø9|EdŠÜP~||| }.z{~>Ø}=Ø=€ØŽ�€Æ�‚�Î9ƒEd­�P…ƒƒƒ „.‚…>Ø„ˆ†60=‡Ø=ˆØ…‰ˆÐ…Іkƒ‹nŠ…Œ†�ƒ�nŒ Ž1‹�>P�ŽŽŽ �.‡‰�>Ø�=‘ØA/’Ñ>>’‘…“†Šƒ”n“ •1n”>A=–ÑA>–•ùWøWùPøPùøùþøþ=—Ö€˜—‘>Ö˜ùûøüùúøúùéøé=™Õ€š™‘>Õšùæøç=›Ñþ›86Ÿ 7�7žøœ;/ÊË;/ÌÍ;/ÎÏA‹¡>ùÐøÐŽÑ�‹9ÒÓÑ9ÓEÒŠ(PÕÓÓÓ Ô.£¤Õ>ÊÔ=ÖÊŽ×�Å�Ø×Ç9ÙÓØ9ÚEÙ_-…ÛÚ�PÝÛÛÛ Ü.Ö¦Ý>Ê܈Þ�§9ßÞ=àÊ=áÊŽâá+Qãß ä1O¹ãQåß9æ)å ç0Šæ…èäçPêèèè é.àâê>Êé9ëEž‰ŠŽì�ª�íì¬9îÓí9ïEîŠ(Pñïïï ð.¨©ñ=òÊPôëëë ó.òðô>Ìó õ1­®žƒönõ”÷�¯Žø�‹9ùÓø…úù„�û÷ú ü û=ýÌ=þÌŽÿþ°�ÿ±9Eü­-…ö…�P .ý>Ì9 º�²l‹�=ÌQŽ >Ì = ÌQ Q P     .  >Ì 9 º�³´‘_=ÌQŽ>Ì=ÌQQP .>Ì9 º�µ¶·�=ÌQŽ>Ì=ÌQQP  . >ÌŽ!�¸�"!¹9#Ó"9$E#_† %1Šºž…&$%='ÌŽ(�(9)j(9*E)йP,*** +.¼¾,…-&+P/--- ..'+/>Ì.ˆ0�À�10Â921Q32�43m95)4º 65.÷7ú687ø8Q92Ž:9¿…;5Š9<x:;…=<Á >B=ƒ?>ÄQ@2�A@…9B)APDBBB C.ÃÄDŽECÅQF<9GEFoŠPIGGG H.ECI>ÎH=JÎŽKC�QL< ML N1Š5MQO< PO Q1ƲP…RNQPTRRR S.JKT>ÎS=UÎŽVCŠ W1ÇÈ?PYWWW X.UVY>ÎX=ZÌ=[Î \1�É?P^\\\ ].Z[^>Ì]ù7ø7=_Ìþ_86c§7a7bø`A‹d>ùzøz9{¬…|{S�}|e9~¬…~ÁŽ€afP�o�‚€�9ƒÓ‚Ž„af…P†g…�‡„†9ˆÓ‡P‰ƒˆƒŠ‰hŽ‹Ši�Œa‹ˆ�Œk9Ž%�}l9�xŒmˆ��o�‘�p…’}q�“’Á9”%‘“Ô…•”­ –(Ž•ˆ—br…˜—(�™Œ˜Žšas›…œŠP�›œ�žš��Ÿžu9 ÓŸ9¡E ¯v9¢E–w™ £.5n¡…¤¢£ ¥1xyb…¦¥�ƒ§n¦…¨¤§þ¨86­®7ª7«7¬ø©ù´ø´ˆµ«' ¶+µon…·¶7 ¸· ¹ · º1Qй�»¸ºˆ¼»7 ½1oмP¿½½½ ¾.¯°¿ À1¯n¼PÂÀÀÀ Á.¾±Â Ã.¹e¼ŽÄÁ³…ÅQ¼�ÆÆÅPÈÆÆÆ Ç.²ÄȅɪDžÊݬ�ËeÊŽÌÁËPÎÃÃà Í.ÉÌÎþÍ86ÑM7ÐøÏ;“ä;˜å‹;Ÿ÷¤;  ;A‹Ò>ùæøæ9笎èÐÓ…éçÔ…êçÕPëéê�ìèëA°íÒ A=îíPïîî�ðìï9ñÓð ò1».ñùóøóöôöùøøø=žù÷ª¡ú¢ù› ûú÷üúûôüøüQýùª þý>©ÿþA>PžÿA‚žù>÷ùõøõ=å± l÷úøùôøùø=å> á  &rA=   =  ˆÅ …â…º =å>Þ &rA“=”Ð……ç…‹ƒ=åo…À� Ž!І="åo#"P$##�%!$9&j%…'&l�( '=)ä=*å>Þ +&*rA“,+=-, .(Ž/-.=0åÇ10‘o21…3¸2�4Ô3Ž5/4�6)5>ä6ùøùöøö=7å€87‘>å8ùóøô=9ä…:]ò�;ã:Ž<9;þ<86?@7>ø=A‹A>ùBøBAŽCA>=DCOEDDŽFEŠA°GAEr=HGPIFHPJ>oƒKJI LEKþL86P§7N7OøMA‹Q>=R=SùXøXˆYNU ZY�[Zm9\L[�]ZVŽ^\®�_]^Ž`_T9aš`Obaa9cÑ`�dbcŽedWfePgfn hEg9i?` jGih9k‰”ljk m(lo nm‡9o¬…po7Qq\…rqŠ�spr t s…u¯t�v�u…wnv9xEwQˆ9yEO�¹…zxy¼ {zo÷|ú{}|ø}þoø|…~îzQ\…€®���€…‚~��ƒ7‚ƒ„N`……ƒQ…†ƒ¹ ‡B„ ˆ1…†‡Q‰„ Љ ‹1ƒoŠQŒ„ �Œ Ž1n5�…�‹ŽQ�„ ‘� ’1ƒo‘Q“„ ”“ •1n5”…–’•�—�–�˜ˆ— ™+˜on…š™zþš86žŸ7œ7�ø›;/§¨A‹ >ù©ø©Qªœ «+ªon ¬«kP®¬¬¬ ­.¡£®>§­O¯œœQ°œ ±(°ˆP²±±ˆ³¯²Ž´³¤Žµ´.9¶¬…·¶ÈP¸·o�¹µ¸9ºÓ¹9»Eº�-=¼§…½»­P¿½½½ ¾.¼¥¿>§¾AŽÀ E=ÁÀOÂÁÁ”Ü Ä(Ão=ŧ ÆÄÁ…ÇnÆ�È+ÇŽÉÅÈ>§ÉƒÊn�ˆËÊ+=̧…ÍËŽ Î+ÍonPÐÎÎÎ Ï.̦Ð>§Ï=ѧþÑ86ÕÖ7Ó7ÔøÒùØøØŽÙÓk…ÚÙÔƒÛ²ÓŽÜÛkƒÝ²Ô…ÞÜ߲݃޸àáÓשâáÚßþâ86å@7äøã;/íîA‹æ>ùïøïAŽðæ>=ñðOòññ…óäòŽôó�9õjô…öõŠŽ÷ó¯�ø÷ç9ùjø…úùŠ�ûöúƒüûŠQýó…þý-Qÿó…ÿÁ�þQó…ÆQó…(ƒP9jƒ Š… üÜ� Š …  Œ�   P   >íƒähQòQòQò (ˆQòQòQò (ˆP… B 1®Å…�=íP!  .²è!…" >í"ƒ#äêQ$òQ%òˆ&$%P'&n…(#' )B( *1ƒo)=+íŽ,ë*Ž-,*Ž.-ì�/+.>í/=0í 1+0½²þ186:;ø2;=<>=53ù?ø?Ä@5AÇA@EpBA…CBkƒDCnÇE5EpFE…GFkƒHGnPJDHonAIK<>>KJ…LDŠ�MLŠ…NHŠƒOŠNPPMOA“Q<A>QP=R<QSR>6SATU6A=VUWV>UWQXR>8Xý86b;øY;=qr;=st;˜u‹;ŸÑ¤=][=`^PZ]`A‹c>=dùvøvgžwd>|xwQyZozx…{yz |{ +|}~n€9�0€x€‚€e9ƒ0‚xQ„ƒ€…€f9†0…xQ‡†€ˆ€g9‰0ˆxQЉ€‹€h9Œ0‹xQ�Œ€Ž€i9�0ŽxQ��€‘€j9’0‘xQ“’€”€k9•0”xQ–•€—€l9˜0—xQ™˜�š„‡�›šŠ�œ›�…�œ5�ž�“�Ÿž–� Ÿ™…¡ Ü�¢�¡Q£�Q¤�ƒ¥¢¤…¦¥W�§£¦>q§€¨€e9©0¨xQª©€«€f9¬0«xQ­¬�®ª­€¯€g9°0¯xQ±°�²®±€³€h9´0³xQµ´�¶²µ…·¶�=¸q=¹qƒº·¹…»º»�¼¸»>q¼=½q…¾½m>q¾Q¿�=Àq�Á¿À>sÁ=Âs…ÃÂn>sÃA°ÄcAE=ÅÄoÆ€�ÇÆhŽÈÇÅA°ÉcAr=ÊÉ Ë+ÊóônÌËùÍøÍöÎÐùÒøÒ=žÓѪ¡Ô¢Ó› ÕÔ÷ÖúÕÎÖøÖQ×Óª Ø×>©ÙØA>PžÚÙA‚žÛÓÚ>ÑÛùÏøÏ=Üu± ÝÜÌ÷ÞúÝÞßøßùÎøÞùàøà=ãu å&ãäAŽçcæå=èçOéèèƒêÈé ëBêQìèˆíë츠îín÷ïúîðïøð=ñs…òío óò…ôŠó�õŠôQöè…÷õö�øñ÷>søùïøïùáøáùÐøÐ=ùu€úù‘>uúùÍøÎ9ûüȸ üûo÷ýúüþýøþ=ÿq… ÿË>q = s…  p>s ùýøý9 ëȸ   o÷ ú   ø >so>qoù ø ƒ ‡„… kň   ƒ �Š… kň = s= qP  >a ý86 ;ø =  =  P   A‹ >ù ø Q  AŽ  >=  O   …   9 & 9 Ÿ  ! + ½²ˆ"   # +" onP$ ! # > $ ý86, ;ø% =( ' =* ) P& ( * A‹- >=. =/ =0 "ù1 ø1 Q2 & AŽ3 - >=4 3 O5 4 4 …6 2 5 97 6 98 ¢Ž9 8 7 �: 6 9 9; �: 9< š: O= < < Ž> = 7 Ž? > ��@ : ? 9A c@ 7 9B Ú6 7 9C ë6 7 …D B C 9E ED _(9F ¢ŽG F ³�H 6 G 9I �H 9J Ú6 ³9K EJ _(…L I K …M ; E 9N �6 PO M A L N >+ O ý86W ;øP ;/k l ;/m n ;/o p =S R =U T PQ S U A‹X >=Y =Z =[ "=\ #=] $=^ %=_ &ùq øq Qr Q AŽs X >=t s Ou t t …v r u Qw Q Vx [ Z Xy x w oQz y …{ z O| y y >k | Q} Q V~ _ Z X ~ } o=€ k Q�  ƒ‚ n� Žƒ € ‚ O„   �… ƒ „ >k … Q†  …‡ † ƃˆ n‡ …‰ { ˆ QŠ Q V‹ ^ Z XŒ ‹ Š oQ� Œ QŽ Œ Q� Œ 9� ¢Ž‘ � ‰ �’ v ‘ 9“ ¦’ ‰ =” k …• ” ` =– k …— – b P™ � � � ˜ .• — ™ >m ˜ Qš Q V› ] Z Xœ › š oQ� œ =ž m ŽŸ c � …  Š� �¡ Q  Ž¢ Ÿ ¡ ƒ£ ²¢ …¤ ž £ >m ¤ =¥ m ަ d Ž Ž§ ¦ � ¨ +“ ��Ž© § ¨ Žª © ݃« n� ެ ª « �­ ¥ ¬ >m ­ =® m 9¯ E“ g ް f ¯ ޱ ° � ޲ ± ã�³ ® ² >m ³ =´ m 9µ ­´ ‰ � >m µ Q¶ Q V· \ Z X¸ · ¶ oQ¹ ¸ º º ¹ h ÷» úº ¼ » ø¼ O½ ¸ ¸ Q¾ ¸ P¿ ¾ ¾ ¾ ˆÀ ½ ¿ >o À QÁ Œ = o …à  i =Ä o PÆ Á Á Á Å .Ã Ä Æ >o Å =Ç o ŽÈ j Ž ŽÉ È Á ŽÊ É O�Ë Ç Ê >o Ë =Ì o =Í o 9Î ­Í ³Á PÐ ÆÆÆ Ï .Ì Î Ð >o Ï =Ñ m =Ò o QÓ ¸ PÕ Ó Ó Ó Ô .Ñ Ò Õ >m Ô ù» ø» =Ö m P× Ö n>V × ý86ß ;øØ ;/ó ô =Û Ú =Ý Ü PÙ Û Ý A‹à >=á =â =ã !=ä "=å %ùõ øõ Qö Ù AŽ÷ à >=ø ÷ Où ø ø …ú ö ù A°û à >E=ü û ˆý nü AŽþ à >=ÿ þ O ÿ ÿ 9 ¬9 ‰O     E 9 šú …  ÆQ ú …  Å�   Q ú … æ …  �ƒ   �     Q ú …  Õ…  +ƒ   Q ú …  ç �      �     P   O   Ž  ‹�     Ž  �P! n " E! 9# ú Q$ Ù V% å â X& % $ oQ' & 9( E' �¹9) ?ú * H) " è + H) é è O, * * Q- * . - / (. 5P0 / / ˆ1 , 0 O2 + + Q3 + 4 3 5 (4 5P6 5 5 ˆ7 2 6 ƒ8 1 7 9 %# ê Ž: 8 9 Ž; : +�< ú ; ˆ= < V> ã â X? > = oO@ ? ? >ó @ A G) " B ) ”C B " D +C onƒE nD F E Á…G [F �H ŒG =I ó 9J žA ' …K H « L +K onPN L L L M .I J N >ó M ”O A  P (O o=Q ó R P ¼9S ER ¯�ŽT ë S ŽU T v…V �( �W ®V ŽX U W �Y Q X >ó Y QZ  Ž[ ú ì9\ j[ Ž] ú Q9^ j] …_ ^ ®�` \ _ 9a E` ¯b Z 9c Eb ã‹=d ó =e ó …f e ì …g c ŠPi g g g h .d f i >ó h A°j à AE=k j Pl k o�m ú l 9n šm Qo n Pp k oƒq ú p 9r šq Qs r �t o s Pu ok �v ú u 9w šv Qx w �y t x Pz ok ƒ{ ú z 9| š{ Q} | �~ y } … 7Z ƒ€ ~  …� k k ˆ‚ € � Oƒ    „ Bƒ … ‚ † (… +ˆ‡ „ † 9ˆ EZ ŠQ…‰ ¤ˆ �Рމ �‹ Š ý ƒŒ Š ý � 1‹ Œ ‡ Ž ‚ � 0oŽ …� � � 9‘ EZ ¹- ’ .¯na …“ ‘ ’ 9” EZ ŒÅ…• ” Æ…– • a �— “ – …˜ � — =™ ó …š ˜ _Pœ š š š › .™ í œ >ó › =� ó 9ž Pú ' P  ž ž ž Ÿ .� î   >ó Ÿ =¡ ó ¢ +¡ ½²Q£ Ù 9¤ å£ 9¥ Õ¢ ¤ >ó ¥ =¦ ó ”§ ¦ ò P¨ § § § =© ó P« 666 ª .¨ © « >ó ª =¬ ó ­ +¬ ½²P® ­ n>Þ ® ý8 ¼SWwý«²ªÓžê0¸—<Ÿ�@ó ½�Ö7 ù‘à KÆV47)g“ ‰é»LësYI"9~ùÐÀU+°÷æ­MãÓ,K ™éú2̽t¾‡³­ RiveCLIBootUpµ¶instanceÄì DHDîPond¤åæçèéêëìñòArtboard Style Background%6;ÿColor™ DHDîWater¤åæçèéêëìñò��ßàStyleýÐPond;7 Animation 157State Machine 19ŠLayer 1>@?A—=•ÄìHDÈCîYÈÃNuRiveWordmark01 ÈCHCRIVE_Wordmark_ROOTR 2 PathR¸ëAø@ Component)\�AÃõø@ Component.4B B ComponentR¸ÍA B Component)\Ÿ¿q=ú@ ComponentìQ‹Á…û@ ComponentìQ‹Áš™áÀ ComponentWázT?= æAš™áÀ ComponentTÛÉ?UázT?= òAÍÌÁ ComponentVÛÉ¿WázT?= òA\�¾Á ComponentUázT?= æA\�ÊÁ Component.4Â\�ÊÁ Component.4  ComponentWáz4@R¸ëA  ComponentT'ÀU¸0@Ved ?Wm~0@B\� ComponentT=ÀU·Ø.@V®¥ƒ?W·Ø.@3³+B{ ComponentTÛÉ¿Uáz4@×#4BìQÄÁ ComponentVÛÉ?Wáz4@×#4B= ÷À ComponentTöÄ¿Uà*0@Vá@Wm~0@3³+B)\�= ComponentTf-¿Uâ2/@V]¢'@WÎÀ/@B{¶@ ComponentUáz4@R¸ëAø@ ComponentFill 1%ÿÿÿÿ Component RIVE_wordmark ì‘3ÃR PathR¸ëAø@ Component)\�AÃõø@ Component.4B B ComponentR¸ÍA B Component)\Ÿ¿q=ú@ ComponentìQ‹Á…û@ ComponentìQ‹Áš™áÀ ComponentWázT?= æAš™áÀ ComponentTÛÉ?UázT?= òAÍÌÁ ComponentVÛÉ¿WázT?= òA\�¾Á ComponentUázT?= æA\�ÊÁ Component.4Â\�ÊÁ Component.4  ComponentWáz4@R¸ëA  ComponentT'ÀU¸0@Ved ?Wm~0@B\� ComponentT=ÀU·Ø.@V®¥ƒ?W·Ø.@3³+B{ ComponentTÛÉ¿Uáz4@×#4BìQÄÁ ComponentVÛÉ?Wáz4@×#4B= ÷À ComponentTöÄ¿Uà*0@Vá@Wm~0@3³+B)\�= ComponentTf-¿Uâ2/@V]¢'@WÎÀ/@B{¶@ ComponentUáz4@R¸ëAø@ ComponentFill 1%ÿÿÿÿ Component3 €hÂÿë½I Path5®GéÀ=ŠB Component6®GéÀ=ŠÂ Component6®Gé@=ŠÂ Component6®Gé@=ŠB Component6Fill 15%ÿÿÿÿ Component; ÀõEBÿë½V Path=¸ÑÀ=ŠB Component>¤ðRÂ=ŠÂ Component>3³Â=ŠÂ Component> ×£;q=±A Component>×#B=ŠÂ Component>¤ðRB=ŠÂ Component>¸Ñ@=ŠB Component>Fill 1=%ÿÿÿÿ ComponentF P8;C×½E PathH{”€B ComponentI{”Â{” ComponentI{”B{” ComponentI{”Bq=ÉÁ ComponentIq=µÁq=ÉÁ ComponentIq=µÁš™íÀ ComponentI)\ÄAš™íÀ ComponentI)\ÄAš™í@ ComponentIq=µÁš™í@ ComponentIq=µÁq=ÉA ComponentI{”Bq=ÉA ComponentI{”B{”B ComponentI{”Â{”B ComponentIFill 1H%ÿÿÿÿ ComponentW¤åæçèéêëìñò Layout Style?A?A?A?A?€?A€??€?A€??€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?€?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A?A9ð<=w>ø7 Timeline 135FÍÌL>CF€?CF?C F€?C C5F@@CF€?C 5F@@CF€?C 35CF€?CFš™™>CF€?CF€?DCXDCb355CF€?CFš™™>CF€?CF€?DCPDCZ5 F€ÂDEZCF€hÂDC#3=5CF€?CFš™™>CF€?C!F€?DCTDC^5 FàúŠBDE[CFÀõEBDC%3H5CF€?CFš™™>CF€?C#F€?DC\DCf5 FP8OCDE\CFP8;CDC'35 FœADE]CF¿DC%5F€?DE^CPFfff?DCf5F€?DE_CPFfff?DCf35F0¶BDE`CFR¸ëADC5Fø@DEaCFø@DC5DEbCDC35F YŸBDEcCF)\�ADC5FÃõø@DEdCFÃõø@DC5DEeCDC3 5F YÕBDEfCF.4BDC5F BDEgCF BDC5DEhCDC3!5F°®BDEiCFR¸ÍADC5F BDEjCF BDC5DEkCDC3"5F‰qBDElCF)\Ÿ¿DC5Fq=ú@DEmCFq=ú@DC5DEnCDC3#5FìQ‹ÁDEoCFìQ‹ÁDC5F…û@DEpCF…û@DC5DEqCDC3$5FìQ‹ÁDErCFìQ‹ÁDC5Fš™áÀDEsCFš™áÀDC5DEtCDC3%5F�Ä´BDEuCF= æADC5Fš™áÀDEvCFš™áÀDC5TDEwCDC5VDExCDC5UDEyCDC5WFázT?DEzCFázT?DC3&5F�Ä·BDE{CF= òADC5FÍÌÁDE|CFÍÌÁDC5TFÛÉ?DE}CFÛÉ?DC5VDE~CDC5UFázT?DECFázT?DC5WDE€CDC3'5F�Ä·BDE�CF= òADC5F\�¾ÁDE‚CF\�¾ÁDC5TDEƒCDC5VFÛÉ¿DE„CFÛÉ¿DC5UDE…CDC5WFázT?DE†CFázT?DC3(5F�Ä´BDE‡CF= æADC5F\�ÊÁDEˆCF\�ÊÁDC5TDE‰CDC5VDEŠCDC5UFázT?DE‹CFázT?DC5WDEŒCDC3)5F.4ÂDE�CF.4ÂDC5F\�ÊÁDEŽCF\�ÊÁDC5DE�CDC3*5F.4ÂDE�CF.4ÂDC5F ÂDE‘CF ÂDC5DE’CDC3+5F0¶BDE“CFR¸ëADC5F ÂDE”CF ÂDC5TDE•CDC5VDE–CDC5UDE—CDC5WFáz4@DE˜CFáz4@DC3,5F�ÄÅBDE™CFBDC5F\�ÂDEšCF\�ÂDC5TF'ÀDE›CF'ÀDC5VFed ?DEœCFed ?DC5UF¸0@DE�CF¸0@DC5WFm~0@DEžCFm~0@DC3-5FšÑBDEŸCF3³+BDC5F{ÂDE CF{ÂDC5TF=ÀDE¡CF=ÀDC5VF®¥ƒ?DE¢CF®¥ƒ?DC5UF·Ø.@DE£CF·Ø.@DC5WF·Ø.@DE¤CF·Ø.@DC3.5FìSÕBDE¥CF×#4BDC5FìQÄÁDE¦CFìQÄÁDC5TFÛÉ¿DE§CFÛÉ¿DC5VDE¨CDC5UFáz4@DE©CFáz4@DC5WDEªCDC3/5FìSÕBDE«CF×#4BDC5F= ÷ÀDE¬CF= ÷ÀDC5TDE­CDC5VFÛÉ?DE®CFÛÉ?DC5UDE¯CDC5WFáz4@DE°CFáz4@DC305FšÑBDE±CF3³+BDC5F)\�=DE²CF)\�=DC5TFöÄ¿DE³CFöÄ¿DC5VFá@DE´CFá@DC5UFà*0@DEµCFà*0@DC5WFm~0@DE¶CFm~0@DC315F�ÄÅBDE·CFBDC5F{¶@DE¸CF{¶@DC5TFf-¿DE¹CFf-¿DC5VF]¢'@DEºCF]¢'@DC5UFâ2/@DE»CFâ2/@DC5WFÎÀ/@DE¼CFÎÀ/@DC325F0¶BDE½CFR¸ëADC5Fø@DE¾CFø@DC5TDE¿CDC5VDEÀCDC5UFáz4@DEÁCFáz4@DC5WDEÂCDC3J5F{”ÂDEÃCF{”ÂDC'5F€BDEÄCF€BDC'5DEÅCDC'3K5F{”ÂDEÆCF{”ÂDC'5F{”ÂDEÇCF{”ÂDC'5DEÈCDC'3L5FeCDEÉCF{”BDC'5F{”ÂDEÊCF{”ÂDC'5DEËCDC'3M5FeCDEÌCF{”BDC'5Fq=ÉÁDEÍCFq=ÉÁDC'5DEÎCDC'3N5Fq=µÁDEÏCFq=µÁDC'5Fq=ÉÁDEÐCFq=ÉÁDC'5DEÑCDC'3O5Fq=µÁDEÒCFq=µÁDC'5Fš™íÀDEÓCFš™íÀDC'5DEÔCDC'3P5F ©BDEÕCF)\ÄADC'5Fš™íÀDEÖCFš™íÀDC'5DE×CDC'3Q5F ©BDEØCF)\ÄADC'5Fš™í@DEÙCFš™í@DC'5DEÚCDC'3R5Fq=µÁDEÛCFq=µÁDC'5Fš™í@DEÜCFš™í@DC'5DEÝCDC'3S5Fq=µÁDEÞCFq=µÁDC'5Fq=ÉADEßCFq=ÉADC'5DEàCDC'3T5FeCDEáCF{”BDC'5Fq=ÉADEâCFq=ÉADC'5DEãCDC'3U5FeCDEäCF{”BDC'5F{”BDEåCF{”BDC'5DEæCDC'3V5F{”ÂDEçCF{”ÂDC'5F{”BDEèCF{”BDC'5DEéCDC'57State Machine 19ŠLayer 1>@?A—=•ÄìHDHDîô ÀeDÈÃNuRiveBrandmark01 ÈCÈC@@ROOT“¨icon_shuffle_groupž diag_lines Path= 'ÂH ComponentHÂ= ' ComponentHÂH Component €Path…ë‘ÁH ComponentHÂ…ë‘Á ComponentHÂö(Á Componentö(ÁH Component €PathHBHB Component HB= 'B Component = 'BHB Component  €Path…ë‘AHB ComponentHB…ë‘A ComponentHBö(A Componentö(AHB Component €Pathö(\AH ComponentHÂö(\A ComponentHÂ…ë±A Component…ë±AH Component €Pathö(\ÁHB ComponentHBö(\Á ComponentHB…ë±Á Component…ë±ÁHB Component €Path= 7BH Component HÂ= 7B Component HÂHB Component = 7ÂHB Component HB= 7 Component HBH Component Fill 1%ÿÿÿÿ Component'ž lightning Path))\‰ÁHB Component* ×ÛÀ Component*š™ãÁ Component*žÁH Component*š™ÓAH Component*33›@HÁ Component*š™ãAHÁ Component*®G‰ÁHB Component*Fill 1)%ÿÿÿÿ Component3ž icon_game_dev Path5ìQ…A)\…Á Component6ìQ…Á)\…Á Component6ìQ…ÁH Component6ìQ…AH Component6 €Path5ìQ…A)\…A Component;ìQ…Á)\…A Component;ìQ…ÁHB Component;ìQ…AHB Component; €Path5áúGB)\…A Component@áúGB®G…Á Component@ìQ…A®G…Á Component@ìQ…A)\…A Component@ €Path5ìQ…Á)\…A ComponentEìQ…Á®G…Á ComponentEáúG®G…Á ComponentEáúGÂ)\…A ComponentE €Path5UÍÌÜ@VÛI@WÍÌÜ@ ×£»HÁ ComponentJTÛÉ¿UÍÌÜ@VÛÉ?WÍÌÜ@{HÁ ComponentJTÛI@UÍÌÜ@WÍÌÜ@ ×£»HA ComponentJTÛÉ?UÍÌÜ@VÛÉ¿WÍÌÜ@…ëGA ComponentJFill 15%ÿÿÿÿ ComponentOžicon_product_designer PathQHÂq=ZA ComponentRHÂ{ZÁ ComponentR ×µÁ{ZÁ ComponentR ×µÁq=ZA ComponentR €PathQVÛÉ¿WÃõð@ ×µÁ¤p ComponentWUÃõð@VÛI@WÃõð@¤pÂH ComponentWTÛÉ¿UÃõð@VÛÉ?WÃõð@H¤p ComponentWTÛI@UÃõð@WÃõð@¤pÂ�µÁ ComponentWTÛÉ?UÃõð@�µÁ¤p ComponentW €PathQq=ZAq=ZA Component]q=ZA{ZÁ Component]{ZÁ{ZÁ Component]{ZÁq=ZA Component] €PathQHBq=ZA ComponentbHB{ZÁ Componentb ×µA{ZÁ Componentb ×µAq=ZA Componentb €PathQHBHB ComponentgHB ×µA Componentg ×µA ×µA Componentg ×µAHB Componentg €PathQHB ×µÁ ComponentlHBH Componentlq=ZÁH Componentlq=ZÁ ×µÁ Componentl €PathQH ׵A ComponentqHÂHB Componentqq=ZAHB Componentqq=ZA ×µA ComponentqFill 1Q%ÿÿÿÿ Componentvž icon_animator PathxHB ComponentyH ComponentyH ComponentyHB ComponentyFill 1x%ÿÿÿÿ Component~ž icon_swords Path€ ×]A( Component��ÂÆA®/A Component�¸þA…ë�@ Component�q½B®/A Component�)\âAÃõªA Component�ÍL&Bš™ B Component�Ha/B…B Component�€?B×£B Component�ö¨Báz?B Component�=ŠB)\/B Component�¸ž B®G&B Component�«AìQâA Component��Â/AR¸B Component�{‚@{þA Component��Â/AR¸ÆA Component� ×£;�Â]A Component�š™/ÁR¸ÆA Component��Â�À{þA Component�š™/ÁR¸B Component�…ëªÁìQâA Component�{” ®G&B Component�€Â)\/B Component�¸žÂáz?B Component�Ãu?Â×£B Component� W/Â…B Component��B&š™ B Component�®GâÁÃõªA Component�3³Â®/A Component�= þÁ…ë�@ Component�®ÆÁ®/A Component�®]Á¨ Component�€?Â{ Component�€?Âáz? Component�šÂáz? Component� ×£»š™]Á Component�\Báz? Component�Ãu?Báz? Component�Ãu?B{ Component�…]A¨ Component�Fill 1€%ÿÿÿÿ Component©ž icon_unknown €Path«V‘ÀWp3?ìQBö(  Component¬TÐ¥K?Uâ73?VäËÀWúfÊA…Bq= Component¬T-"I¿UXÊAVäË@Wó5?\�Âq= Component¬TO�S¿Uò‹1?V}ß@W\Þ´A)\Âö(  Component¬T†YÀUÞã´Aáz®ÉA Component¬V0ÍZ?WÅ]xAq=šÁÃõ'B Component¬T�\@UÅ]xAq=šAÃõ'B Component¬VSÙZ¿WÞã´AázB®ÉA Component¬TxÁT?U\Þ´A)\Bö(  Component¬ Path«TûãK¿UÕ£@VÜ@WÕ£@ö(¤ÀázÒA Component¶TÉF?Uä AVBtÀW@ Aš™¹ÁHá¬A Component¶TÜ@UÕ£@VûãK¿WÕ£@ìQâÁš™i@ Component¶T(ŽÀUä AVcnF?W@ A…#Áš™A Component¶ Path«TcnF¿U@ AVBt@W@ A¤p¹AÍ̬A Component»T™ˆK?Ur¤@VÜÀWÕ£@…£@ffÒA Component»TBt@U@ AVcnF¿W@ A33#A¤pA Component»Tµ-ÀUr¤@VûãK?WÕ£@ö(âAÃõh@ Component»Fill 1«%ÿÿÿÿ ComponentÀžicon_developer PathÂìQ…AHB ComponentÃìQ…AìQB Componentà WBìQB Componentà WBìQ ComponentÃìQ…AìQ ComponentÃìQ…AH ComponentÃáúGBH ComponentÃáúGBHB Componentà €PathÂìQ…ÁHB ComponentÌìQ…ÁìQB ComponentÌ WÂìQB ComponentÌ WÂìQ ComponentÌìQ…ÁìQ ComponentÌìQ…ÁH ComponentÌáúGÂH ComponentÌáúGÂHB ComponentÌFill 1Â%ÿÿÿÿ ComponentÕž R_brandmark €Path×HÂH ComponentØHÂHB ComponentØHBHB ComponentØHBH ComponentØ Path×VÛÉ?W�Â@ìQBR¸¶À ComponentÝTjm„¿UI@V4°@WöÕ@ö(þAÍÌL= ComponentÝT]v¿Ut0@VCr'@Wt0@\�ÜAR¸†@ ComponentÝU¸@áz®A)\·@ ComponentÝ�ÂUA¸@ ComponentÝ)\BÍÌìA ComponentÝq=˜AÍÌìA ComponentÝ…k¿®G¹@ ComponentÝq=NÁq=º@ ComponentÝq=NÁR¸¦À ComponentÝWö(?q=ªAR¸¦À ComponentÝTÛÉ?Uö(?¸³Aq=ÊÀ ComponentÝVÛÉ¿Wö(?¸³AÃõŒÁ ComponentÝUö(?q=ªA וÁ ComponentÝìQ וÁ ComponentÝìQÂÍÌìÁ ComponentÝW�Â@áz®AÍÌìÁ ComponentÝT£¾&ÀUI@V¡?WöÕ@\�ÜAìQàÁ ComponentÝT,ÀU¿/@VŒÇƒ?W¿/@ö(þA= ¿Á ComponentÝTÛÉ¿U¸@ìQB®G‘Á ComponentÝFill 1×%ÿÿÿÿ Componentò¤åæçèéêëìñò Layout Style9ð<=‡>7 Timeline 135¨2z×C2zC2z)C2z5C"2zQC*2zxC22z€C:2z«CB2zÂCJ2z×CT5F€?C3×5FÍÌL>CF?CFÍÌL>C F€?C FÍÌL>CTF?CXFÍÌL>C\F€?C`F?CrF€?CvFÍÌÌ=CzFš™™>C}C�5F@CF€?C F€?C`Ffff?Cd5F@CF€?C F€?C`Ffff?Cd57State Machine 19ŠLayer 1>@?A—=•ÄìÇðD‡Dî  ´D Watermark™ðD‡DîRow™HDHDîLayoutÚÅNuRiveWordmark01_ÆState Machine 1ÚÅNuRiveBrandmark01_ÆState Machine 1¤åæçèéêëìñò�� Layout Style¤øåæçèéêëìñò�� Layout Style¤åæçèéêëìñò Layout Style(Fill 1%ÿ Component 9x7 brandmark35F€?D35D9x7wordmark35F€?D35D57State Machine 19ŠLayer 1>@?A—=•A—ñŠðäŒ DñŠð¥äŒðC=•A—ñŠðäŒ DñŠð¥äŒðC