| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import Check from "../Core/Check.js";
- import DeveloperError from "../Core/DeveloperError.js";
-
- /**
- * A bit flag describing whether a variable should be added to the
- * vertex shader, the fragment shader, or both (or none).
- *
- * @enum {number}
- * @private
- */
- const ShaderDestination = {
- NONE: 0,
- VERTEX: 1,
- FRAGMENT: 2,
- BOTH: 3,
- };
-
- /**
- * Check if a variable should be included in the vertex shader.
- *
- * @param {ShaderDestination} destination The ShaderDestination to check
- * @return {boolean} <code>true</code> if the variable appears in the vertex shader, or <code>false</code> otherwise
- * @private
- */
- ShaderDestination.includesVertexShader = function (destination) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.number("destination", destination);
- //>>includeEnd('debug');
-
- return (destination & ShaderDestination.VERTEX) !== 0;
- };
-
- /**
- * Check if a variable should be included in the vertex shader.
- *
- * @param {ShaderDestination} destination The ShaderDestination to check
- * @return {boolean} <code>true</code> if the variable appears in the vertex shader, or <code>false</code> otherwise
- * @private
- */
- ShaderDestination.includesFragmentShader = function (destination) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.number("destination", destination);
- //>>includeEnd('debug');
- //
-
- return (destination & ShaderDestination.FRAGMENT) !== 0;
- };
-
- /**
- * Compute the union of multiple ShaderDestinations (e.g., VERTEX | FRAGMENT yields BOTH)
- * @param {...ShaderDestination} destinations
- * @returns {ShaderDestination} The union of the provided destinations
- * @private
- */
- ShaderDestination.union = function (...destinations) {
- //>>includeStart('debug', pragmas.debug);
- if (destinations.length === 0) {
- throw new DeveloperError(
- "ShaderDestination.union requires at least one destination.",
- );
- }
- //>>includeEnd('debug');
-
- let result = 0;
- for (let i = 0; i < destinations.length; i++) {
- result |= destinations[i];
- }
- return result;
- };
-
- /**
- * Compute the intersection of multiple ShaderDestinations (e.g., VERTEX & FRAGMENT yields NONE)
- * @param {...ShaderDestination} destinations
- * @returns {ShaderDestination} The intersection of the provided destinations
- * @private
- */
- ShaderDestination.intersection = function (...destinations) {
- //>>includeStart('debug', pragmas.debug);
- if (destinations.length === 0) {
- throw new DeveloperError(
- "ShaderDestination.intersection requires at least one destination.",
- );
- }
- //>>includeEnd('debug');
-
- let result = destinations[0];
- for (let i = 1; i < destinations.length; i++) {
- result &= destinations[i];
- }
- return result;
- };
-
- Object.freeze(ShaderDestination);
-
- export default ShaderDestination;
|