+ | Triangle intersection

This commit is contained in:
TheRedShip
2025-01-05 23:16:18 +01:00
parent b9b7084a4f
commit 93e9e45224
15 changed files with 797 additions and 30 deletions

View File

@ -1,9 +1,9 @@
float randomValue(inout uint rng_state)
{
rng_state = rng_state * 747796405 + 2891336453;
uint result = ((rng_state >> ((rng_state >> 28) + 4)) ^ rng_state) * 277803737;
result = (result >> 22) ^ result;
return (result / 4294967295.0);
rng_state = rng_state * 747796405u + 2891336453u;
uint result = ((rng_state >> ((rng_state >> 28u) + 4u)) ^ rng_state) * 277803737u;
result = (result >> 22u) ^ result;
return (float(result) * (1.0 / 4294967295.0));
}
float randomValueNormalDistribution(inout uint rng_state)
@ -25,4 +25,31 @@ vec3 randomHemisphereDirection(vec3 normal, inout uint rng_state)
{
vec3 direction = randomDirection(rng_state);
return (direction * sign(dot(normal, direction)));
}
}
#define M_PI 3.1415926535897932384626433832795
// vec3 randomHemisphereDirection(vec3 normal, inout uint rng_state)
// {
// float r1 = randomValue(rng_state);
// float r2 = randomValue(rng_state);
// float phi = 2.0 * M_PI * r1;
// float cos_theta = sqrt(1.0 - r2);
// float sin_theta = sqrt(r2);
// // Create orthonormal basis
// vec3 tangent, bitangent;
// if (abs(normal.x) > abs(normal.z)) {
// tangent = normalize(vec3(-normal.y, normal.x, 0.0));
// } else {
// tangent = normalize(vec3(0.0, -normal.z, normal.y));
// }
// bitangent = cross(normal, tangent);
// return normalize(
// tangent * (cos(phi) * sin_theta) +
// bitangent * (sin(phi) * sin_theta) +
// normal * cos_theta
// );
// }