volumetricLightScattering.fragment.js 1.2 KB

1234567891011121314151617
  1. // Do not edit.
  2. import { ShaderStore } from "../Engines/shaderStore.js";
  3. const name = "volumetricLightScatteringPixelShader";
  4. const shader = `uniform sampler2D textureSampler;uniform sampler2D lightScatteringSampler;uniform float decay;uniform float exposure;uniform float weight;uniform float density;uniform vec2 meshPositionOnScreen;varying vec2 vUV;
  5. #define CUSTOM_FRAGMENT_DEFINITIONS
  6. void main(void) {
  7. #define CUSTOM_FRAGMENT_MAIN_BEGIN
  8. vec2 tc=vUV;vec2 deltaTexCoord=(tc-meshPositionOnScreen.xy);deltaTexCoord*=1.0/float(NUM_SAMPLES)*density;float illuminationDecay=1.0;vec4 color=texture2D(lightScatteringSampler,tc)*0.4;for(int i=0; i<NUM_SAMPLES; i++) {tc-=deltaTexCoord;vec4 dataSample=texture2D(lightScatteringSampler,tc)*0.4;dataSample*=illuminationDecay*weight;color+=dataSample;illuminationDecay*=decay;}
  9. vec4 realColor=texture2D(textureSampler,vUV);gl_FragColor=((vec4((vec3(color.r,color.g,color.b)*exposure),1))+(realColor*(1.5-0.4)));
  10. #define CUSTOM_FRAGMENT_MAIN_END
  11. }
  12. `;
  13. // Sideeffect
  14. ShaderStore.ShadersStore[name] = shader;
  15. /** @internal */
  16. export const volumetricLightScatteringPixelShader = { name, shader };
  17. //# sourceMappingURL=volumetricLightScattering.fragment.js.map