PixarAnimationStudios / OpenSubdiv

An Open-Source subdivision surface library.
graphics.pixar.com/opensubdiv
Other
2.88k stars 558 forks source link

Improved osd patch drawing compatibility #1320

Closed davidgyu closed 11 months ago

davidgyu commented 12 months ago

Submitted as two commits for a cleaner commit history.

--

Reorganized legacy patch drawing shader source

Relocated from PatchCommon to PatchLegacy several aspects of the shader source which can cause problems with typical use cases. Specifically, things like resource bindings, input assembler and interstage declarations are best left to client code.

These are not removed, just relocated and remain available for backward compatibility. Updated the GLSL, HLSL, and MSL source.

--

Added GetPatchDrawingShaderSource()

This is a new method for GLSL, HLSL, and MSL which returns patch drawing shader source which excludes legacy shader source aspects.

This improves portability and compatibility and may also improve shader compile times since the resulting shader source strings are smaller without the legacy shader source aspects.

Tested with Vulkan and DX12 in addition to GL, DX11, and Metal.

Fixes #938 #1153

davidgyu commented 11 months ago

Reviewed internally along with additional testing.