I noticed that when setting the size parameter to some variation of { ratio: ... } that the incorrect size is stored in MultiRenderTarget.
This playground shows the result.
RenderTargetTexture uses ._processSizeParameter(...) to ensure that ._size is set correctly (i.e. w/ width and height), but MultiRenderTarget overrides that value after calling super(...):
const formats: number[] = [];
const targetTypes: number[] = [];
const faceIndex: number[] = [];
const layerIndex: number[] = [];
const layerCounts: number[] = [];
this._initTypes(count, types, samplingModes, useSRGBBuffers, formats, targetTypes, faceIndex, layerIndex, layerCounts, options);
const generateDepthBuffer = !options || options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;
const generateStencilBuffer = !options || options.generateStencilBuffer === undefined ? false : options.generateStencilBuffer;
this._size = size;
this._multiRenderTargetOptions = {
samplingModes: samplingModes,
generateMipMaps: generateMipMaps,
generateDepthBuffer: generateDepthBuffer,
generateStencilBuffer: generateStencilBuffer,
generateDepthTexture: generateDepthTexture,
depthTextureFormat: depthTextureFormat,
types: types,
textureCount: count,
useSRGBBuffers: useSRGBBuffers,
This produces a ._size that looks like { width: { ratio: x }, height: { ratio: x } } which causes a host of other errors.
Similarly, MultiRenderTarget.resize(...) never correctly formats ._size either.
Thanks for reporting, here’s the fix:
BabylonJS:master ← Popov72:mrt-fix-size
opened 12:33PM - 25 May 23 UTC
See https://forum.babylonjs.com/t/multirendertarget-with-size-set-to-ratio/41117
4 Likes