Hi smgard,
I don’t have a solution yet, but I think I have an idea of what might be going on here!
Here’s a version of Grass_MXGrass.dds
, where I’ve enabled Scale Alpha for Mipmap Coverage, and also given each mip a different color. (Mip 0 is the original texture, while mips 1 - 11 cycle in hue from cyan, to blue, to purple, then to orange and chartreuse): Grass_MXGrass_BC3NB_out.dds - Google Drive
Could you load it in, then look at the grass up close, but from above (i.e. reproducing the vertical lines in the images), and see if it’s rendering from a higher mip level?
Here’s what I think might be going on: When using mipmapping, looking at a textured surface from a glancing angle will usually still sample from higher mips, because each pixel still covers multiple texels (in a highly anisotropic line - unless looking at the texture from very up close). In the screenshots, the grass cards that are causing these artifacts are being viewed from glancing angles that might sample from higher mips.
Additionally, as you know, Scale Alpha for Mipmap Coverage tries to scale the alpha channel of higher mips, so that approximately the same percentage of texels have an alpha value that is greater than the threshold. For these thin grass blades, Scale Alpha for Mipmap Coverage has an especially strong impact - and in particular, for higher mips, makes a line at the bottom of the image significantly more opaque. Here’s a screenshot of the alpha channel of mip 7 to show the difference:
Could it be the case that previously, these grass blades would be almost invisible when viewed from the top (as almost no texels would pass the alpha test), but with Scale Alpha for Mipmap Coverage enabled, more texels pass the alpha test, and so the form of the geometry (a plane, which looks like a line from above) shows up more?
If this turns out to be what’s going on, I’m not totally sure what the best solution would be. Maybe since one might want to preserve opacity when viewed from far away, but remove opacity when viewed from above, it might be possible to modify the grass shader to detect when a fragment’s viewed at a glancing angle, and to scale down the alpha before the alpha test if so? (Or maybe one could add noise to the alpha channel in those glancing-angle cases to make the grass look more natural?)
Hope this helps!