diff --git a/com.unity.shadergraph/CHANGELOG.md b/com.unity.shadergraph/CHANGELOG.md index 2ba809b1477..1f378dde830 100644 --- a/com.unity.shadergraph/CHANGELOG.md +++ b/com.unity.shadergraph/CHANGELOG.md @@ -56,9 +56,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed an issue where generated property reference names could conflict with Shader Graph reserved keywords [1328762] (https://issuetracker.unity3d.com/product/unity/issues/guid/1328762/) - Fixed a ShaderGraph issue where ObjectField focus and Node selections would both capture deletion commands [1313943]. - Fixed a ShaderGraph issue where the right click menu doesn't work when a stack block node is selected [1320212]. - - Fixed a bug when a node was both vertex and fragment exclusive but could still be used causing a shader compiler error [1316128]. - +- Fixed divide by zero warnings when using the Sample Gradient Node ## [11.0.0] - 2020-10-21 diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/SampleGradientNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/SampleGradientNode.cs index a582e73ce02..d0cd4fbe496 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/SampleGradientNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/SampleGradientNode.cs @@ -40,7 +40,7 @@ static string Unity_SampleGradientV0( { $precision3 color = Gradient.colors[0].rgb; [unroll] - for (int c = 1; c < 8; c++) + for (int c = 1; c < Gradient.colorsLength; c++) { $precision colorPos = saturate((Time - Gradient.colors[c - 1].w) / (Gradient.colors[c].w - Gradient.colors[c - 1].w)) * step(c, Gradient.colorsLength - 1); color = lerp(color, Gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), Gradient.type)); @@ -50,7 +50,7 @@ static string Unity_SampleGradientV0( #endif $precision alpha = Gradient.alphas[0].x; [unroll] - for (int a = 1; a < 8; a++) + for (int a = 1; a < Gradient.alphasLength; a++) { $precision alphaPos = saturate((Time - Gradient.alphas[a - 1].y) / (Gradient.alphas[a].y - Gradient.alphas[a - 1].y)) * step(a, Gradient.alphasLength - 1); alpha = lerp(alpha, Gradient.alphas[a].x, lerp(alphaPos, step(0.01, alphaPos), Gradient.type)); @@ -71,7 +71,7 @@ static string Unity_SampleGradientV1( { $precision3 color = Gradient.colors[0].rgb; [unroll] - for (int c = 1; c < 8; c++) + for (int c = 1; c < Gradient.colorsLength; c++) { $precision colorPos = saturate((Time - Gradient.colors[c - 1].w) / (Gradient.colors[c].w - Gradient.colors[c - 1].w)) * step(c, Gradient.colorsLength - 1); color = lerp(color, Gradient.colors[c].rgb, lerp(colorPos, step(0.01, colorPos), Gradient.type)); @@ -81,7 +81,7 @@ static string Unity_SampleGradientV1( #endif $precision alpha = Gradient.alphas[0].x; [unroll] - for (int a = 1; a < 8; a++) + for (int a = 1; a < Gradient.alphasLength; a++) { $precision alphaPos = saturate((Time - Gradient.alphas[a - 1].y) / (Gradient.alphas[a].y - Gradient.alphas[a - 1].y)) * step(a, Gradient.alphasLength - 1); alpha = lerp(alpha, Gradient.alphas[a].x, lerp(alphaPos, step(0.01, alphaPos), Gradient.type));