package Ġcom . dark yen . pb 0 0 9 . present ations Ċ Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . Input Adapter Ċ import Ġcom . badlogic . gdx . graphics .* Ċ import Ġcom . badlogic . gdx . math . Math Utils Ċ import Ġcom . dark yen . pb 0 0 9 . Shader Canvas Ċ import Ġcom . dark yen . pb 0 0 9 . util . Auto Reload Shader Program Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠReflection Box Ġ: ĠShader Canvas ( begin Sub Sample d Ġ= Ġfalse ) Ġ{ ĊĊĠĠĠ Ġval Ġvoxel Shader Ġ= ĠAuto Reload Shader Program ( G dx . files . internal (" voxel _ vertex . glsl "), ĠG dx . files . internal (" reflection _ box _ fragment . glsl ")). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Compiled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Shader Ġdid Ġnot Ġcompile : Ġ"+ log ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġloc Screen Dimensions Ġ= Ġvoxel Shader . get UniformLocation (" screen Dimensions ") ĊĠĠĠ Ġval Ġloc Camera Origin Ġ= Ġvoxel Shader . get UniformLocation (" camera Origin ") ĊĠĠĠ Ġval Ġloc Camera Target Ġ= Ġvoxel Shader . get UniformLocation (" camera Target ") ĊĠĠĠ Ġval Ġloc Time Ġ= Ġvoxel Shader . get UniformLocation (" time ") ĊĠĠĠ Ġval Ġloc Shading Level Ġ= Ġvoxel Shader . get UniformLocation (" sh ading Level ") ĊĊĠĠĠ Ġvar Ġcamera Rotation Ġ= Ġ 5 f ĊĠĠĠ Ġvar Ġcamera Height Angle Ġ= Ġ- 5 f ĊĠĠĠ Ġvar Ġcamera Distance Ġ= Ġ 1 9 0 f ĊĊĠĠĠ Ġprivate Ġval Ġsh ading Level : () Ġ-> ĠSh ading Level Ġ= Ġnew Select Box (* Shading Level . values (), Ġinitially Selected Ġ= ĠSh ading Level . Ambient . ordinal ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinput . add Processor ( object Ġ: ĠInput Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtouch Down ( screen X : ĠInt , Ġscreen Y : ĠInt , Ġpointer : ĠInt , Ġbutton : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtouch Drag ged ( screen X : ĠInt , Ġscreen Y : ĠInt , Ġpointer : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Rotation Ġ+= ĠG dx . input . delta X Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Height Angle Ġ= ĠMath Utils . clamp ( camera Height Angle Ġ- ĠG dx . input . delta Y Ġ* Ġ 0 . 5 f , Ġ- 8 9 . 9 f , Ġ 8 9 . 9 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsc rolled ( amount : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Distance Ġ= ĠMath Utils . clamp ( camera Distance Ġ* Ġ( 1 f Ġ+ Ġamount Ġ* Ġ 0 . 0 5 f ), Ġ 1 f , Ġ 5 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtime Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġtime Ġ+= ĠG dx . graphics . deltaTime ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Clear Color ( mouse X . toFloat () Ġ/ Ġscreen Width , ĠmouseY . toFloat () Ġ/ Ġscreen Height , Ġ 0 . 6 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Clear ( GL 2 0 . GL _ COLOR _ BUFFER _ BIT ) ĊĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Disable ( GL 2 0 . GL _ BLEND ) ĊĠĠĠĠĠĠĠ Ġvoxel Shader . begin () ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Uniform 2 f ( loc Screen Dimensions , Ġscreen Width . toFloat (), Ġscreen Height . toFloat ()) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Uniform 3 f ( loc Camera Origin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Utils . cos Deg ( camera Rotation ) Ġ* ĠMath Utils . cos Deg ( camera Height Angle ) Ġ* Ġcamera Distance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Math Utils . sin Deg ( camera Height Angle ) Ġ* Ġcamera Distance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath Utils . sin Deg ( camera Rotation ) Ġ* ĠMath Utils . cos Deg ( camera Height Angle ) Ġ* Ġcamera Distance ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Uniform 3 f ( loc Camera Target , Ġ 0 f , Ġ 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Uniform 1 f ( loc Time , Ġtime ) ĊĠĠĠĠĠĠĠ ĠG dx . gl . gl Uniform 1 i ( loc Shading Level , Ġsh ading Level (). ordinal ) ĊĊĠĠĠĠĠĠĠ Ġscreen Mesh . render ( voxel Shader , ĠGL 2 0 . GL _ TRI ANGLE _ F AN , Ġ 0 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġvoxel Shader . end () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠSh ading Level Ġ{ ĊĠĠĠĠĠĠĠ ĠAmb ient , ĊĠĠĠĠĠĠĠ ĠAmb ient _ Diffuse , ĊĠĠĠĠĠĠĠ ĠAmb ient _ Diffuse _ Specular ĊĠĠĠ Ġ} Ċ }