metal 相关问题

Metal是GPU加速的高级3D图形渲染和数据并行计算工作负载的专有框架。由Apple制造。

如何在框架中提供带有金属着色器的SCNTechnique

我正在使用示例代码:https://github.com/laanlabs/SCNTechniqueGlow。此代码使用 SCNTechnique 使 3d 模型发光。 现在我想将发光功能移至框架而不是......

回答 1 投票 0

自定义Metal CIKernel返回固定颜色产生不同的颜色

我有一个Metal定制的CIKernel,我发现一个奇怪的事情,着色器返回固定颜色,但屏幕显示不同!我使用断点来检查生成的 CIImage 对象,确实不同...

回答 2 投票 0

CAMetalLayer 初始化仅适用于主线程

我确实有一个直接的 CAMetalLayer 设置,除了 CAMetalLayer 是在全局线程上初始化的,如下所示(调用 init,设置基本属性并添加为子层): 派遣Q...

回答 1 投票 0

在 SCNGeometry 几何修改器中采样纹理

我正在尝试在 SceneKit 几何修改器中获取 RGB 值,并使用该值来定位我的几何体。 这是我的着色器中的内容。 #包括 #包括 我正在尝试在 SceneKit 几何修改器中获取 RGB 值,并使用该值来定位我的几何体。 这是我的着色器中的内容。 #include <metal_stdlib> #include <simd/simd.h> #include <metal_texture> #pragma arguments texture2d terrainRGB; #pragma transparent #pragma body constexpr sampler textureSampler(coord::normalized, address::clamp_to_edge, filter::nearest, mip_filter::nearest); float4 elevation = terrainRGB.sample(textureSampler, _geometry.texcoords[kSCNTexcoordCount-1]); float r = elevation.r * 256; float g = elevation.g * 256; float b = elevation.b * 256; float rgbExpression = (r * 256.0 * 256.0) + (g * 256.0) + b; float e = -10000.0 + (rgbExpression * 0.1); _geometry.position.z = e; 然后我像这样设置我的几何图形。 let geo = geo = SCNGeometry(...) let texture = SCNMaterialProperty(contents: img) geo.setValue(texture, forKeyPath: "terrainRGB") 如果我将高程编码为几何法线,则使用法线而不是纹理来获取高程,此代码可以正常工作。 但我不想使用法线,因为这会改变光源在我的场景中的工作方式。 我不知道应该将什么数据类型传递给 geo.setValue() 才能在着色器中与 texture2d 一起使用。 或者我还应该对修改后的几何体进行其他操作以传递纹理并能够在修改器中对其进行采样。 事实证明,我需要做三件事才能完成这项工作。 我需要将 MTLTexture 传递给 SCNMaterialProperty 而不是 UIImage。 我需要在 SCNMaterialProperty 上设置过滤器,以匹配几何修改器中 sampler 上的过滤器。 (我不确定其他组合是否有效,这正是我必须对我的案例所做的。) 我必须将我的图像转换为CGColorSpace.genericRGBLinear。 我的 sRGB 色彩空间图像。 我不太清楚为什么我必须这样做。 我设置了一个顶点着色器来使用 RealityKit 执行完全相同的操作,并且它与 sRGB 图像配合得很好。 这是我在 SCNGeometry 上设置纹理的最终代码。 if let cgImg = image.cgImage, let colorSpace = CGColorSpace(name: CGColorSpace.genericRGBLinear), let textureImg = cgImg.copy(colorSpace: colorSpace), let d = self.sceneDevice { //an MTLDevice do { let textureLoader = MTKTextureLoader(device: d) let texture = try textureLoader.newTexture(cgImage: textureImg) let scnTexture = SCNMaterialProperty(contents: texture) scnTexture.minificationFilter = .nearest scnTexture.magnificationFilter = .nearest scnTexture.wrapS = .clamp scnTexture.wrapT = .clamp geo.setValue(scnTexture, forKeyPath: "terrainRGB") } catch { print("Error: \(error)") } }

回答 1 投票 0

Core Image Metal 内核编译标志使 SwiftUI 找不到 Metal 着色器

我使用Core Image Metal内核,为了使其工作,需要将-fcikernel添加到构建设置中的Other Metal Complie Flags和Other Metal Link Flags中。 这是一篇谈论...

