61 lines
1.8 KiB
Plaintext
61 lines
1.8 KiB
Plaintext
|
|
#version 300 es
|
||
|
|
|
||
|
|
/*this will affect all the float guys (float, vecN, matN )*/
|
||
|
|
precision mediump float;
|
||
|
|
|
||
|
|
in vec3 fragPos; //vertice in coordinata del mondo
|
||
|
|
in vec3 fragNormal;
|
||
|
|
in vec2 frag_uv; //coordinate 2d di texure
|
||
|
|
in vec3 fragBaryc;
|
||
|
|
|
||
|
|
in vec3 T;
|
||
|
|
in vec3 B;
|
||
|
|
in vec3 N;
|
||
|
|
|
||
|
|
uniform vec3 lightCol;
|
||
|
|
uniform vec3 lightPos;
|
||
|
|
uniform vec3 eyePos;
|
||
|
|
|
||
|
|
//uniform vec3 diffuseColor;
|
||
|
|
uniform sampler2D colorMap; //campionatore 2d
|
||
|
|
uniform sampler2D normalMap; //campionatore 2d
|
||
|
|
|
||
|
|
out vec4 FragColor;
|
||
|
|
|
||
|
|
|
||
|
|
float illuminazione(vec3 lucePos, vec3 fragPos, vec3 eyePos, vec3 fragNormal){
|
||
|
|
fragNormal = normalize(fragNormal);
|
||
|
|
|
||
|
|
vec3 aLuceDir = normalize(lucePos - fragPos);
|
||
|
|
vec3 allOcchioDir = normalize(eyePos - fragPos);
|
||
|
|
float lightDistance = length(lucePos - fragPos);
|
||
|
|
vec3 rimbalzoDir = normalize(reflect(-aLuceDir,fragNormal));
|
||
|
|
rimbalzoDir = reflect(-aLuceDir,fragNormal);
|
||
|
|
float attenuation = 1.0f / (0.01 * lightDistance);
|
||
|
|
|
||
|
|
float diffuseFactor = max(dot(aLuceDir, fragNormal), 0.0);
|
||
|
|
|
||
|
|
float specularFactor = pow(max(dot(rimbalzoDir, allOcchioDir), 0.0), 500.0f);
|
||
|
|
|
||
|
|
return attenuation * ( specularFactor + diffuseFactor );
|
||
|
|
//return attenuation * diffuseFactor;
|
||
|
|
}
|
||
|
|
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
vec3 Nor = normalize(N);
|
||
|
|
vec3 Tan = normalize(T);
|
||
|
|
vec3 Bit = normalize(B);
|
||
|
|
mat3 TBN = mat3(Tan,Bit,Nor);
|
||
|
|
vec4 texColor = texture(colorMap,frag_uv);
|
||
|
|
vec3 normalPix = texture(normalMap,frag_uv).rgb;
|
||
|
|
normalPix = normalPix * 2.0 - 1.0;
|
||
|
|
normalPix = normalize(TBN * normalPix);
|
||
|
|
normalPix = normalize(TBN * vec3(0,0,1));
|
||
|
|
|
||
|
|
vec3 result = texColor.rgb * illuminazione(lightPos, fragPos, eyePos, normalPix);
|
||
|
|
//FragColor = vec4(normalPix, 1.0f);
|
||
|
|
FragColor = vec4(texColor.xyz * illuminazione(lightPos, fragPos, eyePos, fragNormal), 1.0f);
|
||
|
|
|
||
|
|
}
|