diff options
author | Määttä Antti <antti.maatta@qt.io> | 2017-11-30 12:41:44 +0200 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2018-01-10 12:41:04 +0000 |
commit | a15e4a54f78e330c613a2e63d8004169c05d94be (patch) | |
tree | 5f3f58b9a0cc2a1dd547ccc3276f28c49fa7c9cf /src/Runtime/res/effectlib/fresnelLayer.glsllib | |
parent | 16185339fc737bfabb415265cdc9beef7146407e (diff) |
Improve custom material GLES2 support
Implement light shader property setting for custom materials when constant
buffers are not supported. Remove floating point .f from glsllib.
Task-number: QT3DS-36
Change-Id: I30df0ef8841daaa166910c2384613a1c9f4e6b46
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Runtime/res/effectlib/fresnelLayer.glsllib')
-rw-r--r-- | src/Runtime/res/effectlib/fresnelLayer.glsllib | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/Runtime/res/effectlib/fresnelLayer.glsllib b/src/Runtime/res/effectlib/fresnelLayer.glsllib index a9b4087b..60d71764 100644 --- a/src/Runtime/res/effectlib/fresnelLayer.glsllib +++ b/src/Runtime/res/effectlib/fresnelLayer.glsllib @@ -61,8 +61,8 @@ vec3 pseudoFresnel( in vec3 N, in vec3 ior, float fresnelPower ) float fresnel( in float eta1, in float eta2, in float cosTheta1 ) { float etaInv = eta1 / eta2; - float cosTheta2 = 1.0f - ( 1.0f - cosTheta1 * cosTheta1 ) * ( etaInv * etaInv ); - if ( 0.0f <= cosTheta2 ) + float cosTheta2 = 1.0 - ( 1.0 - cosTheta1 * cosTheta1 ) * ( etaInv * etaInv ); + if ( 0.0 <= cosTheta2 ) { cosTheta2 = sqrt( cosTheta2 ); float n1t1 = eta1 * cosTheta1; @@ -71,29 +71,29 @@ float fresnel( in float eta1, in float eta2, in float cosTheta1 ) float n2t2 = eta2 * cosTheta2; float rs = ( n1t1 - n2t2 ) / ( n1t1 + n2t2 ); float rp = ( n1t2 - n2t1 ) / ( n1t2 + n2t1 ); - float f = 0.5f * ( rs * rs + rp * rp ); + float f = 0.5 * ( rs * rs + rp * rp ); return( clamp( f, 0.0, 1.0 ) ); } else { - return( 1.0f ); + return( 1.0 ); } } -// we assume, light rays run through air with ior == 1.0f +// we assume, light rays run through air with ior == 1.0 // with eta = eta2 / eta1, we have -// - when hitting a front face: eta2 == ior, eta1 == 1.0f => eta = ior -// - when hitting a back face : eta2 == 1.0f, eta1 == ior => eta = 1.0f / ior +// - when hitting a front face: eta2 == ior, eta1 == 1.0 => eta = ior +// - when hitting a back face : eta2 == 1.0, eta1 == ior => eta = 1.0 / ior vec3 fresnel( in vec3 N, in vec3 ior ) { float cosTheta1 = dot( N, viewDir ); if ( gl_FrontFacing ) { - return( vec3( fresnel( 1.0f, ior[0], cosTheta1 ), fresnel( 1.0f, ior[1], cosTheta1 ), fresnel( 1.0f, ior[2], cosTheta1 ) ) ); + return( vec3( fresnel( 1.0, ior[0], cosTheta1 ), fresnel( 1.0, ior[1], cosTheta1 ), fresnel( 1.0, ior[2], cosTheta1 ) ) ); } else { - return( vec3( fresnel( ior[0], 1.0f, cosTheta1 ), fresnel( ior[1], 1.0f, cosTheta1 ), fresnel( ior[2], 1.0f, cosTheta1 ) ) ); + return( vec3( fresnel( ior[0], 1.0, cosTheta1 ), fresnel( ior[1], 1.0, cosTheta1 ), fresnel( ior[2], 1.0, cosTheta1 ) ) ); } } |