text: import { defined } from '../Source/Cesium.js';
  import { Intersect } from '../Source/Cesium.js';
  import { Pass } from '../Source/Cesium.js';
  import { SceneMode } from '../Source/Cesium.js';
  
      function executeCommands(frameState, commands) {
          var commandsExecuted = 0;
          var cullingVolume = frameState.cullingVolume;
          var occluder;
          if (frameState.mode === SceneMode.SCENE3D) {
              occluder = frameState.occluder;
          }
  
          var length = commands.length;
          for (var i = 0; i < length; ++i) {
              var command = commands[i];
              var boundingVolume = command.boundingVolume;
              if (defined(boundingVolume)) {
                  if (cullingVolume.computeVisibility(boundingVolume) === Intersect.OUTSIDE ||
                          (defined(occluder) && !occluder.isBoundingSphereVisible(boundingVolume))) {
                      continue;
                  }
              }
  
              command.execute(frameState.context);
              commandsExecuted++;
          }
  
          return commandsExecuted;
      }
  
      function render(frameState, primitive) {
          frameState.commandList.length = 0;
          primitive.update(frameState);
  
          var i;
          var renderCommands = new Array(Pass.NUMBER_OF_PASSES);
          for (i = 0; i < Pass.NUMBER_OF_PASSES; ++i) {
              renderCommands[i] = [];
          }
  
          var commands = frameState.commandList;
          var length = commands.length;
          for (i = 0; i < length; i++) {
              var command = commands[i];
              var pass = defined(command.pass) ? command.pass : Pass.OPAQUE;
              renderCommands[pass].push(command);
          }
  
          var commandsExecuted = 0;
          for (i = 0; i < Pass.NUMBER_OF_PASSES; ++i) {
              commandsExecuted += executeCommands(frameState, renderCommands[i]);
          }
  
          return commandsExecuted;
      }
  export default render;
  