Module opensubdiv_petite::osd[][src]

OpenSubdiv

Osd contains device dependent code that makes far structures available on various backends such as TBB, CUDA, OpenCL, GLSL, etc. The main roles of osd are:

  • Refinement

    Compute stencil-based uniform/adaptive subdivision on CPU/GPU backends.

  • Limit Stencil Evaluation

    Compute limit surfaces by limit stencils on CPU/GPU backends.

  • Limit Evaluation with PatchTable

    Compute limit surfaces by patch evaluation on CPU/GPU backends.

  • OpenGL/DX11/Metal Drawing with Hardware Tessellation

    Provide GLSL/HLSL/Metal tessellation functions for patch table.

  • Interleaved/Batched Buffer Configuration

    Provide consistent buffer descriptor to deal with arbitrary buffer layout.

  • Cross-Platform Implementation Provide convenient ways to interop between compute and draw APIs.

These are independently used by clients. For example, a client can use only the limit stencil evaluation, or a client can refine subdivision surfaces and draw them with the PatchTable and Osd tessellation shaders. All device specific evaluation kernels are implemented in the Evaluator classes. Since Evaluators don’t own vertex buffers, clients should provide their own buffers as a source and destination. There are some interop classes defined in Osd for convenience.

OpenSubdiv utilizes a series of regression tests to compare and enforce identical results across different computational devices.

Re-exports

pub use buffer_descriptor::*;
pub use cpu_evaluator::*;
pub use cpu_vertex_buffer::*;
pub use cuda_vertex_buffer::*;
pub use cuda_evaluator::*;

Modules

buffer_descriptor

Describes elements in interleaved data buffers.

cpu_evaluator
cpu_vertex_buffer
cuda_evaluator
cuda_vertex_buffer