/* Ċ Ġ* Ġ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 . test . shader . post ĊĊ Ċ import Ġapp . the le ma . app . APP Ċ import Ġapp . the le ma . g 3 d . cam . Active Camera Ċ import Ġapp . the le ma . g 3 d . mesh . Box Mesh Ċ import Ġapp . the le ma . g 3 d . mesh . Plane Mesh Ċ import Ġapp . the le ma . gl . GL Ċ import Ġapp . the le ma . img . G Buffer Ċ import Ġapp . the le ma . img . render Ċ import Ġapp . the le ma . math . Mat 4 Ċ import Ġapp . the le ma . shader . Shader Ċ import Ġapp . the le ma . shader . post . SS AO Ċ import Ġapp . the le ma . test . Test Ċ Ċ /** Ġ@ author Ġz eg an styl Ġ*/ Ċ class ĠS SA O Base Test : ĠTest Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" SS AO ĠBase " ĊĊĠĠĠ Ġoverride Ġfun Ġtest Main () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscene Shader Ġ= ĠShader ( version Ġ= Ġ 3 3 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvert Code Ġ= Ġ""" Ċ in Ġvec 3 ĠPOSITION ; Ċ in Ġvec 2 ĠUV ; Ċ in Ġvec 3 ĠNORMAL ; Ċ Ċ uniform Ġmat 4 Ġworld ; Ċ uniform Ġmat 4 Ġview ; Ċ uniform Ġmat 4 Ġview Proj ; Ċ Ċ out Ġvec 2 Ġv UV ; Ċ out Ġvec 3 Ġv Normal ; Ċ out Ġvec 3 Ġv View Space Position ; Ċ Ċ void Ġmain () Ġ{ Ċ v UV Ġ= ĠUV ; Ċ v Normal Ġ= Ġ( world Ġ* Ġvec 4 ( NORMAL , Ġ 1 . 0 )). xyz ; Ġ// Ġour Ġcube Ġis Ġnot Ġtrans lating , Ġonly Ġrot ating , Ġso Ġwe Ġcan Ġmultiply Ġnormals Ġwith Ġworld Ġmatrix Ċ vec 4 Ġworld Pos Ġ= Ġworld Ġ* Ġvec 4 ( POSITION , Ġ 1 . 0 ); Ċ v View Space Position Ġ= Ġ( view Ġ* Ġworld Pos ). xyz ; Ġ// Ġfor Ġs sa o Ġpositions Ġmust Ġin Ġview Ġspace Ċ gl _ Position Ġ= Ġview Proj Ġ* Ġworld Pos ; Ċ } """, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrag Code Ġ= Ġ""" Ċ in Ġvec 2 Ġv UV ; Ċ in Ġvec 3 Ġv Normal ; Ċ in Ġvec 3 Ġv View Space Position ; Ċ Ċ layout Ġ( location Ġ= Ġ 0 ) Ġout Ġvec 4 Ġg Color ; Ċ layout Ġ( location Ġ= Ġ 1 ) Ġout Ġvec 4 Ġg Normal ; Ċ layout Ġ( location Ġ= Ġ 2 ) Ġout Ġvec 4 Ġg Position ; Ċ Ċ void Ġmain () Ġ{ Ċ g Color Ġ= Ġvec 4 ( v UV , Ġ 0 . 0 , Ġ 1 . 0 ); Ċ g Normal Ġ= Ġvec 4 ( v Normal , Ġ 1 . 0 ); Ċ g Position Ġ= Ġvec 4 ( v View Space Position , Ġ 1 . 0 ); Ċ } """) ĊĊĠĠĠĠĠĠĠ Ġval Ġg Buffer Ġ= ĠG Buffer () ĊĊĠĠĠĠĠĠĠ Ġval Ġs sa o Ġ= ĠS SA O ( g Buffer . color Map , Ġg Buffer . normal Map , Ġg Buffer . position Map ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcube Ġ= ĠBox Mesh Ġ{ Ġset Size ( 2 f ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplane Ġ= ĠPlane Mesh Ġ{ Ġset Size ( 5 f ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcube Matrix Ġ= ĠMat 4 () ĊĠĠĠĠĠĠĠ Ġval Ġplane Matrix Ġ= ĠMat 4 () ĊĊĠĠĠĠĠĠĠ ĠAPP . on Render Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcube Matrix . rotate ( 0 f , Ġ 1 f , Ġ 0 f , ĠAPP . deltaTime ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġg Buffer . render Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene Shader . bind () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene Shader [" view "] Ġ= ĠActive Camera . view Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene Shader [" view Proj "] Ġ= ĠActive Camera . view Projection Matrix ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene Shader [" world "] Ġ= Ġcube Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube . mesh . render ( scene Shader ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene Shader [" world "] Ġ= Ġplane Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplane . mesh . render ( scene Shader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġs sa o . render ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