-
Notifications
You must be signed in to change notification settings - Fork 64
Description
Hi,
I am trying to integrate the code from the Sample app, but I am running into a few issues with the Splat Renderer. The file is correctly loading, but crashing on the rendering when it is being casted from SplatRenderer to ModelRenderer.
case .gaussianSplat(let url):
let splat = try SplatRenderer(device: device,
colorFormat: layerRenderer.configuration.colorFormat,
depthFormat: .depth32Float_stencil8,
stencilFormat: .depth32Float_stencil8,
sampleCount: 1,
maxViewCount: layerRenderer.properties.viewCount,
maxSimultaneousRenders: MetalSplatterConstants.maxSimultaneousRenders)
try await splat.readPLY(from: url)
modelRenderer = splat as! any ModelRenderer
I have ensured to add the extension to implement ModelRender render function:
import Metal
import MetalSplatter
extension SplatRenderer: ModelRenderer {
public func render(viewports: [ModelRendererViewportDescriptor],
colorTexture: MTLTexture,
colorStoreAction: MTLStoreAction,
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer) throws {
let remappedViewports = viewports.map { viewport -> ViewportDescriptor in
ViewportDescriptor(viewport: viewport.viewport,
projectionMatrix: viewport.projectionMatrix,
viewMatrix: viewport.viewMatrix,
screenSize: viewport.screenSize)
}
try render(viewports: remappedViewports,
colorTexture: colorTexture,
colorStoreAction: colorStoreAction,
depthTexture: depthTexture,
rasterizationRateMap: rasterizationRateMap,
renderTargetArrayLength: renderTargetArrayLength,
to: commandBuffer)
}
}
but I am receiving an error that ViewportDescriptor does not exist. I have MetalSplatter version, but it seems that the SplatRenderer class when I click into the definition does not have this ViewportDescriptor class. Is there anything you can advise on to help this?
