One thing I've found frustrating learning graphics programming is information overload - not knowing what approach to take for a given problem, or indeed what approaches are even available for a problem. Obviously "Google is your friend", but when you get a mass of different results and possible approaches, it can be hard to know which techniques are most commonly used, which are easiest to implement, which are outdated and have been superceded by better techniques, and so forth. I'd prefer to avoid wasting time on outdated techniques and wild goose chases as much as possible.
So here are some questions that maybe that the experienced graphics devs here can answer...
1) Paying for papers? To implement this or that algorithm it is clear that in a lot of cases I need to read a paper which describes an algorithm to solve the problem. Do you find you often have to pay for these papers? I have noticed that a Google search for an algorithm of some kind frequently results in me being stonewalled by payment gateway before I'm allowed to access a given paper. Is paying for papers just something I should accept is going to become the norm for me?
2) Patent concerns? As an extension of the above question, how afraid should I be of patents? Are you guys having to hold back from implementing what is described in certain papers due to patent infringement concerns? Does paying for papers usually grant me a license to use what the paper describes? What's the usual approach here?
3) Drawing 2D vector graphics? I've been learning the Paradox game engine this past week. I've started with 2D graphics so that I can learn the foundational stuff, and in the process I've found that it doesn't really give me anything for procedurally drawing and filling vector paths (e.g. lines, circles, bezier curves, etc.). Seeing as I have the option of creating an empty texture, populating a buffer with raw data and assigning that to the texture, I'm assuming I probably need to learn some algorithms to do so. Just to get my feet wet I learned Bresenham's line algorithm, which obviously is kind of old and ugly, but I started to realise as I looked for alternatives that there are a lot of ways to do things, and a lot of different papers describing those different ways. If I want to draw vector graphics to a byte array, ready for use as texture data, am I likely going to have to buy some papers and figure out how to translate what they describe into code and accept that it'll take me a while but ultimately I'll have a great vector library I can use for years to come? Or am I missing something obvious that would make my life easier?
4) Current vector drawing algorithms? If the answer to the above question is that I'm going to need to read papers and figure it out, is there a resource that I can refer to that highlights the most common modern algorithms and/or techniques for drawing vector graphics? If not, can you recommend any standard modern algorithms that I should be trying to implement? I want to be drawing curves, ellipses, straight lines, rectangles, etc. I want the option to stroke and fill in different colours (and possible with patterns or textures).
5) Shader programming? I understand the basics of shader programming, as I have followed basic tutorials and lessons in setting colours, interpolating and so forth. In other words I understand the basic concept behind shader programming. I know the GPU Gems series offers a lot of miscellaneous techniques for doing random pretty things, but it's not really structured at all. I was wondering if there is a particular book (or online resource) that focusses on shader programming and takes a beginner from a basic foundation and builds up to implemention of various advanced techniques. What resources do you recommend above others?
6) Bonus question - vector glow effects? In Limit Theory, the developer has nice glowy effects around his vector shapes, which he generates procedurally. I don't need to know how to implement this right now, but it would be nice to have an idea about where to even start implementing such an effect when I'm ready to do so. Should I want to do this, what should I look into? See below for an example of what I'm talking about:
Edit: regarding question 6, I found a clue in this: http://forums.ltheory.com/viewtopic.php?f=6&t=1843
Edit: found another gold mine of information here: http://www.iquilezles.org/www/index.htm