package Ġr ang ar ok . com . android pbr . renderer Ċ Ċ import Ġandroid . opengl . GLES 3 0 Ċ import Ġandroid . util . Log Ċ import Ġcom . rag nar ok . ray tracing . glsl . Cube Map Conversion Fs Ċ import Ġcom . rag nar ok . ray tracing . glsl . Cube Map Vs Ċ import Ġcom . rag nar ok . ray tracing . primitive . Cube Renderer Ċ import Ġcom . rag nar ok . ray tracing . utils .* Ċ import Ġr ang ar ok . com . android pbr . utils .* Ċ Ċ class ĠSky box Calc Tex ( hdr Texture : ĠInt ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Sky box Calc Tex " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġshader Ġ= ĠShader ( vertex Ġ= ĠCube Map Vs , Ġfragment Ġ= ĠCube Map Conversion Fs ) ĊĊĠĠĠ Ġprivate Ġval Ġtex Id : ĠInt ĊĊĠĠĠ Ġprivate Ġval Ġcube Renderer Ġ= ĠCube Renderer () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtex Array Ġ= Ġint ArrayOf ( 0 ) ĊĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Gen Textures ( 1 , Ġtex Array , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtex Id Ġ= Ġtex Array [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġf bo Ġ= Ġgen F BO () ĊĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 3 0 . GL _ FRAMEBUFFER , Ġf bo ) ĊĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Texture ( GLES 3 0 . GL _ TEXTURE _ CUBE _ MAP , Ġtex Id ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl TexImage 2 D ( GLES 3 0 . GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ X Ġ+ Ġi , Ġ 0 , ĠGLES 3 0 . GL _ RGB 1 6 F , Ġ 5 1 2 , Ġ 5 1 2 , Ġ 0 , ĠGLES 3 0 . GL _ RGB , ĠGLES 3 0 . GL _ FLOAT , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Cub emap Tex Param () ĊĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Generate Mip map ( GLES 3 0 . GL _ TEXTURE _ CUBE _ MAP ) ĊĊĊĠĠĠĠĠĠĠ Ġshader . enable () ĊĠĠĠĠĠĠĠ Ġshader . setInt (" e quire ct angular Map ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġshader . set Mat 4 (" projection ", Ġcub emap Projection ) ĊĊĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Active Texture ( GLES 3 0 . GL _ TEXTURE 0 ) ĊĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Texture ( GLES 3 0 . GL _ TEXTURE _ 2 D , Ġhdr Texture ) ĊĊĠĠĠĠĠĠĠ Ġviewport ( 5 1 2 , Ġ 5 1 2 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshader . set Mat 4 (" view ", Ġcub emap Views [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGLES 3 0 . gl Framebuffer Texture 2 D ( GLES 3 0 . GL _ FRAMEBUFFER , ĠGLES 3 0 . GL _ COLOR _ ATTACHMENT 0 , ĠGLES 3 0 . GL _ TEXTURE _ CUBE _ MAP _ POSITIVE _ X Ġ+ Ġi , Ġtex Id , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear GL () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcube Renderer . render () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠGLES 3 0 . glBind Framebuffer ( GLES 3 0 . GL _ FRAMEBUFFER , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" finish Ġdraw Ġsky box Ġtex Id :$ tex Id ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtex Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtex Id ĊĠĠĠ Ġ} Ċ }