Skip to content

Commit

Permalink
SplatRenderer.render() now throws
Browse files Browse the repository at this point in the history
  • Loading branch information
scier committed Aug 5, 2024
1 parent b8f11fb commit b1bd2b6
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 34 deletions.
2 changes: 1 addition & 1 deletion MetalSplatter/Sources/SplatRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ public class SplatRenderer {
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer) {
to commandBuffer: MTLCommandBuffer) throws {
let splatCount = splatBuffer.count
guard splatBuffer.count != 0 else { return }
let indexedSplatCount = min(splatCount, Constants.maxIndexedSplatCount)
Expand Down
2 changes: 1 addition & 1 deletion SampleApp/Model/ModelRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ public protocol ModelRenderer {
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer)
to commandBuffer: MTLCommandBuffer) throws
}
16 changes: 8 additions & 8 deletions SampleApp/Model/SampleBoxRenderer+ModelRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ extension SampleBoxRenderer: ModelRenderer {
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer) {
to commandBuffer: MTLCommandBuffer) throws {
let remappedViewports = viewports.map { viewport -> ViewportDescriptor in
ViewportDescriptor(viewport: viewport.viewport,
projectionMatrix: viewport.projectionMatrix,
viewMatrix: viewport.viewMatrix,
screenSize: viewport.screenSize)
}
render(viewports: remappedViewports,
colorTexture: colorTexture,
colorStoreAction: colorStoreAction,
depthTexture: depthTexture,
rasterizationRateMap: rasterizationRateMap,
renderTargetArrayLength: renderTargetArrayLength,
to: commandBuffer)
try render(viewports: remappedViewports,
colorTexture: colorTexture,
colorStoreAction: colorStoreAction,
depthTexture: depthTexture,
rasterizationRateMap: rasterizationRateMap,
renderTargetArrayLength: renderTargetArrayLength,
to: commandBuffer)
}
}
16 changes: 8 additions & 8 deletions SampleApp/Model/SplatRenderer+ModelRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ extension SplatRenderer: ModelRenderer {
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer) {
to commandBuffer: MTLCommandBuffer) throws {
let remappedViewports = viewports.map { viewport -> ViewportDescriptor in
ViewportDescriptor(viewport: viewport.viewport,
projectionMatrix: viewport.projectionMatrix,
viewMatrix: viewport.viewMatrix,
screenSize: viewport.screenSize)
}
render(viewports: remappedViewports,
colorTexture: colorTexture,
colorStoreAction: colorStoreAction,
depthTexture: depthTexture,
rasterizationRateMap: rasterizationRateMap,
renderTargetArrayLength: renderTargetArrayLength,
to: commandBuffer)
try render(viewports: remappedViewports,
colorTexture: colorTexture,
colorStoreAction: colorStoreAction,
depthTexture: depthTexture,
rasterizationRateMap: rasterizationRateMap,
renderTargetArrayLength: renderTargetArrayLength,
to: commandBuffer)
}
}
23 changes: 16 additions & 7 deletions SampleApp/Scene/MetalKitSceneRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@
import Metal
import MetalKit
import MetalSplatter
import os
import SampleBoxRenderer
import simd
import SwiftUI

class MetalKitSceneRenderer: NSObject, MTKViewDelegate {
private static let log =
Logger(subsystem: Bundle.main.bundleIdentifier!,
category: "MetalKitSceneRenderer")

let metalKitView: MTKView
let device: MTLDevice
let commandQueue: MTLCommandQueue
Expand Down Expand Up @@ -109,13 +114,17 @@ class MetalKitSceneRenderer: NSObject, MTKViewDelegate {

updateRotation()

modelRenderer.render(viewports: [viewport],
colorTexture: view.multisampleColorTexture ?? drawable.texture,
colorStoreAction: view.multisampleColorTexture == nil ? .store : .multisampleResolve,
depthTexture: view.depthStencilTexture,
rasterizationRateMap: nil,
renderTargetArrayLength: 0,
to: commandBuffer)
do {
try modelRenderer.render(viewports: [viewport],
colorTexture: view.multisampleColorTexture ?? drawable.texture,
colorStoreAction: view.multisampleColorTexture == nil ? .store : .multisampleResolve,
depthTexture: view.depthStencilTexture,
rasterizationRateMap: nil,
renderTargetArrayLength: 0,
to: commandBuffer)
} catch {
Self.log.error("Unable to render scene: \(error.localizedDescription)")
}

commandBuffer.present(drawable)

Expand Down
20 changes: 12 additions & 8 deletions SampleApp/Scene/VisionSceneRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ extension LayerRenderer.Clock.Instant.Duration {
class VisionSceneRenderer {
private static let log =
Logger(subsystem: Bundle.main.bundleIdentifier!,
category: "CompsitorServicesSceneRenderer")
category: "VisionSceneRenderer")

let layerRenderer: LayerRenderer
let device: MTLDevice
Expand Down Expand Up @@ -161,13 +161,17 @@ class VisionSceneRenderer {

let viewports = self.viewports(drawable: drawable, deviceAnchor: deviceAnchor)

modelRenderer?.render(viewports: viewports,
colorTexture: drawable.colorTextures[0],
colorStoreAction: .store,
depthTexture: drawable.depthTextures[0],
rasterizationRateMap: drawable.rasterizationRateMaps.first,
renderTargetArrayLength: layerRenderer.configuration.layout == .layered ? drawable.views.count : 1,
to: commandBuffer)
do {
try modelRenderer?.render(viewports: viewports,
colorTexture: drawable.colorTextures[0],
colorStoreAction: .store,
depthTexture: drawable.depthTextures[0],
rasterizationRateMap: drawable.rasterizationRateMaps.first,
renderTargetArrayLength: layerRenderer.configuration.layout == .layered ? drawable.views.count : 1,
to: commandBuffer)
} catch {
Self.log.error("Unable to render scene: \(error.localizedDescription)")
}

drawable.encodePresent(commandBuffer: commandBuffer)

Expand Down
2 changes: 1 addition & 1 deletion SampleBoxRenderer/Sources/SampleBoxRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ public class SampleBoxRenderer {
depthTexture: MTLTexture?,
rasterizationRateMap: MTLRasterizationRateMap?,
renderTargetArrayLength: Int,
to commandBuffer: MTLCommandBuffer) {
to commandBuffer: MTLCommandBuffer) throws {
updateDynamicBufferState()
updateUniforms(forViewports: viewports)

Expand Down

0 comments on commit b1bd2b6

Please sign in to comment.