Thank you all for the reply, I go with incremental approach.
Another question. I did some tests comparing uber shader vs more specialized shader and get very different results. In my tests uber shader with all material and branchs got 2x performance over specialized shader.
For example, I have split the large shader in to
In the programming guide has
“Each new Program object can introduce execution divergence. Try to reuse the same program with different variable values. However, don’t take this idea too far and attempt to create an “über shader”. This will create execution divergence within the program. Experiment with your scene to find the right balance.”
But I didn’t not find best choice than uber shader when performance are the target (always is :)).
Any idea that usually results in better performance? I thought of splitting the materials with texture / normalmaps of the without texture.