/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 , ĠC uch az ĠInteractive , ĠLLC . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicense Ġterms Ġare Ġat Ġlicense . txt Ġin Ġthe Ġproject Ġroot Ċ Ġ*/ Ċ Ċ package Ġc uch az . kl udge . v ulkan Ċ Ċ import Ġc uch az . kl udge . tools . mem stack Ċ import Ġorg . lwjgl . v ulkan .* Ċ import Ġorg . lwjgl . v ulkan . VK 1 0 .* ĊĊ Ċ class ĠSampler ( Ċ ĉ val Ġdevice : ĠDevice , Ċ ĉ internal Ġval Ġid : ĠLong Ċ ) Ġ: ĠAuto Closeable Ġ{ ĊĊ ĉ override Ġfun ĠtoString () Ġ= Ġ" 0 x % x ". format ( id ) ĊĊĊ ĉ enum Ġclass ĠFilter Ġ{ Ċĉ ĉ Nearest , Ċĉ ĉ Linear Ċ ĉ } ĊĊ ĉ enum Ġclass ĠM ip map Ġ{ Ċĉ ĉ Nearest , Ċĉ ĉ Linear Ċ ĉ } ĊĊ ĉ enum Ġclass ĠAddress Ġ{ Ċĉ ĉ Repeat , Ċĉ ĉ Mir rored Repeat , Ċĉ ĉ Clamp To Edge , Ċĉ ĉ Clamp To Border , Ċĉ ĉ Mirror Clamp To Edge Ċ ĉ } ĊĊ ĉ enum Ġclass ĠBorder Color Ġ{ Ċĉ ĉ Float Transparent Black , Ċĉ ĉ Int Transparent Black , Ċĉ ĉ Float Opaque Black , Ċĉ ĉ Int Opaque Black , Ċĉ ĉ Float Opaque White , Ċĉ ĉ Int Opaque White Ċ ĉ } ĊĊ ĉ override Ġfun Ġclose () Ġ{ Ċĉ ĉ vk Destroy Sampler ( device . vk Device , Ġid , Ġnull ) Ċ ĉ } Ċ } Ċ Ċ fun ĠDevice . sampler ( Ċ ĉ mag Filter : ĠSampler . Filter Ġ= ĠSampler . Filter . Nearest , Ċ ĉ min Filter : ĠSampler . Filter Ġ= ĠSampler . Filter . Nearest , Ċ ĉ mip map : ĠSampler . Mip map Ġ= ĠSampler . Mip map . Nearest , Ċ ĉ address U : ĠSampler . Address Ġ= ĠSampler . Address . Repeat , Ċ ĉ address V : ĠSampler . Address Ġ= ĠSampler . Address . Repeat , Ċ ĉ address W : ĠSampler . Address Ġ= ĠSampler . Address . Repeat , Ċ ĉ mip Lod Bias : ĠFloat Ġ= Ġ 0 . 0 f , Ċ ĉ max An isot ropy : ĠFloat ? Ġ= Ġnull , Ċ ĉ compare Op : ĠCompare Op ? Ġ= Ġnull , Ċ ĉ border Color : ĠSampler . BorderColor Ġ= ĠSampler . BorderColor . Int Opaque Black , Ċ ĉ min Lod : ĠFloat Ġ= Ġ 0 . 0 f , Ċ ĉ max Lod : ĠFloat Ġ= Ġ 0 . 0 f , Ċ ĉ normalized Coordinates : ĠBoolean Ġ= Ġtrue Ċ ): ĠSampler Ġ{ Ċ ĉ mem stack Ġ{ Ġmem Ġ-> ĊĊĉ ĉ val Ġinfo Ġ= ĠVk Sampler CreateInfo . calloc Stack ( mem ) Ċĉĉ ĉ . sType ( VK _ STRUCTURE _ TYPE _ SAMPLER _ CREATE _ INFO ) Ċĉĉ ĉ . flags ( 0 ) Ġ// Ġreserved Ġfor Ġfuture Ġuse Ċĉĉ ĉ . mag Filter ( mag Filter . ordinal ) Ċĉĉ ĉ . min Filter ( min Filter . ordinal ) Ċĉĉ ĉ . mip map Mode ( mip map . ordinal ) Ċĉĉ ĉ . address Mode U ( address U . ordinal ) Ċĉĉ ĉ . address Mode V ( address V . ordinal ) Ċĉĉ ĉ . address Mode W ( address W . ordinal ) Ċĉĉ ĉ . mip Lod Bias ( mip Lod Bias ) Ċĉĉ ĉ . an isot ropy Enable ( max An isot ropy Ġ!= Ġnull ) Ċĉĉ ĉ . max An isot ropy ( max An isot ropy Ġ?: Ġ 0 . 0 f ) Ċĉĉ ĉ . compare Enable ( compare Op Ġ!= Ġnull ) Ċĉĉ ĉ . compare Op ( compare Op ?. ordinal Ġ?: Ġ 0 ) Ċĉĉ ĉ . min Lod ( min Lod ) Ċĉĉ ĉ . max Lod ( max Lod ) Ċĉĉ ĉ . border Color ( border Color . ordinal ) Ċĉĉ ĉ . un normalized Coordinates (! normalized Coordinates ) ĊĊĉ ĉ val Ġp Sampler Ġ= Ġmem . malloc Long ( 1 ) Ċĉ ĉ vk Create Sampler ( vk Device , Ġinfo , Ġnull , Ġp Sampler ) Ċĉĉ ĉ . or Fail (" failed Ġto Ġcreate Ġsampler ") Ċĉ ĉ return ĠSampler ( this , Ġp Sampler . get ( 0 )) Ċ ĉ } Ċ } ĊĊ Ċ enum Ġclass ĠCompare Op Ġ{ Ċ ĉ Never , Ċ ĉ Less , Ċ ĉ Equal , Ċ ĉ Less OrEqual , Ċ ĉ Greater , Ċ ĉ NotEqual , Ċ ĉ Greater OrEqual , Ċ ĉ Always Ċ } Ċ