1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #version 430
- uniform sampler2D samp;
- uniform mat4 viewMatrix;
- uniform mat4 modelMatrix;
- uniform vec3 ambientLight;
- struct Light {
- vec2 pos;
- float strength;
- vec3 color;
- };
- uniform Light lights[32];
- uniform bool useTexture;
- uniform bool useColor;
- uniform bool useLight;
- uniform bool useMixColor;
- uniform vec4 mixColor;
- in vec2 tc;
- in vec2 loc;
- in vec4 vColor;
- out vec4 color;
- vec3 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 light;
- }
- void main(void) {
- if(useTexture) {
- color = texture(samp, tc);
- if(color.a == 0.0){
- discard;
- }
- if(useColor) {
- if(useMixColor) {
- color = (color + mixColor) * 0.5;
- } else{
- color = vColor;
- }
- }
- } else {
- color = vColor;
- }
- if(useLight) {
- color = vec4(pow(pow(color.xyz, vec3(1 / 2.2)) * (ambientLight + getLight()), vec3(2.2)), color.w);
- }
- }
|