Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
Btw, you can use R10G10B10A2 format for normals to use less space than RGB32F (4 vs 12 bytes per pixel) while having more precision than with RGB8 format (10 vs 8 bits). You'll still have to manually remap normals from [-1,1] to [0,1] and back, though.
It looks like this has to do with texture LOD calculation (which works by comparing texture coordinates in neighbouring fragments) being botched by this branching for some reason, though this shouldn't happen if u_material is a uniform. Did you test this on some other device?
How exactly are you drawing the tiles: one by one, or using batched rendering, or maybe instanced rendering? How many tiles do you have rendered when performance becomes an issue?
If I correctly understand the wiki article referenced in the comments to the linked question, setting the filtering mode to one that doesn't use mipmaps should be sufficient.