Skip to content

The-Library-Of-Shaders/the-library-of-shaders.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Library Of Shaders

https://snorfield.github.io/The-Library-Of-Shaders/

Copyright and license free library of shaders and explanations to empower developers to learn shader development

Contribution Rules

So you want to add your own articles or other stuff to this project. That's awesome, there's just a few rules for contribution.

If the ShaderToy uniforms (below) has a variable for something you need in your shader, use it. If not, follow the ShaderToy naming style and explain what the variable is in your article. An example of this would be if you need the camera position for your shader to function. Define it as iCameraPosition, and also specify the type. So, uniform vec3 iCameraPosition.

// ShaderToy uniforms
uniform vec3      iResolution;           // viewport resolution (in pixels)
uniform float     iTime;                 // shader playback time (in seconds)
uniform float     iTimeDelta;            // render time (in seconds)
uniform float     iFrameRate;            // shader frame rate
uniform int       iFrame;                // shader playback frame
uniform float     iChannelTime[4];       // channel playback time (in seconds)
uniform vec3      iChannelResolution[4]; // channel resolution (in pixels)
uniform vec4      iMouse;                // mouse pixel coords. xy: current (if MLB down), zw: click
uniform samplerXX iChannel0..3;          // input channel. XX = 2D/Cube
uniform vec4      iDate;                 // (year, month, day, time in seconds)

For certain effects that may use more then four input channels, you should specify that it won't work in ShaderToy in the article, and then continue incrementing the iChannel value by one (e.g iChannel4).

It's recommended to also test the code before committing it. :)

Always include detailed explanations on what the shader is doing and the math behind it. The Library of Shaders is here to help developers understand effects, not just copy and paste them.

You agree that your code and articles are licensed Creative Commons Zero, and require no credit for developers to use them.

Write the code to be proper GLSL or OpenGL Shading Language, in terms of syntax.

Dev Environment

When writing articles, it's recommended to set up a development environment, so you can verify it works before submitting your changes. This is fairly straightfoward, as The Library Of Shaders uses MKDocs to generate the site.

First off, clone the repository into the folder you want it in.

git clone https://github.com/The-Library-Of-Shaders/the-library-of-shaders.github.io.git

You can also download the repository as a ZIP file and extract it, if you don't have the CLI for git.

Next, install the MkDocs Python package.

pip install mkdocs

Finally, serve the site.

mkdocs serve

You now have a local copy of the library running on your localhost.

About

Copyright and license free library of shaders and explanations to empower developers to learn shader development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5