回答 1 投票 0

SwiftUI - DrawingGroup() 改变颜色

当我应用 .drawingGroup() 修改器来提高性能时,为什么我的颜色会发生变化/反转? 看起来他们似乎正在倒转。 从红色到黑色 我没有收到任何错误

回答 1 投票 0

如何在 Xcode 中使用 EditorConfig?

随着 Xcode 16 的发布,苹果添加了对 EditorConfig 的支持: 添加了对 EditorConfig 的支持。编辑器现在尊重缩进 .editorconfig 文件中给出的设置。 Xcode 支持以下...

回答 1 投票 0

在 Metal 中处理不同大小的多个渲染目标

我想使用具有多个渲染目标的片段着色器从 RGB 输入输出 YCbCr 数据,其中 Y 数据写入一个纹理,CbCr 写入另一个较小的纹理(由于 c...

回答 1 投票 0

如何在 Apple M2 上的 Pytorch 中运行 MPS?

我有以下函数来检查我的 MacBook Pro Apple M2 Max 上的 Pytorch 中是否启用了 MPS。我得到回应: MPS 不可用 MPS未建 然后我收到错误,因为 MPS...

回答 1 投票 0

CAMetalDisplayLink 无法在单独的线程上工作

我希望在 macOS 应用程序的单独线程上实现 CAMetalDisplayLink。我的实现基于以下示例项目: 使用金属放电实现平滑的帧速率...

回答 1 投票 0

选择 Metal 3.2 作为语言会导致 iPhone 11 Pro (iOS 17.1.1) 崩溃

XCode 16 似乎在 Core Image 中的可缝合内核方面存在问题,这会导致此问题中所述的构建错误。作为解决方法,我在 XCode 中选择 Metal 3.2 作为 Metal Language Revision

回答 1 投票 0

使用 CoreML 推断金属纹理子区域

我正在构建一个 iOS 应用程序,它将帧从相机实时渲染到金属纹理。我想使用 CoreML 对金属纹理的子区域执行样式转移(想象一下相机或...

回答 1 投票 0

在 macOS 上使用 GLFW 和 Metal 创建窗口会创建两个窗口吗?

每当我尝试创建一个窗口时,它都会直接在彼此之上创建两个窗口,并在我移动它们时出现此错误: 客户端错误:TUINSRemoteViewController 未覆盖 -

回答 1 投票 0

Apple Metal:如何在内核着色器中使用数组(而不是纹理)?

我无法将 [Int32] 数组放入我的内核着色器中。 使用桥接头我可以得到一个结构数组,例如 类型定义结构{ 整数ar[100]; } MyArray; 内核无效 myShader(设备 MyArra...

回答 1 投票 0

Metal 运行时着色器库编译和链接问题

在我的项目中我需要执行以下操作: 在运行时从源创建金属动态库。 在运行时从源代码创建金属可执行库并将其与我之前创建的动态l...

回答 1 投票 0

Metal addCompletedHandler 导致 Swift 6 (iOS) 崩溃

以下代码在使用 Swift 5 编译时运行良好,但在使用 Swift 6 编译时崩溃(堆栈跟踪如下)。在绘制方法中,注释掉 addCompletedHandler 行可以解决问题...

回答 1 投票 0

air-lld:1:1 升级到 XCode 16 后找不到符号

我在升级到 XCode 16 后尝试构建我的项目,但在编译时遇到问题。当我尝试构建项目时,出现错误:air-lld:1:1 symbol(s) not found for t...

回答 1 投票 0

如何在Metal Shader中获取随机数?

我如何在金属着色器中获取随机数? 我在金属着色语言规范中搜索“随机”,但什么也没找到。

回答 5 投票 0

将 MTLTexture 保存并加载为 PNG

我正在尝试将金属纹理保存并加载为PNG,但是当我加载它们时,它们看起来更模糊。我认为问题在于转换 800x600 的纹理会创建 1600x1200 的 PNG,s...

回答 3 投票 0

无法将 Metal 函数导入 Swift

我尝试将金属文件添加到我的项目中,但是当我尝试导入它们时,它会抛出此错误: 2019-05-11 20:07:33.715399+0200 相机[363:16969] -[MTLRenderPipelineDescriptorInternal

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.