OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Osd.MTLComputeEvaluator

OpenSubdiv是由Pixar Animation Studios开发的开源细分曲面库,其版本号为OPENSUBDIV_VERSION。Osd.MTLComputeEvaluator是其中的一个模块,用于在Metal Compute Shaders中计算细分曲面的评估器。

功能

在Metal Compute Shaders中计算细分曲面的评估器。

用法

  1. 首先,您需要将Osd.MTLComputeEvaluator模块添加到您的OpenSubdiv项目中。

  2. 通过以下代码引用Osd.MTLComputeEvaluator模块:

    #include <opensubdiv/osd/mtlComputeEvaluator.h>
    
  3. 创建Osd.MTLComputeEvaluator对象:

    Osd::MtlComputeEvaluator evaluator(numVertexElements, numVaryingElements, numVertexTextureElements, numVaryingTextureElements, true, true);
    

    参数解释:

    • numVertexElements:顶点元素数量
    • numVaryingElements:可变元素数量
    • numVertexTextureElements:顶点纹理元素数量
    • numVaryingTextureElements:可变纹理元素数量
    • true/false:是否允许使用16位纹理
  4. 调用Osd.MtlComputeEvaluator的Evaluate()函数计算细分曲面:

    evaluator.Evaluate(vertexBuffer, varyingBuffer, vertexTextureBuffer, varyingTextureBuffer, indexBuffer, vertexValenceBuffer, subdivisionScheme, kernelBatches);
    

    参数解释:

    • vertexBuffer:顶点缓冲区
    • varyingBuffer:可变缓冲区
    • vertexTextureBuffer:顶点纹理缓冲区
    • varyingTextureBuffer:可变纹理缓冲区
    • indexBuffer:索引缓冲区
    • vertexValenceBuffer:顶点边数缓冲区
    • subdivisionScheme:细分曲面方案(如REGULAR, CATMARK等)
    • kernelBatches:内核批次
  5. 当评估完成后,计算的结果将存储在vertexBuffer和varyingBuffer中,您可以将其用于渲染。

参考资料

  1. OpenSubdiv官方文档: https://graphics.pixar.com/opensubdiv/docs/intro.html
  2. OpenSubdiv Github仓库:https://github.com/PixarAnimationStudios/OpenSubdiv
  3. Apple官方文档:https://developer.apple.com/documentation/metal/compute_processing_with_metal
  4. Metal编程指南:https://developer.apple.com/metal/Metal-Programming-Guide.pdf