Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 1419x 1419x 1419x 1419x 1419x 1342x 1342x 1x 75x 12296x 1x 71x 71x 71x 71x 71x 71x 1x 71x 71x 71x 71x 1x 1x 6x 1x 57x 13x 1x 1x 1342x 1342x | 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;
|