| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | import BoundingRectangle from "../Core/BoundingRectangle.js";import defined from "../Core/defined.js";import destroyObject from "../Core/destroyObject.js";import PixelFormat from "../Core/PixelFormat.js";import Framebuffer from "../Renderer/Framebuffer.js";import PixelDatatype from "../Renderer/PixelDatatype.js";import RenderState from "../Renderer/RenderState.js";import Sampler from "../Renderer/Sampler.js";import Texture from "../Renderer/Texture.js";import BrdfLutGeneratorFS from "../Shaders/BrdfLutGeneratorFS.js";/** * @private */function BrdfLutGenerator() {  this._colorTexture = undefined;  this._drawCommand = undefined;}Object.defineProperties(BrdfLutGenerator.prototype, {  colorTexture: {    get: function () {      return this._colorTexture;    },  },});function createCommand(generator, context, framebuffer) {  const drawCommand = context.createViewportQuadCommand(BrdfLutGeneratorFS, {    framebuffer: framebuffer,    renderState: RenderState.fromCache({      viewport: new BoundingRectangle(0.0, 0.0, 256.0, 256.0),    }),  });  generator._drawCommand = drawCommand;}BrdfLutGenerator.prototype.update = function (frameState) {  if (!defined(this._colorTexture)) {    const context = frameState.context;    const colorTexture = new Texture({      context: context,      width: 256,      height: 256,      pixelFormat: PixelFormat.RGBA,      pixelDatatype: PixelDatatype.UNSIGNED_BYTE,      sampler: Sampler.NEAREST,    });    this._colorTexture = colorTexture;    const framebuffer = new Framebuffer({      context: context,      colorTextures: [colorTexture],      destroyAttachments: false,    });    createCommand(this, context, framebuffer);    this._drawCommand.execute(context);    framebuffer.destroy();    this._drawCommand.shaderProgram =      this._drawCommand.shaderProgram &&      this._drawCommand.shaderProgram.destroy();  }};BrdfLutGenerator.prototype.isDestroyed = function () {  return false;};BrdfLutGenerator.prototype.destroy = function () {  this._colorTexture = this._colorTexture && this._colorTexture.destroy();  return destroyObject(this);};export default BrdfLutGenerator;
 |