mirror of
https://github.com/godotengine/godot
synced 2024-09-05 20:29:46 +00:00
GPULightmapper: increase ray triangle hit rate
Currently the method ray_hits_triangle determines triangles not to be hit by a ray due to an epsilon that is too big. In practice those triangles are hit by those rays. This is fixed by introducing a smaller epsilon.
This commit is contained in:
parent
5bc0e4081b
commit
a3f315c81b
|
@ -94,13 +94,14 @@ params;
|
|||
|
||||
//check it, but also return distance and barycentric coords (for uv lookup)
|
||||
bool ray_hits_triangle(vec3 from, vec3 dir, float max_dist, vec3 p0, vec3 p1, vec3 p2, out float r_distance, out vec3 r_barycentric) {
|
||||
const float EPSILON = 0.00001;
|
||||
const vec3 e0 = p1 - p0;
|
||||
const vec3 e1 = p0 - p2;
|
||||
vec3 triangle_normal = cross(e1, e0);
|
||||
|
||||
float n_dot_dir = dot(triangle_normal, dir);
|
||||
|
||||
if (abs(n_dot_dir) < 0.01) {
|
||||
if (abs(n_dot_dir) < EPSILON) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue