fractol/mlx/docs/Shaders.md
2023-10-25 13:29:53 +02:00

1.5 KiB

Shaders

In computer graphics, a shader is a type of computer program used for shading in 3D/2D scenes (the production of appropriate levels of light, darkness, and color in a rendered image). MLX42 exposes the shaders and compiles them into the library for portability.


// Example of shader code, GLSL is similar to C but not quite.

#version 330 core

layout(location = 0) in vec3 aPos;
layout(location = 1) in vec2 aTexCoord;

out vec2 TexCoord;
uniform mat4 ProjMatrix;

void main()
{
	gl_Position = ProjMatrix * vec4(aPos, 1.0);
	TexCoord = aTexCoord;
}

Beware

Shaders aren't really meant to be used by students but are more there for the convenience of developers. (though some advanced students might make some use of them)

Compilation

Shaders are converted into a .c appropriate format and then compiled into the library and referenced via a extern global variable appropriately named vert_shader & frag_shader. The reason this is done is to keep the final game/executable portable, that is being able to use it at any given location within a filesystem, while still being easy to work on the shaders instead of having to mess with it in the .c files directly.