Currently, the rim lighting offset axis is checked by casting a ray from the camera towards the drawn lines. If the ray hits a surface, it uses the reflection vector of said surface. The benefit is it better handles drawn lines not directly seen by the camera. In those cases, it reflects the surface actually seen.
But there's a couple problems with this:
Sometimes users (including myself) may not want these occluding surfaces taken into account (e.g. if those occluding surfaces are transparent or otherwise see-through). There are use cases I've had where this is intended and helpful, but other times occluding objects are meant to be ignored when they're not.
it adds more complexity, slowing down operations (including redo's) when lots of lines are drawn.
I've been back-and-forth with just reflecting the vector directly (seen in 4de33fc1684a33ff82068f5773ef0ca6066886e4 prior to release 1.0.1), ignoring the line's visibility by the camera. While it doesn't care about occluding objects, it's much faster and often just as precise. For most cases, I expect most users to not notice the difference (edit: even the unit tests still pass with the change).
Would appreciate any feedback on this. The obvious compromise would be just to turn this behavior into an optional parameter, but I want to know if anyone else has issues or preferences.
Currently, the rim lighting offset axis is checked by casting a ray from the camera towards the drawn lines. If the ray hits a surface, it uses the reflection vector of said surface. The benefit is it better handles drawn lines not directly seen by the camera. In those cases, it reflects the surface actually seen.
But there's a couple problems with this:
I've been back-and-forth with just reflecting the vector directly (seen in 4de33fc1684a33ff82068f5773ef0ca6066886e4 prior to release 1.0.1), ignoring the line's visibility by the camera. While it doesn't care about occluding objects, it's much faster and often just as precise. For most cases, I expect most users to not notice the difference (edit: even the unit tests still pass with the change).
Would appreciate any feedback on this. The obvious compromise would be just to turn this behavior into an optional parameter, but I want to know if anyone else has issues or preferences.