Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SG_lab2 23-11-2016
- // fog.fs
- //
- varying vec3 N; // interpolowany wektor normalny powierzchni
- varying vec3 L[ 3 ]; // maksymalnie trzy intepolowane wektory światła
- void main( void )
- {
- const float specularExp = 128.0;
- const vec4 fogColor = vec4(0.5,1.0,0.0,1.0);
- const float e=2.71828;
- const float density = 0.9;
- float fogExp = gl_FragCoord.z * density;
- fogExp = fogExp *fogExp;
- float fogFactor = clamp(pow(e, -fogExp),0.0,1.0);
- vec3 NN = normalize(N);
- vec3 color[ 3 ];
- color[0] = vec3(2,1,1);
- color[1] = vec3(1,2,1);
- color[2] = vec3(1,1,2);
- for(int i=0;i<3;i++){
- vec3 NL = normalize(L[i]);
- vec3 NH = normalize(NL + vec3(0.0, 0.0, 1.0));
- float intensity = max(0.0,dot(NN,NL));
- vec3 diffuse = gl_Color.xyz * intensity;
- vec3 specular;
- if(intensity <= 0){
- specular = vec3(0.0, 0.0, 0.0);
- }else{
- intensity = max(0.0,dot(NN,NH));
- specular = vec3(pow(intensity,specularExp));
- }
- gl_FragColor.xyz += color[i]*diffuse + color[i]*specular;
- }
- gl_FragColor.a = gl_Color.a;
- gl_FragColor = mix(fogColor,gl_FragColor,fogFactor); // skopiowanie głównego koloru (primary color)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement