Skip to main content
deleted 2 characters in body
Source Link
Peter
  • 529
  • 2
  • 5

Raytracing cores can generally do two hardware accelerated things:

  1. Test an intersection between a triangle and a ray.

  2. Traverse a BVH (Basically to test an intersection between a bounding boxes and a ray).

When things are raytraced we don't typically loop through every triangle and test each one. Instead the triangles are placed into a BVH (https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) which is a set of boxes which partition the triangles. We first test the ray against this BVH as it allows us to quickly ignore large sets triangles.

Eg, if you have a box with a million triangles inside and the ray doesn't intersect the box you know it won't intersect any of the triangles either using only one test.

If you want to intersect something which isn't a triangle, for example a curve (for hair) or a sphere, you can write your own non-hardware accelerated program which will still benifit from traversing the BVH but will call your intersection program to test individual primitives.

Raytracing cores can generally do two hardware accelerated things:

  1. Test an intersection between a triangle and a ray.

  2. Traverse a BVH (Basically to test an intersection between a bounding boxes and a ray).

When things are raytraced we don't typically loop through every triangle and test each one. Instead the triangles are placed into a BVH (https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) which is a set of boxes which partition the triangles. We first test the ray against this BVH as it allows us to quickly ignore large sets triangles.

Eg, if you have a box with a million triangles inside and the ray doesn't intersect the box you know it won't intersect any of the triangles either using only one test.

If you want to intersect something which isn't a triangle, for example a curve (for hair) or a sphere, you can write your own non-hardware accelerated program which will still benifit from traversing the BVH but will call your intersection program to test individual primitives.

Raytracing cores can generally do two hardware accelerated things:

  1. Test an intersection between a triangle and a ray.

  2. Traverse a BVH (Basically to test an intersection between bounding boxes and a ray).

When things are raytraced we don't typically loop through every triangle and test each one. Instead the triangles are placed into a BVH (https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) which is a set of boxes which partition the triangles. We first test the ray against this BVH as it allows us to quickly ignore large sets triangles.

Eg, if you have a box with a million triangles inside and the ray doesn't intersect the box you know it won't intersect any of the triangles either using only one test.

If you want to intersect something which isn't a triangle, for example a curve (for hair) or a sphere, you can write your own non-hardware accelerated program which will still benifit from traversing the BVH but will call your intersection program to test individual primitives.

Source Link
Peter
  • 529
  • 2
  • 5

Raytracing cores can generally do two hardware accelerated things:

  1. Test an intersection between a triangle and a ray.

  2. Traverse a BVH (Basically to test an intersection between a bounding boxes and a ray).

When things are raytraced we don't typically loop through every triangle and test each one. Instead the triangles are placed into a BVH (https://en.wikipedia.org/wiki/Bounding_volume_hierarchy) which is a set of boxes which partition the triangles. We first test the ray against this BVH as it allows us to quickly ignore large sets triangles.

Eg, if you have a box with a million triangles inside and the ray doesn't intersect the box you know it won't intersect any of the triangles either using only one test.

If you want to intersect something which isn't a triangle, for example a curve (for hair) or a sphere, you can write your own non-hardware accelerated program which will still benifit from traversing the BVH but will call your intersection program to test individual primitives.