Skip to content

Cannot find type 'ViewportDescriptor' in scope #46

@omnia-tom

Description

@omnia-tom

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?

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions