package Ġme . anno . gpu . shader Ċ Ċ object ĠShader Func Lib Ġ{ ĊĊĠĠĠ Ġval Ġnoise Func Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" float Ġrandom ( vec 2 Ġco ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġreturn Ġfr act ( sin ( dot ( co . xy , Ġvec 2 ( 1 2 . 9 8 9 8 , 7 8 . 2 3 3 ))) Ġ* Ġ 4 3 7 5 8 . 5 4 5 3 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ n " ĊĊĠĠĠ Ġval Ġrein hard Tone Mapping Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġrein hard ( vec 3 Ġcolor ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġreturn Ġcolor Ġ/ Ġ( color Ġ+ Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ n " ĊĊĠĠĠ Ġval Ġrein hard 2 Tone Mapping Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġrein hard ( vec 3 Ġcolor ){ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġinv White Sq Ġ= Ġ${ 1 . 0 Ġ/ Ġ 1 6 . 0 }; \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġreturn Ġ( color Ġ* Ġ( 1 . 0 Ġ+ Ġcolor Ġ* Ġinv White Sq )) Ġ/ Ġ( color Ġ+ Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ n " ĊĊĠĠĠ Ġval Ġu ch im ura Tone Mapping Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠU ch im ura Ġ 2 0 1 7 , Ġ" HDR Ġtheory Ġand Ġpractice " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMath : Ġhttps :// www . de sm os . com / calculator / gsl cd xv ip g ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSource : Ġhttps :// www . slide share . net / nik u que / hdr - theory - and - pract ic ce - jp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsource ^ 2 : Ġhttps :// github . com / dm n sg n / glsl - tone - map / blob / master / uch im ura . glsl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġu ch im ura ( vec 3 Ġx , Ġfloat ĠP , Ġfloat Ġa , Ġfloat Ġm , Ġfloat Ġl , Ġfloat Ġc , Ġfloat Ġb ) Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat Ġl 0 Ġ= Ġ(( P Ġ- Ġm ) Ġ* Ġl ) Ġ/ Ġa ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠL 0 Ġ= Ġm Ġ- Ġm Ġ/ Ġa ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠL 1 Ġ= Ġm Ġ+ Ġ( 1 . 0 Ġ- Ġm ) Ġ/ Ġa ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠS 0 Ġ= Ġm Ġ+ Ġl 0 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠS 1 Ġ= Ġm Ġ+ Ġa Ġ* Ġl 0 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠC 2 Ġ= Ġ( a Ġ* ĠP ) Ġ/ Ġ( P Ġ- ĠS 1 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġfloat ĠCP Ġ= Ġ- C 2 Ġ/ ĠP ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 Ġw 0 Ġ= Ġvec 3 ( 1 . 0 Ġ- Ġsmooth step ( 0 . 0 , Ġm , Ġx )); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 Ġw 2 Ġ= Ġvec 3 ( step ( m Ġ+ Ġl 0 , Ġx )); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 Ġw 1 Ġ= Ġvec 3 ( 1 . 0 Ġ- Ġw 0 Ġ- Ġw 2 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 ĠT Ġ= Ġvec 3 ( m Ġ* Ġpow ( x Ġ/ Ġm , Ġvec 3 ( c )) Ġ+ Ġb );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 ĠS Ġ= Ġvec 3 ( P Ġ- Ġ( P Ġ- ĠS 1 ) Ġ* Ġexp ( CP Ġ* Ġ( x Ġ- ĠS 0 ))); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġvec 3 ĠL Ġ= Ġvec 3 ( m Ġ+ Ġa Ġ* Ġ( x Ġ- Ġm )); \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġreturn ĠT Ġ* Ġw 0 Ġ+ ĠL Ġ* Ġw 1 Ġ+ ĠS Ġ* Ġw 2 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġu ch im ura ( vec 3 Ġx ) Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat ĠP Ġ= Ġ 1 . 0 ; Ġ Ġ// Ġmax Ġdisplay Ġbrightness \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat Ġa Ġ= Ġ 1 . 0 ; Ġ Ġ// Ġcontrast \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat Ġm Ġ= Ġ 0 . 2 2 ; Ġ// Ġlinear Ġsection Ġstart \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat Ġl Ġ= Ġ 0 . 4 ; Ġ Ġ// Ġlinear Ġsection Ġlength \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat Ġc Ġ= Ġ 1 . 3 3 ; Ġ// Ġblack \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġconst Ġfloat Ġb Ġ= Ġ 0 . 0 ; Ġ Ġ// Ġpe dest al \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġreturn Ġu ch im ura ( x , ĠP , Ġa , Ġm , Ġl , Ġc , Ġb );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĊĠĠĠ Ġ// Ġa cademy Ġcolor Ġencoding Ġsystem ; Ġe . g . Ġused Ġby ĠUE 4 ĊĠĠĠ Ġ// Ġsays Ġit Ġshall Ġbe Ġstandard Ġfor Ġthe Ġfilm Ġindustry ĊĠĠĠ Ġval Ġa ces Tone Mapping Ġ= Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠN ark ow ic z Ġ 2 0 1 5 , Ġ" ACES ĠFil mic ĠT one ĠMapping ĠCurve " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsource ^ 2 : Ġhttps :// github . com / dm n sg n / glsl - tone - map / blob / master / aces . glsl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" vec 3 Ġa ces ( vec 3 Ġx ) Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġa Ġ= Ġ 2 . 5 1 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġb Ġ= Ġ 0 . 0 3 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġc Ġ= Ġ 2 . 4 3 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġd Ġ= Ġ 0 . 5 9 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġconst Ġfloat Ġe Ġ= Ġ 0 . 1 4 ;\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠ Ġreturn Ġclamp (( x Ġ* Ġ( a Ġ* Ġx Ġ+ Ġb )) Ġ/ Ġ( x Ġ* Ġ( c Ġ* Ġx Ġ+ Ġd ) Ġ+ Ġe ), Ġ 0 . 0 , Ġ 1 . 0 );\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" }" ĊĊ Ċ }