ported the University CGI demo from WINDOWS + GLUT + GLEW + GLU + OpenGL 4 to LINUX WAYLAND + EGL + GLES 2 with minimal cuts
This commit is contained in:
81
resources/fragmentShader_pulse.glsl
Executable file
81
resources/fragmentShader_pulse.glsl
Executable file
@@ -0,0 +1,81 @@
|
||||
#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 fragBoundPos;
|
||||
in vec3 fragBaryc;
|
||||
/* does gles2 already includes it and considers it a redeclaration
|
||||
in vec4 gl_FragCoord;
|
||||
*/
|
||||
|
||||
in mat3 TBN;
|
||||
|
||||
uniform vec3 lightCol;
|
||||
uniform vec3 lightPos;
|
||||
uniform vec3 eyePos;
|
||||
uniform float time;
|
||||
|
||||
|
||||
//uniform vec3 diffuseColor;
|
||||
uniform sampler2D colorMap; //campionatore 2d
|
||||
uniform sampler2D normalMap; //campionatore 2d
|
||||
|
||||
out vec4 FragColor;
|
||||
/*
|
||||
int nScanLines = 16;
|
||||
*/
|
||||
float f_nScanLines = 16.0;
|
||||
|
||||
float PI = 3.14159265358979323846264338327950288;
|
||||
|
||||
|
||||
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));
|
||||
float attenuation = 1.0f / (0.01 * lightDistance);
|
||||
|
||||
float diffuseFactor = max(dot(aLuceDir, fragNormal), 0.0);
|
||||
|
||||
float specularFactor = pow(max(dot(rimbalzoDir, allOcchioDir), 0.0), 100.0f);
|
||||
|
||||
return attenuation * ( specularFactor + diffuseFactor);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
vec4 texColor = texture(colorMap,frag_uv);
|
||||
vec3 normalPix = texture(normalMap,frag_uv).rgb;
|
||||
normalPix = normalPix * 2.0 - 1.0;
|
||||
normalPix = normalize(TBN * normalPix);
|
||||
|
||||
float sinExp = 500.0 * (0.05 + 0.95 * sin( 3.14159265359 * 0.25 * (time * time)));
|
||||
//float sinExp = 500.0;
|
||||
float clampBound = 0.25;
|
||||
|
||||
vec3 result = 0.7 * vec3(1,0.5,1);
|
||||
float locy = fragBoundPos.y;
|
||||
locy = mod(locy, 1.0f / f_nScanLines);
|
||||
float dist = abs(pow(locy - (time / f_nScanLines), 0.1));
|
||||
float glowFac = (1.0 / clampBound) * abs(clamp(
|
||||
pow(sin(dist * PI), sinExp), -clampBound, clampBound));
|
||||
|
||||
float scrDist = sin( PI * ( 1.0 - clamp(pow(gl_FragCoord.z , 100.0), 0.0, 1.0)));
|
||||
result *= scrDist;
|
||||
FragColor = vec4(result, 1.0f);
|
||||
FragColor*=glowFac;
|
||||
//FragColor = vec4(abs(fragNormal.x) * glowFac ,abs(fragNormal.y) * glowFac , abs(fragNormal.z) * glowFac , 1.0f * scrDist);
|
||||
|
||||
float baryThreshold = 0.05f;
|
||||
if(fragBaryc.x > baryThreshold && fragBaryc.y > baryThreshold && fragBaryc.z > baryThreshold) {
|
||||
FragColor = vec4(0.05 * FragColor.xyz, 0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user