| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | import Color from "../Core/Color.js";import destroyObject from "../Core/destroyObject.js";import ClearCommand from "../Renderer/ClearCommand.js";import FramebufferManager from "../Renderer/FramebufferManager.js";import PixelDatatype from "../Renderer/PixelDatatype.js";/** * @private */function SceneFramebuffer() {  this._numSamples = 1;  this._colorFramebuffer = new FramebufferManager({    depthStencil: true,    supportsDepthTexture: true,  });  this._idFramebuffer = new FramebufferManager({    depthStencil: true,    supportsDepthTexture: true,  });  this._idClearColor = new Color(0.0, 0.0, 0.0, 0.0);  this._clearCommand = new ClearCommand({    color: new Color(0.0, 0.0, 0.0, 0.0),    depth: 1.0,    owner: this,  });}function destroyResources(post) {  post._colorFramebuffer.destroy();  post._idFramebuffer.destroy();}Object.defineProperties(SceneFramebuffer.prototype, {  framebuffer: {    get: function () {      return this._colorFramebuffer.framebuffer;    },  },  idFramebuffer: {    get: function () {      return this._idFramebuffer.framebuffer;    },  },  depthStencilTexture: {    get: function () {      return this._colorFramebuffer.getDepthStencilTexture();    },  },});SceneFramebuffer.prototype.update = function (  context,  viewport,  hdr,  numSamples) {  const width = viewport.width;  const height = viewport.height;  const pixelDatatype = hdr    ? context.halfFloatingPointTexture      ? PixelDatatype.HALF_FLOAT      : PixelDatatype.FLOAT    : PixelDatatype.UNSIGNED_BYTE;  this._numSamples = numSamples;  this._colorFramebuffer.update(    context,    width,    height,    numSamples,    pixelDatatype  );  this._idFramebuffer.update(context, width, height);};SceneFramebuffer.prototype.clear = function (context, passState, clearColor) {  Color.clone(clearColor, this._clearCommand.color);  Color.clone(this._idClearColor, this._clearCommand.color);  this._colorFramebuffer.clear(context, this._clearCommand, passState);  this._idFramebuffer.clear(context, this._clearCommand, passState);};SceneFramebuffer.prototype.getFramebuffer = function () {  return this._colorFramebuffer.framebuffer;};SceneFramebuffer.prototype.getIdFramebuffer = function () {  return this._idFramebuffer.framebuffer;};SceneFramebuffer.prototype.prepareColorTextures = function (context) {  if (this._numSamples > 1) {    this._colorFramebuffer.prepareTextures(context);  }};SceneFramebuffer.prototype.isDestroyed = function () {  return false;};SceneFramebuffer.prototype.destroy = function () {  destroyResources(this);  return destroyObject(this);};export default SceneFramebuffer;
 |