Open christianphalv opened 11 months ago
Another related enhancement would be to have ThinTexture.getSize() return a depth for 3D and 2DArray Textures.
https://doc.babylonjs.com/typedoc/classes/BABYLON.ThinTexture#getSize
This issue has been automatically staled because it has been inactive for more than 14 days. Please update to "unstale".
We only accept feature requests that are discussed on the BabylonJS forum
Is your feature request related to a problem? Please describe.
I noticed that when I call Texture.readPixels() on a 3D texture, it only returns a buffer containing top 2D slice of pixel data. In the linked example, I create a 2x2x2 3D texture a fill it iteratively with data. I then log the data array and see the expected 2 x 2 x 2 x 4 = 32 data points. After the data is fed to a RawTexture3D, I read the textures pixels but only see the first 16 data points.
https://playground.babylonjs.com/#LNRURP#1
According to @Evgeni_Popov, reading anything other than the top layer of a 3D texture is not supported.
Describe the solution you'd like
I need some way of accessing all the pixel data in a 3D texture. This could be achieved by either updating the current BaseTexture.readPixels() method to return all (or specified) layers of the 3D texture or creating a new RawTexture3D.readPixels3D() method on Rawtexture3D. I would lean toward updating BaseTexture.readPixels() or even creating a new method on BaseTexture that could bring 2D, 2DArray, and 3D textures to parity. Below is an example of such a method.
https://doc.babylonjs.com/typedoc/classes/BABYLON.BaseTexture#readPixels
Discussion
https://forum.babylonjs.com/t/texture-readpixels-only-returns-top-slice-of-3d-textures/43388