It depends, but in general I would say the more computation you can offload to the vertex shader the better. For example, if you're just transforming vertices, depending on your primitive topology, the geometry shader may end up doing more operations. But as always in optimisation, benchmarking is key...
It is fairly hard to do these accurately. Basically, you would need ray-tracing. However, there are techniques that can provide a good visual approximation. In particular, you should have a look at environment mapping (or cube mapping).
However they work completely opposite from each other. As C# constructs the derived class first and then the base, in C++ however the base gets constructed before the derived class.
This is almost true, but there's one important detail to be aware of. Although objects do indeed start out as the most derived type, with the method table being for the most derived type, the constructors are still run in order from the base class to the most derived class. This is the most sensible order, since a constructor in a base class must be run before the constructor of any derived class in order for the object to be in a consistent state. Therefore, in C# one has to be extra careful when making virtual method calls in a constructor. If the type is not the most derived type in its inheritance hierarchy, the method will be called on a class whose constructor has not yet been run. (See Stack Overflow)
No, but it helps ... seriously, I would love to love Gimp and InkScape and I check up on them every few years to see if I can reasonably make the switch from Adobe products but it still seems like it would be hard.
In general, I agree with your point. However, you should also consider that switching from a complex piece of software to another is always frustrating. Of course, this is exacerbated if the new tool is missing some particular feature that you like. Yet, I find that the transition is the most difficult part.
I did the switch from Photoshop to Gimp a long time ago. It took quite some time for me to adjust. Now that I am used to it, Gimp allows me to do anything I need. Most of my image processing needs are fairly basic. But, if you are not a professional graphics artist and you are not already using Photoshop, you will probably be quite content with Gimp.
Let me just add that if you cannot think of a good reason to add scripting to your game, chances are you don't need it (yet). Don't add features just because you see them somewhere else. If you keep adding features that don't directly benefit your game, you will lose track and likely never finish.
I have enjoyed reading this thread, but it seems that it is more and more heading in the direction like most singleton threads: everybody is throwing in their reasons for why singletons are bad. That was never really an issue to begin with. The thread starter asked for an alternative.
The reason that these threads always end up this way is probably because there is no simple answer. To make things worse, it is difficult to reduce it to a simple problem. Whenever I try to think of a example, it either does not capture the entire problem or it becomes too complex. I kind of liked the example of the Entity class, which needs to load various types of Resources. Do you pass every ResourceManager to the Entity constructor? Do you group several ResourceManagers together into a LoadingContext and pass that? Is that really an improvement?
Ultimately, I think we all agree that there are better solutions than singletons. The problem is that unfortunately there isn't one solution. Some people would like to hear: "instead of singletons always pass parameters". If you were to naively follow such advice, your code quality would most likely not improve. I myself would love to find such a simple do-it-all solution, which is why I still read these threads. Unfortunately, I will probably never find it...