package Ġme . anno . gpu . shader Ċ Ċ import Ġme . anno . gpu . shader . OpenGL Shader . Companion . attribute Ċ import Ġme . anno . gpu . shader . Shader Lib . attr 0 List Ċ import Ġme . anno . gpu . shader . Shader Lib . attr 0 V Shader Ċ import Ġme . anno . gpu . shader . Shader Lib . blacklist Ċ import Ġme . anno . gpu . shader . Shader Lib . uv List Ċ import Ġme . anno . gpu . shader . builder . Variable Ċ Ċ object ĠFlat Shaders Ġ{ ĊĊĠĠĠ Ġval Ġcopy Shader Ġ= ĠShader Lib . create Shader ( ĊĠĠĠĠĠĠĠ Ġ" copy ", Ġattr 0 List , Ġattr 0 V Shader , Ġuv List , ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . S 2 D , Ġ" tex "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 1 F , Ġ" am 1 ") ĊĠĠĠĠĠĠĠ Ġ), Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġ( 1 . 0 - am 1 ) Ġ* Ġtexture ( tex , Ġuv );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }", ĠlistOf (" tex ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġattr 0 Pos Size Ġ= Ġattr 0 List Ġ+ ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 2 F , Ġ" pos "), ĊĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 2 F , Ġ" size ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġattr 0 Pos Size V Shader Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Position Ġ= Ġvec 4 (( pos Ġ+ Ġattr 0 Ġ* Ġsize )* 2 . 0 - 1 . 0 , Ġ 0 . 0 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĊĠĠĠ Ġ// Ġcolor Ġonly Ġfor Ġa Ġrectangle ĊĠĠĠ Ġ// Ġ( can Ġwork Ġon Ġmore Ġcomplex Ġshapes ) ĊĠĠĠ Ġval Ġflat Shader Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" flat Shader ", Ġattr 0 Pos Size , Ġattr 0 Pos Size V Shader , ĊĠĠĠĠĠĠĠ Ġempty List (), ĠlistOf ( Variable ( GLSL Type . V 4 F , Ġ" color ")), Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġval Ġflat Shader Strip ed Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" flat Shader ", Ġattr 0 Pos Size , Ġattr 0 Pos Size V Shader , ĊĠĠĠĠĠĠĠ Ġempty List (), ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 4 F , Ġ" color "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 1 I , Ġ" offset "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable ( GLSL Type . V 1 I , Ġ" stride ") ĊĠĠĠĠĠĠĠ Ġ), Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġint Ġx Ġ= Ġint ( gl _ Frag Coord . x );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( x Ġ% Ġstride Ġ!= Ġoffset ) Ġdiscard ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġflat Shader Gradient Ġ= ĠShader Lib . create Shader ( ĊĠĠĠĠĠĠĠ Ġ" flat Shader Gradient ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ attribute Ġvec 2 Ġattr 0 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 2 Ġpos , Ġsize ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġmat 4 Ġtransform ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġu vs ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader Lib . y uv 2 rgb Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġl Color , Ġr Color ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġbool Ġin X Direction ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Position Ġ= Ġtransform Ġ* Ġvec 4 (( pos Ġ+ Ġattr 0 Ġ* Ġsize )* 2 . 0 - 1 . 0 , Ġ 0 . 0 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġcolor Ġ= Ġ( in X Direction Ġ? Ġattr 0 . x Ġ: Ġattr 0 . y ) Ġ< Ġ 0 . 5 Ġ? Ġl Color Ġ: Ġr Color ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġcolor Ġ= Ġcolor Ġ* Ġcolor ;\ n " Ġ+ Ġ// Ġs rgb Ġ-> Ġlinear ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġuv Ġ= Ġmix ( u vs . xy , Ġu vs . zw , Ġattr 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }", ĠlistOf ( Variable ( GLSL Type . V 2 F , Ġ" uv "), ĠVariable ( GLSL Type . V 4 F , Ġ" color ")), Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġint Ġcode ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġsampler 2 D Ġtex 0 , tex 1 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader Lib . y uv 2 rgb Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 4 Ġtex Color ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( uv . x Ġ>= Ġ 0 . 0 Ġ&& Ġuv . x Ġ<= Ġ 1 . 0 ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġswitch ( code ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠ Ġcase Ġ 0 : Ġtex Color Ġ= Ġtexture ( tex 0 , Ġuv ). g bar ; break ;\ n " Ġ+ Ġ// ĠAR GB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠ Ġcase Ġ 1 : Ġtex Color Ġ= Ġtexture ( tex 0 , Ġuv ). b gra ; break ;\ n " Ġ+ Ġ// ĠB GR A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠ Ġcase Ġ 2 : Ġ\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvec 3 Ġy uv Ġ= Ġvec 3 ( texture ( tex 0 , Ġuv ). r , Ġtexture ( tex 1 , Ġuv ). xy );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtex Color Ġ= Ġvec 4 ( y uv 2 rgb ( y uv ), Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ;\ n " Ġ+ Ġ// ĠY UV ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠĠĠĠ Ġdefault : Ġtex Color Ġ= Ġtexture ( tex 0 , Ġuv );\ n " Ġ+ Ġ// ĠRGBA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠ Ġ}\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġ} Ġelse Ġtex Color Ġ= Ġvec 4 ( 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġsqrt ( color ) Ġ* Ġtex Color ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }", ĠlistOf (" tex 0 ", Ġ" tex 1 ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġflat Shader Texture Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" flat Shader Texture ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader Lib . simple Vertex Shader , Ġuv List , Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġsampler 2 D Ġtex ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġint Ġalpha Mode ;\ n " Ġ+ Ġ// Ġ 0 Ġ= Ġrgba , Ġ 1 Ġ= Ġrgb , Ġ 2 Ġ= Ġa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 4 Ġcol Ġ= Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( alpha Mode Ġ== Ġ 0 ) Ġcol Ġ*= Ġtexture ( tex , Ġuv );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġelse Ġif ( alpha Mode Ġ== Ġ 1 ) Ġcol . rgb Ġ*= Ġtexture ( tex , Ġuv ). rgb ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġelse Ġcol . rgb Ġ*= Ġtexture ( tex , Ġuv ). a ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġcol ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġdepth Shader Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" depth ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShader Lib . simple Vertex Shader , Ġuv List , Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġsampler 2 D Ġtex ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġfloat Ġdepth 0 Ġ= Ġtexture ( tex , Ġuv ). x ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġfloat Ġdepth 1 Ġ= Ġ 0 . 1 Ġ+ Ġ 0 . 9 Ġ* Ġfr act ( log 2 ( abs ( depth 0 ))); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġvec 4 ( depth 0 Ġ> Ġ 0 . 0 Ġ? Ġvec 3 ( depth 1 ) Ġ: Ġvec 3 ( depth 1 , Ġ 0 . 0 , Ġ 0 . 0 ), Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġflat Shader Cub emap Ġ= ĠBase Shader ( ĊĠĠĠĠĠĠĠ Ġ" flat Shader Cub emap ", Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ attribute Ġvec 2 Ġattr 0 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 2 Ġpos , Ġsize ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġmat 4 Ġtransform ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Position Ġ= Ġtransform Ġ* Ġvec 4 (( pos Ġ+ Ġattr 0 Ġ* Ġsize )* 2 . 0 - 1 . 0 , Ġ 0 . 0 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġuv Ġ= Ġ( attr 0 Ġ- Ġ 0 . 5 ) Ġ* Ġvec 2 (${ Math . PI Ġ* Ġ 2 }, ${ Math . PI }); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }", ĠlistOf ( Variable ( GLSL Type . V 2 F , Ġ" uv ")), Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġsampler Cube Ġtex ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġvec 4 Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uniform Ġbool Ġignore Tex Alpha ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" uniform Ġmat 3 Ġrotation ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" void Ġmain (){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 2 Ġsc Ġ= Ġvec 2 ( sin ( uv . y ), cos ( uv . y )); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 3 Ġu vw Ġ= Ġvec 3 ( sin ( uv . x ), 1 . 0 , cos ( uv . x )) Ġ* Ġsc . y xy ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ" ĠĠ Ġu vw Ġ= Ġrotation Ġ* Ġu vw ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġvec 4 Ġcol Ġ= Ġcolor ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġif ( ignore Tex Alpha ) Ġcol . rgb Ġ*= Ġtexture ( tex , Ġu vw ). rgb ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġelse Ġcol Ġ*= Ġtexture ( tex , Ġu vw );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġgl _ Frag Color Ġ= Ġcol ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġflat Shader Texture . ignore Uniform Warnings ( blacklist ) ĊĠĠĠĠĠĠĠ Ġflat Shader Cub emap . ignore Uniform Warnings ( blacklist ) ĊĠĠĠ Ġ} Ċ Ċ }