/* Ċ Ġ* Ġ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 . shader Ċ Ċ import Ġapp . the le ma . img . IT ext ure 2 D Ċ import Ġapp . the le ma . img . Texture 2 D Ċ import Ġapp . the le ma . shader . node .* Ċ import Ġapp . the le ma . utils . LOG Ċ Ċ class ĠP BR Shader ( deferred Rendering : ĠBoolean Ġ= Ġfalse ): ĠShader () Ġ{ ĊĠĠĠ Ġconstructor ( deferred Rendering : ĠBoolean Ġ= Ġfalse , Ġblock : ĠP BR Shader . () Ġ-> ĠUnit ): Ġthis ( deferred Rendering ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( this ) ĊĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠ ĠLOG . info ( print Code ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbase Color Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pbr Node . base Color Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . base Color Ġ= Ġtex Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . base Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbase Color Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . base Color Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġalpha Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . alpha Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnormal Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Map Node . color Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnormal Map Node : ĠNormal Map Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠNormal Map Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . normal Ġ= Ġnormal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmetal lic Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . metal lic Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrough ness Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . rough ness Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġoc clusion Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . oc clusion Ġ= Ġtex Color ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmetal lic R ough ness Texture Node : ĠTexture 2 D Node Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTexture 2 D Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs RGB Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Node Ġ= ĠSplit Vec 4 Node ( tex Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . oc clusion Ġ= Ġsplit Node . x ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . rough ness Ġ= Ġsplit Node . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp br Node . metal lic Ġ= Ġsplit Node . z ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġp br Node Ġ= ĠP BR Node Ġ{} ĊĊĠĠĠ Ġval Ġtone Map Node Ġ= ĠT one Map Node ( pbr Node . result ) ĊĊĠĠĠ Ġval Ġoutput Node Ġ= ĠOutput Node (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġfrag Color Ġ= Ġtone Map Node . result ĊĠĠĠĠĠĠĠ Ġfade Start Ġ= Ġ- 1 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġg Buffer Output Node Ġ= ĠG Buffer Output Node () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( deferred Rendering ) Ġversion Ġ= Ġ 3 3 0 ĊĠĠĠĠĠĠĠ Ġadd Node ( if Ġ( deferred Rendering ) Ġg Buffer Output Node Ġelse Ġoutput Node ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġset Tex ( uri : ĠString , Ġblock : ĠI Texture 2 D . () Ġ-> ĠUnit ): ĠI Texture 2 D Ġ= ĊĠĠĠĠĠĠĠ ĠTexture 2 D ( uri ). apply ( block ) ĊĠĠĠĠĊĠĠĠ Ġfun Ġset Base Color Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġbase Color Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Base Color Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Base Color Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġset Alpha Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġalpha Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Alpha Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Alpha Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġset Normal Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġnormal Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Normal Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Normal Texture ( this ) Ġ} ĊĊĠĠĠ Ġ/** ĠImage Ġchannels Ġmust Ġbe : ĠR Ġ- Ġoc clusion , ĠG Ġ- Ġrough ness , ĠB Ġ- Ġmetal lic . Ġ*/ ĊĠĠĠ Ġfun Ġset Oc clusion R ough ness Metal lic Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġmetal lic R ough ness Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Oc clusion R ough ness Metal lic Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Oc clusion R ough ness Metal lic Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġset Metal lic Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġmetal lic Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Metal lic Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Metal lic Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġset R ough ness Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġrough ness Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset R ough ness Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset R ough ness Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġset Oc clusion Texture ( texture : ĠI Texture 2 D ) Ġ{ Ġoc clusion Texture Node . texture Ġ= Ġtexture Ġ} ĊĠĠĠ Ġfun Ġset Oc clusion Texture ( uri : ĠString ): ĠI Texture 2 D Ġ= Ġset Tex ( uri ) Ġ{ Ġset Oc clusion Texture ( this ) Ġ} ĊĊĠĠĠ Ġfun Ġenable Shadow s ( enable : ĠBoolean Ġ= Ġtrue ) Ġ{ Ġp br Node . receive Shadow s Ġ= Ġenable Ġ} Ċ }