metal相关内容
我的任务很简单,但是显然我仍然不了解投影在着色器中的工作方式.我需要在一个纹理四边形(2个三角形)上进行2D透视变换,但是在视觉上看起来不正确(例如,梯形比CPU版本中的梯形稍微高些或拉伸得更多). 我有这个结构: struct VertexInOut { float4 position [[position]]; float3 warp0; float3
..
我想执行Metal(或OpenGLES 3.0)着色器,该着色器通过混合绘制“点"基元.为此,我需要将纹理的所有像素坐标作为顶点传递给“顶点着色器",以计算要传递给片段着色器的顶点的位置.片段着色器仅在启用混合的情况下输出该点的颜色.我的问题是,是否有一种有效的方法是将顶点的坐标传递给顶点着色器,因为1920x1080图像的顶点过多,而在一秒钟内需要完成30次?就像我们通过使用dispatchTh
..
我一直在尝试转换Apple的 MetalBasicTessellation validateAttachmentOnDevice:347: failed assertion `MTLRenderPassDescriptor texture must be MTLTextureType2DMultisample when using a resolveTexture.' 我已经正确设置了ren
..
我是Apple Metal的新手,运行苹果示例代码"创建和采样纹理",我喜欢一个奇怪的东西,"图1 "是我的 Macmini 2018(GPU是Intel®UHD Graphics 630)的结果 >,您可以看到四边形的左下角受到挤压,原始源使用setVertexBuffer:offset:atIndex:设置顶点缓冲区,我将其替换为setVertexBytes:length:atIndex:并运
..
我有以下Filter.metal文件 #include using namespace metal; #include // includes CIKernelMetalLib.h extern "C" { namespace coreimage { float4 myColor(sample_t s)
..
我的应用程序第三次获得Binary Rejected.崩溃日志没有帮助(我已将其符号化,但是它们不包含任何打印日志...). 在iPhone 6s,iPhone X和iPad Pro 12.9 上运行良好 我正在使用目标为iOS 11 的iOS 12进行测试 由于iOS版Metal无法在模拟器中运行,因此我尚未在iOS 11 上进行过测试 所以我得到了Crashlytics并获得
..
我对Metal拥有以下简单的OpenGLES混合代码: glBlendEquation(GL_FUNC_ADD); glBlendFunc(GL_ONE, GL_ONE); glEnable(GL_BLEND); 我用Metal编写了代码,但是如果它确实完成了同样的工作,我会感到困惑.具体来说,我是否需要提及alpha混合因子或否.因为我看到在Metal中此代码的性能比OpenGL
..
我可以将类型为sampler2D的自定义参数传递给SCNTechnique的Metal fragment function,并且我可以进行第二次传递: PList: inputs imageFromPass1 COLOR myCustomImage
..
我想同时支持10.13和10.14,但是我想在10.14上支持快速数学运算.如果我强制使用#define __CIKERNEL_METAL_VERSION__ 200,则仅能编译项目,但这意味着在10.13上它将崩溃.如何配置项目,以便创建2个金属库?到目前为止,结果文件为default.metallib(使用Xcode编译) BOOL supportsMetal; #if
..
我很难将制服传递给Scene Kit的着色器修改器.在使用OpenGL时似乎可以正常工作,而在使用Metal时则不能. 我以前曾经成功使用过SCNProgram,但想利用SceneKit的镶嵌细分功能,而不是为镶嵌细分设置计算着色器. 但是我想使用我已经在Metal中编写的代码,而不是使用OpenGL. 不幸的是,没有太多的例子来说明如何做到这一点. 这个Swift Playgrou
..
我正在尝试在Metal中创建一个伪随机数生成器(PRNG),类似于thrust的RNG,每次在线程内调用RNG 时,它都会产生不同的结果给定特定种子的随机数,在这种情况下为thread_position_in_grid.我已经将其设置得很完美,并且使用我已有的代码,现在我得到了一张漂亮的均匀随机图片. 但是,我的代码在每个线程中只能运行一次.我想实现一个next_rng()函数,该函数使用最
..
我正在开发一个应用程序,该应用程序应在天空盒内渲染一个镀铬风格的反射球形物体(使用六面立方体贴图). 我正在Swift中使用Scenekit通过不同的方法来做到这一点. 只要我让Scenekit完成所有工作即可,一切都很好并且得到了完美的体现(请参见下面的图1)-换句话说,使用具有金属度1.0,粗糙度0.0和颜色UIColor.white的标准SCNMaterial(使用.physic
..
在Apple发布iOS 8.3之前,我的代码可以正常工作,但是由于更新的XCode抱怨找到了一个nil值,即使我的值都不为nil(我在调试时对此进行了验证). 出于理智,我重新编写了程序,使用Metal渲染了一个简单的三角形到屏幕上,但是抛出了同样的错误.我有一个由3个顶点组成的数组,然后将其乘以数组的大小即可得到缓冲区的大小,并传入OptionCPUCacheModeDefault,因为我
..
我正在将统一缓冲区传递给顶点着色器和片段着色器. let uniformBuffer = device.makeBuffer(length: 4096, options: []) renderEncoder.setVertexBuffer(uniformBuffer, offset: 0, at: 1) renderEncoder.setFragmentBuffer(uniformBuffe
..
是否可以在运行时更改缓冲区大小?我们在寄存器device: 期间分配缓冲区大小 device = MTLCreateSystemDefaultDevice() queue = device!.makeCommandQueue() do { let library = device!.newDefaultLibrary()! let
..
我有一个关于Metal中的常量缓冲区的问题. 假设我有类似的东西: ...list of includes goes here... using namespace metal; struct ConstantBuffer { float ANY_VALUE; }; struct VS_INPUTS { float4 i_pos_ms [ [ attribute
..
例如,如果要进行灰度转换,则需要以以下方式设置我的threadsPerGroup和线程组. NSUInteger maxTotalThreadsPerThreadgroup = [self.computePipelineState maxTotalThreadsPerThreadgroup]; MTLSize threadgroupCounts = MTLSizeMake(threadExe
..
无论出于何种原因,我都遇到金属中Alpha混合的问题.我要绘制一个MTKView,对于我创建的每个管道,请执行以下操作: descriptor.colorAttachments[0].blendingEnabled = YES; descriptor.colorAttachments[0].rgbBlendOperation = MTLBlendOperationAdd; descripto
..
我正在将SceneKit与Metal(而非openGL)配合使用;希望允许用户录制他玩游戏的视频.有什么想法可以将场景渲染为视频吗? (无需录制场景音频,这可能会使它更简单) 解决方案 我认为我应该将其添加为答案: ReplayKit可以很好地完成工作,尽管它确实需要iOS9和支持Metal的设备(A7或更高版本).我从未使用过它,但是从我记得的WWDC 2015来看,它只需要设置几
..
我想绘制一个简单的三角形,在尝试创建MTLBuffer后它会崩溃. static float vertexes[] = { 0.0, 0.5, 0.0, -0.5f, -0.5f, 0.0, 0.5, -0.5f, 0.0 }; id buffer = [self.device newBufferWithBytes:v
..