Hi everyone.
I don’t know whether is the good place for this topic but anyway.
Having this tutorial code: VK RT Intersection Tutorial
which has an implicit procedural geometry (AABB) hit group, I tried to make invisible those geometries by ignoring intersections checking the distance from camera to the geometry as follows:
bool isTooFar(const Aabb aabb, const Ray r)
{
// distance > maxDistance?
float distanceMin = sqrt(pow(aabb.minimum.x - r.origin.x, 2) + pow(aabb.minimum.y - r.origin.y, 2) + pow(aabb.minimum.z - r.origin.z, 2));
float distanceMax = sqrt(pow(aabb.minimum.x - r.origin.x, 2) + pow(aabb.minimum.y - r.origin.y, 2) + pow(aabb.minimum.z - r.origin.z, 2));
if(distanceMin > pcRay.maxDistance && distanceMax > pcRay.maxDistance)
return true;
else
return false;
}
If box geometry is too far I don’t report intersection at all:
// AABB intersection
Aabb aabb;
aabb.minimum = voxel.center - vec3(voxel.side);
aabb.maximum = voxel.center + vec3(voxel.side);
if(!isTooFar(aabb, ray)) {
hitKind = 1;
tHit = hitAabb(aabb, ray);
}
// Report hit point
if(hitKind > 0)
reportIntersectionEXT(tHit, hitKind);
The result is this:
Why do the shadows keep getting cast? Am I having a bad approach? Should I use a any-hit (transparency) shader?
Thank you!