MCPcopy Index your code
hub / github.com/PavelDoGreat/WebGL-Fluid-Simulation / applyBloom

Function applyBloom

script.js:1350–1394  ·  view source on GitHub ↗
(source, destination)

Source from the content-addressed store, hash-verified

1348}
1349
1350function applyBloom (source, destination) {
1351 if (bloomFramebuffers.length < 2)
1352 return;
1353
1354 let last = destination;
1355
1356 gl.disable(gl.BLEND);
1357 bloomPrefilterProgram.bind();
1358 let knee = config.BLOOM_THRESHOLD * config.BLOOM_SOFT_KNEE + 0.0001;
1359 let curve0 = config.BLOOM_THRESHOLD - knee;
1360 let curve1 = knee * 2;
1361 let curve2 = 0.25 / knee;
1362 gl.uniform3f(bloomPrefilterProgram.uniforms.curve, curve0, curve1, curve2);
1363 gl.uniform1f(bloomPrefilterProgram.uniforms.threshold, config.BLOOM_THRESHOLD);
1364 gl.uniform1i(bloomPrefilterProgram.uniforms.uTexture, source.attach(0));
1365 blit(last);
1366
1367 bloomBlurProgram.bind();
1368 for (let i = 0; i < bloomFramebuffers.length; i++) {
1369 let dest = bloomFramebuffers[i];
1370 gl.uniform2f(bloomBlurProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY);
1371 gl.uniform1i(bloomBlurProgram.uniforms.uTexture, last.attach(0));
1372 blit(dest);
1373 last = dest;
1374 }
1375
1376 gl.blendFunc(gl.ONE, gl.ONE);
1377 gl.enable(gl.BLEND);
1378
1379 for (let i = bloomFramebuffers.length - 2; i >= 0; i--) {
1380 let baseTex = bloomFramebuffers[i];
1381 gl.uniform2f(bloomBlurProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY);
1382 gl.uniform1i(bloomBlurProgram.uniforms.uTexture, last.attach(0));
1383 gl.viewport(0, 0, baseTex.width, baseTex.height);
1384 blit(baseTex);
1385 last = baseTex;
1386 }
1387
1388 gl.disable(gl.BLEND);
1389 bloomFinalProgram.bind();
1390 gl.uniform2f(bloomFinalProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY);
1391 gl.uniform1i(bloomFinalProgram.uniforms.uTexture, last.attach(0));
1392 gl.uniform1f(bloomFinalProgram.uniforms.intensity, config.BLOOM_INTENSITY);
1393 blit(destination);
1394}
1395
1396function applySunrays (source, mask, destination) {
1397 gl.disable(gl.BLEND);

Callers 1

renderFunction · 0.85

Calls 1

bindMethod · 0.45

Tested by

no test coverage detected