In my rendering I sometimes my objects are completely opaque, sometimes the objects have some alpha to them. By alpha, I mean like a leaf texture where only the leaf part is shown and the other pixels are not (so transparency on part of the texture). For blending, I mean setting the destination blend and source blends.
However, do I need two render lists or three render lists? I first have a render list of all of the possible objects that can be rendered. From there, I split it into two lists, Opaque and “Alpha Enabled” (which will be rendered back to front). However, for those with blends on them, but yet, no alpha level changes, should these be in a separate list or should they be in either the opaque or alpha lists?
You need two lists, one for opaque, one for transparent.
Anything that is to be visually blended with other geometry ‘behind it’ should be in the blended list, whether blending is based on an alpha channel or some other add/subscribe/multiply/whatever blending state. Render back to front, make sure individual primitives are convex and do not intersect each other..
Alpha testing, like Goz states, is the exception as it does z-writes based on the alpha mask. It goes in the opaque pile.