3 ms·
An actual 3D block based format would be useful, currently on PC at least the only formats are for 2D textures. They do work for 3D textures, but in 2D slices s
by TinkersW 2y ago
An actual 3D block based format would be useful, currently on PC at least the only formats are for 2D textures. They do work for 3D textures, but in 2D slices so the result is not as good as it could be. Also the only 1 channel format is BC4 which is .5 byte per entry, and has 2 encodings modes, but the 2nd one is mostly useless for an SDF, so that is a waste.
I'd prefer a 1 per byte entry option for higher detail, no need for any fancy modes, needs to be simply and fast to encode so it can be done realtime.
IDK about this post though, separating the block min/max into a separate memory location from the indices doesn't make much sense, you could just access a less detailed mip if that is what you want.
- corysama 2y agoASTC has support for 3D blocks. But, I don't know how widespread support is for desktop GPUs... https://en.wikipedia.org/wiki/Adaptive_scalable_texture_compression#3D_block_footprints_and_bit_rates https://en.wikipedia.org/wiki/Adaptive_scalable_texture_comp... For example, apparently support in OpenGL is simply not available. https://www.khronos.org/opengl/wiki/ASTC_Texture_Compression#Unavailable_features https://www.khronos.org/opengl/wiki/ASTC_Texture_Compression...
- TinkersW 2y agoYa it does, but desktop GPUs don't support ASTC(or if they do it isn't exposed)
- jsheard 2y agoApples M-series chips have ASTC if you count those as desktop, but yeah neither AMD or Nvidias discrete GPUs have it. Desktop and console chips usually only have BC, mobile chips usually only have ASTC, and the few chips which straddle the line between those worlds have both (e.g. Nvidia Tegra and Apple M).
- jb1991 2y agoMetal offers 3D textures, and they are nice for SDFs.
- danwills 2y agoWhat about OpenVDB? .. certainly seems to be used for voxel data in VFX quite a lot (I work at a VFX company) There's NanoVDB too that works on GPUs.
- TinkersW 2y agoOpenVDB is high level description for voxel data, not a compressed format that GPU hardware supports.