package Ġcom . example . ar . core . fil ament . hello . ar . presentation . renderer Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . example . ar . core . fil ament . hello . ar . presentation . renderer . utils .* Ċ import Ġcom . example . ar . core . fil ament . hello . R Ċ import Ġcom . google . android . fil ament .* Ċ import Ġcom . google . android . fil ament . text ured . Texture Type Ċ import Ġcom . google . android . fil ament . text ured . load Texture Ċ import Ġcom . google . ar . core . Frame Ċ import Ġcom . google . ar . core . Plane Ċ import Ġcom . google . ar . core . Tracking State Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ import Ġjava . nio . Float Buffer Ċ import Ġjava . nio . Short Buffer Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ class ĠPlane Renderer ( context : ĠContext , Ġprivate Ġval Ġfil ament : ĠFil ament ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġplane Vertex BufferSize : ĠInt Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġplane Index BufferSize : ĠInt Ġ= Ġ( plane Vertex BufferSize Ġ- Ġ 2 ) Ġ* Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtexture Material : ĠMaterial Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ. read Un compressed Asset (" materials / text ured . fil amat ") ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġbyte Buffer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. payload ( byte Buffer , Ġbyte Buffer . remaining ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( fil ament . engine ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtexture Material Instance : ĠMaterial Instance Ġ= Ġtexture Material ĊĠĠĠĠĠĠĠ Ġ. create Instance () ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġmaterial Instance Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaterial Instance . setParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" texture ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Texture ( fil ament . engine , Ġcontext . resources , ĠR . drawable . scene form _ plane , ĠTexture Type . COLOR ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTexture Sampler (). also Ġ{ Ġit . an isot ropy Ġ= Ġ 8 . 0 f Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaterial Instance . setParameter (" alpha ", Ġ 1 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġshadow Material : ĠMaterial Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ. read Un compressed Asset (" materials / shadow . fil amat ") ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġbyte Buffer Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaterial ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. payload ( byte Buffer , Ġbyte Buffer . remaining ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( fil ament . engine ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġplane Vertex Float Buffer : ĠFloat Buffer Ġ= ĠByteBuffer ĊĠĠĠĠĠĠĠ Ġ. allocate Direct ( plane Vertex BufferSize Ġ* Ġdim en V 4 A Ġ* ĠFloat . size ) ĊĠĠĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠĠĠ Ġ. as Float Buffer () ĊĊĠĠĠ Ġprivate Ġval Ġplane Uv Float Buffer : ĠFloat Buffer Ġ= ĠByteBuffer ĊĠĠĠĠĠĠĠ Ġ. allocate Direct ( plane Vertex BufferSize Ġ* Ġdim en V 2 A Ġ* ĠFloat . size ) ĊĠĠĠĠĠĠĠ Ġ. order ( Byte Order . native Order ()) ĊĠĠĠĠĠĠĠ Ġ. as Float Buffer () ĊĊĠĠĠ Ġprivate Ġval Ġplane Index Short Buffer : ĠShort Buffer Ġ= ĠShort Buffer ĊĠĠĠĠĠĠĠ Ġ. allocate ( plane Index BufferSize ) ĊĊĠĠĠ Ġprivate Ġval Ġplane VertexBuffer : ĠVertex Buffer Ġ= ĠVertex Buffer ĊĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠ Ġ. vertex Count ( plane Vertex BufferSize ) ĊĠĠĠĠĠĠĠ Ġ. buffer Count ( 2 ) ĊĠĠĠĠĠĠĠ Ġ. attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Buffer . Vertex Attribute . POSITION , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Buffer . AttributeType . FLOAT 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. attribute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Buffer . Vertex Attribute . UV 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVertex Buffer . AttributeType . FLOAT 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build ( fil ament . engine ) ĊĊĠĠĠ Ġprivate Ġval Ġplane Index Buffer : ĠIndex Buffer Ġ= ĠIndex Buffer ĊĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠ Ġ. index Count ( plane Index BufferSize ) ĊĠĠĠĠĠĠĠ Ġ. buffer Type ( Index Buffer . Builder . Index Type . USH ORT ) ĊĠĠĠĠĠĠĠ Ġ. build ( fil ament . engine ) ĊĊĠĠĠ Ġ@ Entity ĊĠĠĠ Ġprivate Ġval Ġplane Render able : ĠInt Ġ= ĊĠĠĠĠĠĠĠ ĠEntity Manager . get (). create (). also Ġ{ Ġfil ament . scene . add Entity ( it ) Ġ} ĊĊĠĠĠ Ġfun Ġdo Frame ( frame : ĠFrame ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġupdate Ġplane Ġtrack ables ĊĠĠĠĠĠĠĠ Ġval Ġplane Track ables Ġ= Ġframe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Updated Track ables ( Plane :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġplane Ġ-> Ġplane . sub su med By Ġ?: Ġplane Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġplane Ġ-> Ġplane . tracking State Ġ== ĠTracking State . TRACK ING Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġif Ġ( it . isEmpty ()) Ġreturn Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . type Ġ!= ĠPlane . Type . HORIZONTAL _ UP WARD _ F ACING Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Not Up ward Facing Ġ= Ġplane Track ables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. indexOf First Ġ{ Ġit . type Ġ!= ĠPlane . Type . HORIZONTAL _ UP WARD _ F ACING Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Min Ġ= ĠFloat . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġvar Ġx Max Ġ= ĠFloat . NEGATIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġvar Ġy Min Ġ= ĠFloat . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġvar Ġy Max Ġ= ĠFloat . NEGATIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġvar Ġz Min Ġ= ĠFloat . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠ Ġvar Ġz Max Ġ= ĠFloat . NEGATIVE _ INFINITY ĊĊĠĠĠĠĠĠĠ Ġvar Ġvertex Buffer Offset : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġindex Buffer Offset : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġindex Without Shadow : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġplane Vertex Float Buffer . rewind () ĊĠĠĠĠĠĠĠ Ġplane Uv Float Buffer . rewind () ĊĠĠĠĠĠĠĠ Ġplane Index Short Buffer . rewind () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġplane Track ables . count ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplane Ġ= Ġplane Track ables [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġindex Ġof Ġfirst Ġtriangle Ġthat Ġdoesn 't Ġhave Ġshadow s Ġapplied ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġindex Not Up ward Facing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Without Shadow Ġ= Ġindex Buffer Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgets Ġplane Ġvertices Ġin Ġworld Ġspace ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplane Vertices Ġ= Ġplane . polygon . polygon To Vertices ( plane . center Pose . matrix ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtriangle Ġfan Ġof Ġindices Ġover Ġconvex Ġpolygon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplane Triangle Indices Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtriangle Index Array Create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Vertices . count Ġ- Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġvertex Buffer Offset . to Short () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġk Ġ-> Ġ( vertex Buffer Offset Ġ+ Ġk Ġ+ Ġ 1 ). to Short () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġk Ġ-> Ġ( vertex Buffer Offset Ġ+ Ġk Ġ+ Ġ 2 ). to Short () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġfor Ġfor Ġbuffer Ġoverflow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vertex Buffer Offset Ġ+ Ġplane Vertices . count Ġ> Ġplane Vertex BufferSize Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Buffer Offset Ġ+ Ġplane Triangle Indices . short Array . count () Ġ> Ġplane Index BufferSize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġplane Vertices . float Array . indices Ġstep Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Min Ġ= Ġmin ( plane Vertices . float Array [ k Ġ+ Ġ 0 ], Ġx Min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Max Ġ= Ġmax ( plane Vertices . float Array [ k Ġ+ Ġ 0 ], Ġx Max ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Min Ġ= Ġmin ( plane Vertices . float Array [ k Ġ+ Ġ 1 ], Ġy Min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Max Ġ= Ġmax ( plane Vertices . float Array [ k Ġ+ Ġ 1 ], Ġy Max ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Min Ġ= Ġmin ( plane Vertices . float Array [ k Ġ+ Ġ 2 ], Ġz Min ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Max Ġ= Ġmax ( plane Vertices . float Array [ k Ġ+ Ġ 2 ], Ġz Max ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpush Ġout Ġdata Ġto Ġn io Ġbuffers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Vertex Float Buffer . put ( plane Vertices . float Array ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Uv Float Buffer . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( plane . type Ġ== ĠPlane . Type . VERTICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuv Ġcoordinates Ġfrom Ġmodel Ġspace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane . polygon . polygon To UV () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuv Ġcoordinates Ġfrom Ġworld Ġspace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Vertices . horizontal To UV () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. float Array , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Index Short Buffer . put ( plane Triangle Indices . short Array ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Buffer Offset Ġ+= Ġplane Vertices . count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Buffer Offset Ġ+= Ġplane Triangle Indices . short Array . count () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġpush Ġn io Ġbuffers Ġto Ġgpu ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġplane Vertex Float Buffer . capacity () Ġ- Ġplane Vertex Float Buffer . remaining () ĊĠĠĠĠĠĠĠ Ġplane Vertex Float Buffer . rewind () ĊĊĠĠĠĠĠĠĠ Ġplane VertexBuffer . set Buffer At ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfil ament . engine , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Vertex Float Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcount Ġ= Ġplane Uv Float Buffer . capacity () Ġ- Ġplane Uv Float Buffer . remaining () ĊĠĠĠĠĠĠĠ Ġplane Uv Float Buffer . rewind () ĊĊĠĠĠĠĠĠĠ Ġplane VertexBuffer . set Buffer At ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfil ament . engine , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Uv Float Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcount Ġ= Ġplane Index Short Buffer . capacity () Ġ- Ġplane Index Short Buffer . remaining () ĊĠĠĠĠĠĠĠ Ġplane Index Short Buffer . rewind () ĊĊĠĠĠĠĠĠĠ Ġplane Index Buffer . set Buffer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfil ament . engine , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplane Index Short Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġupdate Ġrender able Ġindex Ġbuffer Ġcount ĊĠĠĠĠĠĠĠ ĠRender able Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cast Shadow s ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. receive Shadow s ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. c ull ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bounding Box ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( x Min Ġ+ Ġx Max ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( y Min Ġ+ Ġy Max ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( z Min Ġ+ Ġz Max ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( x Max Ġ- Ġx Min ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( y Max Ġ- Ġy Min ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( z Max Ġ- Ġz Min ) Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geometry ( Ġ// Ġtexture Ġis Ġapplied Ġto Ġall Ġtriangles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender able Manager . Primitive Type . TRI ANG LES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane VertexBuffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Index Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Buffer Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. material ( 0 , Ġtexture Material Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. geometry ( Ġ// Ġshadow s Ġare Ġapplied Ġto Ġup ward Ġfacing Ġtriangles ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRender able Manager . Primitive Type . TRI ANG LES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane VertexBuffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane Index Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Without Shadow Ġ?: Ġindex Buffer Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. material ( 1 , Ġshadow Material . default Instance ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( fil ament . engine , Ġplane Render able ) ĊĠĠĠ Ġ} Ċ } Ċ