/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠAnt on ĠTr ush kov Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġapp . the le ma . img Ċ Ċ import Ġapp . the le ma . app . APP Ċ import Ġapp . the le ma . gl .* Ċ Ċ /** Ġ@ author Ġz eg an styl Ġ*/ Ċ class ĠFrame Buffer Attachment 2 D () Ġ: ĠFrame Buffer Attachment Adapter () Ġ{ ĊĠĠĠ Ġconstructor ( block : ĠFrame Buffer Attachment 2 D . () Ġ-> ĠUnit ): Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠIf Ġyou Ġalready Ġcreated Ġtexture , Ġyou Ġmay Ġset Ġit Ġto Ġ[ texture ] Ġand Ġspecify Ġ[ gl Handle ] Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġtexture : ĠI Texture ? Ġ= ĠTexture 2 D () ĊĊĠĠĠ Ġ/** ĠSetup Ġthis Ġattachment Ġfor Ġframe Ġbuffer Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsetup ( frame Buffer : ĠI Frame Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( gl Handle Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// computer graphics . stack exchange . com / questions / 9 7 1 9 / does - webgl - 2 - support - linear - depth - texture - sampling ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġif Ġ( pixel Format Ġ== ĠGL _ DEPTH _ COMPONENT Ġ&& ĠAPP . is Web ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL _ NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL _ LINEAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Ġ= Ġtexture ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( texture Ġis ĠI Texture 2 D ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( texture . texture Handle Ġ== Ġ 0 ) Ġtexture . texture Handle Ġ= ĠGL . gl Gen Texture () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . bind () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . min Filter Ġ= Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . mag Filter Ġ= Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . s Wrap Ġ= ĠGL _ CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . t Wrap Ġ= ĠGL _ CLAMP _ TO _ EDGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Shadow Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL . gl TexParameter i ( texture . gl Target , ĠGL _ TEXTURE _ COMPARE _ MODE , ĠGL _ COMPARE _ REF _ TO _ TEXTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGL . gl TexParameter i ( texture . gl Target , ĠGL _ TEXTURE _ COMPARE _ FUNC , ĠGL _ LE QUAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . load ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframe Buffer . width , Ġframe Buffer . height , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Format , Ġpixel Format , Ġtype , Ġmip map Level ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . unbind () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( texture Ġ!= Ġnull ) ĠGL . gl Framebuffer Texture 2 D ( GL _ DRAW _ FRAMEBUFFER , Ġattachment , Ġtexture !!. gl Target , Ġgl Handle , Ġmip map Level ) ĊĠĠĠ Ġ} Ċ }