草庐IT

metal-performance-shaders

全部标签

ios - iOS 上数组的 Swift metal 并行求和计算

基于@Kametrixomanswer,我做了一些测试应用程序来并行计算数组中的总和。我的测试应用程序如下所示:importUIKitimportMetalclassViewController:UIViewController{//Datatype,hastobethesameasintheshadertypealiasDataType=CIntoverridefuncviewDidLoad(){super.viewDidLoad()letdata=(0..)->DataType{letcount=data.countletelementsPerSum:Int=Int(sqrt(Do

swift - 如何将 16 位图像加载到 Metal 纹理中?

使用MTKTextureLoader.newTexture的推荐方法不适用于16位图像。named:版本默默地将图像转换为8位像素格式cgImage:版本以Imagedecodingfailed结束UIImage和NSImage都支持加载16位图像,并且有它们方便的.cgimage方法,可以在一行中转换为CGImage,因此在两个平台上获取CGImage都得到了解决。我如何编写一个转换CGImage并返回16位Metal纹理的函数? 最佳答案 下面的loadEXRTexture函数加载扩展范围的图像并将其像素转换为半精度float,

ios Metal : limit on number of variables used in a shader

我在为我的着色器添加一些复杂性后,今天开始收到以下错误:Executionofthecommandbufferwasabortedduetoanerrorduringexecution.Discarded(victimofGPUerror/recovery)(IOAFcode5)我发现它与实际添加的代码无关,但实际上我添加了更多变量和函数调用。我尝试从着色器中删除其他复杂性,错误被删除。我发现的另一件事是,当我将fastmath设置为false时,问题也消失了。我的第一个猜测是,当快速数学打开时,变量的数量会有某种限制。有这样的限制吗?还有其他想法为什么会发生这种错误吗?

swift - 使用 Metal Framework 将图像保存到磁盘时命令缓冲区的执行被中止/GPU 错误

我正在开发同时使用ARKit和Metal/MetalKit框架的IOS应用程序(ios12)。我正在捕获图像并将它们压缩并将它们保存到手机的文档目录中。手机每移动10厘米就会捕获图像。但是,大约10分钟后(保存了大约300MB的数据后)应用程序崩溃并吐出错误:"Executionofthecommandbufferwasabortedduetoanerrorduringexecution.Discarded(victimofGPUerror/recovery)(IOAFcode5)"有没有人看到这个或了解可能是什么问题? 最佳答案

ios - 如何使用 Metal 自定义计算着色器并获得非常流畅的性能?

我正在尝试使用苹果提供的默认MPSKernal滤镜和自定义computeShaders通过Metal应用实时相机滤镜。在计算着色器中,我使用MPSImageGaussianBlur进行了就地编码代码在这里funcencode(tocommandBuffer:MTLCommandBuffer,sourceTexture:MTLTexture,destinationTexture:MTLTexture,cropRect:MTLRegion=MTLRegion.init(),offset:CGPoint){letblur=MPSImageGaussianBlur(device:device,

performance - 为什么在 Swift 中更新类属性比本地更新慢?

考虑以下UIViewController实现:classViewController:UIViewController{varfoo:String[]=["A","b","c"];overridefuncviewDidLoad(){super.viewDidLoad()for(vari=0;i这个循环大约需要34秒才能完成,占用100%的CPU和54MB内存。如果我将foo声明移到viewDidLoad中,我们几乎可以立即得到结果。我的问题:是什么原因造成的? 最佳答案 在Playground中,我尝试了以下操作:将环境更改为iOS

swift - 如何使用 Metal 和 Swift 对 CAMetalLayer 进行深度测试?

最近我决定学习如何将Metal框架与Swift结合使用。我阅读了一些教程,观看了视频,做了一些事情,最后我不得不使用深度测试让事情看起来不错。我以前没有做过如此底层的图形编程,所以我在整个互联网上浏览了深度测试的工作原理以及如何使用CAMetalLayer和Metal实现它。然而,我发现的所有深度测试示例都是使用OpenGL完成的,我无法在Metal中找到此类功能。如何使用Metal和Swift通过CAMetalLayer实现深度测试?提前致谢! 最佳答案 这是一个很好的例子。http://metalbyexample.com/up

ios - Metal Custom CIFilter 不同的返回值

我正在编写CIFilter,但结果像素颜色与Metal函数的返回值不同。内核Metal#includeextern"C"{namespacecoreimage{float4foo(sample_trgb){returnfloat4(0.3f,0.5f,0.7f,1.0f);}}Metal过滤器.swiftimportCoreImageclassMetalFilter:CIFilter{privateletkernel:CIColorKernelvarinputImage:CIImage?overrideinit(){leturl=Bundle.main.url(forResource:

Unity shader入门精要(学习总结)

(学习总结)一,基础概念什么是shader?UnityShader定义了渲染所需的各种代码(如顶点着色器和片元着色器)、属性(如使用哪些纹理等)和指令(渲染和标签设置等),而材质则允许我们调节这些属性,并将其最终赋给相应的模型。着色器(英語:shader)是一种计算机程序,原本用于进行图像的浓淡处理(计算图像中的光照、亮度、颜色等),但近来,它也被用于完成很多不同领域的工作,比如处理CG特效、进行与浓淡处理无关的影片后期处理、甚至用于一些与计算机图形学无关的其它领域。Shader结构,基础的shaderlab以及shader形式?UnityShader的基础结构Shader“ShaderNam

ios - swift iOS : How to perform a REST POST request

我正在尝试将原始文本实现到path的POST,我尝试使用NSMutableURLRequest并指定以下内容request.HTTPMethod="POST"request.HTTPBody="somestringshere"我没能比这更进一步,因为我在实现session.uploadTaskWithRequest时惨遭失败。然而,这正是我在GET请求中正常工作的结果;privatefuncget(path:String){leturl=NSURL(string:path)letsession=NSURLSession.sharedSession()lettask=session.da