Post

Replies

Boosts

Views

Activity

Reply to USDZ model size decrease
USDZ is a dcc format that's not optimized for GPU use. It's a dcc transfer format that Pixar designed for maintaining high-quality assets for their films. Unlike GLTF, the data is completely stored as uncompressed floats. You can use ModelIO to compress all the vertices. Then write that out as a GLTF or usable asset format of your own design. Then the image data is jpg/png. Jpg should never be used with 3d models, unless you like normals to ring. And png can't represent the 7 image types that most gpus need. So then you need to turn those png textures into ktx or ktx2 files, and then BC compress for desktop or ASTC/ETC compress them for mobile.
May ’22
Reply to NSTableView doesn't gap vertically from top
This seemed to work. I still don't see why the storyboard settings don't apply to control this. - (void)awakeFromNib {   [super awakeFromNib];   // vertical offset of table down so hud can display info   NSScrollView* scrollView = [_tableView enclosingScrollView];   CGRect rect = scrollView.frame;   rect.origin.y += 50;   scrollView.frame = rect; }
May ’22
Reply to Hidden NSTableView shows vertical scrollbar and responds to gestures
This is the workaround is to set the containing scrollView hidden instead of the tableView itself. // doesn't work, scrollbar responds to pan gestures and displays empty scroll region // _tableView.hidden = YES; // fix broken NSTableView, keeps showing scroll and responding to pan   // so set scroll to hidden instead of tables   NSScrollView* scrollView = [_tableView enclosingScrollView];   scrollView.hidden = YES;
Apr ’22
Reply to Metal texture allocated size versus actual image data size
It's exactly what I mentioned. Smaller images may have some page sub-allocation strategy. Small buffers in Metal are sub-allocated from a larger 128K buffer, but that's harder with texture data. Not that on macOS Intel, the page size is higher so the need to atlas is even more true there. 256x256, mips 8, Astc: 21872, Metal: 32768 <- mips add up to 16K x 4/3 approx = 21845, but due to align and 16K page size, padded out to 32K 256x256, mips 1, Astc: 16384, Metal: 16384 <- this is the exact fit 32x32x16B = 16K
Apr ’22
Reply to Metal texture allocated size versus actual image data size
It's not really padding, it's page alignment. On console, you could sometimes pack buffer data into the unused bytes. Android has similar hardware and alignment requirements. Sometimes mips have to be aligned to the page size, but maybe Metal team can relay more here. It's gpu specific, so I doubt they'll want to commit to details. Also hardware often has a packed mip tail in order to cut page use for smaller mip sizes. Is your output showing the buffers that you generated to upload to Vulkan textures. These are linear block order texture data, and not the tiled order blocks used by the hw that may be aligned to texture pages. Some systems also have to pad mips out to a power-of-two size. On desktop the tile size is 64KB. On iOS the tile size is 16KB. Here are tileSizes. Format Desktop(64K) Mobile (16K) ASTC/BC7 256x256 128x128 BC1/ETCr11 512x256 256x128
Mar ’22
Reply to nextDrawable stalls commit of command buffer
That sounds even more of a stall if one is trying to use double-buffering. All Apple examples always fallback to triple-buffer to buy more time, and so I'd encourage fixing this api. Vulkan doesn't stall in vkImageAquire for long at all, less that 3ms. Metal can take 30-40ms when the gpu is saturated. In Vulkan, that allows a single command buffer to hold the backbuffer aquire and present to the backbuffer.
Feb ’22