forked from blender/blender
MaterialX: Implement Gradient Texture node. #28
@ -177,17 +177,11 @@ NODE_SHADER_MATERIALX_BEGIN
|
||||
res = vector.extract(1).atan2(vector.extract(0)) / (val(float(M_PI * 2.0f))) + val(0.5f);
|
||||
break;
|
||||
case SHD_BLEND_QUADRATIC_SPHERE:
|
||||
/* Bias a little bit for the case where input is a unit length vector,
|
||||
* to get exactly zero instead of a small random value depending
|
||||
* on float precision. */
|
||||
res = (val(0.999999f) - vector.dotproduct(vector).sqrt()).max(val(0.0f));
|
||||
res = (val(1.0f) - vector.dotproduct(vector).sqrt()).max(val(0.0f));
|
||||
res = res * res;
|
||||
break;
|
||||
Vasyl-Pidhirskyi marked this conversation as resolved
Outdated
|
||||
case SHD_BLEND_SPHERICAL:
|
||||
Vasyl-Pidhirskyi marked this conversation as resolved
Outdated
Bogdan Nagirniak
commented
Why not 1.0f? Need comment why 0.999999f is used instead of 1.0f Why not 1.0f? Need comment why 0.999999f is used instead of 1.0f
Vasyl Pidhirskyi
commented
It's made according to Blender's implementation.
It's made according to Blender's implementation.
```
/* Bias a little bit for the case where input is a unit length vector,
* to get exactly zero instead of a small random value depending
* on float precision. */
const float r = std::max(0.999999f - math::length(vector[i]), 0.0f);
```
Vasyl Pidhirskyi
commented
Added comment Added comment
|
||||
/* Bias a little bit for the case where input is a unit length vector,
|
||||
* to get exactly zero instead of a small random value depending
|
||||
* on float precision. */
|
||||
res = (val(0.999999f) - vector.dotproduct(vector).sqrt()).max(val(0.0f));
|
||||
res = (val(1.0f) - vector.dotproduct(vector).sqrt()).max(val(0.0f));
|
||||
break;
|
||||
default:
|
||||
BLI_assert_unreachable();
|
||||
|
Loading…
Reference in New Issue
Block a user
use
res = res.dotproduct(res).sqrt()