mirror of
				https://github.com/raylib-cs/raylib-cs
				synced 2025-10-29 05:59:51 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			847 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			847 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 330
 | |
| 
 | |
| const int colors = 8;
 | |
| 
 | |
| // Input fragment attributes (from fragment shader)
 | |
| in vec2 fragTexCoord;
 | |
| in vec4 fragColor;
 | |
| 
 | |
| // Input uniform values
 | |
| uniform sampler2D texture0;
 | |
| uniform ivec3 palette[colors];
 | |
| 
 | |
| // Output fragment color
 | |
| out vec4 finalColor;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     // Texel color fetching from texture sampler
 | |
|     vec4 texelColor = texture(texture0, fragTexCoord)*fragColor;
 | |
| 
 | |
|     // Convert the (normalized) texel color RED component (GB would work, too)
 | |
|     // to the palette index by scaling up from [0, 1] to [0, 255].
 | |
|     int index = int(texelColor.r*255.0);
 | |
|     ivec3 color = palette[index];
 | |
| 
 | |
|     // Calculate final fragment color. Note that the palette color components
 | |
|     // are defined in the range [0, 255] and need to be normalized to [0, 1]
 | |
|     // for OpenGL to work.
 | |
|     finalColor = vec4(color/255.0, texelColor.a);
 | |
| }
 |