From 187b87bdaeada603a82ceeebbb1f9e179db870ac Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Sun, 5 Oct 2014 23:20:34 -0700 Subject: [PATCH] Corrected object shader's specularFactor calculation, which would result in NaN values that may propagate on some GPU's to the rest of the color calculation. This resulted in blocks of black pixels on some GPU's including the iPhone 6. --- kraken_standard_assets_ios/Shaders/ObjectShader.fsh | 5 ++++- kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/kraken_standard_assets_ios/Shaders/ObjectShader.fsh b/kraken_standard_assets_ios/Shaders/ObjectShader.fsh index 62edf5a..47ef5e7 100644 --- a/kraken_standard_assets_ios/Shaders/ObjectShader.fsh +++ b/kraken_standard_assets_ios/Shaders/ObjectShader.fsh @@ -252,7 +252,10 @@ void main() #if GBUFFER_PASS == 3 specularFactor = gbuffer_specular_factor; #else - specularFactor = max(0.0,pow(dot(halfVec,normal), material_shininess)); + mediump float halfVecDot = dot(halfVec,normal); + if(halfVecDot > 0.0) { + specularFactor = max(0.0,pow(halfVecDot, material_shininess)); + } #endif } diff --git a/kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh b/kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh index 6c5fd23..1a18867 100644 --- a/kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh +++ b/kraken_standard_assets_osx/Shaders/ObjectShader_osx.fsh @@ -252,7 +252,10 @@ void main() #if GBUFFER_PASS == 3 specularFactor = gbuffer_specular_factor; #else - specularFactor = max(0.0,pow(dot(halfVec,normal), material_shininess)); + mediump float halfVecDot = dot(halfVec,normal); + if(halfVecDot > 0.0) { + specularFactor = max(0.0,pow(halfVecDot, material_shininess)); + } #endif }