3 ms·
Thanks for pointing this out, I hadn't really thought about it this way. You're technically correct (the best kind of correct!). Since raytracers draw pixels o
by ggambetta 6y ago
Thanks for pointing this out, I hadn't really thought about it this way.
You're technically correct (the best kind of correct!). Since raytracers draw pixels on the screen, and the screen is an array of horizontal lines, anything that draws pixels to the screen is a rasterizer.
On the other hand, "polygon-pushers" are rasterizers in a deeper sense: triangles are explicitly sliced into arrays of horizontal line segments, and this shapes how everything else works in them, e.g. the need to interpolate attribute values along the edges of each triangle so you can then interpolate them along each raster, etc. Raytracers do no such thing. So all renderers are rasterizers, but some are more rasterizer than others ;)
I also wonder what happens, for the sake of brainstorming, if you change the output to be something that is not a rectangular array of horizontal sets of pixels. In that case you probably wouldn't call a raytracer "a rasterizer" since there would be no raster data, but a polygon pusher would still fit the name, since it uses rasters internally?
BTW, I'll never accept "literally" used as "figuratively", "there" for "they're", or "could care less" unless you do care a little bit. So I don't think you're a jerk, and your comment prompted some interesting thinking!
- jholman 6y agoNote that the interpolating of attribute values along the edges of the triangle is not exclusive to a polygon-pusher, right? If your raytracer has textures, it still interpolates the much same way the polygon-pusher does, right? Am I getting confused? (Of course the raytracer's geometry is less likely to be triangles than the polygon-pusher's geometry, but let's keep it apples-to-apples). And of course it applies to any kind of textures: baked in lightmaps, normal maps, whatever. I mean, sure, the polygon-pusher presumably does it post-transforms, i.e. in screenspace, and the raytracer does it in some other space (exactly what space is gonna depend on implementation of the camera and stuff I think), but I think it's pretty similar? But as far as I know the depth-checking in a polygon pusher is totally about the raster, so in that sense, yeah, the (non-wireframe) polygon-pusher has a deeper relationship to rasters.