Metal是GPU加速的高级3D图形渲染和数据并行计算工作负载的专有框架。由Apple制造。
我尝试使用 MTKTextureLoader newTextureWithData 加载 png 数据,但结果在 alpha 区域显示错误。 这是代码,我有一个图像网址,下载成功后,我尝试...
Swift 6(不是 Swift 5)在 libdispatch.dylib 中遇到断点
我的应用程序有2个目标,iOS和visionOS。它使用一些 Metal 代码进行渲染。 如果我使用 Swift 5 编译它,渲染将按预期工作。 使用 Swift 6,渲染意外地遇到了内部中断......
我有一个不透明图像和一个不透明蒙版图像。使用 MetalPetal 及其 MTIBlendWithMaskFilter 我可以创建一个输出图像,它正确地遮盖了输入图像,但它是不透明的黑色
以下考虑是否正确: Metal 可以在任何运行 Mojave 或更高版本的 Mac 上使用吗? 如果 MTLCopyAllDevices() 返回空数组,Metal 在早期系统上不可用? 换句话说...
如何在iPhone 15 Pro Max(120Hz显示)上设置GLKView或MTKView的帧率?
我正在尝试在 iPhone 15 Pro Max 上使用 GLKView 或 MTKView 定义渲染的帧速率,它支持 120Hz 刷新率 (ProMotion)。然而,我很难实现任何目标
我正在使用示例代码:https://github.com/laanlabs/SCNTechniqueGlow。此代码使用 SCNTechnique 使 3d 模型发光。 现在我想将发光功能移至框架而不是......
自定义Metal CIKernel返回固定颜色产生不同的颜色
我有一个Metal定制的CIKernel,我发现一个奇怪的事情,着色器返回固定颜色,但屏幕显示不同!我使用断点来检查生成的 CIImage 对象,确实不同...
我确实有一个直接的 CAMetalLayer 设置,除了 CAMetalLayer 是在全局线程上初始化的,如下所示(调用 init,设置基本属性并添加为子层): 派遣Q...
我正在尝试在 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)") } }
Core Image Metal 内核编译标志使 SwiftUI 找不到 Metal 着色器
我使用Core Image Metal内核,为了使其工作,需要将-fcikernel添加到构建设置中的Other Metal Complie Flags和Other Metal Link Flags中。 这是一篇谈论...
当我应用 .drawingGroup() 修改器来提高性能时,为什么我的颜色会发生变化/反转? 看起来他们似乎正在倒转。 从红色到黑色 我没有收到任何错误
随着 Xcode 16 的发布,苹果添加了对 EditorConfig 的支持: 添加了对 EditorConfig 的支持。编辑器现在尊重缩进 .editorconfig 文件中给出的设置。 Xcode 支持以下...
我想使用具有多个渲染目标的片段着色器从 RGB 输入输出 YCbCr 数据,其中 Y 数据写入一个纹理,CbCr 写入另一个较小的纹理(由于 c...
如何在 Apple M2 上的 Pytorch 中运行 MPS?
我有以下函数来检查我的 MacBook Pro Apple M2 Max 上的 Pytorch 中是否启用了 MPS。我得到回应: MPS 不可用 MPS未建 然后我收到错误,因为 MPS...
CAMetalDisplayLink 无法在单独的线程上工作
我希望在 macOS 应用程序的单独线程上实现 CAMetalDisplayLink。我的实现基于以下示例项目: 使用金属放电实现平滑的帧速率...
选择 Metal 3.2 作为语言会导致 iPhone 11 Pro (iOS 17.1.1) 崩溃
XCode 16 似乎在 Core Image 中的可缝合内核方面存在问题,这会导致此问题中所述的构建错误。作为解决方法,我在 XCode 中选择 Metal 3.2 作为 Metal Language Revision
我正在构建一个 iOS 应用程序,它将帧从相机实时渲染到金属纹理。我想使用 CoreML 对金属纹理的子区域执行样式转移(想象一下相机或...
在 macOS 上使用 GLFW 和 Metal 创建窗口会创建两个窗口吗?
每当我尝试创建一个窗口时,它都会直接在彼此之上创建两个窗口,并在我移动它们时出现此错误: 客户端错误:TUINSRemoteViewController 未覆盖 -
Apple Metal:如何在内核着色器中使用数组(而不是纹理)?
我无法将 [Int32] 数组放入我的内核着色器中。 使用桥接头我可以得到一个结构数组,例如 类型定义结构{ 整数ar[100]; } MyArray; 内核无效 myShader(设备 MyArra...
在我的项目中我需要执行以下操作: 在运行时从源创建金属动态库。 在运行时从源代码创建金属可执行库并将其与我之前创建的动态l...