package Ġcom . fire blade . effective camera . graphics . common Ċ Ċ import Ġandroid . opengl . GLES 3 1 .* Ċ import Ġcom . fire blade . effective camera . graphics . effects . Effect Config Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ import Ġjava . nio . Float Buffer Ċ Ċ class ĠRender Effect ( private Ġval Ġshader Program : ĠRender Shader Source , Ġprivate Ġval Ġeffect Config : ĠEffect Config ) Ġ: ĠI Render Effect Ġ{ ĊĊĠ Ġvar Ġframe Buffer Object : ĠInt Ġ= Ġ 0 ĊĊĠ Ġval Ġshader Ġby Ġlazy Ġ{ ĠShader ( shader Program . program ) Ġ} ĊĊĠ Ġvar Ġcamera Texture : ĠTexture 2 D Ġ= ĠTexture 2 D () ĊĊĠ Ġvar Ġtexture Transform Matrix : ĠFloat Array Ġ= Ġfloat ArrayOf ( 0 . 0 f ) ĊĊĠ Ġprivate Ġval Ġvertex Buffer : ĠFloat Buffer Ġby Ġlazy Ġ{ ĊĠĠĠ ĠByteBuffer . allocate Direct ( 8 Ġ* Ġ 4 ) ĊĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠ Ġ. as Float Buffer () ĊĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( float ArrayOf ( 1 . 0 f , Ġ- 1 . 0 f , Ġ- 1 . 0 f , Ġ- 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ- 1 . 0 f , Ġ 1 . 0 f )) ĊĠĠĠĠĠĠĠ Ġposition ( 0 ) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġpreview Tex Coordinates : ĠFloat Buffer Ġby Ġlazy Ġ{ ĊĠĠĠ ĠByteBuffer . allocate Direct ( 8 Ġ* Ġ 4 ) ĊĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠ Ġ. as Float Buffer () ĊĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( float ArrayOf ( 0 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f )) ĊĠĠĠĠĠĠĠ Ġposition ( 0 ) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcapture Tex Coordinates : ĠFloat Buffer Ġby Ġlazy Ġ{ ĊĠĠĠ ĠByteBuffer . allocate Direct ( 8 Ġ* Ġ 4 ) ĊĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠ Ġ. as Float Buffer () ĊĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( float ArrayOf ( 0 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f , Ġ 1 . 0 f )) ĊĠĠĠĠĠĠĠ Ġposition ( 0 ) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġset Texture ( texture : ĠInt ) Ġ{ ĊĊĠĠĠ Ġcamera Texture Ġ= ĠTexture 2 D (" camera Texture ", ĠGL _ TEXTURE 0 , Ġtexture ) ĊĠ Ġ} ĊĊĠ Ġfun Ġset Texture Matrix ( texture Matrix : ĠFloat Array ) Ġ{ ĊĠĠĠ Ġtexture Transform Matrix Ġ= Ġtexture Matrix ĊĠ Ġ} ĊĊĠ Ġfun Ġset Attributes ( capture Requested : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġshader . set Vertex Float Attribute (" position ", Ġvertex Buffer , Ġ 2 , Ġ 8 ) ĊĊĠĠĠ Ġif Ġ( capture Requested ) Ġ{ ĊĠĠĠĠĠ Ġshader . set Vertex Float Attribute (" tex Coords ", Ġcapture Tex Coordinates , Ġ 2 , Ġ 8 ) ĊĊĠĠĠĠĠ Ġshader . set Frame Buffer ( frame Buffer Object ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġshader . set Vertex Float Attribute (" tex Coords ", Ġpreview Tex Coordinates , Ġ 2 , Ġ 8 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġshader . set Uniform Matrix 4 (" texture Transform Matrix ", Ġtexture Transform Matrix ) ĊĊĠĠĠ Ġshader . set External Texture ( camera Texture . texture ID , Ġcamera Texture . index , Ġcamera Texture . name ) ĊĊĠĠĠ Ġeffect Config . properties . map Ġ{ Ġattribute Ġ-> ĊĠĠĠĠĠ Ġshader . set Float Attribute ( attribute . key , Ġattribute . value . current Value ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġunset Attributes () Ġ{ ĊĠĠĠ Ġshader . unset External Texture () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġrender ( capture Requested : ĠBoolean ) Ġ{ ĊĊĠĠĠ Ġshader . activate () ĊĊĠĠĠ Ġset Attributes ( capture Requested ) ĊĊĠĠĠ Ġif Ġ( capture Requested ) Ġ{ ĊĠĠĠĠĠ Ġshader . draw To Frame Buffer () ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġshader . draw To Screen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġunset Attributes () ĊĊĠĠĠ Ġshader . de Activate () ĊĠ Ġ} Ċ }