All files / engine/Source/Scene getClipAndStyleCode.js

100% Statements 5/5
100% Branches 0/0
100% Functions 1/1
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                  7x 7x 7x       7x               7x      
import Check from "../Core/Check.js";
 
/**
 * Gets a GLSL snippet that clips a fragment using the `clip` function from {@link getClippingFunction} and styles it.
 *
 * @param {string} samplerUniformName Name of the uniform for the clipping planes texture sampler.
 * @param {string} matrixUniformName Name of the uniform for the clipping planes matrix.
 * @param {string} styleUniformName Name of the uniform for the clipping planes style, a vec4.
 * @returns {string} A string containing GLSL that clips and styles the current fragment.
 * @private
 */
function getClipAndStyleCode(
  samplerUniformName,
  matrixUniformName,
  styleUniformName,
) {
  //>>includeStart('debug', pragmas.debug);
  Check.typeOf.string("samplerUniformName", samplerUniformName);
  Check.typeOf.string("matrixUniformName", matrixUniformName);
  Check.typeOf.string("styleUniformName", styleUniformName);
  //>>includeEnd('debug');
 
  const shaderCode =
    `    float clipDistance = clip(gl_FragCoord, ${samplerUniformName}, ${matrixUniformName}); \n` +
    `    vec4 clippingPlanesEdgeColor = vec4(1.0); \n` +
    `    clippingPlanesEdgeColor.rgb = ${styleUniformName}.rgb; \n` +
    `    float clippingPlanesEdgeWidth = ${styleUniformName}.a; \n` +
    `    if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) \n` +
    `    { \n` +
    `        out_FragColor = clippingPlanesEdgeColor;\n` +
    `    } \n`;
  return shaderCode;
}
export default getClipAndStyleCode;