Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualHodgman

Posted 03 September 2012 - 12:56 AM

-detail on a per-pixel level (naturally because you can't have more than that!)

Actually, if you want to produce an image without aliasing, you need to evaluate multiple geometry samples per pixel.
e.g. if the edge of some geometry cut a 2D line through a pixel's bounding box, so that only 40% of the pixel is filled with that geometry, then to produce a correct image you need to find out which geometry fills the other 60% of the pixel.

You start by cycling through each pixel on the screen. For each pixel [x, y] you find the point in 3D space that lies within the near clipping plane and matches the pixel's coordinates when projected into 2D. We will call this point "a".
Now you can find the 3D point on the far clipping plane that corresponds to the 2D pixel you are on. We will call this point "b".
Now draw a line from a to b and you pass through all points in the frustum that match the 2D pixel.
Somewhere along this line segment is the 3D point you need for calculating the current pixel.
This form of rendering doesn't [have to] use triangles or any sort of polygons at all ... there would be no poly budget or any problems with creating curves

This is called ray-tracing - computerized versions of the idea were described in the 60's and has been researched to the current day.

In theory this would mean the rendering would take roughly the same amount of time regardless of your view point or how many objects you are rendering.

The key to fast ray-tracing is using a very fast method for determining the "which piece of geometry does this ray collide with" question.
The above quote is assuming that your ray-collision algorithm is not all all affected by the amount of objects in the scene or visible to the camera (that is to say, collision has O(1) complexity with regards to scene size). This is usually not the case, although the snake-oil salesmen at "Unlimited Detail" do make such a claim.
e.g. In films, ray-tracing is often used with traditional polygonal meshes (because that's what most art tools create, and they're easy to work with), and the cost of determining intersections is related to the poly budget of the scene.

#3Hodgman

Posted 03 September 2012 - 12:55 AM

-detail on a per-pixel level (naturally because you can't have more than that!)

Actually, if you want to produce an image without aliasing, you need to evaluate multiple geometry samples per pixel.
e.g. if the edge of some geometry cut a 2D line through a pixel's bounding box, so that only 40% of the pixel is filled with that geometry, then to produce a correct image you need to find out which geometry fills the other 60% of the pixel.

You start by cycling through each pixel on the screen. For each pixel [x, y] you find the point in 3D space that lies within the near clipping plane and matches the pixel's coordinates when projected into 2D. We will call this point "a".
Now you can find the 3D point on the far clipping plane that corresponds to the 2D pixel you are on. We will call this point "b".
Now draw a line from a to b and you pass through all points in the frustum that match the 2D pixel.
Somewhere along this line segment is the 3D point you need for calculating the current pixel.
This form of rendering doesn't [have to] use triangles or any sort of polygons at all ... there would be no poly budget or any problems with creating curves

This is called ray-tracing - computerized versions of the idea were described in the 60's and has been researched to the current day.

In theory this would mean the rendering would take roughly the same amount of time regardless of your view point or how many objects you are rendering.

The key to fast ray-tracing is using a very fast method for determining the "which piece of geometry does this ray collide with" question.
The above quote is assuming that your ray-collision algorithm is not all all affected by the amount of objects in the scene or visible to the camera (that is to say, collision has O(1) complexity with regards to scene size). This is usually not the case.
e.g. In films, ray-tracing is often used with traditional polygonal meshes (because that's what most art tools create, and they're easy to work with), and the cost of determining intersections is related to the poly budget of the scene.

#2Hodgman

Posted 03 September 2012 - 12:55 AM

-detail on a per-pixel level (naturally because you can't have more than that!)

Actually, if you want to produce an image without aliasing, you need to evaluate multiple geometry samples per pixel.
e.g. if the edge of some geometry cut a 2D line through a pixel's bounding box, so that only 40% of the pixel is filled with that geometry, then to produce a correct image you need to find out which geometry fills the other 60% of the pixel.

You start by cycling through each pixel on the screen. For each pixel [x, y] you find the point in 3D space that lies within the near clipping plane and matches the pixel's coordinates when projected into 2D. We will call this point "a".
Now you can find the 3D point on the far clipping plane that corresponds to the 2D pixel you are on. We will call this point "b".
Now draw a line from a to b and you pass through all points in the frustum that match the 2D pixel.
Somewhere along this line segment is the 3D point you need for calculating the current pixel.
This form of rendering doesn't [have to] use triangles or any sort of polygons at all ... there would be no poly budget or any problems with creating curves

This is called ray-tracing - computerized versions of the idea were described in the 60's and has been researched to the current day.

In theory this would mean the rendering would take roughly the same amount of time regardless of your view point or how many objects you are rendering.

The key to fast ray-tracing is using a very fast method for determining the "which piece of geometry does this ray collide with" question.
The above quote is assuming that your ray-collision algorithm is not all all affected by the amount of objects in the scene or visible to the camera. This is usually not the case.
e.g. In films, ray-tracing is often used with traditional polygonal meshes (because that's what most art tools create, and they're easy to work with), and the cost of determining intersections is related to the poly budget of the scene.

#1Hodgman

Posted 03 September 2012 - 12:50 AM

-detail on a per-pixel level (naturally because you can't have more than that!)

Actually, if you want to produce an image without aliasing, you need to evaluate multiple geometry samples per pixel.
e.g. if the edge of some geometry cut a 2D line through a pixel's bounding box, so that only 40% of the pixel is filled with that geometry, then to produce a correct image you need to find out which geometry fills the other 60% of the pixel.

You start by cycling through each pixel on the screen. For each pixel [x, y] you find the point in 3D space that lies within the near clipping plane and matches the pixel's coordinates when projected into 2D. We will call this point "a".
Now you can find the 3D point on the far clipping plane that corresponds to the 2D pixel you are on. We will call this point "b".
Now draw a line from a to b and you pass through all points in the frustum that match the 2D pixel.
Somewhere along this line segment is the 3D point you need for calculating the current pixel.
This form of rendering doesn't [have to] use triangles or any sort of polygons at all ... there would be no poly budget or any problems with creating curves

This is called ray-tracing - computerized versions of the idea were described in the 60's and has been researched to the current day.

The key is choosing a very fast method for determining the "which piece of geometry does this ray collide with" question.
In films, ray-tracing is often used with traditional polygonal meshes (because that's what most art tools create, and they're easy to work with), and the cost of determining intersections is related to the poly budget of the scene.

PARTNERS