1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #version 430
- layout (location = 0) in vec2 pos;
- layout (location = 1) in vec2 tex;
- layout (location = 2) in vec4 vertexColor;
- layout (binding = 0) uniform sampler2D samp;
- uniform mat4 viewMatrix;
- uniform mat4 modelMatrix;
- uniform float depth;
- uniform vec3 ambientLight;
- struct Light
- {
- vec2 pos;
- float strength;
- vec3 color;
- };
- uniform Light lights[32];
- uniform bool useTexture;
- uniform bool useColor;
- uniform bool useLight;
- in vec2 tc;
- in vec2 loc;
- in vec4 vColor;
- out vec4 color;
- vec4 getLight()
- {
- vec3 light = vec3(0, 0, 0);
- for(int i = 0; i < 32; i++)
- {
- light += lights[i].color * max(1 - lights[i].strength * length(loc - lights[i].pos), 0);
- }
- return vec4(min(light, vec3(1, 1, 1)), 1);
- }
- void main(void)
- {
- if(useTexture)
- {
- color = texture(samp, tc);
- if(color.a != 1.0)
- {
- discard;
- }
- if(useColor)
- {
- color = vColor;
- }
- }
- else
- {
- color = vColor;
- }
- if(useLight)
- {
- color = pow(pow(color, vec4(1 / 2.2)) * vec4(ambientLight, 1.0) + getLight(), vec4(2.2));
- }
- }
|