fog-deferred.glsl 538 B

1234567891011121314151617181920212223242526272829303132333435
  1. //@renderpasses 0
  2. //@import "std"
  3. //@vertex
  4. void main(){
  5. transformQuadVertex();
  6. }
  7. //@fragment
  8. void main(){
  9. float fog=0.0;
  10. float depth=texture2D( r_DepthBuffer,v_BufferCoords ).r;
  11. if( depth<1.0 ){
  12. depth=viewDepth( depth );
  13. vec4 vpos4=r_InverseProjectionMatrix * vec4( v_ClipPosition,-1.0,1.0 );
  14. vec3 vpos=vpos4.xyz/vpos4.w;
  15. vec3 position=vpos/vpos.z*depth;
  16. fog=clamp( (length( position )-r_FogNear)/(r_FogFar-r_FogNear),0.0,1.0 ) * r_FogColor.a;
  17. }
  18. gl_FragColor=vec4( r_FogColor.rgb * fog,fog );
  19. }