3 ms·
Nice article. What a joy to read. Reminds me of what hacker news was until a few years ago! I haven't worked with opengl/shaders in a while, but was thinking a
by earth-tattoo 18d ago
Nice article. What a joy to read. Reminds me of what hacker news was until a few years ago!
I haven't worked with opengl/shaders in a while, but was thinking about some algorithm I wrote a few years ago, while in shower yesterday. It brought back the memories of how difficult it was for me to first understand the whole concept of shaders. There's basically no main function, no for loops etc. Your shader is called for each pixel, for every frame. I was wondering how easy it would have been in today's world. I spent like 2 months on something that is just a prompt now.
- onion2k 17d agoClaude is good[1] at writing shaders. It can take a description and turn it into working GLSL code for relatively complex effects. [1] Better than me anyway.
- mitxela 17d agoIf you prompted a shader today, you still wouldn't understand shaders. The LLM also has absolutely no understanding of whether a graphical effect looks good.
- ASalazarMX 17d agoI think the point was that today you can ask LLMs to do things that are passable, but without truly understanding why they work. To be honest, there have always been copy-paste programmers, LLMs just reduced the friction.
- ACS_Solver 17d agoI'm in game dev but I also have very poor abilities for mentally operating on visual or geometrical data. I'm normally far away from the graphics parts but sometimes I take a look and shaders are by far the least intuitive type of code to me. I've learned enough about what shaders do to sort of parse the simple ones, but anything with shaders definitely feels like working against my brain's natural tendencies.
- jasonjmcghee 17d agoThere absolutely is a "main" function in GLSL. This is the entry point. And there are for loops- and if statements, and function declarations, etc. It's very c-like without dynamic memory allocation and executed in a highly parallel context. Your shader is also not necessarily called every frame, you control this. It could be called multiple times per frame or only at certain times. Fragment shaders (one type of shader) is called for each fragment of the rendered geometry - in 2D or in screen space this is just a quad so effectively a panel of pixels. You get to know your own location with something like UV or a pixel coordinate if you pass it from a vertex shader, so that you can sample input textures as needed to build whatever it is you're building. If you're not doing multiple render targets, your only responsibility is setting to the fragment color variable which will be the final color of that pixel for the output texture. And that could in turn be the input to another shader etc. I usually recommend https://thebookofshaders.com/ https://thebookofshaders.com/ It's very sad this was never completed. It's so good.