package Ġshader _ tut Ċ Ċ import Ġprocessing . core . P App let Ċ import Ġprocessing . core . P Constants Ċ import Ġprocessing . core . PI mage Ċ import Ġprocessing . core . P Shape Ċ import Ġprocessing . opengl . P Shader Ċ Ċ // Ġhttps :// processing . org / tutorials / p shader / Ġ( Texture + Light Ġshaders ) Ċ Ċ // Ġcombin es Ġlast Ġ 2 Ġexamples Ċ Ċ // ĠNote Ġthat Ġa Ġtex light Ġcannot Ġbe Ġused Ġto Ġrender Ġa Ġscene Ġonly Ġwith Ġtextures Ġor Ġonly Ġwith Ġlights , Ċ // Ġin Ġthose Ġcases Ġeither Ġa Ġtexture Ġor Ġlight Ġshader Ġwill Ġbe Ġneeded . Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠShader Tutorial _ 4 _ Tex Light (). run () Ċ } Ċ Ċ private Ġclass ĠShader Tutorial _ 4 _ Tex Light Ġ: ĠP App let () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsettings () Ġ{ ĊĠĠĠĠĠĠĠ Ġsize ( 6 4 0 , Ġ 3 6 0 , ĠP Constants . P 3 D ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġcan : ĠP Shape ĊĠĠĠ Ġvar Ġangle : ĠFloat Ġ= Ġ 0 f ĊĠĠĠ Ġlateinit Ġvar Ġvert Tex Light Shader : ĠP Shader ĊĠĠĠ Ġlateinit Ġvar Ġpix Tex Light Shader : ĠP Shader ĊĠĠĠ Ġlateinit Ġvar Ġlabel : ĠP Image ĊĠĠĠ Ġlateinit Ġvar Ġcurrent Tex Light Shader : ĠP Shader ĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsize ( 6 4 0 , Ġ 3 6 0 , ĠP 3 D ) ĊĠĠĠĠĠĠĠ Ġvert Tex Light Shader Ġ= Ġload Shader ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ BASE _ RESOURCES }/ shader _ tut / vert Tex Light Frag _ 4 . glsl ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ BASE _ RESOURCES }/ shader _ tut / vert Tex Light Vert _ 4 . glsl " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpix Tex Light Shader Ġ= Ġload Shader ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ BASE _ RESOURCES }/ shader _ tut / pixel Tex Light Frag _ 4 . glsl ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ BASE _ RESOURCES }/ shader _ tut / pixel Tex Light Vert _ 4 . glsl " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcurrent Tex Light Shader Ġ= Ġvert Tex Light Shader ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġload Image ("${ BASE _ RESOURCES }/ shader _ tut / tex _ 4 . jpg ") ĊĠĠĠĠĠĠĠ Ġcan Ġ= Ġcreate Can ( 1 0 0 f , Ġ 2 0 0 f , Ġ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground ( 0 ) ĊĠĠĠĠĠĠĠ Ġshader ( current Tex Light Shader ) ĊĠĠĠĠĠĠĠ Ġtranslate ( width Ġ/ Ġ 2 f , Ġheight Ġ/ Ġ 2 f ) ĊĠĠĠĠĠĠĠ ĠrotateY ( angle ) ĊĊĠĠĠĠĠĠĠ Ġshape ( can ) ĊĠĠĠĠĠĠĠ Ġangle Ġ+= Ġ 0 . 0 1 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Can ( r : ĠFloat , Ġh : ĠFloat , Ġdetail : ĠInt ): ĠP Shape Ġ{ ĊĠĠĠĠĠĠĠ Ġtexture Mode ( NORMAL ) ĊĠĠĠĠĠĠĠ Ġval Ġsh Ġ= Ġcreate Shape () ĊĠĠĠĠĠĠĠ Ġsh . begin Shape ( QUAD _ STRIP ) ĊĠĠĠĠĠĠĠ Ġsh . no Stroke () ĊĠĠĠĠĠĠĠ Ġsh . texture ( label ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. detail ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= ĠTWO _ PI Ġ/ Ġdetail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġsin ( i Ġ* Ġangle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz Ġ= Ġcos ( i Ġ* Ġangle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= Ġi . toFloat () Ġ/ Ġdetail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh . normal ( x , Ġ 0 f , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh . vertex ( x Ġ* Ġr , Ġ- h Ġ/ Ġ 2 , Ġz Ġ* Ġr , Ġu , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsh . vertex ( x Ġ* Ġr , Ġ+ h Ġ/ Ġ 2 , Ġz Ġ* Ġr , Ġu , Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsh . end Shape () ĊĠĠĠĠĠĠĠ Ġreturn Ġsh ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġkey Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( current Tex Light Shader Ġ== Ġvert Tex Light Shader ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tex Light Shader Ġ= Ġpix Tex Light Shader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Using Ġpix Light Shader ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Tex Light Shader Ġ= Ġvert Tex Light Shader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Using Ġvert Light Shader ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠBASE _ RESOURCES Ġ= Ġ"${ System . getProperty (" user . dir ") }/ first / src / main / resources " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Sketch ( array Of ( this :: class . java . simple Name ), Ġthis ) ĊĠĠĠ Ġ} Ċ }