| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- uniform samplerCube lightCube;
- varying vec4 vertexColor;
- varying vec3 normal;
- uniform vec4 ambient_color;
- varying vec3 worldNormal;
- uniform float lightFactor;
- vec3 hash3( float n )
- {
- return fract(sin(vec3(n,n+1.0,n+2.0))*vec3(43758.5453123,22578.1459123,19642.3490423));
- }
- void main()
- {
- vec3 col = vec3(0.0);
- for( int i=0; i<32; i++ )
- {
- vec3 rr = normalize(-1.0 + 2.0*hash3(float(i)*123.5463));
- rr = normalize( worldNormal + 7.0*rr );
- rr = rr * sign(dot(worldNormal,rr));
- col += pow( textureCube( lightCube, rr ).xyz, vec3(2.2) ) * dot(rr,worldNormal);
- }
- col = col * lightFactor;
- vec4 texColor = vec4(col, 1.0);
- vec4 color = vec4(1.0,1.0,1.0,1.0) + ambient_color;
- color = clamp((color*vertexColor*texColor), 0.0, 1.0);
- // fog
- const float LOG2 = 1.442695;
- float z = gl_FragCoord.z / gl_FragCoord.w;
- float fogFactor = exp2( -gl_Fog.density *
- gl_Fog.density *
- z *
- z *
- LOG2 );
- fogFactor = clamp(fogFactor, 0.0, 1.0);
- color = mix(gl_Fog.color, color, fogFactor );
- color.a = vertexColor.a * texColor.a;
- gl_FragColor = color;
- }
|