65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GLSL
		
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GLSL
		
	
	
| //------------------------------------------------------------------------------
 | |
| //  Shader code for texcube-sapp sample.
 | |
| //
 | |
| //  NOTE: This source file also uses the '#pragma sokol' form of the
 | |
| //  custom tags.
 | |
| //------------------------------------------------------------------------------
 | |
| //#pragma sokol @ctype mat4 hmm_mat4
 | |
| 
 | |
| #pragma sokol @vs vs_i
 | |
| uniform vs_params_i {
 | |
|     mat4 mvp;
 | |
| };
 | |
| 
 | |
| in vec4 pos;
 | |
| in vec4 color0;
 | |
| in vec2 texcoord0;
 | |
| 
 | |
| in vec4 inst_pos;
 | |
| 
 | |
| out vec4 color;
 | |
| out vec4 color_inst;
 | |
| out vec2 uv;
 | |
| 
 | |
| const vec4 palette[10] = vec4[10](
 | |
| 	vec4(1,0,0,1),
 | |
| 	vec4(0,1,0,1),
 | |
| 	vec4(0,0,1,1),
 | |
| 	vec4(1,1,0,1),
 | |
| 	vec4(0,1,1,1),
 | |
| 	vec4(1,1,1,1),
 | |
| 	vec4(0,0,0,1),
 | |
| 	vec4(0.2,0.2,0.2,1),
 | |
| 	vec4(0.3,0.3,0.3,1),
 | |
| 	vec4(0.9,0.9,0.9,1)
 | |
| );
 | |
| 
 | |
| void main() {
 | |
| 		vec4 delta_pos = vec4(inst_pos.xyz,0);
 | |
| 		float w = inst_pos.w;
 | |
| 		color_inst = palette[int(w)];
 | |
|     gl_Position = mvp * (pos + delta_pos);
 | |
|     color = color0;
 | |
|     uv = texcoord0/4;
 | |
| }
 | |
| #pragma sokol @end
 | |
| 
 | |
| #pragma sokol @fs fs_i
 | |
| uniform sampler2D tex;
 | |
| 
 | |
| in vec4 color;
 | |
| in vec4 color_inst;
 | |
| in vec2 uv;
 | |
| out vec4 frag_color;
 | |
| 
 | |
| void main() {
 | |
| 	vec4 c = color;
 | |
| 	vec4 txt = texture(tex, uv);
 | |
| 	c = txt * c * color_inst;	
 | |
| 	frag_color = c ;
 | |
| }
 | |
| 
 | |
| #pragma sokol @end
 | |
| 
 | |
| #pragma sokol @program instancing vs_i fs_i
 |