Someone else already mentioned the book of shaders (which is the single best introductory resource IMO) - aside from that, I've found that reverse-engineering existing shaders and reapplying the learnings to my own shaders has been very helpful. With time, you start developing an eye for which shaders are just one or two steps beyond your understanding. You'll also start noticing that certain users (such as @Shane) on the site are really good about commenting their code, while others treat it like a game of code golf.
When studying existing shaders, it's best to focus on the well-documented shaders that are a few steps beyond your current capabilities, rather than the ones that consist of hundreds of lines of single letter variables and incomprehensible math. As far as open source repositories go, it doesn't get much better than shadertoy (in terms of pedagogy) since you can easily tweak values and comment out pieces of code right there in the browser if you're trying to figure out what a certain line of code does. The in-browser editor makes reverse-engineering very efficient and reduces friction as much as possible, which is really helpful for this kind of dense mathematical code.
Once you get used to the whole process of reverse-engineering shaders, you'll quickly come to see shadertoy as the perfect place to learn how different visual effects and graphics techniques are achieved. I don't know of anywhere else on the web (except perhaps codepen) where you can so immediately go from viewing a visual effect in a gallery to messing around with the code in nearly the exact environment that it was created in.
This is incorrect in many cases. The relative importance of innate potential vs focused practice differs wildly based on the activity. Certain activities (powerlifting, sprinting, competitive programming, singing) depend very heavily on genetic abilities such as IQ, muscular strength, etc. Other activities (assembling wooden ships and putting them in bottles, sailing, choreographed dances, becoming an expert on world history) depend more on improving muscle memory or on learning specific skills/strategies/techniques that don't simply appear without practice.
Most skills are somewhere between the two extremes. If success relative to your peers is the goal, the former type of skill should only be pursued by those with some degree of pre-existing talent, whereas the latter type of skill provides opportunities for talentless but hard-working individuals to outshine their lazier peers.
Good stuff. I could see myself using this. A few bits of feedback:
- Notes should be clamped to screen. There seems to be no limit to how far off screen I can drag something, after which I cannot bring it back (unless I create another note).
- It would be nice if there was some way to snap the notes along a grid so that it's easier to arrange things neatly.
- Collapsible notes would be nice (e.g. collapsing the note so that only the header is visible). Right now each tab has a very limited amount of space.
I'm also a frequent user of meetup.com. I've found that the likelihood of forming lasting connections varies wildly based on how the events are run and on what types of people are targeted. I've made quite a few of my closest friends through the site, and I've noticed that the more successful groups from a friendship perspective tend to be the ones that recur frequently (weekly) or the ones where there is some kind of strong and relatively rare commonality between the participants outside of career, age group, relationship status, etc.
Either way, meetup.com is just a platform for hosting and discovering these events. There's not much that makes meetup groups inherently different from other types of clubs/organizations. It's up to the organizers and the attendees to actually make the events worthwhile.
When studying existing shaders, it's best to focus on the well-documented shaders that are a few steps beyond your current capabilities, rather than the ones that consist of hundreds of lines of single letter variables and incomprehensible math. As far as open source repositories go, it doesn't get much better than shadertoy (in terms of pedagogy) since you can easily tweak values and comment out pieces of code right there in the browser if you're trying to figure out what a certain line of code does. The in-browser editor makes reverse-engineering very efficient and reduces friction as much as possible, which is really helpful for this kind of dense mathematical code.
Once you get used to the whole process of reverse-engineering shaders, you'll quickly come to see shadertoy as the perfect place to learn how different visual effects and graphics techniques are achieved. I don't know of anywhere else on the web (except perhaps codepen) where you can so immediately go from viewing a visual effect in a gallery to messing around with the code in nearly the exact environment that it was created in.
Edit: the best resource I've come across for learning raymarching (the 3d rendering technique used in the shader that is the subject of this submission) is this tutorial by Jamie Wong: http://jamie-wong.com/2016/07/15/ray-marching-signed-distanc...