In my oldskool knowledge, you can only pass 16 textures at a time to a shader (unless you pack more in a texArray). But a short while ago I red some stuff about c- and tbuffers. Does that mean I can let an instance decide which textures (loaded in the video memory) to grab before it renders? Some thing for constants. I have, for example, 1.000 different materials. If each had 4 parameters, it could fit in one cbuffer. But are the shaders/instance flexible enough to decide, on the GPU, where to find the correct parameters? And moreover, does it really gain some speed? I think yes, because currently the CPU has to define all parameters each time before rendering something. But just checking...
by reading the instanceID in the shader and the fetch from another texture or use other constants
Excuse me, but I'm a bit prehistoric with OpenGL2x, Delphi7, 32 bit computer, and an older Cg shader language!
Another new thing. Never looked at multisample demo's, so could you please explain what's going on here? From my little understanding, you don't use traditional glBlend / glAlpha, but you sort it out yourself by defining a number of layers, and keeping track of previous results somehow? That means the shader does the (limited) depth-sort? Not very precise, but who will notice between a few million tree leaves / grass-blades... Ifso, I don't have to bother about rendering order, and I can try to implement foliage into the deferred-pipeline. Although I still wonder how the edges around leaves/metal fence/barb wire can be done since blending values for deferred rendering is not done.
build the sample mask based on your alpha value in the fragment shader yourself and set it to gl_SampleMask