问题标签 [metalkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
940 浏览

ios - 以顶点颜色读取时,金属片段着色器 uv 坐标发生变化

我正在尝试将抖动应用于一个简单的彩色四边形,并发现了一个奇怪的问题。我有一个片段着色器,它应该计算一些抖动uv并返回一个抖动的颜色。这在带纹理的四边形上效果很好,但奇怪的是,当我从我inVertex的 访问颜色数据时,uv坐标变为一些奇怪的值,并且y值似乎映射到x轴。我将尝试说明当我更改片段着色器代码周围的内容时会发生什么。

产生以下结果:在此处输入图像描述

在图像左侧显示我的渐变四边形的地方,请注意if (uv.y < 0.67)映射到图像中的 x 值。

如果我更改此片段着色器而不更改代码中的其他任何内容,就像这样,在 Ireturn float4(0, 0, 1, 0)而不是 的地方inVertex.coloruv坐标被正确映射。

产生这个(正确的)结果: 在此处输入图像描述

我想我可以通过将 1x1 纹理应用于渐变并使用纹理坐标来解决这个问题,但我真的很想知道这里发生了什么,这是我不理解的错误还是功能?

0 投票
1 回答
550 浏览

ipad - 在 iOS 设备上在 Swift 3 中设置 Metal

我一直在尝试将 Apple 的MetalBasicTessellation项目转换为在 iPad Air 3 上的 swift 3 中工作,但到目前为止还没有成功。令人沮丧的是,该项目附带了一个 iOS 实现(用 ObjectiveC 和一个 Swift Playground 编写),但没有 Swift 3 实现。

我已经获得了要编译的代码,但无法在我的 iPad 上运行,并出现以下错误:

我很确定 iPad Air 2 是合规的,但我感觉错误是由于 MetalKitView 配置不正确造成的。我已经从项目的 Objective-c 和 Playground 文件中对我所能做的进行了逆向工程,但我已经达到了我目前的专业知识所能理解的程度。

整个 git 可以在这里找到

某个金属大师灵魂会伸出援助之手吗?那里的文档非常稀少。

0 投票
1 回答
680 浏览

swift3 - 在 iPhone 6s 上的 Swift 3 中设置 Metal

我一直在尝试将 Apple 的MetalBasicTessellation项目转换为在运行 iOS 10.3.1 的 iPhone 6s 上的 swift 3 中工作。一切编译都没有错误,但是在我的 iPhone 上运行时,我在定义 renderCommandEncoder 时收到以下错误:

我已正确设置 renderPassDescriptor 的纹理属性以继承 MKTView.currentDrawable 纹理。

我错过了什么?下面是整个 AAPLTessellationPipeline 类。整个项目可以在这里找到。

0 投票
2 回答
294 浏览

rust - What is the proper way to encode SIMD types and functions that use them for the Objective-C Runtime?

I'm developing an app in a language other than Objective-C and I came across newBoxWithDimensions. It uses the vector_float3 type which comes from the SIMD API.

I can not encode this function because of the vector_float3 type.

I've found Why can't gcc or clang properly @encode SIMD vector types?; the problem here is when @encode does not encode the SIMD types, then it can not create a proper form for those functions that use SIMD types and then the message sending verification fails. How can I bypass this encoding problem in message sending verification?

0 投票
1 回答
4135 浏览

ios - 如何将 MTLTexture 转换为 CVpixelBuffer 以写入 AVAssetWriter?

我需要在实时视频上应用过滤器,我正在尝试在 Metal 中执行此操作。

但是在将过滤器编码为目标过滤器后,我遇到了将 MTLTexture 转换为 CVPixelBuffer 的问题。参考(https://github.com/oklyc/MetalCameraSample-master-2

这是我的代码。

方法 imageFromCVPixelBuffer 看起来像这样。

这是通过金属渲染图像的屏幕截图

在此处输入图像描述

这是将 MTLTexture 转换为 CVPixelBuffer 的同一图像的屏幕截图。

在此处输入图像描述

需要将 MTLtexture 转换为 CVPixelBuffer 以写入 AVAssetWriter 然后将其保存到库中。

0 投票
1 回答
689 浏览

swift - CGImage 到 MPSTexture 或 MPSImage

我有一个由 CVPixelbuffer (ARGB) 构建的 CGImage。我想将该 CGImage 转换为 MTLTexture。我用:

后来我想在具有 3 个通道的 MPSImage 中使用纹理:

现在我的问题是: textureLoader.newTexture(...) 如何将四个 ARGB 通道映射到 MPSImageDescriptor 中指定的 3 个通道?如何确保使用 RGB 组件而不是例如 ARG ?有没有办法指定通道映射?

谢谢,克里斯

0 投票
0 回答
240 浏览

ios - 是否有另一种方法来分析金属内核?

我尝试使用“捕获 GPU 帧”来分析一些金属内核。我遇到了一些奇怪的错误,例如“Unexpected Replayer Terminated”即将结束时,我无法修复。

那么,是否有另一种方法来测量金属内核的时间?

我正在使用 XCode 8.3.2 和 iOS 10.3.2。我无法在模拟器中运行,因为我使用的是 Metal Performance Shaders。

0 投票
1 回答
2620 浏览

ios - MTKView 显示广色域 P3 色彩空间

我正在构建一个基于 CIFilters 和 MetalKit 的实时照片编辑器。但是我遇到了在 MTKView 中显示广色域图像的问题。

标准 sRGB 图像显示得很好,但 Display P3 图像被洗掉了。

我尝试将CIContext.render色彩空间设置为图像色彩空间,但仍然遇到问题。

以下是代码片段:

我在 Apple 开发者论坛上发现了类似的问题,但没有任何答案:https ://forums.developer.apple.com/thread/66166

0 投票
1 回答
289 浏览

ios - Metal texture doesn't released in Xamarin

This text was edited after extended investigation and double checks.

I'm developing an enterprise (not game) app based on Metal API in Xamarin, and I have critical issue: Metal textures aren't releasing it's memory after dispose, what is leading to extensive memory leaks and app crashes.

Above you can see a simplified sample, which are demonstrates the issue. A texture's memory doesn't release after Dispose() call, even when texture is a local variable.

Can anybody explain what is going on, and how to release texture's memory?

It looks like Metal Kit support in Xamarin is totally broken and useless because of this issue. And I'm deeply shocked: WTF is going on?! How is it possible for Xamarin team to make initially broken feature and don't fix the issue for years? What are you doing there, guys? Xamarin forums is totally dead. Currently, this proudly called "Visual studio for Mac", but what's the point? Damn code snippets are still buggy – have to delete auto-inserted parenthesis to fix the cursor.

P.S.
Here is the repo with the project demonstrating the problem:
https://github.com/kav-git/Xamarin-Metal-Issue

  1. Memory usage is logged into Output window of IDE during debug.
  2. Press Add texture button to add new 64Mb texture to collection.
  3. Press Dispose textures button to purge all textures. No memory will be released.
  4. Press Release pixelData button to ensure GC is OK when you have deal with non-texture objects.
  5. Use GC.Collect() button just for fun.
0 投票
1 回答
492 浏览

metal - 如何交错内核/顶点金属着色器

我遇到了将 Metal 渲染循环部署为多个 KCS(内核/计算)着色器和 VFS(顶点/片段)着色器的链:

一个着色器的输出是下一个着色器的输入。如图所示,这两组 4 个交替着色器在接近尾声时组合在一起。

如果我正确地考虑了这一点,我将需要多达 10 个不同的管道描述符来实现这一点,以及对完成处理程序的大量调用,其中下一个着色器将被分派。

我也没有指出它,但是对presentable的最后一次调用也会将其输出的子区域馈送到单独的MTKView(通过顶点/片段着色器)。

任何提示将不胜感激。