fixed negative distance in voxel traversing

This commit is contained in:
Piotrek
2021-04-23 22:44:03 +02:00
parent 526ff05ed2
commit 829ae1ddb6
7 changed files with 37 additions and 27 deletions
+5 -3
View File
@@ -26,6 +26,8 @@ vec3 solve(vec3 hitPoint, vec3 view, vec3 normal)
*/
vec4 castBricks(vec3 origin, vec3 start, vec3 dir, vec3 incAxis, uint addr)
{
vec3 o = origin;
// Change scale
origin = start - origin;
origin += dir*0.00001;
@@ -49,7 +51,7 @@ vec4 castBricks(vec3 origin, vec3 start, vec3 dir, vec3 incAxis, uint addr)
// Hit point
vec3 mini = (pos-origin+0.5 - raySign*0.5) * rayInv;
float len = max(mini.x, max(mini.y, mini.z));
vec3 hitPoint = (origin + dir * len) / 32.0;
vec3 hitPoint = (origin + dir * len) / 32.0 + o;
// Normal vector (negate previous increment axis and mult by sign)
vec3 normal = -incAxis * raySign;
@@ -96,7 +98,7 @@ vec3 castNodes(vec3 origin, vec3 dir)
{
// Hit point
vec3 mini = (pos-origin+0.5 - raySign*0.5) * rayInv;
float len = max(mini.x, max(mini.y, mini.z));
float len = max(0.0, max(mini.x, max(mini.y, mini.z)));
vec3 hitPoint = origin + dir * len;
// Normal vector (negate previous increment axis and mult by sign)
//vec3 normal = -incAxis * raySign;
@@ -104,7 +106,7 @@ vec3 castNodes(vec3 origin, vec3 dir)
// Cast brick
vec4 result = castBricks(pos, hitPoint, dir, incAxis, node);
if(result.a > 0.0) return result.rgb; //todo: continue if not hit
if(result.a > 0.0) return result.rgb;
}
// Get new closest axis to increment