fix incorrect indexing for material instances when creating an instance

This commit is contained in:
Nick Fisher
2025-06-19 10:57:54 +08:00
parent 7446b0545a
commit a823718bcd
2 changed files with 12 additions and 14 deletions

View File

@@ -758,14 +758,14 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
final pixelBuffers = <(View, Uint8List)>[]; final pixelBuffers = <(View, Uint8List)>[];
if (beginFrame) { final views = <FFIView>[];
final views = <FFIView>[]; if (view != null) {
if (view != null) { views.add(view);
views.add(view); } else {
} else { views.addAll(_swapChains[swapChain]!.where((v) => v.renderable));
views.addAll(_swapChains[swapChain]!.where((v) => v.renderable)); }
}
if (beginFrame) {
_logger.info("Capturing ${views.length} views"); _logger.info("Capturing ${views.length} views");
for (final view in views) { for (final view in views) {
@@ -784,7 +784,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
PixelDataType.UBYTE || PixelDataType.BYTE => 1, PixelDataType.UBYTE || PixelDataType.BYTE => 1,
_ => throw UnsupportedError(pixelDataFormat.toString()) _ => throw UnsupportedError(pixelDataFormat.toString())
}; };
final pixelBuffer = Uint8List(viewport.width *
final pixelBuffer = makeUint8List(viewport.width *
viewport.height * viewport.height *
numChannels * numChannels *
channelSizeInBytes); channelSizeInBytes);
@@ -807,10 +808,6 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
view.renderTarget == null view.renderTarget == null
? nullptr ? nullptr
: view.renderTarget!.renderTarget, : view.renderTarget!.renderTarget,
// TPixelDataFormat.PIXELDATAFORMAT_RGBA,
// TPixelDataType.PIXELDATATYPE_UBYTE,
// TPixelDataFormat.fromValue(pixelDataFormat.value),
// TPixelDataType.fromValue(pixelDataType.value),
pixelDataFormat.value, pixelDataFormat.value,
pixelDataType.value, pixelDataType.value,
pixelBuffer.address, pixelBuffer.address,
@@ -829,6 +826,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
}); });
await flush(); await flush();
return pixelBuffers; return pixelBuffers;
} }

View File

@@ -90,8 +90,8 @@ namespace thermion
TRACE("Instance child entity %d not renderable", i); TRACE("Instance child entity %d not renderable", i);
} else { } else {
TRACE("Instance child entity %d renderable", i); TRACE("Instance child entity %d renderable", i);
for(int i = 0; i < materialInstanceCount; i++) { for(int j = 0; j < materialInstanceCount; j++) {
rm.setMaterialInstanceAt(renderableInstance, i, materialInstances[i]); rm.setMaterialInstanceAt(renderableInstance, i, materialInstances[j]);
} }
} }
} }