postDeferredF.glsl
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:1k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file postDeferredF.glsl
  3.  *
  4.  * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
  5.  * $License$
  6.  */
  7. #extension GL_ARB_texture_rectangle : enable
  8. uniform sampler2DRect diffuseRect;
  9. uniform sampler2DRect localLightMap;
  10. uniform sampler2DRect sunLightMap;
  11. uniform sampler2DRect giLightMap;
  12. uniform sampler2D   luminanceMap;
  13. uniform sampler2DRect lightMap;
  14. uniform vec3 lum_quad;
  15. uniform float lum_lod;
  16. uniform vec4 ambient;
  17. uniform vec3 gi_quad;
  18. uniform vec2 screen_res;
  19. varying vec2 vary_fragcoord;
  20. void main() 
  21. {
  22. vec2 tc = vary_fragcoord.xy;
  23. vec3 lum = texture2DLod(luminanceMap, tc/screen_res, lum_lod).rgb;
  24. float luminance = lum.r;
  25. luminance = luminance*lum_quad.y+lum_quad.z;
  26. vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
  27. float ambocc = texture2DRect(lightMap, vary_fragcoord.xy).g;
  28. vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
  29. gi_col = gi_col*gi_col*gi_quad.x + gi_col*gi_quad.y+gi_quad.z*ambocc*ambient.rgb;
  30. gi_col *= diff;
  31. vec4 sun_col = texture2DRect(sunLightMap, vary_fragcoord.xy);
  32. vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb;
  33. sun_col *= 1.0/min(luminance, 1.0);
  34. gi_col *= 1.0/luminance;
  35. vec3 col = sun_col.rgb+gi_col+local_col;
  36. gl_FragColor.rgb = col.rgb;
  37. col.rgb = max(col.rgb-vec3(1.0,1.0,1.0), vec3(0.0, 0.0, 0.0)); 
  38. gl_FragColor.a = 0.0; // max(dot(col.rgb,col.rgb)*lum_quad.x, sun_col.a);
  39. //gl_FragColor.rgb = vec3(lum_lod);
  40. }