Fixed error when normal.z = 1 in GPUs with binary16 floats
Check failed in GPUs with low-precision floats since 0.9999 was too small a difference from 1 to be detected by a 16-bit float comparison. Changed it to 0.999 which fixed the issue and results in indistinguishable correct behavior. BUG=skia:5499 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2124183004 Review-Url: https://codereview.chromium.org/2124183004
This commit is contained in:
parent
babc3de2ce
commit
66ad44a3f1
@ -109,7 +109,7 @@ public:
|
|||||||
// transforming all the normals here!
|
// transforming all the normals here!
|
||||||
|
|
||||||
// If there's no x & y components, return (0, 0, +/- 1) instead to avoid division by 0
|
// If there's no x & y components, return (0, 0, +/- 1) instead to avoid division by 0
|
||||||
fragBuilder->codeAppend( "if (abs(normal.z) > 0.9999) {");
|
fragBuilder->codeAppend( "if (abs(normal.z) > 0.999) {");
|
||||||
fragBuilder->codeAppendf(" %s = normalize(vec4(0.0, 0.0, normal.z, 0.0));",
|
fragBuilder->codeAppendf(" %s = normalize(vec4(0.0, 0.0, normal.z, 0.0));",
|
||||||
args.fOutputColor);
|
args.fOutputColor);
|
||||||
// Else, Normalizing the transformed X and Y, while keeping constant both Z and the
|
// Else, Normalizing the transformed X and Y, while keeping constant both Z and the
|
||||||
|
Loading…
Reference in New Issue
Block a user