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