GLSL: Difference between revisions
No edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
OpenGL Shading Language (GLSL) is the shader language used in OpenGL and WebGL. | OpenGL Shading Language (GLSL) is the shader language used in OpenGL and WebGL. | ||
Note that there are multiple versions of OpenGL such as 3, 4, ES | |||
==Usage== | ==Usage== | ||
===Vertex Shader=== | |||
In the vertex shader, you position vertices by projecting them from object coordinates to camera coordinates. | |||
This is typically done by multiplying each vertex position, passed as an attribute, with the MVP matrices, passed as a uniform. | |||
Oftentimes you will also want to pass the UV coordinates to the fragment shader as a varying. | |||
===Fragment Shader=== | |||
In the fragment shader, you will typically sample a base color and apply lighting to your object. | |||
Sampling is typically done with <code>texture2D</code> which returns an interpolated and mipmaped color from your <code>sampler2D</code> texture. | |||
==Pipeline== | ==Pipeline== | ||
Line 31: | Line 42: | ||
This shader outputs pixel color values based on information stored in each triangle. | This shader outputs pixel color values based on information stored in each triangle. | ||
It runs once per pixel. | It runs once per pixel. | ||
==Resources== | |||
===Reference cards=== | |||
* [https://www.khronos.org/files/opengl45-quick-reference-card.pdf OpenGL 4.5 Reference card] | |||
* [https://www.khronos.org/opengles/sdk/docs/reference_cards/OpenGL-ES-2_0-Reference-card.pdf OpenGL ES 2.0 Reference card] | |||
* [https://www.khronos.org/assets/uploads/developers/presentations/opengles31-quick-reference-card.pdf OpenGL ES 3.1 Reference card] | |||
* [https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf WebGL 1.0 Reference card] | |||
* [https://www.khronos.org/files/webgl20-reference-guide.pdf WebGL 2.0 Reference card] | |||
[[Category:Programming languages]] | |||
[[Category:GPU Programming languages]] |