finish method

void finish()

Implementation

void finish() {
  _translucentRecords.sort((a, b) {
    var aDistance =
        a.worldTransform.getTranslation().distanceTo(_camera.position);
    var bDistance =
        b.worldTransform.getTranslation().distanceTo(_camera.position);
    return bDistance.compareTo(aDistance);
  });
  _renderPass.setDepthWriteEnable(false);
  _renderPass.setColorBlendEnable(true);
  // Additive source-over blending.
  // Note: Expects premultiplied alpha output from the fragment stage!
  _renderPass.setColorBlendEquation(gpu.ColorBlendEquation(
      colorBlendOperation: gpu.BlendOperation.add,
      sourceColorBlendFactor: gpu.BlendFactor.one,
      destinationColorBlendFactor: gpu.BlendFactor.oneMinusSourceAlpha,
      alphaBlendOperation: gpu.BlendOperation.add,
      sourceAlphaBlendFactor: gpu.BlendFactor.one,
      destinationAlphaBlendFactor: gpu.BlendFactor.oneMinusSourceAlpha));
  for (var record in _translucentRecords) {
    _encode(record.worldTransform, record.geometry, record.material);
  }
  _translucentRecords.clear();
  _commandBuffer.submit();
  _transientsBuffer.reset();
}