3 ms·
Well, it actually can run way more than once per pixel; it runs once per texel per thing that is rendered, where a texel is a 'fragment' of the displayed model
by leggomylibro 9y ago
Well, it actually can run way more than once per pixel; it runs once per texel per thing that is rendered, where a texel is a 'fragment' of the displayed model which is the size of a pixel on the screen.
So if you have a bunch of things occluding each other, they can all get rendered on top of each other even if only the closest is actually displayed.
Sometimes people try to avoid that by not drawing stuff that is occluded, or drawing in order of depth, or discarding fragments if the depth buffer has already drawn over a location with a nearer texel, or that sort of thing. But it's always a PITA to calculate/sort that sort of thing in realtime.
- reificator 9y agoLook, teaching is the art of lying about the monster under the bed until the other person is ready to defeat it. Once per pixel is fine when you're teaching the hello world of shaders.
- bigmanwalter 9y agoGreat metaphor. I might borrow that line sometime :)
- leggomylibro 9y agoGood point, sorry, that was pedantic. But I've actually kind of been thinking about that, too. Think about how much 'magic code' most 'hello world' tutorials have that you're told to just ignore. That can also be off-putting when there's too much of it. I wonder if there's a happy medium for introducing the basic concepts, like starting with microcontroller assembly instead of 'std::cout << "hello, world";'. Then you won't have to explain things like '#include' because your students will already know that it just means 'pretend I copy/pasted file X here' from when they learned how to make an LED blink. Anyways, I guess this particular resource does look like it struck a pretty happy middle ground for beginners. I just hope they don't get discouraged trying to branch out with self-teaching; there are a lot of byzantine 'gotcha's with graphics APIs and parallel stuff.
- pfranz 9y agoI was thinking about this the other day, too. Clash Royale recently added this Quests thing. Since I've been playing for awhile I know that it's separate from the main game and basically a bonus. If I was first starting to play it would be yet another thing to learn and it would be hard to know how it fits in with the rest of the game's objectives. I think of those crazy 10-way slot machines in Vegas. I have no idea whats going on (either by design or I'm not their mark...I mean target). I think the big thing with introducing new things is keep it simple enough that they can riff on it. If you introduce too many things and something breaks, it's hard to get back to "good" and eventually you give up. Python is a simple language, but I see a lot of online classes giving full-on VMs because the yak shaving involved in getting set up with a consistent environment wastes the first week or two of class.
- sp332 9y agoThanks, I didn't know that. I've written exactly one shader in my life and it was a transliteration from python. https://www.shadertoy.com/view/MdSXWc https://www.shadertoy.com/view/MdSXWc (And yeah we have integer modulus now lol)