Resources for learning glsl / shaders

Hi!

The latest month I have learned a lot about fragment shaders. I have been through a lot of web based sources like the really good resource ”The Book of Shaders” and different webbased articles and tutorials. But most of them are about fragment shaders. I want to continue to develop my skills in shaders and learn more about compute shaders etc.

I want to learn more about develop particle systems. I also want to learn how to apply different techniques and algoritms such as game of life, abstraction diffusion, building fractals, flow fields, video processing etc.

I mainly using processing and Touchdesigner for my shaders.

Does anyone have some good tips of where to go next? Books, webbased tutorials etc. What resources can you recommend to learn and improve skills in glsl shaders?

Thanks a lot

Comments

  • I was going to suggest the Book of Shaders as soon as I saw the title but you already discovered it.

    Besides The Book of Shaders there is shaderific.
    shaderific.com/glsl/

    In processing IDE you can find examples under;
    File - > Examples - > Topics - > Shaders

    I don't think processing even supports compute shaders? It does support vertex shaders but I don't know anything about them.

    I want to learn more about develop particle systems. I also want to learn how to apply different techniques and algoritms such as game of life, abstraction diffusion, building fractals, flow fields, video processing etc

    These are things which fragment shaders can do.

  • edited October 2017

    Also note that the PixelFlow library now includes a direct wrapper for Shadertoy demos:

  • edited November 2017

    Hello

    yes, Processing is using JOGL. And Im pretty sure, it does, at least on Windows.

    The extension starts with OpengGL 4.3, this last Macs Version (if you are on Windows you can use 5.0) https://www.khronos.org/opengl/wiki/Compute_Shader (On the other hand it is also Java Virtual Machine, im not sure here)

    Just in case - History - : Back then when OpenGL was mostly used by Scientist and Student of Computer Sience. The OpenGL Comunity (not Khronos Club like now (also thanks to Appel and Steave )) have to ask the Major Graphics Card company, who usually own the License to newest Tech, if OpenGL can use the e.g. Shadow Map Source code, or AA whatever,(back then NVidia was only one of many manufratrures, and the newsest Game in the Store was 34MB big). So they have to make an extension and it still look like this: https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_compute_shader.txt

    Back then there were no shaders, only extensions, and the most work was done by the CPU, so the programer would code something like OpenGL.getmetheExtension("Shadowmap") and tweak some parameters, like in Processing on the CPU.

    My point: BookofShaders is great! But it relies on WebGL 1.0 (2007!) and it uses the very first shader version #version 100 of Shaders ...so yes, the math is the same, but most of the stuff, can be done much more performant and easier.

    I thinking about an Art Installation (Trillions of Particels), you will get the Stuff as fast as possible out, otherwise if you are a Crossplattform pprogramer, who will also support some "older" Smartphones.

    If you really want to get into Shader Programing, you have to going trough History of Computer Science. And yes, do some RAW OpenGL programing.

    And second, just grab a shader from shadertoy and start experimenting with it, - that is what everyone do.

    Good Luck Keep us posted

  • Thanks for your input. Im browsing through shadertoy a lot and modifying codes. Thats great. Im looking for something to read parallell with this. On the web or book.

    Thanks once again!

  • edited November 2017

    @Per

    Hello yes no Problem! You are welcome. To make myself clear, becourse i have the feeling i should.
    many Shading Languages out in the wild:
    3D Modeling Software like Blender uses OGL
    3dMax uses DirectX variant, IOS has Mental,
    Windows has HLSL,
    OpenGL uses GLSL
    Vulcan,SPIR,OpenCL etc...

    The point is, that the underlying concept is always the same, (yes MATH) and it just the language that changes.

    So in Processing a Verctor of 4 floats is PVector(0,0,0,0); in GLSL it is vec4(0,0,0,0);

    So their is absolutly nothing special about GLSL! It is how history evolves. You can do exactly the same operations in Processing on the CPU, the only thing is shaders are faster! But the contept is the same!

    If you have already read the bookofshaders, you have a good understanding of the language, - what you need now, is the knowledge how to communicate between Processing CPU and GLSL GPU. So what you are asking for ?

    How to draw a line in the fragment a shader ? Then go on shadertoy, but those shaders are limited to the world of fragment shader ...and in 2017 their are far more ways to solve a problem. Shadertoy, or bookofshader are playgrounds for enthusiast, ... can i implement a hole GUI only in the Fragment Shader, or a Camera system and so on. And again, it is just the language, the people took concepts of CPU and translate it for the GPU fragment shader.

    So if you asking for how the communication to the GPU work, becourse you want the precompute a Line, and add a Camera, user Input etc. then their is no way, that you learing at least JOGL.

    Are their good JOGL books out their, i don't know,
    I just want to point this out.

    this is the repro of the guy who implemented Shaders in processing, i think https://github.com/codeanticode/pshader-experiments

    Good luck.

Sign In or Register to comment.